我的Drupal 7模块创建了一个块,然后在admin中我可以使它只用于文章内容类型。我也希望它可以在结果页面上进行产品搜索。此页面不是普通的内容类型,在hook_menu()中出现。
结果的路径将是avantlink-search-results/search term,我希望它再次显示带有搜索表单的块。我不希望在块可见选项中使用PHP代码选项,以便使模块的用户保持简单。
代码可以在AvantLinker上查看。
发布于 2011-05-17 07:16:37
我想您可能想看看上下文模块。它允许您为显示块定义多个条件。
但是,您还应该考虑让模块只返回显示在上面的页面上的内容。因此,用户不必担心复杂的配置。
发布于 2016-06-20 12:53:07
为此,您可以使用规则块可见度模块。..。它不需要启用PHP筛选器。以下是其项目页面的引文:
规则块可见性模块允许使用规则组件来控制块可见性。这为Drupal管理员和开发人员提供了极大的灵活性,除了Drupal提供的默认可见性选项之外,还可以控制在其网站上显示块的时间。一般的想法是,如果你可以用规则来做,你可以用它来控制块的可见性,所以可能性是无限的。只需为一个多月前注册的用户显示一个区块?也许你有一个街区,必须只显示在上午8点至下午5点,在工作日?如何根据当前天气情况显示或隐藏块呢?所有这些都可以通过使用规则块可见性来完成。
根据上面的“如果您可以使用规则来实现它,您可以使用它来控制块的可见性”,您已经将您的问题简化为让规则“检查当前页面的路径”(因此该块仅显示在您的“产品搜索的结果页”中,就像在您的问题中一样)。
有关如何使用此模块的说明,请参阅我对"如何阻止视图块显示到管理员(如用户/1)?“的回答。它包括一个规则组件(规则导出格式),您应该用它的这种变化来替换它,使其与您的具体问题相匹配):
{ "rules_block_visibility_popular_courses" : {
"LABEL" : "Hide block for filtered course view",
"PLUGIN" : "rule",
"OWNER" : "rules",
"REQUIRES" : [ "rules" ],
"USES VARIABLES" : {
"module" : { "label" : "Module", "type" : "text" },
"delta" : { "label" : "Delta", "type" : "text" },
"result" : { "label" : "Result", "type" : "boolean", "parameter" : false }
},
"IF" : [
{ "text_matches" : {
"text" : [ "site:current-page:url" ],
"match" : "avantlink-search-results/",
"operation" : "starts"
}
}
],
"DO" : [ { "data_set" : { "data" : [ "result" ], "value" : "1" } } ],
"PROVIDES VARIABLES" : [ "result" ]
}
}如果需要,进一步调整avantlink-search-results/的值以满足您的需要。和/或用适当的正则表达式替换其中的规则条件。
发布于 2011-06-14 15:07:37
如果您只想在某些页面上显示块,那么块管理设置页面就已经适合这样做了。如果使用URL别名(例如,文章内容类型的URL别名是example.com/ type /.)如果不使用PHP筛选器,您可以尝试:

除非我遗漏了问题中的一些东西,否则这应该在基本的设置中起作用。
https://drupal.stackexchange.com/questions/3717
复制相似问题