CONTENT MANAGEMENT SYSTEM
Blox Logo
Blox CMS — блочный метод сайтостроения
.
 
Blox Help

←→

Файлы шаблона
Файл ∗.oh (обработчик вывода)

Обработчики вывода применяются, если необходимо обработать данные поступающие в шаблон перед выводом блока на странице.

Правила написания обработчиков вывода

  • Обработчики пишутся на языке PHP.
  • Файл скрипта должен иметь расширение .oh (output handler) и имя, совпадающее с именем файла шаблона.
  • Входными данными обработчика являются переменные:
    $blockидентификатор блока
    $tab[][]данные многозаписного блока
    $dat[]данные однозаписного блока
    Если этих данных окажется недостаточно, из обработчика можно обратиться к базе данных и другим суперглобальных массивам.
  • Данные, которые необходимо передать на шаблон, должны быть собраны в массиве $odat (output data). Под тем же именем массив доступен и шаблоне.
  • Если используется php-шаблон, то код обработчика можно поместить прямо в шаблон, как это сделано в шаблоне отправки сообщений с сайта. В этом случае, для передачи обработанных данных в шаблон, не обязательно использовать массив $odat.


Пример. Суммирование колонок таблицы

Шаблон sum.tpl

<?php echo "

<table>
foreach ($tab as $dat)
echo "
    <tr>
    <td>{$dat['edit']}</td>
    <td>$dat[1]</td>
    <td>$dat[2]</td>
    </tr>
";
echo "
    <tr>
        <td>Итого:</td>
        <td>{$odat[1]}</td>
        <td>{$odat[2]}</td>
    </tr>
</table>
";

?>

Обработчик sum.oh

<?php

    $sum1 = 0;
    $sum2 = 0;
    foreach ($tab as $dat)
    {
        $sum1 = $sum1 + $dat[1];
        $sum2 = $sum2 + $dat[2];
    }
    $odat[1] = $sum1;
    $odat[2] = $sum2;

?>


Примечания

  1. Если вы используете php-шаблоны, то скрипты обработчиков вывода можно, в принципе, перенести прямо в шаблон (.tpl), поместив код скрипта в начале кода шаблона, и тем самым избавиться от файла обработчика. Однако, нужно стараться, все же, помещать php-код в отдельный файл обработчика (.oh) - это позволит применять его как для php-шаблонов, так и для smarty-шаблонов.
  2. В коде обработчика желательно убрать пробелы и пустые строки перед тегом <?php и после завершающего тега ?>, так как иногда они могут быть интерпретированы, как вывод документа.

См. также