Показывать представление только для определенного типа контента в Drupal
-
18-09-2019 - |
Вопрос
я создал блок просмотров "Об авторе" в Drupal.Это связано с идентификатором пользователя создателя текущего узла, который отлично работает.
Однако теперь я хотел бы знать, как ограничить просмотр определенными типами контента.Я не хочу, чтобы это показывалось в сюжете, только в блогах.Я пытался сделать это с помощью аргументов, но пока мне не везло.
Кто-нибудь может мне помочь?
Решение
Я рекомендую использовать путьавтоматический дать каждому узлу типа общий префикс URL-адреса (в любом случае хорошая идея), чтобы вы могли использовать простое ограничение пути видимости блока.Например, вы устанавливаете шаблон пути к типу контента «article/[title]», а затем устанавливаете путь к блоку «article/*».
Другие советы
нет, вы можете использовать встроенный в view валидатор аргументов.
бывший.Как вы ограничиваете просмотр значением uid пользователя? ” Это означает, как любой данный просмотр может быть виден только зарегистрированному пользователю, которому принадлежит этот контент.
Вот код PHP-валидатора аргументов Views.
global $user; return $argument[0] == $user->uid;
Просто создайте свое представление, перейдите на страницу конфигурации блока и используйте PHP для правил видимости блока.Чтобы показать блокировку только для определенных типов контента, используйте:
<?php
$match = FALSE;
$types = array('story' => 1, 'page' => 1);
if (arg(0) == 'node' && is_numeric(arg(1))) {
$nid = arg(1);
$node = node_load(array('nid' => $nid));
$type = $node->type;
if (isset($types[$type])) {
$match = TRUE;
}
}
return $match;
?>
Этот код взят с сайта drupal.org, Обзор-подход к блокировке видимости
Лучше:
<?php
$match = FALSE;
$types = array('story' => 1, 'page' => 1);
if (arg(0) == 'node' && is_numeric(arg(1))) {
$nid = arg(1);
$node = node_load($nid);
$type = $node->type;
if (isset($types[$type])) {
$match = TRUE;
}
}
return $match;
?>