了解 Joomla 中的 jdoc:include

Understanding jdoc:include in Joomla

我是 Joomla 的新手,想了解 Joomla 的其中一项功能。

在我们使用的 joomla 模板中

jdoc:include type="component"

声明。但是我无法理解这个功能是如何在 Joomla 中实现的。 url 中传递的组件名称如何通过上述 Joomla 语句呈现?请帮助我理解。

How passing the component name in url gets rendered by the above statement of Joomla ?

澄清 jdoc 语句未在 URL 中传递。当 Joomla 在您的模板中呈现 index.php 并到达 <jdoc:include type="component" /> 时,它将用实际页面内容替换该代码块。

有一些不同的 jdoc 语句,您最常遇到的是:

<jdoc:include type="component" />为页面内容
<jdoc:include type="head" /> 页面头部内容
<jdoc:include type="message" /> 系统消息
<jdoc:include type="module" name="nav" title="Nav menu" /> 显示单个模块,在本例中为 nav
<jdoc:include type="modules" name="col-right" style="xhtml" /> 定义模板上的位置,您可以在其中放置任意数量模块的输出(感谢 Elin 指出我对此的疏忽)

您将有任意数量的具有不同模块名称的 jdoc 语句,其他语句在您的模板中应该只出现一次。

更多详情
不同的 jdoc 语句:https://docs.joomla.org/Jdoc_statements
解析的工作原理:https://api.joomla.org/cms-2.5/classes/JDocumentHTML.html

===更新===

how does this statement know which content page should be rendered? Is this through the view="Page_name" ??

是的,没错。如果你去

domain.com/index.php?option=com_content&view=article&id=1 

当解析模板的 index.php 文件时,Joomla 将在文章 1 到达 <jdoc:include type="component" />

时插入文章 1 的内容

这里有一些关于解析过程中发生的事情的更多信息
https://docs.joomla.org/Advanced_topics

jdoc 语句由 类 在
中呈现 /libraries/joomla/document/html/renderer/

希望对您有所帮助!

joomla 是根据 MVC 设计的 mdoel.in joomla 我们有这些扩展:

  • 组件
  • 模块
  • 插件
  • 模板 在方法 jdoc:include 中输入 通常描述扩展类型。 jdoc:inluce 也用于确定模板的 位置。

模板是如何执行的?

模板在两阶段过程中执行,充分利用 PHP 解析器为模板设计者提供相当大的灵活性和性能。模板在文档 object 的上下文中执行,因此 $this object 始终是 JDocument class.

的实例化

在模板执行开始之前,组件将被执行并缓冲其输出以备后用。

模板执行如下:

  • 加载模板参数(如果有)。
  • 已加载模板语言(如果有)。
  • 如果启用旧版模式​​,则配置变量将被复制为全局变量。
  • 模板文件(index.php)被加载并执行(PHP)。输出被缓冲。这是两阶段过程的第一阶段。标记之间的所有内容都作为 PHP 代码执行。这些标签之外的所有内容都会输出,但会被忽略。由于正在缓冲输出,因此在此阶段不会向客户端 Web 浏览器发送任何内容。
  • 一个 favicon.ico 文件被查找,首先在 Joomla!根目录,然后在模板根目录中。如果找到,后者将覆盖前者。
  • 在第 1 阶段缓冲的输出现在被解析为元素。这是该过程的第 2 阶段。对于找到的每个 jdoc 元素,加载适当的渲染器 class 并调用其渲染方法。 render 方法的输出替换了输出缓冲区中的元素本身。在模块渲染器 classes 的情况下,这会触发模块的执行及其输出的缓冲。
  • 某些 template-specific HTTP headers 添加到 headers 列表中以进行输出。
  • 然后将控制传递回 JApplication object,它将处理将现在呈现的网页返回到客户端 Web 浏览器的其余过程。

from Joomla Documentation