Сегодня я хочу представить вашему вниманию очень интересную статью. Используя технику, которая в ней описывается, вы сможете придать вашему сайту, сделанному на Joomla, максимальную гибкость и уникальность. Что я имею ввиду? Только представьте: оформление каждого модуля, каждой категории, да хоть каждого материала вы можете сделать неповторимым. Интересно? Тогда читаем дальше…
Макеты Joomla. Как сделать ваш сайт максимально уникальным.

Сегодня я хочу представить вашему вниманию очень интересную статью. Используя технику, которая в ней описывается, вы сможете придать вашему сайту, сделанному на Joomla, максимальную гибкость и уникальность. Что я имею ввиду? Только представьте:  оформление каждого модуля, каждой категории, да хоть каждого материала вы можете сделать неповторимым. Интересно? Тогда читаем дальше…

Итак, в чем же фокус? Дело в создании собственных макетов и их привязке к определенным элементам Joomla 1.7. Многие поклонники Joomla уже знают о возможности переопределения макета. Эта «фишка» известна еще в Joomla 1.5. Но Joomla 1.7. пошла дальше. Теперь мы можем переопределять практически всё, что угодно. Но давайте подробнее.

Что такое макет?

Начнем с основ. Мы привыкли, что в Joomla есть некоторые функциональные единицы (как я их называю). Это материал, категория, модуль, компонент, шаблон, плагин и пункт меню(если вы понимаете, что означает каждое из этих слов, то читаем дальше, в противном случае, боюсь, понять данную статью вам будет достаточно сложно). Давайте попробуем копнуть чуть глубже. Представим, что у нас есть следующая задачка:

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

Конечно, можно хорошенько извратиться с CSS и поменять блоки местами с помощью позиционирования. Но есть и более простой вариант – переопределение макета.

В Joomla, есть шаблоны. Но в стандартном варианте они изменяют только общую конструкцию сайта. Проще говоря, с помощью шаблона Joomla мы меняем расположение позиций модулей и общее оформление. А если нам нужно заглянуть в конструкцию статьи? В шаблоне Joomla указывается только то, что мы вызываем компонент. Для изменения конструкции статей, категорий, модулей, как раз и используются макеты. Макет – это как бы шаблон в шаблоне. Это шаблон контента Joomla. 

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

Макеты Joomla 1.5 VS Joomla 1.7.

В Joomla 1.5. можно было работать с макетами, но был один существенный недостаток – макеты можно было только переопределять. Что это означает? Для изменения макета нужно было создать копию файла макета с точным названием и положить в строго определенную папку шаблона. По названию и расположению Joomla определяла, что этот файл является файлом макета и что он должен переопределять стандартный макет. Но что делать, если для разных страниц сайта нам нужны разные макеты?

Рассмотрим задачку 2:

Заказчик хочет, чтобы в статье1 категория, автор, дата создания и иконки кнопок появлялись перед основным текстом, а в статье2 – после основного текста материала.

В Joomla 1.5 это становилось большой проблемой. В Joomla 1.7. – уже нет. Теперь макет не нужно переопределять. Его можно назначать. Это значит, что мы можем создать не один файл макета, а несколько, назвав их уникальными именами. Вы могли заметить, что в настройках материалов, категорий и модулей Joomla 1.7. появилась новая опция «Альтернативный макет». Если в шаблоне существует несколько макетов, она позволяет выбрать любой из них. Благодаря этой опции, в Joomla 1.7 мы можем задавать собственные макеты хоть для каждого материала и модуля, а также, как мы увидим далее, хоть для каждого пункта меню.

Какие бывают макеты?

Все макеты, имеющиеся в Joomla, можно разделить на несколько категорий:

  • Макеты компонентов;
  • Макеты категорий;
  • Макеты пунктов меню.
  • Макеты модулей;

Рассмотрим каждую категорию подробнее.

Макеты компонентов.

Описание

Макеты компонентов позволяют изменять структуру компонентов, созданных по концепции MVC. Все стандартные компоненты Joomla 1.7 могут быть перестроены. Рассмотрим пример на компоненте com_content – перестроим статью.

Алгоритм создания

Предположим, что у нас используется шаблон Beez_20.

1) В корневой папке шаблона создаем подпапку html

2) В папке html, созданной в п.1, создаем подпапку com_content

3) В папке com_content, созданной в п.2. создаем подпапку article

4) Заходим в папку components\com_content\views\article\tmpl и копируем файл default.php в папку article, созданную в п.3.

5) Обязательно(!!!) изменяем название файла default.php на любой другое, содержащее только английские буквы и цифры, но не имеющее в себе знака нижнего подчеркивания «_», например, myarticle.php

6) Если наш макет требует подключения дополнительных файлов, то создаем их аналогично п.5, с тем отличием, что имя файла должно(!!!) начинаться со знака нижнего подчеркивания «_», например, _myarticledop1.php

7) Редактируем файл myarticle.php, изменяя его структуру под свои нужды.

8) Если мы хотим, чтобы данный файл применялся для всех статей по умолчанию, в настройках менеджера материалов в опции «альтернативный макет» выбираем myarticle.php

Макеты Joomla 1.7

9) Если мы хотим, чтобы данный макет применялся только для одной статьи, в настройках статьи в опции «альтернативный макет» выбираем myarticle.php

Макеты Joomla 1.7

10) Не обязательно. Для перевода названия макета добавляем в файл локализации шаблона (ru-RU.tpl_beez_20.sys.ini) следующую строчку:

TPL_BEEZ_20_COM_CONTENT_ARTICLE_LAYOUT_myarticle="Название макета"

11) Если макет не применился, смотрим ограничения, описанные ниже, думаем, анализируем.

Ограничения

Альтернативные макеты могут использоваться только при соблюдении двух правил:

– Они были указаны в параметрах компонента(в нашем случае статьи или настройки статей)

– Нет пункта меню для этого компонента. Например если вы используете один или несколько пунктов меню типа "Материал", то альтернативный макет для этого материала не будет использоваться. Это объясняется тем, что параметры пункта меню являются более приоритетными, чем параметры материала, и они будут перекрывать их.

Макеты категорий.

Описание

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

Алгоритм создания

Предположим, что у нас используется шаблон Beez_20.

1) В корневой папке шаблона создаем подпапку html

2) В папке html, созданной в п.1, создаем подпапку com_content

3) В папке com_content, созданной в п.2. создаем подпапку category

4) Заходим в папку components\com_content\views\category\tmpl и копируем файл blog.php в папку category, созданную в п.3.

5) обязательно(!!!) изменяем название файла blog.php на любой другое, содержащее только английские буквы и цифры, но не имеющее в себе знака нижнего подчеркивания «_», например, myblog.php

6) если наш макет требует подключения дополнительных файлов, то создаем их аналогично п.4, с тем отличием, что имя файла должно(!!!) начинаться со знака нижнего подчеркивания «_», например, _myblogdop1.php

7) редактируем файл myblog.php, изменяя его структуру под свои нужды.

8) если мы хотим, чтобы данный файл применялся для всех категорий по умолчанию, в настройках менеджера материалов в опции «альтернативный макет» выбираем myblog.php

Макеты Joomla 1.7

9) если мы хотим, чтобы данный макет применялся только для одной категории, в настройках категории в опции «альтернативный макет» выбираем myblog.php

Макеты Joomla 1.7

10) Не обязательно. Для перевода названия макета добавляем в файл локализации шаблона (ru-RU.tpl_beez_20.sys.ini) следующую строчку:

TPL_BEEZ_20_COM_CONTENT_CATEGORY_LAYOUT_myblog="Название макета"

11) если макет не применился, смотрим ограничения, описанные ниже, думаем, анализируем.

Ограничения

Альтернативные макеты могут использоваться только при соблюдении двух правил:

– Они были указаны в параметрах компонента(в нашем случае категории или настройки категорий)

– Нет пункта меню для этого компонента. Например если вы используете один или несколько пунктов меню типа "Блог категории", то альтернативный макет для этой категории не будет использоваться. Это объясняется тем, что параметры пункта меню являются более приоритетными, чем параметры категории, и они будут перекрывать их.

Макеты пунктов меню.

Описание

Создание макетов пунктов меню отличается от создания макетов компонентов и категорий. Пункты меню имеют более высокий приоритет и будут перекрывать собой макеты компонентов и категорий. Рассмотрим пример создания макета пункта меню материала.

Алгоритм создания

Предположим, что у нас используется шаблон Beez_20.

1) В корневой папке шаблона создаем подпапку html

2) В папке html, созданной в п.1, создаем подпапку com_content

3) В папке com_content, созданной в п.2. создаем подпапку article

4) Заходим в папку components\com_content\views\article\tmpl и копируем файлы default.php и default.xml в папку article, созданную в п.3.

5) обязательно(!!!) изменяем название файлов default.php и default.xml на любые другие(совпадающие!), содержащие только английские буквы и цифры, но не имеющие в себе знака нижнего подчеркивания «_», например, mymenuarticleitem.php и mymenuarticleitem.xml

6) если наш макет требует подключения дополнительных файлов, то создаем их аналогично п.4, с тем отличием, что имя файла должно(!!!) начинаться со знака нижнего подчеркивания «_», например, _mymenuarticleitem.php

7) редактируем файл mymenuarticleitem.php, изменяя его структуру под свои нужды. Редактируем файл mymenuarticleitem.xml, изменяя название пункта меню в третьей строке:

<layout title="mymenuarticleitem" option="com_content_article_view_default_option">

и добавляя в него новые опции настройки пункта меню, если это требуется.

8) Не обязательно. Для перевода названия макета добавляем в файл локализации шаблона (ru-RU.tpl_beez_20.sys.ini) следующую строчку:

mymenuarticleitem="Название макета".

9) создаем новый пункт меню и выбираем тип с названием, указанным в п.7.:

Макеты Joomla 1.7

Макеты модулей.

Описание

Макеты модулей позволяют изменять структуру модулей. Перестроены могут быть любые модули. Рассмотрим пример на модуле mod_login.

Алгоритм создания

Предположим, что у нас используется шаблон Beez_20.

1) В корневой папке шаблона создаем подпапку html

2) В папке html, созданной в п.1, создаем подпапку mod_login(название папки должно совпадать с оригинальным названием папки модуля)

3) Заходим в папку modules\mod_login\tmpl и копируем файл default.php в папку mod_login, созданную в п.3.

4) Обязательно(!!!) изменяем название файла default.php на любой другое, содержащее только английские буквы и цифры, но не имеющее в себе знака нижнего подчеркивания «_», например, mylogin.php

5) Если наш макет требует подключения дополнительных файлов, то создаем их аналогично п.4, с тем отличием, что имя файла должно(!!!) начинаться со знака нижнего подчеркивания «_», например, _mylogindop1.php

6) Редактируем файл mylogin.php, изменяя его структуру под свои нужды.

7) Чтобы макет применялся к модулю, в настройках модуля в опции «альтернативный макет» выбираем mylogin.php

Макеты Joomla 1.7

8) Не обязательно. Для перевода названия макета добавляем в файл локализации шаблона (ru-RU.tpl_beez_20.sys.ini) следующую строчку:

TPL_BEEZ_20_MOD_LOGIN_LAYOUT_mylogin =" Название макета".

Теперь, если требуется создать два разных отображения одного и того же модуля, достаточно скопировать модуль и изменить его макет и CSS-суффикс(кстати, о CSS-суффиксах я писал отдельную статью Суффикс класса модуля или как сделать каждый модуль Joomla уникальным. ). Сочетание суффиксов и макетов дает модулям непревзойденную гибкость.

Используя шаблоны, макеты, и css-суффиксы Joomla 1.7 вы можете как угодно изменять ваш шаблон. Теперь это дело техники. И пусть после этого кто-нибудь попробует сказать, что шаблон Joomla не гибкий :-). Удачи!

------------------------------

Вы верите в вещие сны? Ну что-то вроде: приснилась собака – появится друг, а кошка – неприятности. Если да, то почитайте сонник фрейда: http://felomena.com/sonnik/frejda/, узнаете много интересного о снах.

Понравилась статья? Сохраните себе на стену:

Ваша оценка материала очень важна для нас. Просим вас оценить статью или оставить отзыв в комментариях.

Комментарии  

0 # RE: Макеты Joomla 1.7. Как сделать ваш сайт максимально уникальным.slovoblud 12.10.2011 07:52
У семерочки функционал конечно по круче. Жаль только что под virtuemart пока мало расширений.
Ответить | Ответить с цитатой | Цитировать
+1 # RE: Макеты Joomla 1.7. Как сделать ваш сайт максимально уникальным.granik 12.10.2011 13:44
Спасибо за статью. Не знал о такой особенности. Буду с удовольствием пользоваться.
Ответить | Ответить с цитатой | Цитировать
+2 # ОтличноVARion 14.10.2011 06:54
Спасибо!
Хорошо разложил в статье всё по полочкам, что и куда. Думаю дальше у людей может возникнуть только вопрос как изменять php под свои нужды...
P.S. Водяные знаки тоже хорошо получились.
Ответить | Ответить с цитатой | Цитировать
0 # Класс!Magnum79 17.10.2011 06:25
Какие водяные знаки?
Осталось только изменить интерфейс добавления статей с фронта и добавить отдельную загрузку главной картинки для статей и всё. К2 не нужен!
Спасибо за статью.
Ответить | Ответить с цитатой | Цитировать
0 # RE: Макеты Joomla 1.7. Как сделать ваш сайт максимально уникальным.demis 07.11.2011 08:10
Подскажите, почему пример "Макеты пунктов меню" не работает для шаблона "Список всех категорий", делаю все аналогично но пункт меню не подхватывается, работает тот что поумолчанию ...
Ответить | Ответить с цитатой | Цитировать
0 # CSSМихаил 07.11.2011 19:48
А как css цеплять - не могу разобраться
Ответить | Ответить с цитатой | Цитировать
+1 # RE: Макеты Joomla 1.7. Как сделать ваш сайт максимально уникальным.Михаил 07.11.2011 21:34
Цитирую Михаил:
А как css цеплять - не могу разобраться

все классы переопределил в основном css шаблона. и с суффиксами разобрался. Зря воздух сотряс сорри.
Ответить | Ответить с цитатой | Цитировать
+1 # RE: Макеты Joomla 1.7. Как сделать ваш сайт максимально уникальным.Andrey 14.02.2012 13:28
Спасибо за статью. Всё понятно и доходчиво написано. Но как же перенести и какая строка отвечает за измение порядка вывода материала. Как сделать чтоб дата публикации была перед материалом, но после оглавления, А просмотры и автор после материала?
Ответить | Ответить с цитатой | Цитировать
0 # RE: RE: Макеты Joomla 1.7. Как сделать ваш сайт максимально уникальным.Wedal 15.02.2012 01:35
Andrey, порядок вывода материалов устанавливается в настройках пункта меню, который выводит список этих материалов. По поводу дат, просмотров и авторов, вам нужно отредактировать соответствующий макет. Если речь идет о блоге, то макет блога, если о материале, то материала.
Ответить | Ответить с цитатой | Цитировать
0 # RE: Макеты Joomla 1.7. Как сделать ваш сайт максимально уникальным.weaver 30.04.2012 04:31
спасибо за статью, очень полезная
Ответить | Ответить с цитатой | Цитировать
0 # RE: Макеты Joomla 1.7. Как сделать ваш сайт максимально уникальным.Мотвей 27.10.2012 17:12
а не подскажите как создать макет блога категории чтобы работало при переходе из пункта меню. У меня либо 500 - Layout newsblog_item not found либо никакой реакции. Чтобы это заработало, нужно создавать макет и для меню и для категории? Все перепробовал, не получается.
Ответить | Ответить с цитатой | Цитировать
0 # Макетыowl 07.11.2013 20:09
Про макеты поняла, не стала создавать тему на форуме... ) Спасибо за сайт - очень много полезного.
Ответить | Ответить с цитатой | Цитировать
0 # МакетыАлександр Киор 17.01.2014 16:04
Все сделал как написано в статье для Joomla 3 не работет ранее делал для 2.5 все нормально работало не подскажете где копать
Ответить | Ответить с цитатой | Цитировать
0 # RE: МакетыWedal 20.01.2014 03:45
Александр, что именно не работает? Вообще, должно работать. Возможно появились какие-то небольшие детали и отличия. Переопределения макетов модулей и компонентов работают точно также. Это точно. А вот макеты статей, в том виде, как описано здесь, не знаю. Не проверял. Не было необходимости.
Ответить | Ответить с цитатой | Цитировать
0 # Проблема с Joomla 3.3Герман 06.05.2014 18:17
Здравствуйте, Wedal!

Собственный, созданный с нуля шаблон для Joomla 3.3..

Подключены 2 языковых файла:
ru-Ru.tpl_nametemplate.ini
ru-Ru.tpl_nametemplate.sys.ini

Создан макет блога категории - COM_CONTENT_CATEGORY_VIEW_BLOG2_TITLE

Не работает перевод этой константы, если кладу ее в ru-Ru.tpl_nametemplate.sys.ini.

В чем может быть проблема?
Ответить | Ответить с цитатой | Цитировать
0 # RE: Проблема с Joomla 3.3Wedal 07.05.2014 07:50
Герман, файлы, содержащие в себе .sys. , используются для перевода констант админки. У вас, если я правильно понимаю, константа на фронтенде, а значит нужно переводить ее в файле:
ru-Ru.tpl_nametemplate.ini
Ответить | Ответить с цитатой | Цитировать

Добавить комментарий

Для отправки комментария введите код с картинки:
Защитный код
Обновить

Вверх