因此,我正试图在Drupal 7中构建一个"博客网关",让用户可以将来自自己外部网站的提要添加/编辑/删除到一个集体流中,用于评级、评论等。
网站应该沿着以下路线做一些事情:
- 让用户通过注册表为其订阅源添加URL
- 在注册时从订阅源导入最新的帖子(然后不断导入)
- 为提要中的每个项目创建一个节点,其他用户可以对其进行评级
- 从这些节点创建列表
好的,所以视图与提要模块结合可以完成大部分任务(导入提要,为每个项目创建节点并创建列表)。我已经设法允许用户使用提要模块"手动"导入提要。
问题是,我找不到限制用户可以导入的提要数量的方法,也不知道如何将注册表单中的URL作为导入的基础。
我一直在尝试使用规则模块来解决这些问题,但没有结果。
我认为类似个人资料博客信息模块的东西可以做到这一点,但它只适用于Drupal6,不适用于Feeds模块。
对解决方案或替代方案有什么想法吗?
我找不到限制用户可以导入的提要数量的方法
如果使用Feeds模块的默认设置,则应该已经有了"Feed"内容类型。因此,如果你想控制用户可以导入的"提要"的数量,http://drupal.org/project/node_limit我想应该会成功的。它将帮助您设置用户可以创建的"Feed"内容类型的节点数(这应该是一样的,对吧?)
如何使注册表单中的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); }