我创建了一个包含多个字段的自定义类型。 1字段是“为所有人显示”的复选框 第二个字段是一个文本字段(您可以添加多个文本字段)以添加代码。
我创建了一个视图,其中所有这些内容类型都显示在页面中。 (这有效)
但现在: 当一个人进入该网站时,他必须插入一个代码。此代码保存到cookie中,因为需要记住大约2周。 所以我不能使用上下文过滤器。
如果选中“为所有人显示”复选框,则会显示此块。 如果取消选中“为所有人显示”复选框,则隐藏此块,除了没有代码进入的人,或者代码是第二个字段中插入的值之一。
我不想使用php_filter视图。但我不知道如何处理这个问题。
我在网上尝试了一些解决方案来创建自定义过滤器,但问题是,我们无法访问表单值。
答案 0 :(得分: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);
}
}
}