如何将视图嵌入节点内?


7

在Drupal 6中,可以将视图嵌入到节点中,如下所示:

$viewName = 'LatestNews';
print views_embed_view($viewName);

这对于drupal 7不起作用。在drupal 7中嵌入视图的功能是什么?


根据视图模块的文档链接,该功能在Drupal 6和7上同样可用。尝试使用第二个参数作为视图的$ display_id。
Shoaib Nawaz,

Answers:




5

要在节点模板中显示视图,请使用以下代码。

// Load the view. 
$view = views_get_view('machine_name_of_view');
// Set the active display.
$view->set_display('your_view_display_name');
// Set any needed argument.
$view->set_arguments(array(arg(0), arg(1)));
// Execute the view.
$view->execute();
// Render the view.
print $view->render();

1
您应该始终调用$ view-> pre_execute();。在$ view-> execute();之前;
Teegan 2014年

@Teegan -不知道,只用执行似乎工作,但我会考虑使用pre_execute()之前execute()
Cyclonecode 2014年

4

为什么不:

print views_embed_view($view_machine_name, $view_display_name, $arg1, $arg2);

其中$ arg,$ arg2等是可选的。

或使用Viewfield模块将视图嵌入为字段。


风景!!!我的天啊!!!我已经花了几天的时间寻找这个功能,尝试了许多模块,这为我节省了!:D谢谢!
DrCord

@DrCord,也可以看到Eva和views_field_view模块,它们几乎是同一回事。
timofey.com 2013年

我无法让EVA做我想要的事情。
DrCord

1

一种解决方案是使用Panelizer覆盖相应节点的内容。

例如,假设您有少量的一次性页面需要附加视图。

1)您可以使用Page内容类型,也可以创建专门用于面板化的新内容类型。

2)为该内容类型启用Panelizer,确保将其设置为“允许每个记录显示选择”,这样您就可以设置将针对每页关闭量身定制的多个Panelizer显示。(每个拼版器的显示都可以附加自己的视图集)

3)从这里您只需创建一个视图(我喜欢为此使用“内容窗格”)并将其添加到所选的Panelizer内容显示中。

这使您可以重用一个真正不需要它自己的字段集的单一内容类型,但是可能会用于引用其他实体(作为字段)或引用视图。

进入“ 段落”模块,您将拥有“瑞士军刀”内容类型。说来,这将为用于此目的的自定义内容类型起一个完美的称呼……嗯……。


0

我们只提到第一个参数是视图名称,第二个显示名称,然后可以传递上下文过滤器参数。

因此,“ $ node-nid”(第三个参数)取决于您的观点……对第一个上下文过滤器的期望是什么-id不必是节点id。当然,您并不仅限于一个参数-传递与视图中一样多的参数...或者如果您的视图中没有上下文过滤器,则不传递任何参数。


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.