В Drupal, как настроить node- [content type] .tpl.php для отображения 404 Error? - PullRequest
3 голосов
/ 12 октября 2010

В Drupal 6 я хотел бы, чтобы при доступе к некоторым типам контента отображалась ошибка 404. Я не хочу, чтобы они были проиндексированы поисковыми системами или были доступны пользователям. Они используются для хранения данных, таких как фотографии или другие вложения.

Я пытался установить node- [тип контента] .tpl.php в <?php return drupal_not_found(); но он дублирует всю страницу 404 на странице.

Ответы [ 3 ]

4 голосов
/ 13 октября 2010

После того, как вы вызовете drupal_not_found (), вызовите exit (), в противном случае Drupal просто продолжит обработку элементов страницы.

1 голос
/ 13 октября 2010

Вы можете использовать, например, модуль доступа к контенту , чтобы ограничить доступ для каждого типа контента.Это вернет ошибку «Отказано в доступе» вместо 404.

Если вы хотите написать более легкую версию самостоятельно, вам придется написать модуль, расширяющий систему разрешений Drupal, темный слой является неподходящим местомтот.Я думаю, что node_access будет правильным подходом для этого.

Размещение его в слое темы также не позволяет любому администратору (использующему эту тему) просматривать содержимое.

0 голосов
/ 14 октября 2010

Я устанавливаю псевдоним пути для этих типов контента равным

no-view/[nid]

, а затем использую

function MYMODULE_init ()<br> {<br> $path = drupal_get_path_alias(request_uri()); </p> <pre><code>if (strpos($path, "no-view/") !== false) { drupal_not_found(); exit; }

}

Таким образом, вы перехватываете вещи ранее в процессе.Вы также можете избежать использования большого количества шаблонов узлов, которые делают одно и то же.

Что касается причины, по которой определенные типы контента недоступны, есть несколько законных причин для этого.Одна из них заключается в том, что зачастую лучше хранить сложные данные в узле с пользовательским типом контента, а не в поле CCK в узле, и делиться этим с другими узлами.Возможно, вы никогда не захотите, чтобы этот узел данных просматривался сам по себе.Другой - использовать узлы для отображения групп вещей в представлении на странице, но это не имеет смысла, если их просматривать самостоятельно.

...