понедельник, 5 сентября 2011 г.

Создание шаблона для Joomla 1.7. Добавление параметров к шаблону, которые можно изменять из админки Joomla. Часть 5.


Доброго времени суток! Сегодня я хотел бы остановиться на добавлении параметров к шаблону для CMS Joomla, которые можно изменять из админки.
В предыдущих статьях мы рассмотрели создание шаблона: разобрали файловую структуру шаблона CMS Joomla, преобразовали верстку в шаблон, определили позиции в шаблоне для модулей, изменили отображение модулей под дизайн нашего шаблона. Благодаря всему этому мы создали шаблон для CMS Joomla, но если Вы хотите создать высококлассный шаблон для Joomla необходимо сделать так, чтобы некоторые параметры изменялись из админки (ну, например цветовая гамма шаблона), т.е. нам нужно ввести в шаблон параметры, которые можно изменять из админпанели. Давайте приступим к решению данной задачи...
Итак, приступим к решению нашей задачи. Допустим, что мы хотим в админке выбирать цветовую гаму нашего шаблона (белая, серая и голубая). Для этого на основе нашего css-файла создадим три css-файла:
  • template_white.css, который не будем изменять.
  • template_gray.css, в котором всем div-ам добавим background: gray.
  • template_blue.css, в котором всем div-ам добавим background: #0099сс.

Следующим шагом, нужно описать в конфигурационном файле шаблона для CMS Joomla наши параметры. Открываем файл templateDetails.xml и добавляем следующие строчки:

<config>
 <fields name="params">
 <fieldset name="advanced">
   <field name="tmpl_color" type="list" default="white" label="Выберите цвет шаблона"     description="Тут Вы можете выбрать цвет шаблона" filter="word">
     <option value="white">Белый</option>
     <option value="gray">Серый</option>
     <option value="blue">Голубой</option>
  </field>
</fieldset>
</fields>
</config>
Этими строками мы показали, что выбор параметров будет в виде выпадающего списка type= «list», значение по умолчанию будет белый (default= «white»). Выпадающий список состоит из трех элементов: Белый (white), Серый(gray), Голубой (blue).

На следующем шаге нам необходимо, чтобы отображение нашего шаблона Joomla соответствовало значению установленного параметра. Для этого в основной файл нашего шаблона (index.php) вставляем следующий код:
<?php
//Берем параметры
  $tmpl_color = $this->params->get('tmpl_color');
?>
В переменную $tmpl_color записываем значение установленного параметра в поле с именем «tmpl_color».
Теперь согласно этой переменной будем подставлять необходимый css-файл, для этого изменяем строку:
<link href="<?php echo $this->baseurl ?>/templates/lesson/css/template.css" rel="stylesheet" type="text/css" />
на следующую:
<link href="<?php echo $this->baseurl ?>/templates/lesson/css/template_<?php echo $tmpl_color ?>.css" rel="stylesheet" type="text/css" />
Вот и все!!!
По аналогии можно добавлять различные параметры в наш шаблон CMS Joomla (логотип, изменить структуру: 1 колонка, 2 колонки, 3 колонки и многое другое).
Этим постом я завершаю серию статей про создание шаблона для CMS Joomla. Надеюсь они Вам помогли, если есть замечания или предложения пишите в комментариях и мы обязательно обсудим.
Всем удачи и хорошей разработки сайтов на движке CMS Joomla. По многочисленным просьбам  продолжаю серию статей по созданию шаблонов на CMS Joomla. И следующий пост посвящен применению API функций в создании шаблона для Joomla. А в посте Создание шаблона для CMS Joomla. Список стандартных параметров и их описание (часть 1) я подробно остановлюсь на каждом параметре в отдельности.

Как правильно составлять xml-файл читайте в статье "Файлы объявления в CMS Joomla. Правила составления xml файла в Joomla."

Следите за обновлениями данного блога или за мной в twitter.

Понравилась статья? Поблагодарить автора:

Введите e-mail адрес:



31 комментарий:

  1. Огромное спасибо, очень помогли Ваши статьи!!!

    ОтветитьУдалить
  2. Пожалуйста, рад, что Вам помогли мои статьи.

    ОтветитьУдалить
  3. Ромчик, спасибо большое! Очень доступно и просто объясняешь!
    Хотелось бы ещё материала (хотя бы базового) по разработке компонентов и других типов расширений.

    ОтветитьУдалить
  4. Всегда, рад стараться. Сейчас готовлю серию статей по разработке расширений для Joomla 1.7, но как всегда не хватает времени.

    ОтветитьУдалить
  5. Спасибо Ромчик. Очень полезные и интересные статьи. Присайдиняюсь к просбе wuxa поповоду компонентов модуле как их переделывать(также хотелось бы узнать как редактировать меню чтоб оно не выглядило как ссылки а было красиво оформлено)
    И еще раз большое спасибо...

    ОтветитьУдалить
  6. moisha, спасибо Вам за приятные слова. Рад, что Вам они помогли. Как менять представления дополнений я рассказал в статье http://zloykolobok.blogspot.com/2011/08/joomla-17-cms-joomla-4.html А конкретно в Вашем случае: нужно в папке с шаблоном создать папку html в ней создать папку mod_menu и скопировать туда файл /modules/mod_menu/tmpl/default.php - этот файл отвечает за представление модуля меню, изменяя его и файл стилей Вашего шаблона меняем и меню.

    ОтветитьУдалить
  7. Спасибо огромное за труды. Целый день разбирался, а вы взяли и по полочкам в моём мозгу всё разложили. Ещё раз спасибо.

    ОтветитьУдалить
  8. Ни чего не получилось, вместо ожидаемого результата позиции модулей сбились и отображаются в один столбик, и не появился пресловутый список(
    И где он должен был появится? И почему сбились позиции?

    ОтветитьУдалить
  9. Можно подробней описать вот это действие:
    params->get('tmpl_color');
    ?>
    Заранее спасибо)

    ОтветитьУдалить
  10. php
    //Берем параметры
    tmpl_color = this->params->get('tmpl_color');

    ОтветитьУдалить
  11. Когда в файле templateDetails.xml мы задаем параметры, которые можно менять из админки. Для передачи значений этих переменных в index.php мы используем следующую конструкцию, где $tmpl_color это переменная в которую мы записываем значение, tmpl_color в get('tmpl_color') - это название параметра из templateDetails.xml

    ОтветитьУдалить
  12. По поводу позиций у Вас судя по всему не подгрузился CSS-файл, проверьте правильно ли Вы указали путь к нему. Список должен был появиться в админке, в настройках Вашего шаблона с правой стороны.

    ОтветитьУдалить
  13. Спасибо! под черпнул информации.

    ОтветитьУдалить
  14. Огромное спасибо за ваши статьи. Долго искал подобный материал, многое нашел, однако ваш, на мой взгляд, оформлен лучше других, которые мне доводилось читать. Все описано подробно и понятно для начинающего. Желаю вам писать побольше таких статей. Еще раз спасибо =)

    ОтветитьУдалить
  15. Спасибо, за приятные слова. Буду стараться и дальше ))

    ОтветитьУдалить
  16. Упорно не подключаются CSS. Где ошибка? Путь копирован с вашего кода, всё просто поменял и ни чего.

    ОтветитьУдалить
  17. Для подключения CSS в файле index.php в теге head используйте следующую конструкцию в теге link href="baseurl ?>/templates//css/.css" rel="stylesheet" type="text/css" />.

    ОтветитьУдалить
  18. Да. не за что. Рад, что Вам помогло.

    ОтветитьУдалить
  19. Спасибо большое за статью) Но, маленькое замечание: после слов "Для этого в основной файл нашего шаблона (index.php) вставляем следующий код:" не написано куда именно надо вставлять этот код) Из-за этого появляются и проблемы с подгрузкой css.. Строка "link href.." заменяется той, что указана в статье - это все понятно. Но при этом, если вставить представленный php код после этой строки, то в строке "link href.." не будет происходить выбора пути к файлу css, т.к. этот выбор делается именно в php коде. Поэтому php код обязательно должен стоять до строки "link href.." Пишу это просто для тех, у кого могут возникнуть такие же проблемы) Мне комментарии обычно помогают в их решении)

    ОтветитьУдалить
    Ответы
    1. Рад стараться и Вам большое спасибо за уточнение.

      Удалить
  20. Спасибо, очень хорошая статья! :) Но у меня возникли некоторые проблемы.
    1. С новым шаблоном не выводится название сайта в title.
    Как и где его прописать? Вместо названия сайта и страницы выводится путь http://localhost/site/
    2. Включен плагин mavik Thumbnails. В новом шаблоне не работает. При переходе на старый(не мой) шаблон все работает. Не пойму почему... Ведь в шаблоне не должно быть файлов отвечающих за работу плагина.
    Подскажите, пожалуйста, как это исправить?

    ОтветитьУдалить
    Ответы
    1. Все, извините, разобралась.
      забыла написать в файле шаблона строку :)

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

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

    ОтветитьУдалить
  23. огромное спасибо Ромчик за такие доступные статьи по джумле

    ОтветитьУдалить
  24. Приветствую! Внес все Ваши изменения в templateDetails и в index.php. Но
    никакого меню в правой части админки не появилось. В том числе и среди меню, которые появляются при нажатии в правой части меню "Super User".
    Не понимаю, как templateDetails может изменять Админ Панель - она же закрыта от изменений со стороны шаблонов. А цвет сайта стал белый.
    Вообще я прочитал, что вставка нового мню в Панель управления делается внесением изменений в папке шаблона "Администратор" и это довольно сложно. Намного сложнее, чем описание простого меню в файле templateDetails.

    И еще? Вы пишете: чтобы подключить неподключившуюся CSS, надо в index.php вставить: в теге link href="baseurl ?>/templates//css/.css" rel="stylesheet" type="text/css" /> (кстати, почему 2 слежа перед css?).
    Но ведь это противоречит нашей задаче - в теге link нужная css подключатся через переменную tmpl_color! Нельзя же два раза переопределять тег линк и прописывать в нем прямое подключение css. Или можно?
    Спасибо

    ОтветитьУдалить
  25. Большое-пребольшое спасибо за Ваши стьи, очень доходчивые и тщательно проработанные. Я почти научился делать шаблоны.
    Вот только досадная заминка - если я не научусь добавлять настройки в админку - грош мне цена и никакой я не разработчик шаблонов. А это как раз тема этого урока.
    Ничего не понимая, просто тупо выполни все, что предписывалось.

    ОтветитьУдалить
  26. =продолжение=
    1. Создал даже не 3, а 4 разноцветных шаблона.
    2. Скопировал config templateDetails.xml, добавив в меню свой четвертый css,
    3.Дальше начинаются непнятки. Вы пишите: "Для этого в основной файл нашего шаблона (index.php) вставляем следующий код:
    params->get('tmpl_color');
    ?>" (конец цитаты)
    Вот отсюда поподробнее, если можно. Это мы значение $tmpl_color взяли откуда?
    get('tmpl_color') - это нечто вроде нашего гнезда в каком-то глобальном файле?
    Если это так, то ведь мы его туда не помещали!
    Ну допустим, я не все понял и как-то всетаки поместили.
    4. Подставиди $this в линк для css, так она так там и будет!
    У меня, например это значение white - белый. Сайт и получается белый,
    как и следовало ожидать.
    5. О каком меню речь? Да, оно прописано в templateDetails.xml, но где оно будет рамещаться?
    Может, вместо надо было писать ? , а может и то и другое.
    Нет ли здесь какого-то бага?
    Меню должно появиться в админке, потому что никакая из позиций сайта ему не указана.
    А вот в админке вполне мог быть (и должен быть) какой-то блок для размешения дополнительных нстроек.
    Но ничто в тексте templateDetails на это не указывает.

    А вот цитата из вашей же статьи "Файлы объявления в CMS Joomla. Правила составления xml файла в Joomla.": "Конфигурация
    В теге мы описываем параметры конфигурации данного компонента" - описание меню - это разве переметры конфигурации?
    А вот другая цитата оттуда же:
    "Меню и подменю
    Текст для меню заключается в тег , который в свою очередь заключается в тег . Подменю заключается в тег . Пример:
    COM_EXAMPLE

    COM_EXAMPLE_ANOPTION
    "
    и дальше идет таблица атрибутов тега .
    Это уже ближе к здравому смыслу, Вы не находите?

    И еще: после вот этой вашей статьи длиннющий список восхвалений, в который я тоже внес не оин пост.
    Однако, ни одного критического или спорного поста. А они должны быть, я не тупее других и если не работает у меня - вряд ли будет работать у кого-нибудь.

    И на этом конец. Больше нет под другими Вашими статьями длинных списков восхвалений или дискуссий.
    Вы проделали немаленькую работу и у Вас редкий дар объснять сложное простыми понятиями и формулировками. Но похоже и Вы потеряли интерес к этой работе. Я подписан на Ваши статьи по этой теме, за полгода не получил ни одного извещения. Не отвечаете на посты. Поэтому я рискнул написать Вам миссидж. Может откликнитесь, если влом - тоже черкните на seookey@ya.ru
    хоть пару строк: Мол не до этого, извиняй Мишель... - я пойму.
    Спасибо.

    ОтветитьУдалить
    Ответы
    1. Михаил, просто времени не хватает. Я понимаю - это не оправдание. И перед всеми своими читателями я извиняюсь за несвоевременный ответ или вообще игнорирование. Извините!!!
      А по поводу того, что я перестал писать про Joomla, я больше не пользуюсь Joomla, а "тырить" статьи у других - это не мое. Я должен сам все проверить и опробовать, а потом опубликовать ввиде статьи.
      А в простых проектах, типа сайта-визитки я использую WordPress, более сложных пишу свои движки, используя фреймворк Kohana. Об этом Вы можете прочитать на моем блоге web-programming.com.ua

      Удалить