【问题标题】:Drupal : Block doesn't show up on specific content-type pageDrupal:块不显示在特定的内容类型页面上
【发布时间】:2014-02-06 09:38:50
【问题描述】:

对于一个看似幼稚但我无法解决的问题,我需要你的帮助。

我想激活一个块(已经为其他内容类型页面激活并且工作正常)以在新的内容类型上显示它.我刚刚检查了 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 人!

【问题讨论】:

    标签: drupal drupal-7 block content-type


    【解决方案1】:

    我的第一个想法是,testimonial 内容类型可能使用与 basic page 内容类型不同的页面模板。

    你需要这条线:

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

    testimonial使用的页面模板中。

    嗯,实际上我根本不相信这是正确的解决方案,但我会发布以防万一......

    【讨论】:

      【解决方案2】:

      我只是想让你知道我想通了。

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

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

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

      最后,我不得不在我的hook_block_view() 中传递这个变量来显示这个块。

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-09-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-04-06
        相关资源
        最近更新 更多