如何将参数传递给块?


8

是否可以通过编程方式将参数传递给块?

Answers:


7

对方的回答,块是“哑”,不具备有'传入的论点的能力。但是,它们可以从页面上下文中获取参数,例如节点ID,当前用户等。

您实际上有两个“简单”的选择:

  • 编写自己的代码块:如果您可以做一点PHP,这很容易。创建一个模块并实现hook_block()Drupal.org上有很多示例
  • 使用“面板”和/或“视图”模块:面板允许您创建可以传递各种方式的变量和上下文的面板,但如果没有特殊主题,则该块必须位于内容区域而不是Drupal区域中;因此这取决于您的网站以及您希望屏蔽的位置。视图也可以创建块,并通过Views PHP模块从页面URL,当前用户以及自定义代码接收参数。视图和面板可以很好地协同工作。

1
通常,对于面板也是如此,如果您的主题支持,则可以关闭所有其他块,并显示其他上下文相关的内容为“伪”块。
马尔克斯,2011年

2

您不能以编程方式将任何内容传递给块AFAIK。您可以允许块是可配置的(使用D7中的hook_block_configure)。另外,您可以创建自己的主题函数,并可以向其传递参数。您想做什么?


2

配置上下文过滤器,选择“提供默认值”,类型=>“ php代码”,然后使用所需的参数。例如:传回arg(1);


2

对于您的块是视图的显示的特殊情况(但很普遍),您可以使用views_embed_view通过视图的上下文过滤器(通常是从URL)获取的参数来渲染该块。

例如:

print views_embed_view('news', 'panel_pane_1', 'world');

秒之后的任何参数都将作为上下文过滤器值传递给该块。

资料来源:由改写此答案大卫·托马斯,行货CC-BY-SA 3.0

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.