Альтернативный макет категорий и статей - ч.2

Также, как и модулям статьям и категориям также можно назначить свой альтернативный макет вывода. Мы можем переопределить вывод любой статьи или категории. При создании сайта часто приходится прибегать к таким методам, особенно, если это большой сайт и на нем много всякой различной информации.

Альтернативный макет мы можем назначить отдельной категории и отдельной статье.

Стоит отметить сразу, что альтернативный макет категории сработает, только в том случае, если категория не привязана к пункту меню с типом “Блог категории” или “Список материалов категории”. Чтобы вывести альтернативный макет категории, которая привязана к пункту меню воспользуемся другим методом, но об этом ниже…

Альтернативный макет отдельной статьи

Давайте создадим альтернативный макет отдельному материалу. Например, в отдельном материале я задал заголовку H2 класс pageTitle, таким образом данный материал стал уникальным по отношению к другим. Как этого можно достичь? Просто создаем альтернативный макет страницы и присваиваем его нужной статье. Для этого сначала создадим переопределение для статьи: Расширения -> Менеджер шаблонов -> колонка “Шаблон”, выбираем ваш шаблон -> Создать переопределение -> в колонке “Компоненты” находим “com_content”, раскрываем список и щелкаем по ссылке “article”.Давайте создадим альтернативный макет отдельному материалу. Например, в отдельном материале я задал заголовку H2 класс pageTitle, таким образом данный материал стал уникальным по отношению к другим. Как этого можно достичь? Просто создаем альтернативный макет страницы и присваиваем его нужной статье. Для этого сначала создадим переопределение для статьи: Расширения -> Менеджер шаблонов -> колонка “Шаблон”, выбираем ваш шаблон -> Создать переопределение -> в колонке “Компоненты” находим “com_content”, раскрываем список и щелкаем по ссылке “article”.

Теперь идем в директорию – /templates/ваш шаблон/html/com_content/article/ и создаем копию файла default.php. Далее переименовываем данный файл, например, так – default-alt.php. Вносим необходимые правки в шаблон (я задал заголовку страницы класс pageTitle, если помните). Теперь назначим данный шаблон нужной статье – Материалы -> Менеджер материалов -> выбираем нужный материал -> Параметры отображения материала -> спускаемся вниз и в поле “Альтернативный макет” выбираем наш макет – default-alt.

Теперь, если перезагрузить страницу мы сможем увидеть наши изменения.

Давайте теперь нашему альтернативному макету “default-alt” дадим адекватное название. Например, назовем так – Мой альтернативный макет. Для этого мы должны добавить константу с переводом –

TPL_НАЗВАНИЕ ВАШЕГО ШАБЛОНА_COM_CONTENT_ARTICLE_LAYOUT_НАЗВАНИЕ ФАЙЛА АЛЬТЕРНАТИВНОГО МАКЕТА=”Мой альтернативный макет” – в файл локализации шаблона – ru-RU.tpl_название шаблона.sys.ini.

Я использую стандартный шаблон “protostar” и название файла альтернативного макета у меня – default-alt.php. В моем случае я для перевода добавил константу

TPL_PROTOSTAR_COM_CONTENT_ARTICLE_LAYOUT_DEFAULT-ALT=”Мой альтернативный макет” в файл ru-RU.tpl_protostar.sys.ini (/language/ru-RU/). Теперь при выборе альтернативного макета у меня выводится мое название.

Существует более простой метод локализации альтернативного макета посредством переопределения языковых констант joomla. Перевод создается из админки и в файлы залезать не нужно. Для этого идем – Расширения -> Менеджер языков -> Переопределение констант. Далее в поле “Фильтр” переключаемся на область панели управления с нужным языком (у меня русский, в многоязычном сайте придется создавать для каждого языка).

Теперь жмем на кнопочку “Создать” и в поле “Языковая константа” вводим нашу константу, у меня это – TPL_PROTOSTAR_COM_CONTENT_ARTICLE_LAYOUT_DEFAULT-ALT. В поле “Текст” вводим ее перевод – Мой альтернативный макет. Жмем сохранить. Все, макет также будет переведен.

Хотелось бы добавить, что наш альтернативный макет можно определить и глобально, т.е. по умолчанию будет применяться ко всем материалам. Для этого идем в настройки материалов – Менеджер материалов -> щелкаем по кнопке “Настройки” в правом верхнем углу -> в первой вкладке “Материалы” в самом вверху видим поле “Выбор макета”.

Альтернативный макет категории

Примерно также, как и для статьи создается альтернативный макет категории. Создаем переопределение шаблона списка статей категории (при создании переопределения щелкаем уже по ссылке “category”). Далее, идем в наш шаблон и открываем созданную папку переопределения – category. В данной папке находим файлы: blog.phpblog_item.php и blog_children.php и создаем их копии (выделяем, CTRL+C -> CTRL+V). Переименуем копии данных файлов, я назвал их так: myblog.phpmyblog_item.php и myblog_children.php. Вы можете заменить префикс “myblog_” своим именем, но последовательность действий должна быть именно такой, иначе могут возникнуть ошибки. Теперь в админке сайта открываем категорию, которой хотим назначить альтернативный макет и во вкладке “Параметры” находим поле “Альтернативный макет”. Раскрыв список мы увидим созданный нами макет (по умолчанию уже присутствуют два макета: Блог и Список).

Еще раз напомню! Данный альтернативный макет будет применен только в том случае, если категория не привязана к пункту меню с типом блог категории или список категории.

Также можно дать адекватное название макету, создав языковую константу – TPL_НАЗВАНИЕ ШАБЛОНА_COM_CONTENT_CATEGORY_LAYOUT_НАЗВАНИЕ ФАЙЛА МАКЕТА (копия файла blog.php). В моем случае это будет – TPL_PROTOSTAR_COM_CONTENT_CATEGORY_LAYOUT_MYBLOG, в поле перевод я дал свое название – Мой блог.

 

Итак мы переопределили шаблон вывода блога категории, но если вы заметили в папке category переопределения существуют еще и файлы: default.php, default_item.php и default_children.php – это у нас файлы шаблона списка категории. Так, что если хотите создать альтернативный макет списка категории, то вам необходимо создать копии именно данных файлов. Остальное все аналогично.

Казалось бы все, но тут есть еще один момент, о котором я тоже хочу рассказать. Вот представьте у нас список материалов категории, выводятся они в формате блога. Давайте теперь изменим заголовок материала в списке категории. По умолчанию он H2, а мы его переделаем в H3. Правки вносятся в файл blog_item.php, но я буду изменения вносить в альтернативный макет, в файл myblog_item.php. Так вот если мы откроем данный файл, то выяснится, что некоторые блоки вынесены в отдельные файлы, включая наш заголовок статьи. Вспомните третью колонку “Макеты” при создании переопределения в шаблоне. Так вот, сейчас как раз мы и обратимся к данной колонке. Нам необходимо создать переопределения макетов стандартного компонента статьи joomla. Для этого мы идем в переопределения и в колонке “Макеты” щелкаем по ссылке “content”. Теперь переходим в папку нашего шаблона, далее папка “html” и видим, что там появилась еще одна папка – “layouts”. Отлично! Теперь зайдем в данную папку -> joomla -> content и здесь нам необходимо найти файл, который содержит заголовок нашей статьи. Для этого вернемся в наш файл myblog_item.php (в моем случае) и ищем строчки, где у нас выводится заголовок. У меня это 23 строка. Выглядит она следующим образом:

<?php echo JLayoutHelper::render('joomla.content.blog_style_default_item_title', $this->item); ?>

Исходя из данного кода, мы видим, что у нас подключается файл с названием – blog_style_default_item_title, вот как раз его и будем искать в папке layouts. У меня данный файл присутствует – blog_style_default_item_title.php. Можно сразу открыть его и отредактировать, но я предлагаю также создать альтернативный макет данного шаблона заголовка. Для этого создаем копию данного файла и переименуем его, например, я его назвал так – myblog_style_default_item_title.php. Теперь переходим в файл myblog_item.php и меняем строчку

<?php echo JLayoutHelper::render('joomla.content.blog_style_default_item_title', $this->item); ?>

на

<?php echo JLayoutHelper::render('joomla.content.myblog_style_default_item_title', $this->item); ?>

Теперь, файл шаблона myblog_style_default_item_title.php можно менять как угодно и изменения будут применены именно в той категории, которой назначен альтернативный макет категории. Вот так вот все устроено. Таким же образом переопределяются и другие шаблоны колонки “Макеты”.

Данный альтернативный макет также можно определить глобально, т.е. по умолчанию будет назначаться всем категориям. Идем в настройки стандартного компонента статьи joomla и во вкладке “Категория” выбираем нужный макет.