Как я могу позволить отдельным пользователям импортировать свои собственные внешние фиды блогов в Drupal 7?

Итак, я пытаюсь создать "шлюз блога" в Drupal 7, который позволит пользователям добавлять / редактировать / удалять каналы со своих внешних сайтов в общий поток для оценки, комментариев и т. Д.

Сайт должен делать что-то вроде:

  1. Позвольте пользователю добавить URL для своего канала через регистрационную форму
  2. Импортируйте самые последние сообщения из ленты при регистрации (и после этого постоянно).
  3. Создайте узел для каждого элемента в ленте, который может быть оценен другими пользователями.
  4. Создайте списки из этих узлов.

Итак, представления в сочетании с модулем Feeds могут выполнять большую часть этого (импортировать каналы, создавать узлы для каждого элемента и создавать списки). Мне удалось разрешить пользователям импортировать каналы "вручную" с помощью модуля Feeds.

Проблема в том, что я не могу найти способ ограничить количество каналов, которые пользователь может импортировать, и я не могу понять, как сделать URL из регистрационной формы основой для импорта.

Я пытался решить эти проблемы с помощью модуля "Правила", но безрезультатно.

Methinks что-то вроде модуля информации блога профиля может помочь, но это доступно только для Drupal 6 и не работает с модулем Feeds.

Есть мысли о решениях или альтернативах?

1 ответ

Я не могу найти способ ограничить количество каналов, которые пользователь может импортировать

Если вы используете настройки модуля Feeds по умолчанию, у вас уже должен быть тип контента "Feed". Так что, если вы хотите контролировать количество "каналов", которые пользователь может импортировать, я думаю, http://drupal.org/project/node_limit должен помочь. Это поможет вам установить количество узлов типа контента "Канал", которое может создать пользователь (что должно быть одним и тем же, верно?)

как сделать URL из регистрационной формы в основе импорта

Теперь я собираюсь предложить собственный маршрут модуля здесь. Это должно сработать, но вы можете / не можете добавлять пользовательский модуль в зависимости от характера вашего проекта / вашего уровня знаний в Drupal.

  1. Добавьте поле URL (возможно, экземпляр типа поля URL) в профиль пользователя. Установите этот флажок, чтобы он отображался в регистрационной форме. Допустим, мы называем это feed_url,

  2. Реализуйте 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);
    }
    
Другие вопросы по тегам