在 drupal 7 中,views_get_view('VIEWNAME') 出现错误?
Posted
技术标签:
【中文标题】在 drupal 7 中,views_get_view(\'VIEWNAME\') 出现错误?【英文标题】:in drupal 7, views_get_view('VIEWNAME') get a error?在 drupal 7 中,views_get_view('VIEWNAME') 出现错误? 【发布时间】:2012-05-19 20:16:59 【问题描述】:我想在tpl.php
中嵌入一个视图,所以我使用了views_get_view('VIEWNAME')
函数。
这是我正在做的tpl.php
:
<?php
$view = views_get_view('MapView');
print $view->preview('default');
?>
"MapView
" 是视图的名称,我不确定views_get_view
中的参数是机器名称还是人类可读的名称,实际上在我的示例中使用的是人类可读的名称,因为我不能在drupal视图配置中找到机器名。
无论如何,我收到一条错误消息“Fatal error: Call to a member function preview() on a non-object
”,好像我没有正确获取视图?
有什么想法吗?
【问题讨论】:
您知道我们有一个 Drupal 站点吗? drupal.stackexchange.com 【参考方案1】:您可以从编辑视图 url 轻松获取视图 ID。像任何键一样,它由取消划线和小写字母组成。 也可以在需要的地方输出视图试试:
$view = views_embed_view('view_id', $display_id = 'block');
print $view;
它适用于节点内容,我在模块中向所需类型的节点添加了视图:
function YOUR_MODULE_node_view($node, $view_mode, $langcode)
if($node->type=="type")
$view = views_embed_view('view_id', $display_id = 'block');
$node->content['myfield'] = array(
'#markup' => '<h3>Title</h3>'.$view,
'#weight' => 1,
);
return $node;
【讨论】:
+1。 views_embed_view() 实际上是嵌入视图的最佳方式。但是,如果您想更改视图(每页的项目等),views_get_view() 是一种方式。【参考方案2】:一个老问题,但我遇到了同样的问题,但我找不到正确的答案:您必须使用机器名称,并且区分大小写!您可以在“名称”字段的 views_view 表中的数据库中找到它。
【讨论】:
以上是关于在 drupal 7 中,views_get_view('VIEWNAME') 出现错误?的主要内容,如果未能解决你的问题,请参考以下文章