Показать теги статей в макете списка категорий
Вопрос
Я разрабатываю сайт, используя joomla 3.2.3, где я добавляю некоторые теги к своим статьям joomla, которые в статьях отображаются над их содержимым.
Для листинга я использую «Тип пункта меню:Статьи > Список категорий», и я хотел бы, чтобы он также отображал теги статей в списке, например.так:
[Название] [Автор] [Теги]
Поскольку joomla не поддерживает эту опцию в диспетчере статей для отображения тегов в List-Layout, я пытался добавить ее в список, редактируя файлы List-Layout.Здесь я сделал переопределение шаблона:
com_content > Категория
Включает в себя файлы-списки:
- default.php
- default.xml
- default_article.php
- default_children.php
Затем я попытался изменить этот файл, который создает макет списка:
.../templates/my_template/html/com_content/category/default_articles.php
Чтобы создать столбец тегов для макета списка, я добавил этот код в раздел около строки 100:
<?php if ($this->params->get('show_tags')) : ?>
<th id="categorylist_header_tags">
<?php echo JHtml::_('grid.sort', 'JTAG', 'tags', $listDirn, $listOrder); ?>
</th>
<?php endif; ?>
Это создало и отобразило второй столбец в моем списке категорий с заголовком:Теги (если в опции «Менеджер статей» установлено значение «показать»)
И чтобы теги отображались в полях столбцов, я решил, что мне нужно добавить код для тегов в раздел около строки 181, где я пытался добавить этот код:
</td>
<?php endif; ?>
<?php if ($this->params->get('show_tags', 1)) : ?>
<<td headers="categorylist_header_tags" class="list-tags">
<?php $this->item->tagLayout = new JLayoutFile('joomla.content.tags'); ?>
<?php echo $this->item->tagLayout->render($this->item->tags->itemTags); ?>
<?php echo JText::sprintf('JTAG', $article->tags->itemTags); ?>
</td>
<?php endif; ?>
Это код, с которым мне нужна помощь, поскольку он не работает полностью, он показывает только текстовые «теги» (из «JTAG») в полях и не отображает тег статьи из кода:
<?php $this->item->tagLayout = new JLayoutFile('joomla.content.tags'); ?>
<?php echo $this->item->tagLayout->render($this->item->tags->itemTags); ?>
который я взял из макета по умолчанию в представлении «Статьи», чтобы увидеть, как отображаются теги.Но этот код, по-видимому, не работает напрямую в макете списка категорий или не дает никакого эффекта.
Попробовал просмотреть этот пост:Теги статей, отображаемые в макете списка статей
Но мне не удалось заставить код в этом посте работать у меня:
Решение
Итак, если вы посмотрите на макет категории веб-ссылок, вы увидите, что теги для отдельных ссылок отображаются с помощью этого кода:
<?php $tagsData = $item->tags->getItemTags('com_weblinks.weblink', $item->id); ?>
<?php if ($this->params->get('show_tags', 1)) : ?>
<?php $this->item->tagLayout = new JLayoutFile('joomla.content.tags'); ?>
<?php echo $this->item->tagLayout->render($tagsData); ?>
<?php endif; ?>
Итак, что вам нужно сделать, это правильно настроить $tagsData, изменив имя псевдонима, а также убедиться, что переменная id верна.
Вы помещаете это в код для размещения отдельного элемента в списке, что означает blog_item.php
файл, возможно, сразу после заголовка.
<?php $this->item->tagLayout = new JLayoutFile('joomla.content.tags'); ?>
<?php echo $this->item->tagLayout->render($this->item->tags->itemTags); ?>