有没有办法<head>
在 Joomla 3.1 中手动配置网站部分的内容?我想将模板系统用于页面的整个标记,包括<html></html>
.
我刚读到这个: http: //forum.joomla.org/viewtopic.php?f=466 &t=230787 我对这个反应感到惊讶。这肯定是模板/数据分离 101。这在最新的 Joomla 版本中是否已修复?
有没有办法<head>
在 Joomla 3.1 中手动配置网站部分的内容?我想将模板系统用于页面的整个标记,包括<html></html>
.
我刚读到这个: http: //forum.joomla.org/viewtopic.php?f=466 &t=230787 我对这个反应感到惊讶。这肯定是模板/数据分离 101。这在最新的 Joomla 版本中是否已修复?
如果您计划进行模板开发,并且您需要将所有模板数据与 Joomla 库或核心文件(头部)分开。
通常头部分包括将像
<jdoc:include type="head" />
它从库中加载内容libraries\joomla\document\html\renderer\head.php
如果你想覆盖 head 的内容,你可以为你的任务制作一个模块。只需创建一个模块并包含该模块而不是这个头确保已将所有必需的代码添加到工作$document
类中,否则它会错过 Joomla 的很多功能document class
为了让 jQuery 从 CDN 加载并将它放在脚本列表的顶部,我在 $doc = JFactory::getDocument(); 之后做了一个小补丁。直接在 $this 对象内部操作标头数组,如下所示:
$my_jquery = "//ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js";
$my_jquery_ui = "//ajax.googleapis.com/ajax/libs/jqueryui/1.11.2/jquery-ui.min.js";
$my_jquery_cx = $this->baseurl."/media/jui/js/jquery-noconflict.js ";
foreach($this->_scripts as $k=>$v) {
// put own jquery.conflict && jquery-ui && jquery on top of list
if( strpos($k,'jquery.min.js')) {
unset($this->_scripts[$k]);
$r = array( $my_jquery_cx => $v);
$this->_scripts = $r + $this->_scripts;
$r = array( $my_jquery_ui => $v);
$this->_scripts = $r + $this->_scripts;
$r = array( $my_jquery => $v);
$this->_scripts = $r + $this->_scripts;
}
else if( strpos($k,'jquery.ui.min.js')) {
unset($this->_scripts[$k]);
}
else if( strpos($k,'jquery-noconflict.js')) {
unset($this->_scripts[$k]);
}
}
将 $my_jquery_xxx 替换为 templateDetails.xml 文件中的可编辑配置参数
正如 Jobin 的回答所解释的,通常,您将使用<jdoc:include type="head" />
标签包含头部数据,但如果您想对此进行更多控制,您可以使用JDocument
.
模板 PHP 中的示例代码:
$doc = JFactory::getDocument();
$my_head_data = $doc->getHeadData();
这将为您提供 JDocument通常打印的数据数组,以便您可以完全选择要打印的内容和方式。