2013-06-02 23 views
0

我是Drupal的新手,實在不知道要尋找什麼。在當前登錄用戶的基礎上過濾瀏覽內容

我需要實現這樣的行爲:

  • 我創建一個X類型的內容
  • 內容X的可能,並會包含我的門戶網站的用戶名在它
  • 用戶U登錄到我的門戶並列出所有的X(使用視圖)
  • 我想過濾所有的X到只有這些,其中U被提及。

我不想爲此使用組,因爲會有100多個用戶,並且使用組和權限會非常煩人。

編輯 可用上下文過濾器: enter image description here

回答

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則節點搜索內容當前用戶名。如果它不存在,則不呈現節點。

這個任務可能有更好的解決方案,但這對我來說工作得很好。如果你能想到更好的,請告訴我。

2

遵循以下步驟:

  1. 在您的視圖設置頁面,在 「高級」 部分,點擊添加新的 「語境參數」 。

  2. 從字段列表中,選擇包含在你的內容類型X.

  3. 從部分「當過濾器值不可用」的「用戶名」字段中,選擇「提供默認值」對於該類型,請選擇「來自登錄用戶的用戶ID」。

這就是全部。

+0

沒有這樣的字段 – SOReader

+0

你在哪裏引用你的內容類型X中的用戶? –

+0

身體/描述。我寫的例子是這樣的:「感謝u1,u2。u3 - 你們搖滾!」,並且我想讓這個節點只對用戶u1,u2,u3可見。它不是一個引用本身,它只是一個字符串,其中的子字符串包含用戶的名稱 – SOReader

相關問題