You are here

6 使用views_embed_view嵌入视图

admin 的头像
Submitted by admin on 星期四, 2015-09-17 02:37

作者:老葛,北京亚艾元软件有限责任公司,http://www.yaiyuan.com

接下来,修改breadcrumb2.admin.inc文件里面的breadcrumb2_overview_breadcrumbs函数,这是修改后的样子:

/**

 * Displays the breadcrumb admin overview page.

 */

function breadcrumb2_overview_breadcrumbs(){

  $build['#markup'] = views_embed_view('breadcrumbs','default');

  return $build;

}

 

现在我们回到admin/structure/breadcrumbs,看一下效果,我这里预先定义了很多面包屑,这里给出一个简单的截图:

图片6.png 

下面的分页功能,是正常的,如果对这个页面,做比较多的测试的话,会发现这里面存在一个问题。在上面的搜索框里面,输出“node/1”,点击应用按钮。此时页面直接跳转到了http://localhost/breadcrumb2/?path=node%2F1&=Apply。这个时候,我们会发现views_embed_view这个函数的局限性了。它无法将当前页面的路径传递给暴露出来的表单。为了解决这个问题,我们将代码修改为:

/**

 * Displays the breadcrumb admin overview page.

 */

function breadcrumb2_overview_breadcrumbs(){

  //$build['#markup'] = views_embed_view('breadcrumbs','default');

  $view = views_get_view('breadcrumbs', 'default');

  $view->override_url = $_GET['q'];

  return $view->preview();

  //return $build;

}

这里面,我们首先使用了views_get_view,获取视图,接着使用$view->override_url覆写URL,这里使用的是当前路径,这样就可以将当前路径传递给暴露出来的表单了。最后使用$view->preview()获取内容。通过这种方式,就解决了前面所说的问题。不过还是有一个很小的问题,但是不影响过程,就是搜索的时候,Overlay不起作用了。


Drupal版本: