如何使用自定义块php获取视图页面的字段

时间:2013-12-01 01:32:29

标签: php drupal drupal-7 views

我有一个包含各种字段的Drupal 7视图“页面”。其中之一是分类术语。我还有一个视图'块',其中一个Contextual过滤器设置为相同的术语。

(我正在尝试按页面视图中的术语过滤块结果)

我创建了一个新块(在'blocks'下)并添加了自定义php以返回并显示视图。

如果我使用echo views_embed_view('events','block','1');硬编码术语ID,则可以正常使用。

我的问题是;如何使用php获取页面视图中字段的值。我已经看到很多关于如何从正常节点获取它而不是从另一个视图获取它的示例。

提前致谢

2 个答案:

答案 0 :(得分:0)

在Drupal中,块在内部处理上下文过滤器。如果使用以下代码打印块,则不必担心传递术语参数,前提是您在术语页面上或者您明确设置了如何在视图上下文过滤器参数中检索术语ID。

如前一个答案所示 How to insert a block into a node or template in Drupal 7?
唯一的例外是PHP 5.4,您只能将变量传递给drupal_render()

$block = block_load('views', 'block_name');      
$output = _block_get_renderable_array(_block_render_blocks(array($block)));        
print drupal_render($output);

如果您不在分类学术语页面上,或者如果您无法获取视图以检索术语ID,那么您应该从不同的角度查看您的问题,即找到一种方法来自行检索术语tid传递给:

views_embed_view()

实现这一目标的一个好工具是Devel模块和一些预处理函数。

答案 1 :(得分:0)

print $ block = module_invoke('views','block_view','你的块名');

print render($ block ['content'] ['#content']);

你也可以使用print_r()/ var_dump()来显示你想要的字段