Отобразить узел в представлениях, но отключить страницу узла - PullRequest
4 голосов
/ 13 сентября 2011

Я создаю блок «Отзывы» с новым типом контента и модулем «Виды». Проблема в том, что Drupal создает отдельную страницу для каждого отзыва, и пользователи могут получить доступ к странице, если они знают ее идентификатор (или найдут страницу в SERP).

Можно ли отключить страницы узлов для этого конкретного типа контента, но перечислить узлы в блоке видов? Стандартная страница "404" Drupal была бы идеальной.

Спасибо!

Ответы [ 2 ]

3 голосов
/ 13 сентября 2011

Хитрый, потому что вы не сможете использовать hook_node_access () (режим просмотра никогда не пропускается, поэтому вы не можете определить между тизером и полной страницей). Быстрый грязный способ сделать это - hook_node_view () :

function MYMODULE_node_view($node, $view_mode, $langcode) {
  if ($node->type == 'my_node_type' && $view_mode == 'full') {
    drupal_not_found();
  }
}

Вероятно, есть более эффективные способы «Drupal», но это подойдет в крайнем случае.

1 голос
/ 13 сентября 2011

Этот ответ предназначен для Drupal 6.x, но он, вероятно, очень похож на Drupal 7 ...

Chaos Tools и Панели модули для Drupalможет сделать это.С помощью подмодуля инструментов Chaos, «Диспетчер страниц», вы можете включить страницу «Просмотр_узла» в разделе «Управление страницами ...» (Создание сайта -> Страницы).

После включения страницы «Просмотр_узла», вы добавите «Вариант» (например, Заголовок: «Пользователь без прав администратора») с «Правилами выбора» и установите критерий «Тип узла», а затем ограничите его типом контента (например, «Отзыв»).

После этого потребуется еще одно «Правило выбора» для «Роли пользователя».После этого выберите роли анонимного и аутентифицированного пользователя.

Далее продолжите настройку и выберите макет «Один столбец», затем щелкните значок шестеренки в «Среднем столбце» при выборе панели.содержание.Затем вы можете указать существующий узел (например, страницу узла 404).

Далее, я бы порекомендовал настроить другой вариант (например, заголовок «Администратор») на странице «Просмотр_узла» с «Правилами выбора».'критерии, установленные для вашего типа контента и установить пользовательские критерии для вашей роли администратора или пользователя с идентификатором # 1.Затем вместо добавления узла 404 в качестве содержимого на страницу панели вы можете добавить «текущий просматриваемый узел» к содержимому панели.Таким образом, администраторы по-прежнему могут видеть страницы узлов, и обычные пользователи будут перенаправлены на вашу страницу 404.

...