Как переделать штатное окно редактирования? Другими словами, как создать блок с полями для редактирования другого блока?
Сначала нужно скопировать штатный шаблон системы управления "templates/edit.tpl" в папку сайта "templates/edit.tpl".
Если вы собираетесь редактировать только однозаписные шаблоны, то нужно скопировать также файл "edit.tpl.form.single.inc", который инклюдится основным файлом edit.tpl. Если вы хотите сделать универсальный шаблон, то скопируйте и файл для многозаписных шаблонов: "edit.tpl.form.multi.inc".
Переделываем верстку этих файлов, сохраняя все переменные. Для стилизации, скорее всего, нужно будет там же создать файл edit.css (по все правилам создания шаблонов).
Блоку, который будет использоваться в качестве окна редактирования, назначаем созданный вами шаблон edit. Пусть это будет блок 22 на странице 11.
Теперь мы можем здесь редактировать любой блок сайта, допустим блок 33.
Ссылка на страницу редактирования должна выглядеть так:
?page=11&src=22&script=edit&block=33
Примечания
Запрос можно делать не только через URL, но с помощью метода Request::add('src=22&script=edit&block=33');
, например, создав для этого файл edit.tdd.
При создании шаблона для скрипта ?user-info (регистрация пользователя) понадобится еще один URL параметр.
В этом шаблоне в атрибут action элемента form необходимо добавить параметр &user-activation-href=<?=Url::encode(...)?>
, где вместо многоточия необходимо написать URL страницы активации относительно главной страницы. Параметр нужно добавлять только в режиме if ($selectedUserId == 'new')
.
Если не принимать специальных мер, то после успешной авторизации по запросу ?login, произойдет перенаправление на главную страницу сайта Лучше пользователя всегда перенаправлять на более полезные страницы. Для этого в дополнительном url-параметре pagehref нужно передать закодированный URL целевой страницы.
Примеры ссылок для авторизации:
Стандартная авторизация с возвратом на исходную страницу сайта.
<a href="?login&pagehref=<?=Blox::getPageHref(true)?>">Войти</a>
Авторизация перенаправления для кастомизированной странице авторизации:
mylogin.tpl
<?php $authHref = Router::convert('?page=3&...'); // Кастомизированная страница аутентификации (?login) $targetHref = Url::encode(Router::convert('?page=24&...'));// Целевая страница ?> <form action="<?=$authHref?>&pagehref=<?=$targetHref?>" method="post"> ... </form>