Drupal:将块分配给特定的内容类型
我制作了一个名为node-mynode.tpl.php的定制模板 无论何时请求mynode类型的节点,都需要node-mynode.tpl.php 自动使用 然而,现在用户希望在这种情况下看到一个特定的菜单块 问题: 如何将块指定给特定的内容类型 提示:我已经开始使用Pathauto查看URL别名。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/*开头的页面上显示,可以
我怀疑有一个解决方案可能就是这个方向。为所有
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实现块可见性和许多代码示例的更多信息,请参阅。