Joomla:多次覆盖类别博客输出?

Posted

技术标签:

【中文标题】Joomla:多次覆盖类别博客输出?【英文标题】:Joomla: Override Category Blog output multiple times? 【发布时间】:2012-11-22 19:58:19 【问题描述】:

是的。我想将类别博客组件的输出覆盖为 2 种不同的显示样式。

对于第一种样式,我在 [mytemplate]/html 文件夹中复制并编辑了 blog_item.php 和 blog.php。然后我从类别博客后端的下拉列表中选择模板样式。那行得通。分类博客的显示变化如我所料。

但如果我想创建另一种风格并在另一个类别的博客中使用。我该怎么办?以及如何命名我的文件(我尝试过 blog_1.php、blog_item_1.php )但只在后端看到我的第一个样式显示。

我使用的是 joomla 2.5。

请帮助我。非常感谢!

================================================ ====================================

[更新] 我解决了这个问题。这是我的解决方案:

    将我的模板克隆到 [my_template_2] 转到 [my_template_2]/html/com_content/category,然后根据需要编辑 blog.php、blog_item.php。 转到后端,在我的类别博客菜单项中,我将 [my_template_2] 指定为其模板样式。

然后它起作用了。我的两个类别博客都有自己的风格。

这可能不是很好的解决方案,因为我必须使用多个模板,但目前对我来说已经足够了。

谢谢你,***ers。

================================================ ====================================

[更新 2]

现在,有了多种模板样式,我可以只在一个模板中为我的类别博客组件创建无限的样式。这样好多了。

【问题讨论】:

我发现了这一点,当您获得“模板样式”下拉菜单时,能够使用您需要的不同名称、$name.php 和 $name_item.php 进行多个覆盖是有意义的保留该项目,因为有一个方法调用。但这是在 CP 中设置的,而不是菜单项 :( 相关问题:Creating multiple layout overrides for category blog layout 【参考方案1】:

您可能知道,joomla 不允许开发人员为其组件制作不同的样式。

我认为您必须在模板管理页面中列出由“类别博客组件”制作的所有菜单,并让用户在那里设置每个菜单样式。** 在 blog.php 中,检查模板设置,然后加载自定义样式...


** 您必须开发一个自定义字段元素,其中列出所有“类别博客组件”菜单。

* 您可以使用此代码访问组件模板中的模板参数:

$app        =& JFactory::getApplication();
$template   = $app->getTemplate(true);
$paramsTemplate = $template->params;
$style = $paramsTemplate->get('style');

【讨论】:

嘿伙计。现在我明白你说的了。我为我的模板创建了 2 种样式,并使用一个模板参数来告诉我当前的样式。所以,正如你所说,在 blog.php 中,我加载我的自定义样式取决于该模板参数。谢谢你。这比多模板解决方案要好得多。 “如你所知”?当然,Joomla 让您覆盖布局并使用多个覆盖。【参考方案2】:

您不需要使用多种样式。您需要的是使用替代布局和替代菜单布局。 对于模板的 html/componentname/category 文件夹中的替代菜单布局,请使用一组独特的名称创建新样式,类似于 blog 已经在文章类别布局文件夹中提供替代类别列表的方式。还要为您制作的每个布局创建一个新的 xml 文件,并使用匹配的名称。

当您创建菜单项时,您现在将获得这些选项以及其他常规选项。只需选择您想要的。

【讨论】:

【参考方案3】:

基于上面的学习,这里是我的 /templates/mytheme/com_content/category/blog.php 代码

然后在全局配置 > 文章管理器选项 > 类别中选择博客作为覆盖/布局。

defined('_JEXEC') or die;

JHtml::addIncludePath(JPATH_COMPONENT.'/helpers');
$pageclass_sfx = trim($this->pageclass_sfx);

// so pick it on the page class in menu item
if (isset($pageclass_sfx) && $pageclass_sfx != '') 
    echo $this->loadTemplate($pageclass_sfx);
 else 
    echo $this->loadTemplate('default');

如果需要其他内容,我可以添加多个 elseif,否则它会查找 'blog_' 。 $this->pageclass_sfx 。 'php'。它总是以 blog_ 开头,因为那是编码到 com_content 中的。旧博客我移到 blog_default.php 和 blog_default_item.php

【讨论】:

以上是关于Joomla:多次覆盖类别博客输出?的主要内容,如果未能解决你的问题,请参考以下文章

Joomla /为文章类别模块添加类别描述

如何为 k2 类别创建自定义模板并将此模板分配给 Joomla 支持?

Joomla 渐进式缓存不处理具有可变输出的模块

Joomla 组件覆盖模板

在 Joomla 替代布局和使用 K2 模板之间感到困惑

Joomla / 将类别描述添加到文章类别模块