Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/drupal/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Drupal:将块分配给特定的内容类型_Drupal_Drupal Blocks_Pathauto - Fatal编程技术网

Drupal:将块分配给特定的内容类型

Drupal:将块分配给特定的内容类型,drupal,drupal-blocks,pathauto,Drupal,Drupal Blocks,Pathauto,我制作了一个名为node-mynode.tpl.php的定制模板 无论何时请求mynode类型的节点,都需要node-mynode.tpl.php 自动使用 然而,现在用户希望在这种情况下看到一个特定的菜单块 问题: 如何将块指定给特定的内容类型 提示:我已经开始使用Pathauto查看URL别名。 我怀疑有一个解决方案可能就是这个方向。为所有mynode类型节点提供一个以/mynode开头的自动别名,并使用块的页面特定可见性设置,仅在Drupal 6中以/mynode/*开头的页面上显示,可以

我制作了一个名为node-mynode.tpl.php的定制模板 无论何时请求mynode类型的节点,都需要node-mynode.tpl.php 自动使用

然而,现在用户希望在这种情况下看到一个特定的菜单块

问题: 如何将块指定给特定的内容类型

提示:我已经开始使用Pathauto查看URL别名。
我怀疑有一个解决方案可能就是这个方向。

为所有
mynode
类型节点提供一个以
/mynode
开头的自动别名,并使用块的页面特定可见性设置,仅在Drupal 6中以
/mynode/*
开头的页面上显示,可以配置块的可见性设置。单击管理员后端中块旁边的“配置”链接,然后执行以下步骤-

1) 在“页面特定可见性设置”选项卡下选择“显示以下PHP代码是否返回TRUE(PHP模式,仅限专家)”选项

2) 输入以下PHP代码,检查当前节点的节点类型,并相应地返回TRUE-

<?php 
   if( arg(0) != 'node' || !is_numeric(arg(1)) )
   { return FALSE;
   }

   //load a fully-populated Drupal node object
   $temp_node = node_load(arg(1));

   if( $temp_node->type == 'mynode' )       //check the node type
   {   return TRUE;    //display block
   }
?>


这应该可以使用……

您可以使用上下文模块。。。但是不实用。。我现在有500多个这种类型的节点,还有数百个。还有其他方法吗?为什么不实用?您可以删除为节点设置的任何url别名,然后使用路径替换模式一次为所有节点批量生成别名。通常类似于
mynode/[title raw]
。我的错误。这个解决方案确实有效。Url别名模块能够重新别名旧节点,新节点的别名正确。我有一个自动批量饲料和工作以及!我不推荐这种方法。路径别名用于可用性和SEO,而不是用于站点建设。别名为“mynode/node title”的节点仍将在“node/123”处可用,但该块将不会在该页面上呈现。一旦你走上这条路,你就不能再安全地授予用户定义自定义别名的权利,因为他们可能会破坏你的块可见性方法。有一个模块可以实现这一点-全局重定向。它将检查任何节点的其他别名,并重定向到用户定义的路径别名。是的,当你走这条路的时候,你不能给你的用户设置自定义别名的能力。但你为什么要这么做呢?你想让你的用户创建疯狂的URL吗,比如
example.com/this/site/really/sucks/so/much/i-hate-it
?旁注:这在Drupal 4.7之后就有了可能。有关使用PHP实现块可见性和许多代码示例的更多信息,请参阅。