Bezdepbonusu7Программирование: статьи и ответы

Вопрос

Переопределение списка категорий joomla для добавления идентификатора к каждому элементу списка

Автор вопроса: happilyUnStuckОтветов: 3

Я пытаюсь добавить собственный стиль к каждому элементу списка в выводе списка категорий Joomla!, который дает мне следующий html

<div class="blog">
  <div class="cat-children">
    <ul>
      <li class="first">
        <span class="item-title"><a href="/hyt-hand-held-license-free">HYT</a>
        </span>
      </li>
      <li></li>
    </ul>
  </div>
</div>

Я думаю, что мне нужно сделать, это добавить что-то вроде:

<li id="myID<?php echo $this->item->catid; ?> ">

Проблема в том, что я не могу найти, какой файл переопределить. Я просмотрел /templates/mytemplate/html/com_content/category/, а также /components/com_content/views/category/tmpl, но ни в одном из файлов нет неупорядоченного списка, относящегося к cat-chidren.

Итак, мой первый вопрос: какой файл мне редактировать? И во-вторых, как лучше всего использовать синтаксис this->item->[correct'Method'?] (является ли метод правильным термином или переменной, я немного не уверен в этом!) Использовать так, чтобы каждый элемент списка имел id="myID[nameofarticle/subcatagory]"

joomlaoverridinghtml-lists

Ответы

Ответ 1 · рейтинг 1 · Trev

Вы увидите детей-котов в /components/com_content/views/category/tmpl/default.php.

ul находится в другом загруженном подшаблоне, loadTemplate('children'); ?> , т.е.

/components/com_content/views/category/tmpl/default_children.php

Если вы хотите изменить класс li, вы можете вставить что-то подобное в строку 26 (вашего переопределения, а не основного файла, но можно просто протестировать основной файл)

<?php $class = ' class="cmyId' . $this->escape($child->title) . '"';?>

Это заставило бы каждый li выглядеть как

Так это

<li<?php echo $class; ?>>
    <?php $class = ''; ?>

становится этим

<?php $class =  ' class="cmyId' . $this->escape($child->title) . '"';?>
    <li<?php echo $class; ?>>
    <?php //$class = ''; ?>

Протестировал его на установке 2.5.

Ответ 2 · don

Вы должны переопределить несколько файлов, хранящихся в компонентах/com_content/views/. В зависимости от списка, который вы хотите отредактировать, вам следует просмотреть папки: - статьи - категории - категории - избранные В каждой из этих папок вы увидите подпапку с именем tmpl, внутри которого находится файл default.php. Это то, что вы ищете.

Если вы хотите переопределить файлы, помните, что лучше всего поместить альтернативные файлы в папку вашего шаблона, создав путь, аналогичный тому, в котором находится исходный файл (например, для папки статьи: templates/YOURTEMPLATEFOLDER/html/com_content /article/default.php - ни папка tmpl, ни папка представлений не нужны).

Альтернативным и, на мой взгляд, более простым способом может быть установка разных шаблонов для каждой категории, а затем назначение каждой из стилей списка, которые вы предпочитаете.

Или, что еще проще, вы можете просто отредактировать файл index.php в папке шаблона, чтобы он повторял определенную таблицу стилей css в зависимости от $catId.

Ответ 3 · marcanuy

Как видно из вашего HTML-кода, вы используете представление "Блог категории", каждый экземпляр статьи в категории обрабатывается файлом blog_children.php, как показано в файле /components/com_content/views/category/tmpl/blog.php.

<?php echo $this->loadTemplate('children'); ?>

Итак, /components/com_content/views/category/tmpl/blog_children.php - это файл, который вам нужно отредактировать или переопределить в каталоге html шаблона.

Затем вы можете применить собственный стиль, добавив идентификатор или класс для каждой статьи с помощью $child->id.

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы