Кнопка редактирования записи: $dat['edit']

Как вам уже известно, в Blox CMS контент сайта редактируется не через админку, а прямо на странице, что очень удобно для пользователей. Плата за это удобство — необходимость помещать в шаблоне код кнопки редактирования: <?= $dat['edit'] ?>. Этот код нужно поставить в любое место кода шаблона (лучше — в левый верхний угол блока).

Кнопка будет отображаться только в режиме редактирования и только для блоков, которые разрешено редактировать данному пользователю.

Если стандартная кнопка редактирования вам не понравится, можно написать собственный код кнопки, использовав только URL.

Можно обойтись и вовсе без кнопок редактирования, о чем читайте ниже в разделе "Когда не выводить кнопки редактирования".

Позиционирование кнопок редактирования и удаления

Кнопки редактирования рекомендуется размещать так, чтобы при включении-отключении их отображения, не происходило смещения содержимого страницы. Один из способов — позиционировать кнопки редактирования абсолютно относительно блока или записи:

<?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']В шаблоне данные не придусмотрены
$edit['newRec']['href']Ссылка на редактирование новой записи.
C этой ссылкой можно передавать также значения по умолчанию. Делается это с помощью параметра-массива defaults, в качестве ключей которого используются номера полей (см. пример ниже).

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

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

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

Как вложить кнопку редактирования в ссылку

Кнопка редактирования сама является ссылкой, поэтому ее нельзя помещать внутрь элемента <a>. В таких случаях в шаблоне необходимо включить параметр $params['spanEditButtons'], который сделает кнопку редактирования на основе элемента span.

Кнопка редактирования внешнего блока (контейнера страницы)

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

Из редактируемых данных в шаблоне внешнего блока можно разместить заголовок страницы и какие-то настройки страницы.

В любом случае, аналог кнопки редактирования имеется в главном меню: Страница > Редактировать внешний блок.

Когда не выводить кнопки редактирования

Вовсе необязательно выводить все кнопки редактирования.

Во-первых, для шаблонов предназначенных для верстки (внешний шаблон, ряды, колонки) нужно поставить параметр $params['noEditButtons'] = true; С этим параметром будут скрыты кнопки редактирования блока для всех пользователей, кроме администратора.

Более того, кнопки редактирования, используемые только для верски, не нужно показывать даже админу - они будут только мешать. При большом количестве блоков на странице, нужный блок и соответствующую кнопку редактирования удобнее находить через древо блоков в меню: Страница > Структура страницы.