В папке шаблона необходимо создать следующие файлы и папки:
файл templateDetails.xml
файл index.php
файл template_thumbnail.png
файл template_preview.png
файл favicon.ico
файл error.php
файл component.php
папка css, которая содержит файлы template.css и menu.css
папка images с графическими файлами
папка html содержит еще две папки mod_login и mod_search
Теперь подробнее о каждом файле и папке.
Файл templateDetails.xml -структура шаблона описанная на языке XML. Файл используется Joomla для инсталляции любого расширения, в том числе и шаблонов.
Содержание:
<?xml version="1.0" encoding="utf-8"?> <!DOCTYPE install PUBLIC "-//Joomla! 2.5//DTD template 1.0//EN" "http://www.joomla.org/xml/dtd/1.7/template-install.dtd"> <extension version="2.5" type="template" client="site"> <name>Название шаблона</name> <creationDate>Дата создания шаблона</creationDate> <author>Автор шаблона</author> <authorEmail>email автора шаблона</authorEmail> <authorUrl>Сайт автора шаблона</authorUrl> <copyright>Права на шаблон</copyright> <license>GNU GPL</license> <version>Версия шаблона</version> <description>Краткое описание шаблона</description> <files> <filename>favicon.ico</filename> <filename>index.html</filename> <filename>index.php</filename> <filename>template_preview.png</filename> <filename>template_thumbnail.png</filename> <filename>templateDetails.xml</filename> <folder>css</folder> <folder>html</folder> <folder>images</folder> <folder>js</folder> </files> <positions> <position>pos-1</position> <position>pos-2</position> ....................... <position>pos-n</position> </positions> <languages folder="language"> <language tag="en-GB">en-GB/en-GB.tpl_remont.ini</language> <language tag="en-GB">en-GB/en-GB.tpl_remont.sys.ini</language> <language tag="ru-GB">ru-GB/ru-GB.tpl_remont.ini</language> <language tag="ru-GB">ru-GB/ru-GB.tpl_remont.sys.ini</language> </languages> </extension>
Назначение тегов до тега <files> прописаны мной в самих тегах и, кстати, при написании этого файла следите за кодировкой, кодировка должна быть UTF-8.
В секции <files> указываем файлы и папки, находящиеся в папке templates/ваш_шаблон, то есть таким образом описываем файлы шаблона.
В секции <positions> скрупулезно перечисляем все позиции модулей и будте внимательны, названия позиций должны абсолютно соответствовать названиям позиций в файле index.php вашего шаблона.
Во многих шаблонах вы можете увидеть такие секции, как <languages> и <config>. Если вы захотите добавить какие-то настройки, доступные из менеджера шаблонов, то секция <config> имеет смысл ибо именно в ней вы и пропишите все необходимые параметры. Если вам нужно выводить информацию о шаблоне, подписи к настройкам на нескольких языках, то в этом случае появится необходимость в секции <languages>
Файл index.php - это макет шаблона нашего сайта или структура макета в html тегах.
Основные команды в index.php:
<!--Защита от прямого доступа: --> <?php /** * @package Joomla.Site * @copyright Copyright (C) 2005 - 2013 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; ?>
<!--Подключение Doctype и html с языком: --> <!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="<?php echo $this->language; ?>" lang="<?php echo $this->language; ?>" dir="<?php echo $this->direction; ?>">
<!--Подключение мета тегов: --> <jdoc:include type="head" />
<!--Путь в корень домена: --> <?php echo $this->baseurl ?>
<!--Конструкция подключения модуля: --> <?php if($this->countModules('left')) : ?> <jdoc:include type="modules" name="left" style="xhtml" /> <?php endif; ?>
<!--Подключение основного контента: --> <jdoc:include type="component" />
<!--Подключение модуля вывода системных сообщений: --> <jdoc:include type="message" />
Файл component.php – это шаблон вывода страницы сайта для печати.
Пример:
<?php /** * @package Joomla.Site * @copyright Copyright (C) 2005 - 2013 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; ?> <!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="<?php echo $this->language; ?>" lang="<?php echo $this->language; ?>" dir="<?php echo $this->direction; ?>"> <head> <jdoc:include type="head" /> <link rel="stylesheet" href="/<?php echo $this->baseurl; ?>/templates/system/css/system.css" type="text/css" /> <link rel="stylesheet" href="/<?php echo $this->baseurl; ?>/templates/system/css/general.css" type="text/css" /> <link rel="stylesheet" href="/<?php echo $this->baseurl . '/templates/' . $this->template; ?>/css/template.css" type="text/css" /> </head> <body class="contentpane"> <jdoc:include type="message" /> <jdoc:include type="component" /> </body> </html>
Файл error.php – это шаблон вывода страницы ошибки.
Для вывода своей страницы 404 в joomla 2.5 можно создать так называемый статичный материал не принадлежащий ни одной категории. После этого сохраните данный материал и запомните его идентификатор (id). Его вы можете найти на странице создания материала: «ID Материала:» XX.После этого в строчке: index.php?option=com_content&view=article&id=XX, замените XX на id того материала, который мы создавали для использования в качестве страницы 404. Сохраните файл. После этого все будет готово.:
<?php /** * @package Joomla.Site * @copyright Copyright (C) 2005 - 2013 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; if (!isset($this->error)) { $this->error = JError::raiseWarning(404, JText::_('JERROR_ALERTNOAUTHOR')); $this->debug = false; } //get language and direction $doc = JFactory::getDocument(); $this->language = $doc->language; $this->direction = $doc->direction; ?> <!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="<?php echo $this->language; ?>" lang="<?php echo $this->language; ?>" dir="<?php echo $this->direction; ?>"> <?php if ($this->_error->get('code') == '404') { header("HTTP/1.0 404 Not Found"); header('Location: index.php?option=com_content&view=article&id=XX'); exit;} ?>