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

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

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

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

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

Всё что будет рассказано для кнопки редактирования ($edit['button'] и $dat['edit']) будет относиться и к кнопке удаления $dat['delete'] и кнопке новой записи $edit['new-rec']['button']. Этот код нужно поставить в любое место кода шаблона (лучше — в левый верхний угол блока).

Размещение кнопки редактирования

  1. Размещение кнопки инлайн

    Самый простой способ вывести кнопку редактирования - это просто вставить код кнопки, например, в начале кода шаблона.

    echo $edit['button'];

    Недостаток этого способа состоит в том, что верстка сайта в режиме редактирования будет выглядеть немного по другому, так как вставляется дополнительный inline элемент.

  2. Абсолютное позиционирование кнопки

    Лучше размещать кнопку абсолютно в верхнем левом углу. Для этого в шаблоне ничего можно не менять, то есть поместить код кнопки, как это было показано выше, а в дескриптор добавить код:

    .tdd

    $params['edit-button-style'] = true;

    На самом деле в качестве значения можно ставить любые css-свойства. Если же просто объявить данный параметр, кнопка редактирования получит css-свойства по умолчанию: display:block; position:absolute; top:0; left:0

    Внимание! Внешний html-элемент шаблона должен иметь css-свойство position:relative, иначе кнопка будет позиционирована относительно одного из вышестоящих родительских элементов (вплоть до элемента body).

    Смещение кнопки редактирования

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

    1. Через админку. Самый простой и быстрый способ — это задать смещение кнопки в окне редактирования блока в пункте меню: "Блок > Настройки" в разделе "Смещение кнопки редактирования", где вы можете задать смещение вправо, вниз, а также z-index. Для смещения вверх и влево используйте отрицательные значения. Эти настройки будут действовать только для редактируемого блока.
    2. Через .tdd. Смещение кнопки можно задать в дескрипторе в упомянутом выше параметре 'edit-button-style', где вместо true, указать css-свойства, например: .tdd
      $params['edit-button-style'] = 'top:10px; left:-10px; z-index:2';
      Свойства можно указывать любые (касающиеся не только позиционирования), и они будут действовать на все блоки с этим шаблоном.

    Первый способ имеет приоритет над вторым способом, то есть, свойства, заданные в окне редактирования перебивают свойста, записанные в дескрипторе. А css-свойства по умолчанию, упомянутые в самом начале, также продолжают действовать, но имеют самый низкий приоритет.

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

Для возможности создания кнопок редактирования в собственном стиле, кроме кодов стандартных кнопок $dat['edit'], $dat['delete'], передаются исходные данные для форматирования этих ссылок:

$dat['edit-href']Ссылка на редактирование записи
$dat['delete-href'] Ссылка на удаление записи
$dat['hidden']Запись является скрытой
$dat['last-edited']Запись редактировалась последней
$dat['no-data']В шаблоне данные не придусмотрены
$edit['new-rec']['href']Ссылка на редактирование новой записи.
C этой ссылкой можно передавать также значения по умолчанию. Делается это с помощью параметра-массива defaults, в качестве ключей которого используются номера полей (см. пример ниже).

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

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

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

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

Так как кнопка редактирования сама является ссылкой, ее нельзя помещать внутрь элемента <a>. Если вы хотите поместить кнопку редактирования в элемент <a>, необходимо в дескриптор добавить параметр $params['span-edit-buttons'], который сделает кнопку редактирования на основе элемента span.

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

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

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

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

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

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

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

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