页面管理器和面板之间有什么区别?


31

我之所以写这个问题,是因为我在整个Drupal社区中都对“什么是页面管理器”和“什么是面板”感到困惑。

Answers:


48

凳子

Ctools中,有一个名为“页面管理器”的子模块。这个模块的核心是一个hook_menu的图形用户界面。它使您可以在系统中创建新路径,也可以接管Core提供的某些路径。

页面管理员

页面管理器为您管理路径后,就可以使用它执行几项不同的操作。开箱即用,它可以为您提供重定向。一种常见的用例是拒绝访问缺少适当主题的节点,因为它们不是要自己查看的,例如“事实框”或“图像节点”。另一个是从术语视图重定向到同一术语的Solr搜索。

Page manager的主要好处之一是,它引入了一种处理“上下文”的方法,而不必与模块Context混淆。这里最重要的是,窗格是“稍微更聪明的块”,可以声明其对系统的依赖关系,并且它们具有以依赖关系注入方式传递的实际参数(称为上下文)。

对于那些不熟悉DI但熟悉Drupal的人,例如,它使您不再需要再次使用menu_get_object来获得“从菜单路径引用的那个唯一的节点”。如果路径中有多个节点怎么办?或者,如果您真的想基于实体引用将块基于节点上?这对于页面管理器来说不是问题,它使所有块(窗格)更加灵活和可重复使用。

面板

但是,最常见的用例是将布局和路径渲染移交给Panels。面板提供了用于在代码中或直接在浏览器中定义布局的工具,并使您可以直接在浏览器中放置内容。

结论

这两个模块都很强大,并且文档记录相对较差,这使很多人对它们感到沮丧。但是,如果您要构建一个较大的站点,那么了解如何使用它们非常值得,尤其是因为它们的处理“页面”以及布局的方法看起来像它们已经进入了Drupal 8核心,这要归功于EclipseGCSCOTCH计划。相关沙盒项目

进一步阅读

使用这些工具可以完成的其他有趣事情的示例:

  1. 如果将“ 上下文”用作分区工具,则“面板”可以与其配合使用,并可以用作布局工具。
  2. 面板可以与Display Suite交互,以为其提供漂亮的拖放UI。
  3. 页面管理器和上下文管理可以帮助构建“上下文”敏感菜单以及其他对站点管理员/编辑有用的内容。

3
我从未真正了解过/使用过页面管理器-非常高兴(基本上)知道它的用途。感谢您的简短撰写!
Chapabu 2012年

2
$page_data = page_manager_get_current_page()是钱的来源,尤其是$page_data['handler']
mpdonadio

1

在Drupal 7中,页面管理器是面板模块的基础。

学习页面管理器 ”是一组有趣(而且非常有趣)的视频。它们包含与“ 面板”模块相关的各种主题。以下是有关该主题的整套视频的摘要(引自上面的链接):

  • 页面管理器允许您以灵活一致的方式收集和管理上下文信息。这是在Drupal网站上构建基础结构的重要组成部分,您应该知道如何使用此模块。
  • 该截屏视频系列面向有经验的Drupal开发人员。
  • 第1、2和3集介绍了最基本的概念,例如自定义页面,变体,选择规则和(一定程度上)上下文对象。
  • 第4、5、6和7集谈论面板,重点是视图集成,但也涉及有效缓存。
  • 有关访问控制,菜单项的第8和9集,尤其是鲜为人知但非常有用的上下文管理模块。
  • 第10集和第11集讨论了有关在页面管理器中使用上下文对象的更多信息,包括使用视图作为上下文。这是恕我直言,页面管理器的真正功能所在。
  • 第12和13集收集了各种细节,例如如何使用面板轻松地重新排列节点编辑表单,导入/导出设置以及可与页面管理器一起使用的一些其他模块。

请参阅“ 解释面板:Drupal开发人员概述”,以获取有关“面板”模块的另一个很好的解释。

页面管理器的未来

在Drupal 8中,页面管理器已成为一个单独的模块,而以前(直到Drupal 7为止)是CTools模块的一部分。这是(与D8相关的)项目页面上的更多引用:

它支持创建新页面,并允许在该页面中放置块。

像Drupal 7的页面管理器一样,它提供了“页面变体”的概念,每个变体都有自己的选择条件。

此外,它可以用来接管现有页面,例如覆盖/ node /%来更改查看节点时显示的内容。

它利用core ConditionsContextBlocksAPI来完成此任务。

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.