Предлагаем Вашему вниманию небольшой мануал-введение по созданию шаблонов для Joomla! 1.5. Статья описывает базовый функционал разделение логики и дизайна для тех, кто занимается созданием шаблонов.
- ---
Шаблон
Структура шаблона практически не изменилась. Шаблоны лежат в папке templates. В папке вашего шаблона обязательно должны находится файлы index.php и templateDetails.xml (именно так с D в верхнем регистре).
Папки для CSS и описания своих типов вывода модулей (см. ниже) называются css и html соответственно.
Структура:
* Templates
o my_template
+ Css
+ Html
+ Index.php
+ 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: 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">
<tr>
<th valign="top"> Заголовок модуля </ th>
</ Tr>
<tr>
<td> Содержание Модуля </ td>
</ Tr>
</ Table>
где:
* Style = "horz" - горизонтальный вывод
Не увидел разницы с style = "table", хотя в официальном мануале сказано, что формируется горизонтальный вывод модуля
style = "xhtml" - вывод модуля в одном DIV с заголовком H3:
<div>
<h3> Заголовок модуля </ h3>
Содержание Модуля
</ Div>
style = "rounded" - вывод модуля в четырех вложенных DIV (используется для создания закругленных углов в модулях):
<div>
<div>
<div>
<div>
<h3> Заголовок модуля </ h3>
Содержание Модуля
</ 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: 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> <jdoc:include type="modules" name="left" style="raw"/> </ td>
<td> <jdoc:include type="component" /> </ td>
<td> <jdoc:include type="modules" name="right" style="raw"/> </ td>
</ Tr>
</ Table>
</ Body>
</ Html>
Трюки с отображением модулей
Задача:
Для зарегистрированных пользователей выводим модули в 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') - электронный адрес Администратора;
* $ Mainframe-> getCfg ('live_site') - URL сайта;
* $ This-> template - имя папки шаблона.
Ускорение загрузки сайта: Оптимизация CSS-файлов< Предыдущая | Следующая >Что такое семантическая разметка? |
---|