Этот мануал для тех кто уже делал шаблоны для Joomla!
Хотя и новичкам должно быть интересно.
Структура шаблона практически не изменилась.
Шаблоны лежат в папке templates
В папке вашего шаблона обязательно должны находится файлы
и (именно так с D в верхнем регистре).
Папки для CSS и описания своих типов вывода модулей (см. ниже) называются css и html соответственно
Структура выглядит так:
templates
+ my_template
++ css
++ html
++
++
Файл содержит описательную часть шаблона (имя автора,дату создания и т.п.)
и список файлов содержащихся в шаблоне (необходимо для установки шаблона через инсталлятор). Открыв файл из существующего шаблона почитайте. Там все предельно ясно
Файл – это собственно и есть шаблон
Листинг пустого выглядит так
:
<?php echo '<?xml version="1.0" encoding="utf-8"?' .'>'; ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "">
<html xmlns="" xml:lang="{LANG_TAG}" lang="{LANG_TAG}" dir="{LANG_DIR}" >
<head>
<jdoc:include type="head" />
<link rel="stylesheet" href="templates/{TEMPLATE}/css/" type="text/css" />
</head>
<body>
</body>
</html>
Внутри тегов <body> </body> находится html содержимое шаблона (возможны включения PHP )
Pathway (хлебные крошки)
В Joomla!
:
<?php echo mosPathWay();?>
В Joomla 1.5
:
<jdoc:include type="modules" name="breadcrumb" />
Модули
В Joomla! модули выводились так
:
<?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/
Имя функции обязательно должно начинаться с modChrome_
Создадим тип вывода style="example"
В котором модули будут выводиться в таблице шириной 180px,
Заголовок модуля имеет красный фон, текст заголовка выводится в тегах <H3> </H3>
Тело модуля имеет серый фон. Весь текст в верхнем регистре.
Листинг простейшего файла будет таким
:
<?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!
:
<?php mosMainBody(); ?>
В Joomla! 1.5
:
<jdoc:include type="component" />
Листинг простейшего трехколоночного шаблона
:
<?php echo '<?xml version="1.0" encoding="utf-8"?' .'>'; ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "">
<html xmlns="" xml:lang="{LANG_TAG}" lang="{LANG_TAG}" dir="{LANG_DIR}" >
<head>
<jdoc:include type="head" />
<link rel="stylesheet" href="templates/{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 за помощь.Без него я бы не понял как это работает Smiley
Задача:
Для зарегистрированных пользователей выводим модули в 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 - имя папки шаблона