Вот я накидал последовательность действий:
1. В админке добавляете виджет "Авторизация" (в дефолтном шаблоне он по умолчанию стоит в позиции
right-top). Для большего удобства советую добавить в шаблон еще одну позицию специально для виджетов, которые будут показываться не авторизованным пользователям.
Далее я привожу код для дефолтного шаблона и буду использовать позицию right-top.
2. В файле шаблона
..\templates\default\main.tpl.php добавляем код (сразу после тега
<div id="layout">):
... тут вывод шапки страницы ...
<body>
<div id="layout">
<?php if (!cmsUser::isLogged()) { // если пользователь не авторизован ?>
<?php $this->widgets('right-top'); // выводим виджеты из позиции 'right-top' ?>
<?php if ($core->uri_controller == 'auth') { // если работает контроллер авторизации... ?>
<div id="body">
<section>
<article>
<?php $this->body(); //... показывает тело страницы ?>
</article>
</section>
</div>
<?php } ?>
<?php } else { // если пользователь авторизован выводим все остальное ?>
<?php if (!$config->is_site_on){ ?>
<div id="site_off_notice">
<?php printf(ERR_SITE_OFFLINE_FULL
, href_to
('admin', 'settings', 'siteon')); ?></div>
<?php } ?>
... тут много стандартного кода ...
<?php } // закрывающая скобка от else который выше был ?>
</div>
</body>
</html>
Приведенный выше код — пример логики. В проекте лишние пояснения следует удалить, а для не стандартного шаблона воссоздать необходимую структуру тела страницы.
Т.е. мы обернули всю страницу в условие — если пользователь не авторизован ему выводится виджет авторизации, со всей необходимой логикой, если пользователь авторизовался то показывается обычная страница (которая в скобках после else). Также, если пользователь жмет в виджете авторизации ссылки "Регистрация" или "Забыл пароль" — выводятся (
$this->body();) стандартные формы либо регистрации либо восстановления пароля.
Сохраняем и тестируем