在Drupal 6中,我想在访问时显示某些内容类型错误404。我不希望它们被搜索引擎索引或者可供用户访问。它们用于存储数据,例如照片或其他附件。
我已尝试将 node- [content type] .tpl.php 设置为
<?php
return drupal_not_found();
但它会复制页面中的整个404页面。
答案 0 :(得分:4)
调用drupal_not_found()后调用exit(),否则Drupal将继续处理页面元素。
答案 1 :(得分:1)
您可以使用例如content access module以限制每种内容类型的访问权限。这将返回权限被拒绝错误而不是404。
如果你想自己编写一个较轻的版本,你必须编写一个扩展Drupal权限系统的模块,主题层是错误的。我认为node_access将是正确的钩子。
将它放在主题图层中也会阻止任何管理员(使用此主题)查看内容。
答案 2 :(得分:0)
我将这些内容类型的路径别名设置为
no-view/[nid]
然后使用
function MYMODULE_init ()
{
$path = drupal_get_path_alias(request_uri());
if (strpos($path, "no-view/") !== false) {
drupal_not_found();
exit;
}
if (strpos($path, "no-view/") !== false) {
drupal_not_found();
exit;
}
这样,您就可以在流程的早期拦截事物。您还可以避免使用大量节点模板来执行相同的操作。
至于使某些内容类型不可用的原因,有几个合理的理由这样做。一个是在具有自定义内容类型而不是节点中的CCK字段的节点上存储复杂数据通常是更好的选择,并与其他节点共享。您可能永远不希望自己查看此数据节点。另一个是使用节点在页面的视图中显示事物组,但是单独查看它们是没有意义的。