Работа с компонентами
Вставка компонента
Вставить компонент можно в любом месте кода, однако чаще всего это проиходит в 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(); // Нет новостей, не выводим блок } ?>