Drupal:Block不会显示在特定的内容类型页面上

时间:2014-02-06 09:38:50

标签: drupal drupal-7 block content-type

我需要你帮助解决看似幼稚但我无法解决的问题。

我想激活一个块(已经为其他内容类型页面激活,并且工作得很好),以便在新的内容类型上显示它。我刚刚检查了该特定内容类型的 admin-> structure-> block-> configure-> visibility parameters 中的框,就像我为其他人做的那样。但是,它没有显示出来。

这是一个screenshot块参数配置(你永远不会知道^^)。

此块位于sidebar_second区域。所以我检查dpm()是否在两个内容类型中设置了此区域。

Here我可以看到实际上是为我的内容类型basic page设置了块显示

但是here我发现我的区域根本不存在,因此我的区块不会出现。

我创建了一个新测试块,并将其放在sidebar_second区域,以确定问题是特定块本身还是内容类型页面...显然,我猜测它是第二种解决方案,因为它没有出现。

此外,我尝试找到我的块进入sidebar_first区域(我的content-type testimonial 已存在)。不幸的是,它既不起作用。当然,它适用于content-type basic page ...

为了确保我的testimonial.module或模板中没有覆盖页面代码,我检查了两次我实现的钩子和我的所有模板文件......我发现没有任何可能导致该问题

最终,我用Google搜索我的问题并发现错误报告(已关闭,因为无法复制):https://drupal.org/node/1777072但我认为这会非常不吉利碰巧......

选择,这肯定是一个错误,我没有看到,而不是一个超级罕见的错误发生在世界上10人xD

这就是我需要你帮助的原因,ôstackoverflow人员!

2 个答案:

答案 0 :(得分:0)

我的第一个虽然推荐内容类型可能正在使用与基本页面内容类型不同的页面模板。

您将需要以下行:

<?php echo render($page['sidebar_first']); ?>

推荐使用的页面模板中。

嗯,实际上我完全不相信这是正确的解决方案,但我会发布以防万一它有帮助......

答案 1 :(得分:0)

我只是想让你知道我弄清楚了。

确实,我的函数hook_node_view()实现了menu_set_active_item("testimonial")来解决导航细节(强制突出显示菜单项......)。但是,修改了 URL中的q变量, Drupal不再知道该页面实际上是节点类型见证(并认为它实际上是一个视图)。

因此,我的块无法显示,因为它应该出现在节点类型的推荐(而不是在视图上)。

因此,在实施menu_get_active_trail()之前,我必须使用menu_set_active_item() 保存变量页面的真实性质。

最终,我必须在我的hook_block_view()中传递此变量才能显示该块。

抱歉因为没有向您提供回答我问题所需的所有信息。我认为自定义代码并不是很可疑,但我错了。我还是一名初级Drupal开发人员,我不知道menu_set_active_item()方法究竟做了什么。谢谢,祝周末愉快!