Font Size

Profile

Layout

Direction

Menu Style

Cpanel

Создание шаблона для Joomla! 1.5

Предлагаем Вашему вниманию небольшой мануал-введение по созданию шаблонов для 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 - имя папки шаблона.

You are here