Работа с компонентами

Вставка компонента

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