Этот мануал для тех кто уже делал шаблоны для Joomla! 1.0.x
Хотя и новичкам должно быть интересно.
Структура шаблона практически не изменилась.
Шаблоны лежат в папке
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 кода)
Pathway (хлебные крошки)В Joomla! 1.0.x
<?php echo mosPathWay();?>
В Joomla 1.5
<jdoc:include type="modules" name="breadcrumb" />
МодулиВ 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
<div class="moduletable">
<h3>Module Title</h3>
Module Content
</div>
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
В 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>
Трюки с отображением модулейСпасибо
userxp за помощь.Без него я бы не понял как это работает
Задача: Для зарегистрированных пользователей выводим модули в
right для всех остальных модули в
user1Решение:После тега
<body> пишем
<?php $user =& JFactory::getUser(); ?>
в теле шаблона
<?php if($user->_id) {?>
<jdoc:include type="modules" name="right" style="raw"/>
<?php } else {?>
<jdoc:include type="modules" name="user1" style="raw"/>
<?php }?>
Задача:Для пользователей группы
author выводим модули в
right для всех остальных модули в
user1Решение:После тега
<body> пишем
<?php $user =& JFactory::getUser(); ?>
в теле шаблона
<?php if($user->get(‘usertype’) == ‘Author’) {?>
<jdoc:include type="modules" name="right" style="raw"/>
<?php } else {?>
<jdoc:include type="modules" name="user1" style="raw"/>
<?php }?>
Задача:Вместе с компонентом
weblinks выводим модули в
user2Решение:После тега
<body> пишем
<?php $option = JRequest::getVar( 'option' );?>
в теле шаблона
<?php if($option == 'com_weblinks') {?>
<jdoc:include type="modules" name="user2" style="raw"/>
<?php } ?>
Некоторые переменные используемые в шаблонах$mainframe->getCfg('sitename') - имя сайта
$mainframe->getCfg('mailfrom') - e-mail админа
$mainframe->getCfg('live_site') - URL сайта
$this->template - имя папки шаблона