通过 renderer/head.php alter 编辑 jdoc:include type=head 的输出
edit the output of jdoc:include type=head via renderer/head.php alter
我想很好地订购 joomla 网站的头部部分。在搜索论坛后,我遇到了这个 http://forum.joomla.org/viewtopic.php?f=642&t=671526&p=3283757#p3283757
有一个很好的建议是将 /renderer/head.php 文件复制到模板文件夹中并根据当前需要对其进行更改。
他们建议
Blockquote
The render function in head.php not uses the $name var, so it`s fine to use to separate the js and metatags with css files and use the jdoc statement like this:
jdoc:include type="head" name="head" <-- will include all exept js (into
the head section)
jdoc:include type="head" name="foot" <-- for the js (before body tag closes)
Blockquote
但我根本不知道如何实现它。
有人在 Joomla 中编辑 head.php 吗?如果有任何帮助,我将不胜感激。
我对此进行了一些调查,这样做似乎有点老套。
此解决方案目前适用于 Joomla 3。*。
首先你要修改/librabies/joomla/document/document.php
。
一旦你在那里更新功能 loadRenderer() 从此:
public function loadRenderer($type)
{
$class = 'JDocumentRenderer' . $type;
if (!class_exists($class))
{
$path = __DIR__ . '/' . $this->_type . '/renderer/' . $type . '.php';
if (file_exists($path))
{
require_once $path;
}
else
{
throw new RuntimeException('Unable to load renderer class', 500);
}
}
if (!class_exists($class))
{
return null;
}
$instance = new $class($this);
return $instance;
}
对此:
public function loadRenderer($type)
{
$class = 'JDocumentRenderer' . $type;
if (!class_exists($class))
{
$path = __DIR__ . '/' . $this->_type . '/renderer/' . $type . '.php';
$app = JFactory::getApplication('site');
$path_custom = JPATH_THEMES . '/' . $app->getTemplate() .'/html/renderer/' . $type . '.php';
if (file_exists($path_custom))
{
require_once $path_custom;
}
elseif (file_exists($path))
{
require_once $path;
}
else
{
throw new RuntimeException('Unable to load renderer class', 500);
}
}
if (!class_exists($class))
{
return null;
}
$instance = new $class($this);
return $instance;
}
实际上新代码正在您的模板目录中查找渲染文件。
现在您可以将 libraries/joomla/document/html/renderer/head.php
复制到 templates/TEMPLATE_NAME/html/renderer/head.php
并进行修改。
如果你想使用那些:
<jdoc:include type="head" name="head" />
<jdoc:include type="head" name="foot" />
将 templates/TEMPLATE_NAME/html/renderer/head.php
更新到此版本 here。
另一种选择(针对 joomla 2.5/3.0 并略微调整了 joomla 3.5.x)如提及 here 如下:
1.) 从 Joomla 3.0 安装 ZIP 文件中抓取“/libraries/joomla/document/html/renderer/head.php”
2.) 将其重命名为 "head_renderer.php" 并将其放入模板文件夹
3.) 在您的模板中 index.php 添加:
require_once dirname(__FILE__) . DIRECTORY_SEPARATOR . 'head_renderer.php';
4.) 如果您仍在使用 Joomla 3.0,那没问题,如果您使用的是 Joomla 3.5,请编辑 head_renderer.php 并将 JDocumentRendererHead 更改为 JDocumentRendererHtmlHead。
5.) 调整 head_renderer.php 使其符合您的要求
我想很好地订购 joomla 网站的头部部分。在搜索论坛后,我遇到了这个 http://forum.joomla.org/viewtopic.php?f=642&t=671526&p=3283757#p3283757
有一个很好的建议是将 /renderer/head.php 文件复制到模板文件夹中并根据当前需要对其进行更改。
他们建议
Blockquote The render function in head.php not uses the $name var, so it`s fine to use to separate the js and metatags with css files and use the jdoc statement like this:
jdoc:include type="head" name="head" <-- will include all exept js (into
the head section)
jdoc:include type="head" name="foot" <-- for the js (before body tag closes)
Blockquote
但我根本不知道如何实现它。
有人在 Joomla 中编辑 head.php 吗?如果有任何帮助,我将不胜感激。
我对此进行了一些调查,这样做似乎有点老套。
此解决方案目前适用于 Joomla 3。*。
首先你要修改/librabies/joomla/document/document.php
。
一旦你在那里更新功能 loadRenderer() 从此:
public function loadRenderer($type)
{
$class = 'JDocumentRenderer' . $type;
if (!class_exists($class))
{
$path = __DIR__ . '/' . $this->_type . '/renderer/' . $type . '.php';
if (file_exists($path))
{
require_once $path;
}
else
{
throw new RuntimeException('Unable to load renderer class', 500);
}
}
if (!class_exists($class))
{
return null;
}
$instance = new $class($this);
return $instance;
}
对此:
public function loadRenderer($type)
{
$class = 'JDocumentRenderer' . $type;
if (!class_exists($class))
{
$path = __DIR__ . '/' . $this->_type . '/renderer/' . $type . '.php';
$app = JFactory::getApplication('site');
$path_custom = JPATH_THEMES . '/' . $app->getTemplate() .'/html/renderer/' . $type . '.php';
if (file_exists($path_custom))
{
require_once $path_custom;
}
elseif (file_exists($path))
{
require_once $path;
}
else
{
throw new RuntimeException('Unable to load renderer class', 500);
}
}
if (!class_exists($class))
{
return null;
}
$instance = new $class($this);
return $instance;
}
实际上新代码正在您的模板目录中查找渲染文件。
现在您可以将 libraries/joomla/document/html/renderer/head.php
复制到 templates/TEMPLATE_NAME/html/renderer/head.php
并进行修改。
如果你想使用那些:
<jdoc:include type="head" name="head" />
<jdoc:include type="head" name="foot" />
将 templates/TEMPLATE_NAME/html/renderer/head.php
更新到此版本 here。
另一种选择(针对 joomla 2.5/3.0 并略微调整了 joomla 3.5.x)如提及 here 如下:
1.) 从 Joomla 3.0 安装 ZIP 文件中抓取“/libraries/joomla/document/html/renderer/head.php”
2.) 将其重命名为 "head_renderer.php" 并将其放入模板文件夹
3.) 在您的模板中 index.php 添加:
require_once dirname(__FILE__) . DIRECTORY_SEPARATOR . 'head_renderer.php';
4.) 如果您仍在使用 Joomla 3.0,那没问题,如果您使用的是 Joomla 3.5,请编辑 head_renderer.php 并将 JDocumentRendererHead 更改为 JDocumentRendererHtmlHead。
5.) 调整 head_renderer.php 使其符合您的要求