Куда идем?

При прочтении руководства по созданию шаблонов для Joomla 1.5 из-за большого количества информации в голове может все перепутаться. А каждый раз искать в тексте нужную строчку очень неудобно. Для того чтобы работать было проще, я структурировал наиболее важную информацию.  Таким образом, получилась небольшая статья, своего рода памятка по работе с шаблонами Joomla.

Файл templateDetails.xml шаблона

templateDetails.xml должен содержать перечень всех файлов, содержащихся в шаблоне. Также он включает информацию об авторе и копирайте. Часть этой информации можно увидеть в менеджере шаблонов в административном интерфейсе Joomla. Ниже приведен пример XML-файла:

<?xml version="1.0" encoding="utf-8"?>

<install version="1.5"> //Содержимое XML-документа — это инструкции для инсталлятора в административном интерфейсе Joomla. Опция type=«template» сообщает инсталлятору, что мы устанавливаем шаблон, предназначенный для Joomla версии 1.5.

<name>TemplateTutorial15</name> //Определяет название шаблона. Это имя также будет использовано при создании поддиректории шаблона в директории templates. Если шаблон устанавливается вручную, то необходимо создать поддиректорию с названием, идентичным названию шаблона

<creationDate>August 2007</creationDate> // Дата создания шаблона. Это поле задается в свободном формате и может быть любой строкой типа «May 2005», «08-June-1978», «01/01/2004» и т.д.

<author>Barrie North</author> //Имя автора шаблона

<copyright>GPL</copyright> //Информация о копирайте

<authorEmail> Адрес электронной почты защищен от спам-ботов. Для просмотра адреса в браузере должен быть включен Javascript. </authorEmail> //E-mail для связи с автором шаблона

<authorUrl>www.xxx.com</authorUrl> //Адрес сайта автора.

<version>1.0</version> // Версия шаблона

<description>First template Joomla </description>  // Описание шаблона

<files> //Различные файлы, используемые в шаблоне

<filename>index.php</filename>

<filename>templateDetails.xml</filename>

<filename>js/somejsfile.js</filename>

<filename>images/threecol-l.gif</filename>

<filename>images/threecol-r.gif</filename>

<filename>css/customize.css</filename>

<filename>css/layout.css</filename>

<filename>css/template_css.css</filename> </files>

<positions>  //Позиции модулей, используемые в шаблоне

<position>user1</position>

<position>top</position>

<position>left</position>

<position>banner</position>

<position>right</position>

<position>footer</position>

</positions>

<params>   //параметры, которые могут задаваться для различных функций шаблона, например, для изменения его цвета

<param name="colorVariation" default="white" label="Color Variation" description="Color variation to use">

<option value="blue">Blue</option>

<option value="red">Red</option>

</param>

</params>

</install>

Заголовок шаблона

<?php // no direct access defined( '_JEXEC' ) or die( 'Restricted access' ); ?>

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

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"

"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns=http://www.w3.org/1999/xhtml //один из фундаментальных параметров, на основании которого браузер решает, как ему отображать эту страницу, в частности, как браузеру интерпретировать CSS.

xml:lang=""

lang="" > //извлекает установленный язык из глобальной конфигурации.

<head>

<jdoc:include type="head" /> //включает дополнительную информацию для заголовка

Это заголовочная информация, которая задана в глобальной конфигурации. Она включает в себя следующие теги (в инсталляции по умолчанию):

<title>Welcome to the Frontpage</title>

<meta name="description" content="Joomla! - the dynamic portal engine and content management system" />

<meta name="generator" content="Joomla! 1.5 - Open Source Content Management" />

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

<meta name="robots" content="index, follow" />

<meta name="keywords" content="joomla, Joomla" />

<link rel="stylesheet" href="/templates/system/css/system.css" type="text/css" />

<link rel="stylesheet" href="/templates/system/css/general.css" type="text/css" />

<link rel="stylesheet" href="/templates//css/template.css" /> //ссылки на различные файлы шаблона

</head>

Тело шаблона

<body>

 
<?php echo $mainframe->getCfg('sitename');?>

//название сайта

<jdoc:include type="modules" name="hornav" /> //позиция для модулей вверху

<jdoc:include type="modules" name="left" /> //позиция для модулей слева

<jdoc:include type="component" /> //основной контент. Вывод компонента. Какой компонент будет использован, будет определяться ссылкой в меню

<jdoc:include type="modules" name="right" /> //позиция для модулей справа

</body>

Стили модулей шаблона

<jdoc:include type="modules" name="hornav" style="OPTION" />

Параметр style не обязательный, его варианты задаются в templates/system/html/modules.php. В настоящий момент файл modules.php по умолчанию содержит следующие варианты:

OPTION=«table» (отображение по умолчанию) модули отображаются в колонке таблицы. Вот пример такого отображения:

<table cellpadding="0" cellspacing="0">
 <tr>
  <td valign="top"> </td>
 </tr>
</table>

OPTION=«horz» заставляет модули отображаться горизонтально. Каждый модуль выводится в ячейке таблицы. Пример отображения:

<table cellspacing="1" cellpadding="0" border="0" width="100%">
 <tr>
  <td valign="top"> <?php modChrome_table($module, $params, $attribs); ?> </td>
 </tr>
</table>

OPTION=«xhtml» заставляет модули отображаться в блоках div. Пример отображения:

<div>
 <?php if ($module->showtitle != 0) : ?>
 <h3> <?php echo $module->title; ?> </h3>
 <?php endif; ?>
 <?php echo $module->content; ?>
</div>

OPTION=«rounded» заставляет модули отображаться в формате, который позволяет создавать растягиваемые скругленные углы. Если задан этот вариант style, то имя блока div изменяется с «moduletable» на «module». Пример отображения:

<div>
 <div>
  <div>
   <div>
    <?php if ($module->showtitle != 0) : ?>
     <h3> <?php echo $module->title; ?> </h3>
    <?php endif; ?>
    <?php echo $module->content; ?>
    </div>
   </div>
  </div>
 </div>

OPTION=«none» заставляет модули отображаться в «сыром» виде, не содержащем элементы или заголовки. Вот пример:

echo $module->content; Мы не можем задавать эти стили в <jdoc:include type=«component» />, поскольку это не модуль. Но можно легко создать свой вариант стиля, это часть новых  возможностей Joomla 1.5.

-----------

Компания Легенда производит оптовую продажу расходных материалов для уборочной техники. Основные комплектующие: щеточный диск, дисковая щетка, тупсы и многое другое.

Об авторе
Wedal
(Виталий). Веб-разработчик полного цикла (Full Stack). Создатель и автор сайта Wedal.ru.
Основной профиль – создание сайтов и расширений на CMS Joomla.
Добавить комментарий

Комментарии  
1
Вот сейчас мне ничего не было понятно... это понимают продвинутые, а нам надо всё разжевать и по шагам)))
0
Татьяна, да, эта статья для продвинутых пользователей. Чтобы работать с шаблонами, нужно иметь знания хотя бы о html и CSS. Эту статью можно считать не руководством, а, своего рода, "таблицей умножения" web-мастера. Забыл что-то, заглянул и вспомнил. Если тема создания шаблонов вам интересна, читайте следующие статьи серии. Там все более понятно.
0
А где взять готовые шаблоны? Я вроде бы всё прочитала у вас .. все статьи понравились... Вообще-то я не собираюсь учиться делать сайты.. мне просто сейчас надо свой сайт облагородить, а с чего начать и как не знаю. Придётся на бирже искать помощника)))
0
Татьяна, готовых шаблонов масса. Напишите в Гугле "шаблоны Joomla". С сайтом могу помочь. Пишите в обратную связь - договоримся.
0
//того, чтобы убедиться, что к файлу не обращаются напрямую, из соображений безопасности.

В большинстве готовых шаблонов таких строчек нет. Вы рекомендуете это прописать или это не обязательно? и насколько это будет результативно? Спасибо
0
Vasily, эта строчка предотвращает прямой доступ к файлу шаблона index.php. Допустим, пользователь в адресной строке браузера набрал адрес вида "http://site/joomla/templates/first-template/index.php" - в итоге вместо исходного кода файла, Joomla! покажет ему 'Доступ ограничен'.
0
скажите пожалуйста, а если я возьму готовый шаблон и переделаю. много ли останеться мусора(не нужного) в коде? и как это повлиять может на работу сайта. Спасибо
0
Vasily, все зависит от того, как переделайте. На работу сайта может как повлиять, так и не повлиять. Это частные случаи. Вообще, в большинстве случаев, все будет хорошо.
0
а не подскажите как организовать такую вещь: нужно чтоб посетитель мог заполнить несколько полей, которые отобразяться на одной из страничек. есть ли такое расширение под джумлу? Спасибо
1
Vasily, конечно есть. Тут очень важна сама задача, т.к. компоненты есть от простых до очень сложных. Посмотрите здесь.
0
Wedal,в статье там где вы описываете тело шаблона ,в позициях для модулей нет имен самих позиций -name="left"и т.д
Или их не обязательно указывать?
0
Vasily, подобные вещи только платно.
0
Александр, да, конечно обязательно. Странно, как я этого до сих пор не заметил. В самом шаблоне имена указал, а в статье - нет. Спасибо, что написали. Сейчас исправлю.
0
Wedal, а вы так и не исправили еще!
0
Andrei, все, теперь исправил. И правда, написал вам и забыл. Еще раз большое спасибо! :-)
0
Хорошо было бы скачать данную памятку на комп :-)
-1
Здравствуйте, хотел узнать, а почему в шаблонах часто не указывают метаданные в голове? Или они где то имеются в другом месте?
0
san-chesss, строчка включает в себя метаданные. Явно указывать их в шаблоне не нужно. Здесь они остались от базового html-шаблона.
0
спасибо за ответ. Может кто знает, что за ошибка "XML Parsing Error at 3:38. Error 64: Reserved XML Name" в админке шаблоны. Дело в том, что делаю шаблон с 0, а в шаблонах админки он не отображается и выдает ошибку. В этом деле пока новичок. В каком файле копать?
0
san-chesss, если перевести вашу ошибку на русский язык, все становится понятно: Ошибка при парсинге(считывании, разборе) XML-файла. Зарезервированое XML-имя.
В шаблоне обычно только один xml-файл. В нем и проблема.
0
Разобрался в чем дело. Комментарии нужно было убрать с файла.
0
Можно ли разобрать на заголовок и текст, а между ними вставить еще один модуль.
0
Вырезал кусок кода сори, скопировал и не подумал jdoc:include type="component" - речь о нем шла.
0
Здравствуйте!!
Большое спасибо за Ваши статьи!
У меня вопрос. В данном уроке Вы описываете 3 файла (templateDetails.xml (в разделе Файл templateDetails.xml шаблона) index.php (в разделах заголовок шаблона и тело шаблона) и css файл (в разделе Стили модулей шаблона) или это один файл templateDetails.xml?
Прошу прощения если вопрос наивен. Просто я отношусь к начинающим!!
0
Виктор, здесь описывается templateDetails.xml, index.php и modules.php. Про последний файл подробнее можно почитать в следующих статьях серии.