

|
|
 
Переменные шаблона
Приведем список всех переменных, передаваемых на шаблон в Blox CMS.
Переменные шаблона, передаваемые всегда
При любых условиях в шаблон поступают следующие переменные:
$page | Идентификатор страницы |
$block | Идентификатор блока |
$template | Имя шаблона (имя текущего файла без раcширения tpl) |
$dat[] | Данные однозаписного блока.
$dat[1], $dat[2] и т. д. - непосредственно данные.
$dat['rec'] - идентификатор записи (уникальный порядковый номер записи в таблице БД).
$dat['edit'] - код кнопки редактирования записи (передается только для пользователей с правом редактирования блока).
$dat['delete'] - код кнопки удаления записи (Код передается только для пользователей с правом редактирования блока. Эту кнопку необязательно позмещать в шаблоне, так как штатное удаление записи производится через меню редактирования записи).
| | Для совместимости с многозаписными шаблонами дополнительно передается массив $tab[0], равный всему $dat.
|
$tab[][] | Данные многозаписного блока. Обычно в многозаписном блоке этот массив перебирают по первому индексу с помощью оператора foreach с выделением одномерного массива (например, $dat[]), аналогичного данным однозаписного блока (см. выше). |
| В первом индексе tab[*][] передается вспомогательный номер для задания порядка следования записей. Не путайте его с идентификатором записи, который передается в элементе $tab[]['rec']. Для совместимости с однозаписными шаблонами дополнительно с $tab передается массив $dat, равный $tab[0].
|
$newRecButton | Код кнопки редактирования новой записи. Эта переменная добавлена для удобства, чтобы можно было поместить кнопку новой записи в любое место шаблона.
Вообще-то, код кнопки редактирования новой записи находится в переменной $dat['edit'] в последней пустой записи (если блок отображается для пользователя с правами редактирования). В режиме обратной выборки запись с кнопкой редактирования новой записи идет наоборот первой.
Кстати, чтобы проверить, выводится ли запись с кнопкой новой записи (то есть, в ней нет данных), нужно проверить наличие переменной $dat['rec']. Если ее нет, значит это запись с кнопкой новой записи. |
Совет по поводу кнопок редактирования и удаления
Кнопки редактирования рекомендуется размещать так, чтобы при включении-отключении их отображения, не происходило смещения содержимого страницы.
Один из способов — позиционировать кнопки редактирования абсолютно относительно блока или записи:
<?php
echo"<div style='position:relative;'>";
. . . . . . . . . . . .
if ($dat['edit']) // В режиме посетителя доп.код не выводится
echo"<div style='position:absolute; left: -5px; top:3px'>{$dat['edit']}</div>";
. . . . . . . . . . . .
echo"</div>";
?>
В системе Blox CMS существует вспомогательная функция pp(), которая помогает сократить код абсолютного позиционирования html-элементов. Предыдущий пример может быть записан так:
<?php
echo"<div style='position:relative;'>";
. . . . . . . . . . . .
echo pp($dat['edit'], -5, 3);
. . . . . . . . . . . .
echo"</div>";
?>
Нужно быть внимательным при абсолютном позиционировании кнопок.
Во-первых, не забывайте задавать свойство position:relative для контейнера, иначе кнопка будет позиционирована относительно вышестоящего родительского элемента (вплоть до элемента body), и вы будете недоумевать, куда делась кнопка. А в многозаписном шаблоне кнопки редактирования всех записей могут встанут друг над другом.
Во-вторых, может также получиться так, что кнопка редактирования перекроет кнопку родительского блока.
$parentBlock | Идентификатор родительского блока текущего блока ($block) |
$parentRec | Идентификатор родительской записи, в которой находится текущий блок |
$delegatedBlock | Идентификатор делегированного блока (если делегировался) Делегирование применяется при назначении шаблона. Суть делегирования заключается в том, что один блок (Б) использует данные другого блока (А). В этом случае блок А будет называться делегированным. Формально блок Б во всех отношениях - это отдельный самостоятельный блок, то есть, он имеет собственный уникальный идентификатор, и для него в глобальном массиве сохраняются все запросы выборки данных. Данные блока Б редактируются также обычным образом, хотя фактически будут обновлены данные блока А. |
$delegatedBlockPage | Идентификатор страницы, на которой находится делегированный блок Если блок не делегировал другой блок, то значения $delegatedBlock и $delegatedBlockPage совпадают, соответственно, со значениями $block и $page. Пример использовании переменных $delegatedBlock и $delegatedBlockPage см. в шаблоне новостей. |
| |
$srcBlock устаревшее название — $dataBlock | Идентификатор исходного блока. Это — производная переменная, введенная для удобства. Если блок не делегирован, то она совпадает с переменной $block, если блок делегирован, то она совпадает с $delegatedBlock. |
Остальные переменные подаются при определенных условиях.
Переменные шаблона, передаваемые при выборке одной записи
Если был запрос на отображение одной определенной записи, то из базы данных извлекаются данные запрошенной записи, а также две соседние записи (если такие есть):
$single | Идентификатор запрошенной записи |
в smarty-шаблонах | в php-шаблонах | |
$tab[0][] | $tab[0][] | Данные запрошенной записи Дублируются массивом $dat[] |
$tab.prev[] | $tab['prev'][] | Данные предыдущей записи |
$tab.next[] | $tab['next'][] | Данные следующей записи |
Переменные шаблона, передаваемые при выборке записей по частям
Если был запрос на отображение блока по частям, то на шаблон кроме самих данных одной части, подаются следующие переменные:
$part | Номер выбранной (текущей) части |
$numOfParts | Количество частей, на которые были разбиты все записи |
$numOfRecs | Общее количество записей (во всех частях) |
Для удобства передаются вспомогательные производные переменные: |
$prevpart | Номер предыдущей части |
$nextpart | Номер следующей части |
$parts[] | Массив с номерами всех частей по порядку |
$limit | Ограничение на число отображаемых записей. Совпадает с параметром дескриптора: $params['part']['limit']. Однако, если был url-запрос limit, то его значение становится равным значению этой переменной. |
Переменные шаблона, передаваемые при поисковой выборке
После поискового запроса к блоку, в шаблоне возникает массив $search:
$search['searchTexts'][НомерПоля] | Все поисковые слова данного поля в виде строк с пробелами между словами. |
$search['atBeginning'] | Поиск только в начале слов |
$search['highlight'] | Выделять найденные поисковые слова. |
$search['searchFields'] | Список полей, поисковые слова которых объединяются в один общий запрос. Используется обычно, когда одно поле ввода используется для нескольких полей. |
|
$search['searchWords'][НомерПоля][] | Все поисковые слова данного поля в виде массива слов. |
$search['patterns'][НомерПоля] | Массив паттернов для поиска среди текста данного поля (поставить в качестве первого аргумента функции preg_replace) |
$search['replacements'][НомерПоля] | Массив строк для замены текста данного поля (поставить в качестве второго аргумента функции preg_replace) |
Переменные шаблона, передаваемые при прочих условиях
См. также
|