我是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 也用于确定模板的位置。