Создание альтернативного макета
- 08 февраля 2017
Оформление средствами CSS
Определенным элементам модуля присвоены классы. Например, содержащему контейнеру:
<div class="newsflash">
Стили для этих классов не прописаны, это нужно сделать самостоятельно. Используя суффиксы, можно оформлять один и тот же модуль по разному. Обычно возможностей CSS для этого хватает.
Для чего нужен альтернативный макет модуля
Когда нужно внести изменения в html-код. Чаще всего это связано с добавлением дополнительных элементов, или изменением структуры вывода. Например отображение материалов в виде табов.
Почему не нужно менять код в самом модуле
При первом же обновлении Joomla, файлы могут быть перезаписаны , и все ваши изменения утеряны.
Как переопределить макет вывода модуля
- В вашем шаблоне нужно создать папку templates /my_template_name /html /mod_articles_news
- В эту папку из модуля скопировать файлы, которые будут переопределяться (это может быть один или несколько файлов)
Теперь, при загрузке модуля, система будет в первую очередь проверять содержимое этой папки. Если соответствующий файл будет найден - код будет браться из него, если нет - из модуля.
При изменении кода файла, будет переопределен любой из стандартных шаблонов: default.php, horizontal.php, vertical.php
Если изменить код файла _item.php, то будут переопределены все 3 макета! Потому что он подключается в каждый из них!
Для того, чтобы создать альтернативный (дополнительный) макет - нужно переименовать стандартный файл. Например default.php --> alt-maket.php. Тогда во вкладке Дополнительно, в списке Альтернативный макет появится alt-maket.
Внимание!
Имя каталога mod_articles_news должно строго соответствовать названию папки модуля!
Альтернативный макет вывода материала в модуле
Выше было показано как создать альтернативный макет модуля.
Но для каждого такого макета может понадобиться индивидульный макет выводимых материалов. Для этого нужно:
1. Переименовать файл _item.php --> _item-alt.php
2. В файле alt-maket.php подключить соответствующий шаблон, отредактировав строку:
require JModuleHelper::getLayoutPath('mod_articles_news', '_item-alt');