如何在类别博客布局中显示带标签的项目


8

我想为标签创建一个菜单项,该标签将文章显示为类别博客布局。我尝试了以下菜单项类型:“标记项的完整列表”,“所有标记项的列表”和“标记项”,但是没有运气。

根据内容标签官方文档,这似乎是可能的。

一旦有了标签和一些带标签的项目,就可以通过几种方式在前端显示它们。

默认情况下,Joomla!将显示嵌入已标记的每个项目中的标记。您可以通过更改参数来关闭此显示。您可以使用布局替代和替代布局来控制此显示的位置,也可以使用CSS设置样式。

您可以创建一个菜单链接,该菜单链接显示一个标签列表,并带有指向每个标签的标签项目的链接。

>您可以创建一个菜单链接,该菜单链接显示给定标签的标签项目列表,并以列表或博客样式显示。

您可以使用标签模块之一。热门标签将显示标签项最多的标签的链接列表。相似标签将显示与当前显示的项目具有相似标签集的项目列表(请注意,此模块不会显示在未显示内容项目的页面上)。

Answers:


8

由于这个问题似乎已经被问过好几次了,并且仍然没有很好的答案,所以我想尝试从模板覆盖方面提供解决方案。步骤很复杂,但应该很容易。

注意:创建本教程时,我正在使用Joomla 3.4.4和模板protostar

首先,复制以下文件:

[root]/components/com_tags/views/tag/tmpl/default.php
[root]/components/com_tags/views/tag/tmpl/default.xml
[root]/components/com_tags/views/tag/tmpl/default_items.php

[root]/templates/your_template_name/html/com_tags/tag/default.php
[root]/templates/your_template_name/html/com_tags/tag/default.xml
[root]/templates/your_template_name/html/com_tags/tag/default_items.php

将文件名替换为您喜欢的名称,例如“ taggedblog”,因此它将变为:

[root]/templates/your_template_name/html/com_tags/tag/taggedblog.php
[root]/templates/your_template_name/html/com_tags/tag/taggedblog.xml
[root]/templates/your_template_name/html/com_tags/tag/taggedblog_items.php

打开文件顶部的[root] /templates/your_template_name/html/com_tags/tag/taggedblog.xml文件,您将看到以下代码:

<layout title="com_tags_tag_view_default_title" option="com_tags_tag_view_default_option">

更改为

<layout title="Tagged Blog" option="taggedblog">

此时,从菜单管理器创建新菜单项时,应该会看到一个名为“标记博客”的新菜单项类型。见下面的图片

新的标记博客菜单项

现在,打开文件[root] /templates/your_template_name/html/com_tags/tag/taggedblog_items.php

在第62行删除此代码:

<ul class="category list-striped">

</ul>在第90行的结束标记

然后,仍然在同一文件上,删除从第64行开始的这些代码:

<?php if ($item->core_state == 0) : ?>
                <li class="system-unpublished cat-list-row<?php echo $i % 2; ?>">
            <?php else: ?>
                <li class="cat-list-row<?php echo $i % 2; ?> clearfix" >

<?php endif; ?>在第70行,并</li>在第85行关闭标签

接下来,<div class="span5">在代码后添加64行,<?php foreach ($items as $i => $item) : ?></div><?php endforeach; ?>

接下来,在代码之前<?php if ($this->params->get('tag_list_show_item_description', 1)) : ?>添加环绕代码的第77行:

<?php
    $db = JFactory::getDBO();
    $query = $db->getQuery(true);
    $query->select('introtext')->from('#__content')->where('id=' . (int)$item->content_item_id);
    $db->setQuery($query);
    //displaying the intro image
    $images  = json_decode($item->core_images);
    if(!empty($images->image_intro)) {
        echo '<img src="'.$images->image_intro.'">';
    }
    //displaying the intro text
    $introtext = $db->loadResult();
    echo $introtext;

    ?>

此时,应该在网站上显示介绍文字和介绍图片。

现在,打开文件[root] /templates/your_template_name/html/com_tags/tag/taggedblog.php,在第51行附近,您将看到此代码<?php echo $this->loadTemplate('items'); ?>,将该行更改为:

<div class="row"><?php echo $this->loadTemplate('items'); ?></div>

就这样。

现在,尝试从joomla菜单管理器中创建带有“已标记博客”类型的菜单项,然后查看结果。

为了使事情变得容易,我在此处将这些文件上传到了此处。玩得开心!


2
我不敢相信此功能尚未实现。
Alfredo Osorio 2015年


0

在2019年3月,这似乎仍然是一个问题。...一种不同的方法可能是使用Web服务器的(Apache / ngnix / IIS / etc)重定向来捕获“标准”链接并将它们重定向到您自己的链接。缺点(如我所见)是:-访问Web服务器的相关配置文件(对于Apache,这可以在每个目录.htaccess中完成,只要启用了mod_rewrite)-您可以控制的数量标签允许用户为每一个创建目标菜单项(如果你有200个标签,您可以创建为每一个菜单项,但谁会打扰?)我用这个阿帕奇重写规则如下:

RewriteBase /
ReWriteRule ^component/tags/tag/([^\.]+).html$ /$1-articles [L,R=301]

因此,对于每个标签,我都有一个目标文章,该文章的格式是我希望通过带有标签名称和-articles(例如,tag1-articles)的菜单项访问的格式。当然,这是一种解决方法,但是鉴于我可以满足上面的两个“条件”(Apache config访问和不多的标签),我得到了想要的结果。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.