簡體   English   中英

drupal7根據視圖中的會話過濾內容類型

[英]drupal7 Filter content type based on session in view

我創建了一個具有多個字段的自定義類型。 第一個字段是“向所有人顯示”的復選框。第二個字段是用於添加代碼的文本字段(可以添加多個文本字段)。

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

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

如果選中了“向所有人顯示”復選框,則會顯示此塊。 如果未選中“為所有人顯示”復選框,則該塊將被隱藏,除了沒有代碼的人,或者代碼是第二個字段中插入的值之一。

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

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

我找到了解決方案,但是我不確定這是否是正確的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);
    }
  }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM