Загрузка...

Начнем создание шаблона для CMS Joomla 1.6.

Файлы, которые входят в шаблон

При конструировании собственного шаблона нужно скоординировано создать несколько папок и файлов, которые необходимы для его работы. Все файлы размещаются в директории с именем шаблона  в папке /templates/ в каталоге, в котором установлена Joomla.  Например, если у вас есть два шаблона, один из которых называется Element, а второй Voodoo, то их папки будут выглядеть  следующим образом:

1 /templates/Voodoo
2 /templates/Element

Обратите внимание на то, что имя папки и шаблона должны быть одинаковыми. Названия чувствительны к регистру символов (Voodoo и voodoo - разные имена) и в них не должно быть пробелов.

Для нашего шаблона мы будем использовать имя RusellerSimple. Соответственно его каталог будет выглядеть как /templates/RusellerSimple.

В состав шаблона обязательно должны входить два файла, templateDetails.xml и index.php:

1 /RusellerSimple/templateDetails.xml
2 /RusellerSimple/index.php

Данные файлы используются ядром Joomla.

Первый файл (templateDetails.xml) является описанием шаблона в XML формате. Он содержит метаданные, которые указывают Joomla имя автора, права использования, файлы и различные данные, необходимые для работы шаблона. Информация используется при установке шаблона в систему.

Второй файл (index.php) служит для генерации страниц.

Почти все шаблоны используют дополнительные файлы, хотя их наличие не является обязательным:

1 /RusellerSimple/template_thumbnail.png
2 /RusellerSimple/params.ini
3 /RusellerSimple/css/template.css
4 /RusellerSimple/images/logo.png

/RusellerSimple/template_thumbnail.png - снимок страницы шаблона (обычно уменьшается до размера 140х90 px), который после установки становится доступным для просмотра в "Менеджере шаблонов".

/RusellerSimple/params.ini - текстовый файл, который хранит значения различных параметров, используемых в шаблоне.

/RusellerSimple/css/template.css - файл стилей CSS шаблона. Расположение папки и имя файла можно изменять, однако его надо задать в файле index.php. В последующих уроках вы увидите, что очень выгодно иметь несколько файлов стилей.

/RusellerSimple/images/logo.png - изображение, которое используется в шаблоне. Обычно все картинки помещают в одну папку (в нашем примере - /images). Названия файла и папки могут быть какими угодно.

 

templateDetails.xml

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

01 <?xml version="1.0" encoding="utf-8"?>
02     <!DOCTYPE install PUBLIC "-//Joomla! 1.6//DTD template 1.0//RU"
03     "http://www.joomla.org/xml/dtd/1.6/template-install.dtd">
04     <install version="1.6" type="template">
05 <name>RusellerSimple</name>
06 <creationDate>09/07/11</creationDate>
07 <author>Сергей Фастунов</author>
08 <authorEmail>Адрес электронной почты защищен от спам-ботов. Для просмотра адреса в вашем браузере должен быть включен Javascript.<;/authorEmail>
09 <authorUrl>http://www.ruseller.com</authorUrl>
10 <copyright>Copyright (C) 2011 Евгений Попов</copyright>
11 <license>GPL</license>
12 <version>1.0.0</version>
13 <description>Первый шаблон серии уроков "Создание шаблонов для Joomla"</description>
14 <files>
15 <filename>index.php</filename>
16 <filename>templateDetails.xml</filename>
17 <filename>params.ini</filename>
18 <folder>images</folder>
19 <folder>css</folder>
20 </files>
21 <positions>
22 <position>breadcrumbs</position>
23 <position>left</position>
24 <position>right</position>
25 <position>top</position>
26 <position>footer</position>
27 <position>debug</position>
28 </positions>
29  
30 <config>
31 <fields  name="params">
32 <fieldset  name="basic">
33 <field
34 name="colorVariation"
35 type="list"
36 default="blue"
37 label="Вариант цвета"
38 description="Основной цвет шаблона">
39 <option
40 value="blue">синий</option>
41 <option
42 value="red">красный</option>
43 </field>
44 </fieldset>
45 </fields>
46 </config>
47 </install>

Давайте посмотрим, какое значение имеют некоторые строки:

  • <install version="1.6" type="template"> - данная директива является командой для инсталлятора. Опции указывают, что устанавливается шаблон для Joomla версии 1.6.
  • <name>RusellerSimple</name> - определяет имя шаблона. Также оно используется для создания папки в каталоге шаблонов. Поэтому в нем должны содержаться только системные символы. Если вы создаете шаблон вручную, то имя его должно совпадать с именем папки шаблона в каталоге.
  • <creationDate>09/07/11</creationDate> - дата создания шаблона.
  • <author>Сергей Фастунов</author> - имя автора.
  • <authorEmail>Адрес электронной почты защищен от спам-ботов. Для просмотра адреса в вашем браузере должен быть включен Javascript.<;/authorEmail> - адрес email автора.
  • <authorUrl>http://www.ruseller.com</authorUrl> - адрес сайта автора.
  • <copyright>Copyright (C) 2011 Евгений Попов</copyright> - информация о владельце прав использования шаблона.
  • <license>GPL</license> - вид лицензии на шаблон.
  • <version>1.0.0</version> - номер версии.
  • <description>Первый шаблон серии уроков "Создание шаблонов для Joomla"</description> - описание шаблона.
  • <files></files> - в данном разделе перечисляются файлы, которые используются в шаблоне. Для описания файлов используются два вида тегов<filename> и <folder>:
    1 <filename>index.php</filename>
    2 <filename>templateDetails.xml</filename>
    3 <filename>params.ini</filename>
    4 <folder>images</folder>
    5 <folder>css</folder>
    Тег <filename>  обрамляет имя файла, а <folder> - имя папки.
  • <positions></positions> - данный раздел описывает все доступные положения в шаблоне. Имена положений должны совпадать с тем, что определяется в файле index.php.
  • <config></config> - в данном разделе описываются параметры, которые используются в шаблоне. Например, в примере приводится задание параметров для изменения цветовой схемы шаблона.

 

index.php

Файл index.php представляет собой комбинацию кода PHP и HTML, которые полностью задают представление данных в шаблоне.

Рассмотрим критическую часть файла для создания правильного шаблона: директиву !DOCTYPE, которая находится в верхней части.

01 <?php
02     /**
03 * @copyrightCopyright (C) 2011 Евгений Попов
04 * @licenseGPL
05 */
06 defined('_JEXEC'or die;
07 $app = JFactory::getApplication();
08 ?>
09 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
10 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

Самое первое выражение PHP просто выводит информацию об авторских правах  и лицензии, а также предотвращает непосредственный доступ к файлу.

Код $app = Jfactory::getApplication(); является вызовом функции, которая позволяет получить и использовать в шаблоне различные параметры Joomla (например, имя сайта).

Директива !DOCTYPE является фундаментальным компонентом веб страницы, которая указывает браузеру, как ее выводить. Она указывает, как браузер будет обрабатывать теги HTML и, что даже более важно, как будет интерпретироваться CSS (есть ли на странице устаревший код, содержится ли XML и так далее).

HTML существует в нескольких версиях, кроме того есть XHTML, который имеет несколько отличный синтаксис. Поэтому необходимо использовать директиву DOCTYPE, чтобы указать браузеру используемый стандарт.

Директива DOCTYPE должна быть расположена в первой строке, а путь к странице описания стандарта должен приводиться полностью. Например, браузер Internet Explorer 6 в случае ошибки распознавания стандарта переходит в режим обратной совместимости и начинает отображать страницу как Internet Explorer 4. 

Наш шаблон создается в расчете на использование в Internet Explorer 6 и далее. Поэтому очень важно соблюсти наличие директивы DOCTYPE в качестве первой строки генерированного HTML файла, чтобы в дальнейшем использовать как можно меньше ухищрений в коде.

За директивой DOCTYPE следует XML выражение:

1 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="<?php echo $this->language; ?>" lang="<?php echo $this->language; ?>" >

И за ним следует секция head:

1 <head>
2 <jdoc:include type="head" />
3 <link rel="stylesheet" href="<?php echo $this->baseurl?>/templates/system/css/system.css" type="text/css" />
4 <link rel="stylesheet" href="<?php echo $this->baseurl?>/templates/system/css/general.css" type="text/css" />
5 <link rel="stylesheet" href="<?php echo $this->baseurl ?>/templates/<?php echo $this->template ?>/css/template.css" type="text/css" />
6 </head>

Код <?php echo $this->language; ?> вытягивает из Joomla информацию об используемом на сайте языке и вставляет ее в код шаблона.

Код <jdoc:include type="head" /> вставляет в заголовок страницы развернутую информацию, которая устанавливается в настройках Joomla. Например, код заголовка страницы нашего шаблона будет выглядеть так:

01 <head>
02   <base href="http://joomla/index.php" />
03   <meta http-equiv="content-type" content="text/html; charset=utf-8" />
04   <meta name="robots" content="index, follow" />
05   <meta name="keywords" content="" />
06   <meta name="rights" content="" />
07   <meta name="language" content="ru-RU" />
08   <meta name="generator" content="Joomla! 1.6 - Open Source Content Management" />
09   <title>Home</title>
10   <link href="/index.php?format=feed&amp;type=rss" rel="alternate" type="application/rss+xml" title="RSS 2.0" />
11   <link href="/index.php?format=feed&amp;type=atom" rel="alternate" type="application/atom+xml" title="Atom 1.0" />
12   <script src="/media/system/js/core.js" type="text/javascript"></script>
13   <script src="/media/system/js/mootools-core.js" type="text/javascript"></script>
14   <script src="/media/system/js/caption.js" type="text/javascript"></script>
15   
16 <link rel="stylesheet" href="/templates/system/css/system.css" type="text/css" />
17 <link rel="stylesheet" href="/templates/system/css/general.css" type="text/css" />
18 <link rel="stylesheet" href="/templates/RusellerSimple/css/template.css" type="text/css" />
19 </head>

Большая часть информации заголовка генерируется "на лету" и соответствует тому, какой материал выводится в текущий момент.

Последние строчки в разделе заголовка нашего шаблона предназначены для генерации ссылок на страницы стилей CSS:

1 <link rel="stylesheet" href="<?php echo $this->baseurl?>/templates/system/css/system.css" type="text/css" />
2 <link rel="stylesheet" href="<?php echo $this->baseurl?>/templates/system/css/general.css" type="text/css" />
3 <link rel="stylesheet" href="<?php echo $this->baseurl ?>/templates/<?php echo $this->template ?>/css/template.css" type="text/css" />

Первые два файла, system.css и general.css, содержат общие стили для Joomla. А последний, является файлом стилей шаблона, который мы назвали template.css. Код <?php echo $this->template ?> возвращает путь к текущему шаблону. Такое использование позволяет сделать наш код более универсальным. При создании следующего шаблона можно будет просто скопировать туда строку и код будет работать правильно.

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

1 <!--[if lte IE 6]>
2     <link href="templates/<?php echo $this->template ?>/css/ieonly.css"
3     rel="stylesheet" type="text/css" />
4 <![endif]-->

А следуюший код является примером использования параметров шаблона. В "менеджере шаблонов" можно выбрать цветовую схему, а в соответствии с выбранным значением параметра будет загружаться соответствующий файл со стилями:

1 <link rel="stylesheet" href="<?php echo $this->baseurl ?>/templates/<?php echo $this->template ?>/css/<?php echo $this->params->get('colorVariation'); ?>.css" type="text/css" />

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

1 <link rel="stylesheet" href="/templates/RusellerSimple/css/red.css" type="text/css" />

 

Раздел body страницы шаблона

Итак, раздел заголовка страницы шаблона готов. Теперь можно приступить к созданию непосредственно тела.

Нужно вставить все выражения Joomla, код HTML и добавить модули. Для нашего примера код тела страницы будет выглядеть следующим образом:

01 <body>
02     <?php echo $app->getCfg('sitename');?><br />
03     <jdoc:include type="modules"  name="top" />
04     <jdoc:include type="modules"  name="left" />
05     <jdoc:include type="modules"  name="breadcrumbs" />
06     <jdoc:include type="component" />
07     <jdoc:include type="modules"  name="right" />
08     <jdoc:include type="modules"  name="footer" />
09     <jdoc:include type="modules"  name="debug" />
10 </body>

Модули должны соответствовать тому, что было описано в templateDetails.xml. Если запустить наш шаблон, то сайт с тестовым наполнением будет выглядеть следующим образом:

img 1 1

В коде используются команды Joomla.

Код <?php echo $this->template ?> вставляет в код страницы информацию об имени сайта.

Выражение jdoc используется для вставки в код HTML модулей или компонентов.

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

Для вставки модуля используется код <jdoc:include type="modules" name="right">. Данная строка генерирует код HTML всех модулей, которые размещены в позиции "right". Порядок следования модулей определяется в соответствии со значениями "Порядок", которое можно установить в "Менеджере модулей".

 

{

}