Новые позиции модулей для шаблонов Joomla.

Добавляем позиции в шаблон Joomla.

Приветствую всех читателей. Сегодня поговорим о несколько не свойственной для меня теме. Дело в том, что меня в последнее время спрашивают, почему я не пишу о CMS. Они ведь имеют непосредственное отношение к тематике блога. Посему я решил забросить пробный камень в этот огород. Если данная тема покажется Вам интересной и заслуживающей продолжения, пишите в комментариях. Будем продолжать. А теперь, пожалуй, приступим. При установке нового шаблона на Joomla мы всегда оказываемся в зависимости от разработчиков этого шаблона.
И если смена изображений является чем-то обыденным, само собой разумеющимся, то количество и расположение позиций для модулей кажется нам незыблемым, неизменяемым. И приходится подстраивать дизайн нашего сайта к уже имеющимся позициям.
Однако все не так уж и мрачно, как может показаться на первый взгляд. Изменить расположение модулей и их количество не сложнее чем изменить картинку в шапке или размер шрифта в модуле. Для этого нам понадобятся только базовые знания HTML, любой редактор кода (Обычно принято говорить текстовый редактор. Однако не думаю, что стоит писать код в Ворде. Да и простой блокнот может немало крови попить с кодировкой.) и браузер с возможностью просмотра кода элементов. Практически все современные браузеры данной возможностью обладают. (Опера – Ctrl+Shift+I, Хром и Эксплорер - F12, Firefox - требуется установка Firebug и тоже F12.) В данном уроке используется Notepad++ и браузер Хром.
Для примера возьмем стандартный шаблон Beez 20 входящий в базовую поставку Joomla. Сначала посмотрим на все имеющиеся в шаблоне позиции. Для этого откроем файл templateDetails.xml который находится в корневой папке шаблона. (www\templates\beez_20\ templateDetails.xml) Все имеющиеся позиции находятся внутри тега positions.


Теперь посмотрим эти позиции непосредственно на странице. Для этого к имени сайта в командной строке допишем ?tp=1. Пример: http://mysite/?tp=1.


Если позиции не хотят показываться, то в панели управления заходим в Расширения – Менеджер шаблонов – Настройки и включаем Просмотр позиций модулей.


Теперь следует определиться с местоположением нужного нам модуля. К примеру, мы хотим, чтобы поиск или верхнее меню или что-то еще располагалось внутри шапки. Как видим, такой позиции у данного шаблона нет. Значит следует ее сделать. Открываем страницу без просмотра позиций, чтобы они не мешали в работе. Запускаем просмотр кода элементов (F12) и находим там нашу шапку. Смотрим из чего она состоит:


Нужное нам место находится внутри блока с классом logoheader. Внутри блока находится только заголовок первого уровня. Соответственно добавить позицию можно либо до него, либо после. Добавим после. Для этого открываем файл index.php в корневой папке шаблона. Находим данный блок и после закрывающего тега H1 прописываем следующую конструкцию:

<jdoc:include type="modules" name="position-new" />


Вместо position-new можно задать любое имя для данной позиции. Но желательно, все же, давать позициям осмысленные имена.
Теперь необходимо добавить нашу новую позицию в файл templateDetails.xml в тег positions:


Осталось проверить наличие новой позиции в браузере:


Теперь созданную нами позицию можно использовать по своему усмотрению.
Для более удобного редактирования модулей в новой позиции можно обернуть ее в див с каким-нибудь классом:
<div class="new_position">
  <jdoc:include type="modules" name="position-new" />
</div>

После этого с помощью стилей можем располагать наш блок с позицией в нужном месте шапки.

15 комментариев :

  1. Несколько дней искал решение этого вопроса. Но на Ваш сайт я попал совсем по другому вопросу, это как установить и настроить плагин Emmet для Notepad++. Но что было приятно, я нашел много полезных настроек для редактора, которых я и не искал.
    Т.к понравилось ваше методичное изложение, решил пройтись по сайту, и вот на самом верху данный пост.
    Желаю Вам дальнейших успехов.

    ОтветитьУдалить
  2. Хорошая статья, уважаемый скажите пожалуйста я так понял что бы за место этой фото на главной
    по вашему методу можно прописать позицию модуля например для слайдера, указав в файле стилей
    высоту и ширину модуля? Очень нужа позиция под слайдер за место этого фото , не подскажите как сделать?

    ОтветитьУдалить
    Ответы
    1. Я же написал, оберните в див. И присваивайте ему какие угодно стили.

      Удалить
  3. Виктор, у меня вопрос: шаблон JA_Droid. Есть позиция left, но мне надо, чтобы она находилась с лева, а не посередине. Есть настройки в шаблоне main-left:






    top-panel



    slideshow
    user1,user2,user3
    user4

    left

    user5,user6



    user7,user8,user9,user10




    Помогите, пожалуйста, разобраться, как сделать так, чтобы позиция модуля left переместилась и встала слева скраю, а не посередине? Заранее спасибо

    ОтветитьУдалить
  4. да, опубликовалось совсем не то!! Но общий вопрос остался прежний

    ОтветитьУдалить
  5. слева поставить получилось, но исчезла правая колонка. То есть, они обе сместились в левую сторону. А как их разделить, что и слева и справа было по колонке?

    ОтветитьУдалить
  6. вопрос решен!

    ОтветитьУдалить
  7. Здравствуйте, Виктор! У меня шаблон Bedava. Получается, что ничего не получается.
    Вот файл index.php:
    getLayout();

    $t3app->loadLayout ($layout);

    ОтветитьУдалить
    Ответы
    1. Нет никакой зависимости от шаблона. В данном случае мы с Вами работаем на уровень ниже.

      Удалить
    2. Причем здесь вообще вызов метода getLayout? Почитайте пост внимательнее, пожалуйста.

      Удалить
  8. Этот комментарий был удален автором.

    ОтветитьУдалить
  9. Здравствуйте, Виктор!
    Снова тоже самое. Копирую содержимое файла index.php, а открывается в комментарии то что вы видите выше.

    ОтветитьУдалить
    Ответы
    1. Здравствуйте. Вы пытаетесь в комментарии вбить содержимое файла? Не получится. Зипуйте, на облако, а сюда только ссылку.

      Удалить
  10. Этот комментарий был удален автором.

    ОтветитьУдалить
  11. Здравствуйте!
    Подскажите, пожалуйста, такой вопрос.
    При создании/редактировании модуля в окошке выбора позиции, имена позиций предлагаются не те, что прописаны в файле templateDetails.xml. Где добавить к имени позиции, ее назначение?
    Например Banner[position-1] или Banner[banner]. В каком случае в скобках он указывает имя позиции, а в каком назначение?

    ОтветитьУдалить

Ваш комментарий: