了解 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 浏览器的其余过程。
我是 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" />
这里有一些关于解析过程中发生的事情的更多信息
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 浏览器的其余过程。