Структура шаблона по сравнению с версией 1.0.х практически не изменилась.
Шаблоны лежат в папке templates
В папке вашего шаблона обязательно должны находится файлы
index.php и templateDetails.xml (именно так с D в верхнем регистре).
Папки для CSS и описания своих типов вывода модулей (см. ниже) называются css и html соответственно
Структура выглядит так:
- templates
- my_template
- css
- html
- index.php
- templateDetails.xml
Файл templateDetails.xml содержит описательную часть шаблона (имя автора,дату создания и т.п.) и список файлов содержащихся в шаблоне (необходимо для установки шаблона через инсталлятор). Открыв файл templateDetails.xml из существующего шаблона почитайте. Там все предельно ясно Файл index.php – это собственно и есть шаблон
Листинг пустого index.php выглядит так
Код
<?php echo ‘<?xml version=»1.0″ encoding=»utf-8″?’ .’>’; ?>
<!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» xml:lang=»{LANG_TAG}» lang=»{LANG_TAG}» dir=»{LANG_DIR}» >
<head>
<jdoc:include type=»head» />
<link rel=»stylesheet» href=»templates/{TEMPLATE}/css/template.css» type=»text/css» />
</head>
<body></body>
</html>
Внутри тегов <body> </body> находится html содержимое шаблона (возможны включения PHP кода)
Модули
В Joomla! 1.0.x модули выводились так
Код:
<?php mosLoadModules ( ‘left’,-1); ?>
Где left : позиция модуля , -1 : тип вывода модуля.
В Joomla! 1.5 вывод модулей осуществляется так
Код:
<jdoc:include type=»modules» name=»right» style=»-1″ />
type=»modules» говорит о том, что выводится модуль
name=»right» указывает на позицию модуля
style=»-1″ указывает тип вывода модуля
для style=»…» появилась возможность указания типа вывода не только цифрами, но и ключевыми словами
style=»table» – стандартный вывод модуля в ячейке таблицы
Код:
<table cellpadding=»0″ cellspacing=»0″ class=»moduletable»>
<tr>
<th valign=»top»>Module Title</th>
</tr>
<tr>
<td>Module Content</td>
</tr>
</table>
style=»horz» – горизонтальный вывод
Не увидел разницы со style=»table» , хотя в официальном мануале сказано, что формируется горизонтальный вывод модуля
style=»xhtml» – вывод модуля в одном DIV с заголовком H3
Код: </pre>
Module Title
Module Content
</pre>
style=»rounded» – вывод модуля в четырех вложенных DIV ( используется для создания закругленных углов ).
Код:
<div class=»module»>
<div>
<div>
<div>
<h3>Module Title</h3>
Module Content
</div>
</div>
</div>
</div>
style=»raw»
будет выведено содержимое модуля без заголовка ,таблиц и DIVов
В Joomla 1.5 добавлена возможность создавать свои типы вывода модулей Описание типа вывода модуля находится в файле templates/template_folder/html/modules.php Имя функции обязательно должно начинаться с modChrome_
Создадим тип вывода style=»example» В котором модули будут выводиться в таблице шириной 180px, Заголовок модуля имеет красный фон, текст заголовка выводится в тегах <H3> </H3> Тело модуля имеет серый фон. Весь текст в верхнем регистре.
Листинг простейшего файла modules.php будет таким
Код:
<?php
defined(‘_JEXEC’) or die(‘Restricted access’);
function modChrome_example($module, & $params)
{ ?>
<table width=»180px» border=»0″ cellspacing=»0″ cellpadding=»0″>
<tr>
<td style=»background-color:red;»><h3><?php echo $module->title ?></h3></td>
</tr>
<tr>
<td style=»background-color:gray; text-transform:uppercase;»><?php echo $module->content ?></td>
</tr>
</table>
<?php
}
?>
Контент
Вывод контента осуществляется так
В Joomla! 1.0.x
Код:
<?php mosMainBody(); ?>
В Joomla! 1.5
Код:
<jdoc:include type=»component» />
Листинг простейшего index.php трехколоночного шаблона
Код:
<?php echo ‘<?xml version=»1.0″ encoding=»utf-8″?’ .’>’; ?>
<!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» xml:lang=»{LANG_TAG}» lang=»{LANG_TAG}» dir=»{LANG_DIR}» >
<head>
<jdoc:include type=»head» />
<link rel=»stylesheet» href=»templates/{TEMPLATE}/css/template.css» type=»text/css» />
</head>
<body>
<table width=»100%» border=»0″ cellspacing=»0″ cellpadding=»0″>
<tr>
<td class=»left»><jdoc:include type=»modules» name=»left» style=»raw»/></td>
<td class=»center»><jdoc:include type=»component» /></td>
<td class=»right»><jdoc:include type=»modules» name=»right» style=»raw»/></td>
</tr>
</table>
</body>
</html>