2015-12-03 32 views
0

我創建了一個包含多個字段的自定義類型。 1字段是「爲所有人顯示」的複選框 第2字段是用於添加代碼的文本字段(您可以添加多個文本字段)。drupal7根據會話在視圖中過濾內容類型

我創建了一個視圖,在頁面中顯示所有這些內容類型。 (這工作)

但現在: 當一個人進入該網站,他必須插入一個代碼。此代碼被保存到cookie中,因爲它需要記住大約2周。 所以我不能使用上下文過濾器。

如果選中「爲所有人顯示」複選框,則會顯示此塊。 如果取消選中「爲所有人顯示」複選框,則此塊將被隱藏,除了沒有編碼的人員或者代碼是插入到第二個字段中的值之一。

我不想使用php_filter視圖。但我不知道如何解決這個問題。

我在網上嘗試了一些解決方案來創建自定義過濾器,但這裏的問題是,我們無法訪問表單值。

回答

0

我找到了解決方案,但我不確定這是否是正確的drupal方式。 我使用了hook_node_view函數來獲取打印在該頁面上的所有節點。我檢查插入cookie的代碼是否允許(在內容類型的文本字段中創建)

function code_node_view($node, $view_mode, $langcode) { 
    if ($node->type == 'winning_codes') { 
    $code = _code_read_cookie('code'); 
    $winning_codes = (!empty($node->field_winning_codes['und'])) ? $node->field_winning_codes['und'] : array(); 
    $winning_codes = array_map(function ($ar) { 
     return $ar['value']; 
    }, $winning_codes); 
    if (!empty($code) && (!in_array($code, $winning_codes))) { 
     hide($node->content); 
    } 
    } 
}