Understanding jdoc:include in Joomla


Understanding jdoc:include in Joomla

我是Joomla的新手,想了解Joomla的一个功能。

在 joomla 模板中,我们使用

jdoc:include type="component"

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

如何在 url 中传递组件名称如何由上述呈现 乔姆拉的声明?

澄清一下,jdoc 语句不会在 URL 中传递。当Joomla渲染索引时.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

=== 更新 ===

此语句如何知道应呈现哪个内容页面?是 这通过视图="Page_name"??

是的,这是正确的。如果你去

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

在解析模板的索引.php文件时,Joomla 会在文章 1 到达时插入<jdoc:include type="component" />

以下是有关解析
期间发生的情况的更多信息https://docs.joomla.org/Advanced_topics

jdoc 语句由
/libraries/joomla/document/html/renderer/

希望这有帮助!

模板是如何执行的?

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

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

然后,模板执行按如下方式进行:

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

来自 Joomla 文档

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

  • 元件
  • 模块
  • .plugin
  • 模板在方法 JDOC:包含类型通常描述扩展的类型。和 JDOC:INLUCE 也用于确定模板的位置。