如何让个人用户在Drupal 7中导入他们自己的外部博客供稿?

时间:2012-10-03 21:00:57

标签: drupal-7 drupal-modules drupal-feeds

所以,我正试图建立一个博客网关'在Drupal 7中,允许用户从他们自己的外部站点添加/编辑/删除提要到集合流,以进行评级,评论等。

该网站应该采取以下措施:

  1. 让用户通过注册表单
  2. 添加其Feed的网址
  3. 在注册时(以及之后不断)从Feed中导入最新的帖子。
  4. 为Feed中的每个项目创建一个节点,其他用户可以对其进行评级。
  5. 从这些节点创建列表。
  6. 好的,所以与Feeds模块结合使用的Views可以完成大部分工作(导入feed,为每个项创建节点并创建列表)。我设法允许用户手动导入Feed'使用Feeds模块。

    问题在于我无法找到限制用户可以导入的Feed数量的方法,而且我无法弄清楚如何从注册表单中创建URL作为导入的基础

    我一直在尝试使用“规则”模块解决这些问题,但没有结果。

    使用“个人资料博客信息”模块中的某些内容可以解决问题,但它仅适用于Drupal 6,并且不适用于Feeds模块。

    对解决方案或替代品的任何想法?

1 个答案:

答案 0 :(得分:0)

  

我找不到限制用户可以导入的Feed数量的方法

如果您使用“Feed”模块的默认设置,则您应该已经拥有“Feed”内容类型。因此,如果您想控制用户可以导入的“提要”数量,我认为http://drupal.org/project/node_limit应该可以做到。它可以帮助您设置用户可以创建的“Feed”内容类型的节点数(这应该是相同的,对吧?)

  

如何从注册表单中创建导入基础的URL

现在,我将在这里建议一个自定义模块路由。它应该可以做到这一点但你可能/可能不想添加自定义模块,具体取决于项目的性质/你对Drupal的专业水平。

  1. 将URL字段(可能是URL field type的实例)添加到用户个人资料中。检查以允许它显示在注册表中。让我们称之为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);
    }