Smarty Создать приватную зону

В smarty есть способ для реализации тега по типу {admin}{/admin}. Либо же можно как либо замаскировать {if $var eq true}{/if}


Ответы (1 шт):

Автор решения: teran

Можете добавить свою блочную функцию.

В контроллере (в пхп коде) вы устаналиваете переменную а-ля

$this->_smarty->assign('admin', true);

Потом регистрируете плагин

$this->_smarty->registerPlugin("block", "admin", function($params, $content, $template, &$repeat){
    if(!$repeat){
        $adm = $template->smarty->getTemplateVars('admin');
        if($adm) {
            return $content;
        }
   }
   return null;
});

а в шаблоне используете

{admin}hey!{/admin}

По крайней мере можете двигаться в этом направлении и изучать нюансы.

В такой реализации, конечно, это не отличается от {if $admin}hey{/if} но потенциально, можно расширить параметрами и добавить еще какую-то логику, тогда смысл имеет. Например, проверять статус авторизации и роль юзера.

{auth allow=['admin', 'editor']}hey!{/auth}

проверяя внутри не только user но и сравнивая условный $user->role с $params['allow']

→ Ссылка