根据drupal中的特定条件显示不同的块

时间:2015-09-23 13:01:40

标签: drupal drupal-7 preprocessor block

我有一个页面类型“促销”。页面的模板有一个区域,在区域内有两个块(用结构/块创建)被渲染。

我有不同版本的块(文本,颜色等)。我想要做的是有一个THEMENAME_preprocess(?)函数来根据特定条件在块之间切换。

例如:如果用户是成员,则显示block-21和block-22,如果用户执行此操作,则显示block-23和block-24。

你能告诉我怎么做吗?

3 个答案:

答案 0 :(得分:1)

实际上我认为你可以尝试Hide Block by Role模块,这正是你想要的,只是另一种方式。

  

此模块允许您为属于的用户隐藏块   某些角色。

或核心功能

/admin/structure/block/manage下,然后是configure

enter image description here

所以,如果我理解你(!?),则不需要一些自定义代码/模块

答案 1 :(得分:0)

你有上下文模块:

https://www.drupal.org/project/context

...用于更高级的块放置(以及更多)。

但是,如果你想要一些自定义逻辑,为什么不把它放在块中呢?因此,根据您使用普通PHP编写的条件,使块显示另一个内容。

答案 2 :(得分:0)

如果您有自定义功能('付费','非付费'),您可能最好使用hook_block_view_alter(https://api.drupal.org/api/drupal/modules!block!block.api.php/function/hook_block_view_alter/7)来控制显示。

您可以默认显示两个块,并在hook_block_view_alter中检查条件并修改返回以删除块内容(返回false或取消设置项目)。