在 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') 出现错误?的主要内容,如果未能解决你的问题,请参考以下文章

在 Drupal 7 中重新启用禁用完整 html

Drupal 7 本地安装失败

在 Drupal 7 中更改寻呼机格式

Drupal 7 在视图中获取分类术语列表

在Drupal 7中使用JQuery

在 Drupal 7 中更改主题的 drush 命令是啥?