Работа с компонентами
Вставка компонента
Вставить компонент можно в любом месте кода, однако чаще всего это проиходит в tpl файлах. Рассмотрим пример включения компонента menu в шаблоне шапки сайта.
<div id="header">
<a href="<?= SiteRoot()?>" title="Go to home">
<img src="<?= Root('i/image/logo.png')?>" alt="Site logo">
</a>
<?php IncludeCom('menu')?>
</div>
Как можно понять ф-я IncludeCom() - служит для включения компонента в нужном месте.
Мы так же можем передавать в компоненты параметры:
<div id="header">
<a href="<?= SiteRoot()?>" title="Go to home">
<img src="<?= Root('i/image/logo.png')?>" alt="Site logo">
</a>
<?php IncludeCom('menu', array('active' => GetQuery()))?>
</div>
В вызываемом компоненте, переданные параметры будут обычными переменными. Ключ в массиве параметров - это и есть имя переменной в вызываемом компоненте.
Еще доступен метод передачи как в URL.
<div id="header">
<a href="<?= SiteRoot()?>" title="Go to home">
<img src="<?= Root('i/image/logo.png')?>" alt="Site logo">
</a>
<?php IncludeCom('menu&color=black', array('active' => GetQuery()))?>
</div>
Но нужно помнить что при такой передаче параметов, переменная color будет записана в массив $_GET.Естественно, что определённые таким образом переменные останутся после работы компонета в массиве $_GET, как при обычном вызове через URL браузера.
В компоненте можно выключить дальнейшее подключение его файлов.
Пусть у нас есть компонент news, который состоит из 2-х файлов src/news.php и tpl/news.php. Если срабатывает определенное условие, то с помощью ExitCom() мы просто запрещаем вызов шаблона tpl/news.php.
<?php
$page = abs(intval(Get('page', 1)));
$newsModel = new NewsModel($page);
$news = $newsModel->GetList();
if (empty($news))
{
ExitCom(); // Нет новостей, не выводим блок
}
?>