Макет и разметку шаблона определяют два базовых PHP файла, в которых происходит рендеринг позиций виджетов.
theme.php
Сердцем каждого шаблона является файл theme.php, который предоставляет весь HTML для базовой разметки. В этом отличие от стандартных Joomla и WordPress шаблонов, в которых главным файлом шаблона является index.php.
Вот структура theme.php. Файл должен подключить theme.config.php, отобразить позиции виджетов, получить переменные конфига и отобразить системные выходные данные.
<?php
// get theme configuration
include($this['path']->path('layouts:theme.config.php'));
?>
<!DOCTYPE HTML>
<html dir="<?php echo $this['config']->get('direction'); ?>" data-config='<?php echo $this['config']->get('body_config','{}'); ?>'>
<head>
<?php echo $this['template']->render('head'); ?>
</head>
<body>
// render a widget position
<?php echo $this['widgets']->render('widget-position'); ?>
// retrieve a config variable
<?php echo $this['config']->get('variable'); ?>
// render the system output
<?php echo $this['template']->render('content'); ?>
</body>
</html>
Объект конфига
Переменные из config.xml хранятся в объекте config. Для доступа к значению переменной просто используйте метод get
.
// output the value of the branding variable
<?php echo $this['config']->get('theme_branding'); ?>
// output the to-top scroller based on the theme setting
<?php if ($this['config']->get('totop_scroller')) : ?>
<a data-uk="smooth-scroll" href="#"></a>
<?php endif; >
Объект виджета
Виджеты страницы хранятся в объекте widgets. Для рендеринга всех виджетов в позиции используйте метод render
. Проверить, опубликованы ли виджеты в этой позиции, можно с помощью метода count
.
<// render all widgets in Top A position
<?php echo $this['widgets']->render('top-a')); ?>
// apply the parallel layout to all widgets in Top A position
<?php if ($this['widgets']->count('top-a')) : ?>
<?php echo $this['widgets']->render('top-a', array('layout'=>'parallel')); ?>
<?php endif; ?>
theme.config.php
В то время как theme.php в основном определяет только разметку макета, theme.config.php отвечает за расчеты, такие как трехколоночный макет, классы body и социальные кнопки. В этом файле расположена логика шаблона.