Как отобразить помеченные элементы в макете блога категории

8

Я хочу создать пункт меню для тега, который показывает статьи, как в макете блога категории. Я пробовал с этими типами пунктов меню: «Компактный список теговых элементов», «Список всех тегов» и «Метки элементов», но безуспешно.

Согласно официальной документации тегов контента , это представляется возможным.

Если у вас есть теги и некоторые тегированные элементы, вы можете отобразить их в интерфейсе несколькими способами.

По умолчанию Joomla! будет отображать теги, встроенные в каждый элемент, который был помечен. Вы можете отключить этот дисплей, изменив параметры. Вы можете управлять позиционированием этого дисплея с помощью переопределений макетов и альтернативных макетов, а также можете стилизовать его с помощью CSS.

Вы можете создать ссылку меню, которая отображает список тегов со ссылками на элементы с тегами для каждого тега.

> Вы можете создать ссылку меню, которая отображает список элементов с тегами для данного тега и отображает их в виде списка или стиля блога.

Вы можете использовать один из модулей тегов. Популярные теги будут отображать связанный список тегов, имеющих наиболее отмеченные элементы. Аналогичные теги будут отображать список элементов, которые имеют набор тегов, аналогичный текущему отображаемому элементу (обратите внимание, что этот модуль не отображается на страницах, на которых не отображаются элементы содержимого).

Альфредо Осорио
источник

Ответы:

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">

На этом этапе вы должны увидеть новый тип элемента меню с именем Tagged Blog при создании нового элемента меню из вашего менеджера меню. Смотрите это изображение ниже

Новый теговый элемент меню блога

Теперь откройте файл [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; ?>

Далее, обведите строки 77 перед кодом и <?php if ($this->params->get('tag_list_show_item_description', 1)) : ?>добавьте этот код:

<?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, и посмотрите результат.

Чтобы упростить задачу, я загрузил эти файлы выше здесь . Радоваться, веселиться!

webchun
источник
2
Я не могу поверить, что эта функция еще не была реализована.
Альфредо Осорио
2

В настоящее время это невозможно. Самое близкое, что вы можете получить, это Tagged Items. На форумах Joomla есть статья о том, как добавить дополнительную информацию. http://forum.joomla.org/viewtopic.php?f=708&t=838191

В настоящее время это также запрос к ideas.joomla.org по адресу http://ideas.joomla.org/forums/84261-joomla-idea-pool/category/12057-content?query=category%20blog%20tagged%20items . Вы можете пойти и проголосовать за это.

Люсинда Кейдж
источник
0

В марте 2019 года это все еще кажется проблемой… Другой подход может заключаться в использовании перенаправления вашего веб-сервера (Apache / ngnix / IIS / etc) для перехвата «стандартных» ссылок и перенаправления их на ваши собственные ссылки. Недостатками (как я их вижу) являются: - доступ к соответствующим файлам конфигурации для веб-сервера (для Apache это можно сделать в каждом каталоге .htaccess, если включен mod_rewrite) - у вас есть управляемое количество теги, позволяющие вам создать пункт меню назначения для каждого из них (если у вас есть 200 тегов, вы можете создать пункты меню для каждого из них, но кого это беспокоит?) Правила переписывания Apache, которые я использую для этого:

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

Таким образом, для каждого тега у меня есть статья назначения в формате, к которому я хочу получить доступ посредством пункта меню с именем тега и -articles (например, tag1-article). Конечно, это обходной путь, но я получил желаемый результат, учитывая, что я могу выполнить два «условия» (доступ к конфигурации Apache и не так много тегов) выше.

Марк Брэдли
источник