Шаблон блока

Шаблон (template) - это текстовый файл с расширением tpl. Он представляет собой фрагмент html-кода (без секции заголовка документа и тегов body).

В коде шаблона данные, предназначенные для редактирования замещены php-переменными.

Это справедливо только при использовании php-шаблонизатора и записи php-кода в альтернативной форме или при использовании smarty-шаблонизатора. В действительности во всех примерах шаблонов данного справочника не php-код вставляется в html-код, а, наооборот, html-код с помощью оператора echo вставляется в php-код.

Шаблоны бывают двух типов: однозаписные и многозаписные. В однозаписном шаблоне задан один набор данных, именуемый записью (например, заголовок, дата, тест и фото).

Многозаписный шаблон получается путем применения циклического оператора foreach к однозаписному шаблону. В многозаписных блоках пользователь может вставлять неограниченное число новых записей.

Однозаписный шаблон

Изменяемые данные вставляются в код шаблона с помощью переменных вида $dat[5], где 5 - это номер поля. Дополнительно, в любое место кода нужно поместить переменную $dat['edit'], которая в режиме редактора будет отображать кнопку для перехода в окно редактирования блока.

single.tpl
<?php echo "

{$dat['edit']}
Имя: $dat[1]<br>
Дата рождения: $dat[2]<br>
Фото: <img src='datafiles/$dat[3]'><br>
Биография: $dat[4]<br>
<a href='?page=$dat[5]'>Моя веб-страничка</a><br>

"; ?>

Примечание. Зеленым цветом выделяется синтаксис HTML, синим - PHP.

Многозаписный шаблон

Данные в многозаписном шаблоне поступают в виде двумерного массива $tab[*][*]. Этот массив с помощью оператора foreach перебирается по первому индексу с выделением одномерного массива $dat[*] (такого же, как в примере однозаписного шаблона).

table.tpl
<?php echo "
<table>";
foreach ($tab as $dat)
echo "
    <tr>
        <td>{$dat['edit']}</td>
        <td>$dat[1]</td>
        <td>$dat[2]</td>
        <td>$dat[3]</td>
    </tr>
"; echo "
</table>
"; ?>

Первый индекс массива $tab играет вспомогательную роль и служит только для задания порядка следования записей (порядок и количество записей может изменяться с помощью различных команд, например, командой сортировки). Не путайте этот индекс с идентификатором (уникальным порядковым номером) записи - значение которого находится в элементе массива $tab[*]['rec'], или $dat['rec']. Сами данные находятся в элементах: $dat[1], $dat[2], $dat[3], ...

Естественно, многозаписный шаблон вовсе необязательно оформлять в виде таблицы - это может быть последовательность статей блога, галерея картинок с подписями и т.п. Кнопку редактирования $dat['edit'] можно помещать в любое место кода внутри цикла foreach, то есть кнопка редактирования появится у каждой записи, если пользователь имеет право редактировать данный блок.

Вместо того, чтобы отображать кнопки редактирования записи в каждой записи, в шаблоне можно поставить одну кнопку редактирования на весь блок $edit['button']. По ней откроется окно редактирования в многозаписном режиме.

В шаблоне ничего не говорится о типах данных. Типы данных задаются в файле дескриптора шаблона.


Примечания

  1. После добавления или удаления в шаблоне новых переменных $dat[], не забывайте отразить это и в дескрипторе шаблона.
  2. Что касается кода странички, находящегося за пределами элемента body, то этот код находится в файле системы управления: BLOX/scripts/page.tpl и обычно не редактируется (см. статью Главный шаблон ).