通过 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 使其符合您的要求