Как переделать шаблон от Joomla 1.0.x в шаблон для Joomla 1.5?
Данная задача встаёт перед многими сайтами после официального прекращения разработчиками Joomla поддержки версии 1.0.
Конвертация шабона не занимает много времени. Основные проблемы возникают в поддержке Joomla 1.5 старых версий модулей и компонентов, созданных сторонними разработчиками и не входящими в стандартный пакет Joomla 1.5. К данной проблеме мы вернёмся в новых статьях.
Первым должен быть модифицирован файл templateDetails.xml.
Изменения в файле templateDetails.xml
1.0 |
1.5 |
<mosinstall type="template">
...
</mosinstall> |
<install type="template">
....
</install> |
<images>
....
</images>
|
данный блок объявления рисунков перенесен в блок <files></files> |
<css>
...
</css>
|
данный блок объявления каскадных таблиц стилей перенесен в блок <files></files> |
<?xml version="1.0" encoding="iso-8859-1"?> |
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE install PUBLIC "-//Joomla! 1.5//DTD template 1.0//EN" "http://www.joomla.org/xml/dtd/1.5/template-install.dtd"> |
Новой возможностью шаблонов templateDetails.xml является использование дополнительных параметров. Параметрами могут быть: цвет, размер шрифта, количество модулей и их позиции, ширина, показ компонентов и т.д. Данные параметры пользователи смогут устанавливать в параметрах шаблона, а разработчики использовать при разработке дизайна.
Несколько вариантов использования параметров:
Пример выбора цвета шаблона:
<param name="color" type="list" default="blue" label="Change Color" description="Change Template Color">
<option value="blue">blue</option>
<option value="green">Green</option>
<option value="red">red</option>
</param>
Вызов параметра в файле index.php шаблона:
<link rel="stylesheet" href="templates/<?php echo $this->template ?>/css/
<?php echo $this->params->get('color'); ?>.css" type="text/css" />
Пример отключения вывода компонентов в шаблоне:
<param name="showComponent" type="radio" default="1" label="Show Component" description="Show/Hide the component output">
<option value="0">No</option>
<option value="1">Yes</option>
</param>
Вызов параметра в файле index.php шаблона:
<?php if($this->params->get('showComponent')) : ?>
<jdoc:include type="component" />
<?php endif; ?>
Выбранные параметры сохраняются в файле params.ini, не забудьте установить соответсвующий доступ к данном файлу, иначе настройки не будут сохраняться.
Пример полной версии файла templateDetails.xml:
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE install PUBLIC "-//Joomla! 1.5//DTD template 1.0//EN" "http://www.joomla.org/xml/dtd/1.5/template-install.dtd">
<install version="1.5" type="template">
<name>Template name</name>
<creationDate>19 November 2009</creationDate>
<author>VBizSoft Team Group</author>
<authorEmail>info [at] vbizsoft.kg</authorEmail>
<authorUrl>http://www.vbizsoft.kg</authorUrl>
<copyright></copyright>
<license>GNU/GPL</license>
<version>1.0.0</version>
<description>Example template for Joomla 1.5</description>
<files>
<filename>css/template.css</filename>
<filename>css/general.css</filename>
<filename>css/index.html</filename>
<filename>html/com_contact/category/default.php</filename>
<filename>images/arrow.png</filename>
<filename>images/arrow_rtl.png</filename>
<filename>images/pfeil.gif</filename>
<filename>images/pfeil_rtl.gif</filename>
<filename>index.html</filename>
<filename>index.php</filename>
<filename>javascript/md_stylechanger.js</filename>
<filename>javascript/index.html</filename>
<filename>params.ini</filename>
<filename>templateDetails.xml</filename>
<filename>template_thumbnail.png</filename>
<filename>favicon.ico</filename>
</files>
<languages>
<language tag="en-GB">en-GB.tpl_vbs.ini</language>
</languages>
<administration>
<languages folder="admin">
<language tag="en-GB">en-GB.tpl_vbs.ini</language>
</languages>
</administration>
<positions>
<position>left</position>
<position>right</position>
<position>top</position>
<position>breadcrumb</position>
<position>user1</position>
<position>user2</position>
<position>user3</position>
<position>user4</position>
<position>debug</position>
<position>syndicate</position>
</positions>
<params>
</params>
</install>
Изменения в файле index.php
В Joomla 1.0 начало файла index.php состояло из следующих строчек:
<?php
defined( '_VALID_MOS' ) or die( 'Restricted access' );
// needed to seperate the ISO number from the language file constant _ISO
$iso = explode( '=', _ISO );
// xml prolog
echo '<?xml version="1.0" encoding="'. $iso[1] .'"?' .'>';
?>
<!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">
<head>
<?php mosShowHead(); ?>
<?php
if ( $my->id ) {
initEditor();
}
?>
<meta http-equiv="Content-Type" content="text/html; <?php echo _ISO; ?>" />
<link href="<?php echo $mosConfig_live_site;?>/templates/vbs-template/css/template_css.css" rel="stylesheet" type="text/css" />
</head>
В Joomla 1.5 начало файла index.php состоит из следующих строчек:
<?php
defined('_JEXEC') or die('Restricted access');
?>
<?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="<?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/beez/css/template.css" type="text/css" />
<link rel="stylesheet" href="<?php echo $this->baseurl ?>/templates/beez/css/general.css" type="text/css" />
</head>
Изменения функционала в index.php шаблона:
1.0 |
1.5 |
Получение полного URL сайта |
<?php echo $mosConfig_live_site; ?>
|
<?php echo $mainframe->getCfg('live_site'); ?>
|
Возвращает текущий шаблон |
<?php echo $cur_template; ?>
|
<?php echo $this->template ?>
|
Выводит хлебные крошки (путь навигации) |
<?php mosPathWay(); ?>
|
<jdoc:include type="module" name="breadcrumbs" />
|
Вывод текущей даты |
<?php echo mosCurrentDate (); ?>
|
<?php echo JHTML::Date( 'now', '%d | %m | %Y' ); ?>
|
Вывод в шаблоне компонента |
<?php mosMainBody(); ?>
|
<?php if($this->params->get('showComponent')) : ?>
<jdoc:include type="component" />
<?php endif; ?>
|
Вывод модуля с проверкой на наличие в данной позиции активных элементов, если не один элемент не выводится в данной позиции, то данная позиция не будет выводится.
Варианты использования условия:
countModules('user1')
countModules('user1 and user2')
countModules('user1 or user2')
countModules('user1 + user2')
|
<?php if (mosCountModules('top')) { ?>
<?php mosLoadModules ( 'top' ); ?>
<?php } ?>
|
<?php if($this->countModules('top')) : ?>
<jdoc:include type="modules" name="top" style="table"/>
<?php endif; ?>
|
Варианты отображения компонентов и модулей |
<?php mosLoadModules ( 'position name', type ) ?>
Type:
- -1 модули выводятся без таблиц и блоков
- -2 модули выводятся блоками DIV
- -3 модули выводятся четырьмя блоками DIV, вложенными друг в друга
|
<jdoc:include type="modules" name="position" style="type"/>
Type:
- table модули выводятся в таблице
- horz модули выводятся горизонтально (в таблице)
- xhtml модули выводятся одном DIV, c заголовком H3
- rounded модули выводятся четырьмя блоками DIV, вложенными друг в друга
|
Получение имени сайта |
<?php echo $mosConfig_sitename; ?>
|
<?php echo $mainframe->getCfg('sitename'); ?>
|
|