在Drupal中,如何设置node- [content type] .tpl.php来显示404错误?

时间:2010-10-12 19:41:14

标签: drupal drupal-6

在Drupal 6中,我想在访问时显示某些内容类型错误404。我不希望它们被搜索引擎索引或者可供用户访问。它们用于存储数据,例如照片或其他附件。

我已尝试将 node- [content type] .tpl.php 设置为 <?php return drupal_not_found(); 但它会复制页面中的整个404页面。

3 个答案:

答案 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字段的节点上存储复杂数据通常是更好的选择,并与其他节点共享。您可能永远不希望自己查看此数据节点。另一个是使用节点在页面的视图中显示事物组,但是单独查看它们是没有意义的。