1

因此,我正在尝试在 Drupal 7 中构建一个“博客网关”,让用户可以将来自他们自己的外部站点的提要添加/编辑/删除到一个集体流中,以进行评分、评论等。

该网站应该按照以下方式做一些事情:

  1. 让用户通过注册表单为其提要添加 URL
  2. 注册时从提要中导入最新的帖子(之后继续)。
  3. 为提要中的每个项目创建一个节点,其他用户可以对其进行评分。
  4. 从这些节点创建列表。

好的,视图结合 Feeds 模块可以完成大部分工作(导入 feed,为每个项目创建节点并创建列表)。我已经设法允许用户使用 Feeds 模块“手动”导入 Feed。

问题是我找不到限制用户可以导入的提要数量的方法,而且我不知道如何将注册表单中的 URL 作为导入的基础。

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

我认为类似于 Profile Blog Information 模块的东西可以解决问题,但它仅适用于 Drupal 6,不适用于 Feeds 模块。

关于解决方案或替代方案的任何想法?

4

1 回答 1

0

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

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

如何将注册表中的 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);
    }
    
于 2012-10-04T07:27:29.920 回答