根据当前登录的用户过滤视图内容

时间:2013-06-02 21:33:03

标签: php drupal drupal-7 drupal-modules drupal-views

我是Drupal的新手,并不知道该找什么。

我需要实现这样的行为:

  • 我创建了X类型的内容
  • X的内容可能并且将包含我的门户网站的用户名
  • 用户U登录我的门户网站并列出所有X(使用视图)
  • 我想将所有X过滤到只有这些,其中提到了U.

我不想为此使用群组,因为会有100个用户,使用群组和权限会非常烦人。

修改 可用上下文过滤器 enter image description here

2 个答案:

答案 0 :(得分:2)

请按照以下步骤操作:

  1. 在视图设置页面的“高级”部分下,单击以添加新的“上下文参数”。

  2. 从字段列表中,选择内容类型为X中包含“用户名”的字段。

  3. 从“当过滤器值不可用时”部分,选择“提供默认值”,对于类型,选择“登录用户的用户ID”。

  4. 这就是全部。

答案 1 :(得分:0)

我修好了非常讨厌和丑陋的方式。我已更改主题node.tpl.php以有条件地呈现<article>部分:

<?php 
    $renderContent = TRUE;
    $fieldname = 'field_fulltext_user_search';
    if (property_exists($node, $fieldname) && array_key_exists($node->language, $node->{$fieldname})) {
        $fieldValue = $node->{$fieldname}[$node->language][0]['value'];
        if (isset($fieldValue) && $fieldValue) {
            // check if content contains current user's name
            $safeBody = $body[0]['safe_value'];
            $theUser = $user->name;
            $renderContent = strpos($safeBody, $theUser)!==false;
        }
    }

    if ($renderContent):
?>

现在,当节点具有field_fulltext_user_search字段且其值为true时,将搜索节点内容以查找当前用户名。如果它不存在,则不呈现节点。

这个任务可能有更好的解决方案,但这对我很有帮助。如果你能想到更好的,请告诉我。