所以,我正试图建立一个博客网关'在Drupal 7中,允许用户从他们自己的外部站点添加/编辑/删除提要到集合流,以进行评级,评论等。
该网站应该采取以下措施:
好的,所以与Feeds模块结合使用的Views可以完成大部分工作(导入feed,为每个项创建节点并创建列表)。我设法允许用户手动导入Feed'使用Feeds模块。
问题在于我无法找到限制用户可以导入的Feed数量的方法,而且我无法弄清楚如何从注册表单中创建URL作为导入的基础
我一直在尝试使用“规则”模块解决这些问题,但没有结果。
使用“个人资料博客信息”模块中的某些内容可以解决问题,但它仅适用于Drupal 6,并且不适用于Feeds模块。
对解决方案或替代品的任何想法?
答案 0 :(得分:0)
我找不到限制用户可以导入的Feed数量的方法
如果您使用“Feed”模块的默认设置,则您应该已经拥有“Feed”内容类型。因此,如果您想控制用户可以导入的“提要”数量,我认为http://drupal.org/project/node_limit应该可以做到。它可以帮助您设置用户可以创建的“Feed”内容类型的节点数(这应该是相同的,对吧?)
如何从注册表单中创建导入基础的URL
现在,我将在这里建议一个自定义模块路由。它应该可以做到这一点但你可能/可能不想添加自定义模块,具体取决于项目的性质/你对Drupal的专业水平。
将URL字段(可能是URL field type的实例)添加到用户个人资料中。检查以允许它显示在注册表中。让我们称之为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);
}