编辑jdoc的输出:include type = head via renderer / head.php alter

时间:2015-03-19 13:24:07

标签: php joomla joomla3.0 head

我想很好地订购joomla网站的头部。在搜索论坛后,我遇到了这个http://forum.joomla.org/viewtopic.php?f=642&t=671526&p=3283757#p3283757

有一个很好的建议是将/renderer/head.php文件复制到模板文件夹中并将其更改为当前需要。

他们建议

  

块引用   head.php中的render函数不使用$ name var,因此可以使用js和metatags与css文件分开并使用jdoc语句,如下所示:

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)
  

块引用

但我根本不知道如何实现这一点。

在Joomla编辑head.php有经验吗?我将不胜感激任何帮助。

2 个答案:

答案 0 :(得分:6)

我对它进行了一些调查,看起来有点笨拙。

此解决方案目前正在使用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

答案 1 :(得分:1)

另一个选项(适用于joomla 2.5 / 3.0并略微调整joomla 3.5.x)如下所述{/ 3}}:

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