Как я могу позволить отдельным пользователям импортировать свои собственные внешние фиды блогов в Drupal 7?
Итак, я пытаюсь создать "шлюз блога" в Drupal 7, который позволит пользователям добавлять / редактировать / удалять каналы со своих внешних сайтов в общий поток для оценки, комментариев и т. Д.
Сайт должен делать что-то вроде:
- Позвольте пользователю добавить URL для своего канала через регистрационную форму
- Импортируйте самые последние сообщения из ленты при регистрации (и после этого постоянно).
- Создайте узел для каждого элемента в ленте, который может быть оценен другими пользователями.
- Создайте списки из этих узлов.
Итак, представления в сочетании с модулем Feeds могут выполнять большую часть этого (импортировать каналы, создавать узлы для каждого элемента и создавать списки). Мне удалось разрешить пользователям импортировать каналы "вручную" с помощью модуля Feeds.
Проблема в том, что я не могу найти способ ограничить количество каналов, которые пользователь может импортировать, и я не могу понять, как сделать URL из регистрационной формы основой для импорта.
Я пытался решить эти проблемы с помощью модуля "Правила", но безрезультатно.
Methinks что-то вроде модуля информации блога профиля может помочь, но это доступно только для Drupal 6 и не работает с модулем Feeds.
Есть мысли о решениях или альтернативах?
1 ответ
Я не могу найти способ ограничить количество каналов, которые пользователь может импортировать
Если вы используете настройки модуля Feeds по умолчанию, у вас уже должен быть тип контента "Feed". Так что, если вы хотите контролировать количество "каналов", которые пользователь может импортировать, я думаю, http://drupal.org/project/node_limit должен помочь. Это поможет вам установить количество узлов типа контента "Канал", которое может создать пользователь (что должно быть одним и тем же, верно?)
как сделать URL из регистрационной формы в основе импорта
Теперь я собираюсь предложить собственный маршрут модуля здесь. Это должно сработать, но вы можете / не можете добавлять пользовательский модуль в зависимости от характера вашего проекта / вашего уровня знаний в Drupal.
Добавьте поле URL (возможно, экземпляр типа поля URL) в профиль пользователя. Установите этот флажок, чтобы он отображался в регистрационной форме. Допустим, мы называем это
feed_url
,Реализуйте hook_user_insert(), который вызывается при добавлении нового пользователя на сайт:
/** * Implements hook_user_insert(). */ function MY_MODULE_user_insert(&$edit, $account, $category) { if (isset($edit['feed_url'])) { $index = array('feed_url', LANGUAGE_NONE, 'value'); // Get the feed URL from the registration form values. $feed_url = drupal_array_get_nested_value($edit, $index); if (!empty($feed_url)) { // Create a new feed on behalf of the user _MY_MODULE_create_feed($feed_url, $account->uid); } } } /** * Creates a new feed on behalf of a user. * * @param string $url * Feed URL * @param numeric $uid * {users}.uid of the user for whom this feed is being created. */ function _MY_MODULE_create_feed($url, $uid) { // @todo Add more validations here $node = new stdClass(); $node->uid = $uid; $node->type = 'feed'; $node->feeds['FeedsHTTPFetcher']['source'] = $url; $node->language = language_default('language'); node_save($node); }