我有一个页面类型“促销”。页面的模板有一个区域,在区域内有两个块(用结构/块创建)被渲染。
我有不同版本的块(文本,颜色等)。我想要做的是有一个THEMENAME_preprocess(?)函数来根据特定条件在块之间切换。
例如:如果用户是成员,则显示block-21和block-22,如果用户执行此操作,则显示block-23和block-24。
你能告诉我怎么做吗?
答案 0 :(得分:1)
实际上我认为你可以尝试Hide Block by Role模块,这正是你想要的,只是另一种方式。
此模块允许您为属于的用户隐藏块 某些角色。
或核心功能
在/admin/structure/block/manage
下,然后是configure
:
所以,如果我理解你(!?),则不需要一些自定义代码/模块
答案 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或取消设置项目)。