根据drupal中的特定条件显示不同的块
Display different blocks depending on a specific condition in drupal
我有一个页面类型"Promotion"。该页面的模板有一个区域,在该区域内有两个正在呈现的块(使用 structures/blocks 创建)。
我有不同版本的块(文本、颜色等)。我想要做的是有一个 THEMENAME_preprocess (?) 函数来根据特定条件在块之间切换。
例如:如果用户是会员则显示block-21和block-22,如果用户做了这个或那个则显示block-23和block-24。
你能告诉我怎么做吗?
实际上我认为您可以尝试 Hide Block by Role 模块,这正是您想要的,只是反过来。
This module will allow you to hide blocks for users who belong to
certain roles.
或核心功能
下 /admin/structure/block/manage
然后 configure
:
所以如果我理解正确 (!?) 就不需要一些自定义 code/module
你有上下文模块:
https://www.drupal.org/project/context
...更高级的方块放置(以及更多)。
但是如果你想要一些自定义逻辑,为什么不把它自己放在块中呢?因此,根据您的条件,让块在另一个内容上显示一个内容,用普通 PHP.
如果您有自定义功能('paying'、'non-paying'),您可能最好使用 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 检查条件并修改 return 以删除块内容(return false 或取消设置项目)。
我有一个页面类型"Promotion"。该页面的模板有一个区域,在该区域内有两个正在呈现的块(使用 structures/blocks 创建)。
我有不同版本的块(文本、颜色等)。我想要做的是有一个 THEMENAME_preprocess (?) 函数来根据特定条件在块之间切换。
例如:如果用户是会员则显示block-21和block-22,如果用户做了这个或那个则显示block-23和block-24。
你能告诉我怎么做吗?
实际上我认为您可以尝试 Hide Block by Role 模块,这正是您想要的,只是反过来。
This module will allow you to hide blocks for users who belong to certain roles.
或核心功能
下 /admin/structure/block/manage
然后 configure
:
所以如果我理解正确 (!?) 就不需要一些自定义 code/module
你有上下文模块:
https://www.drupal.org/project/context
...更高级的方块放置(以及更多)。
但是如果你想要一些自定义逻辑,为什么不把它自己放在块中呢?因此,根据您的条件,让块在另一个内容上显示一个内容,用普通 PHP.
如果您有自定义功能('paying'、'non-paying'),您可能最好使用 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 检查条件并修改 return 以删除块内容(return false 或取消设置项目)。