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

←→

Переменные шаблона

Приведем список всех переменных, передаваемых на шаблон в 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), и вы будете недоумевать, куда делась кнопка. А в многозаписном шаблоне кнопки редактирования всех записей могут встанут друг над другом.

Во-вторых, может также получиться так, что кнопка редактирования перекроет кнопку родительского блока.


Изменение вида кнопок редактирования и удаления

Для возможности создания кнопок редактирования в собственном стиле, кроме кодов стандартных кнопок $dat['edit'], $dat['delete'], передаются исходные данные для оформления этих ссылок:
$dat['editHref']Ссылка на редактирование записи
$dat['deleteHref'] Ссылка на удаление записи
$dat['hidden']Запись является скрытой
$dat['lastEdited']Запись редактировалась последней
$dat['noData']В шаблоне данные не придусмотрены
$newRecHrefСсылка на редактирование новой записи.
C этой ссылкой можно передавать также значения по умолчанию. Делается это с помощью параметра-массива defaults, в качестве ключей которого используются номера полей (см. пример ниже).

Пример использования в шаблоне:

<?php
if ($dat['editHref'])
    echo "<a href='$newRecHref&defaults[9]=5&defaults[3]=0' >Создать новую запись</a>";

foreach ($tab as $dat)
{
    if ($dat['editHref'])
	    echo "<a href='{$dat['editHref']}'>редактировать</a>";
    echo $dat[1];
}
?>

$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)


Переменные шаблона, передаваемые при прочих условиях

$odat[]Данные с обработчика вывода (массив любой размерности).
$udat[]Данные с обработчика обновления (массив любой размерности).
$saveSortedКод кнопки сохранения нового порядка записей. Появляется после команды сортировки данных по столбцам или команды на обратный порядок записей.
$backwardЕсли эта переменная истинна, значит записи отображаются в обратном порядке.
$subscription[]Массив с информацией о состоянии подписки пользователя на текущий блок.



См. также