了解jdoc:包含在Joomla中

时间:2016-01-15 11:07:00

标签: php oop joomla joomla2.5

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

在joomla模板中,我们使用

jdoc:include type="component"

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

3 个答案:

答案 0 :(得分:2)

  

如何通过上面的方式呈现url中的组件名称   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

=== update ===

  

该声明如何知道应呈现哪个内容页面?是   这通过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语句由类中的类呈现 /库/的Joomla /文件/ HTML /渲染器/

希望这有帮助!

答案 1 :(得分:0)

如何执行模板?

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

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

模板执行如下:

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

from Joomla Documentation

答案 2 :(得分:-2)

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

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