Core_Auth::logged()

https://www.hostcms.ru/api7/classes/Core-Auth.html

Вывод данных только для администраторов

if(Core_Auth::logged())
{
    print_r($_SESSION);
}

// для определенного пользвоателя ЦА
$oUser = Core_Auth::getCurrentUser();

if(!is_null($oUser) && $oUser->id == 123)
{
    print_r($_SESSION);
}

Компрессия CSS и JS

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

Core_Page::instance()
	->prependCss('/css/bootstrap.min.css')
	->fileTimestamp(TRUE)
	->compress(!Core_Auth::logged())
	->showCss();

Core_Page::instance()
	->prependJs('/js/jquery.min.js')
	->fileTimestamp(TRUE)
	->compress(!Core_Auth::logged())
	->showJs(TRUE);

Компиляция Less

При внесении администратором сайта изменений в less файл макета, будет сразу компилировать css (код можно разместить например в основном макете сайта в самом начале)

if(Core_Auth::logged() && Core_Page::instance()->template)
{
    $oTemplate = Core_Page::instance()->template;
    
    $css = is_file($oTemplate->getTemplateLessFilePath())
        ? $oTemplate->loadTemplateLessFile()
        : $oTemplate->loadTemplateCssFile();
    $oTemplate->saveTemplateLessFile($css);

    while ($oTemplate->template_id)
    {
        $oTemplate = $oTemplate->getParent();

        $css = is_file($oTemplate->getTemplateLessFilePath())
            ? $oTemplate->loadTemplateLessFile()
            : $oTemplate->loadTemplateCssFile();
        $oTemplate->saveTemplateLessFile($css);
    }
}

XSL-шаблоны

Добавления тэга Core_Auth в XSL-шаблон через хук

class Auth_Shop_Controller_Show
{
    static public function onBeforeRedeclaredShow($controller)
    {
        Core_Auth::logged() && $controller->addEntity(
            Core::factory('Core_Xml_Entity')
                ->name('Core_Auth')
                ->value(1)
        );
    }
}
// хук для контроллера информационных систем
Core_Event::attach('Informationsystem_Controller_Show.onBeforeRedeclaredShow', array('Auth_Shop_Controller_Show', 'onBeforeRedeclaredShow'));
// хук для контроллера магазина
Core_Event::attach('Shop_Controller_Show.onBeforeRedeclaredShow', array('Auth_Shop_Controller_Show', 'onBeforeRedeclaredShow'));

Проверка в XSL-шаблоне

<xsl:if test="/shop/Core_Auth">
    Я админ!
</xsl:if>

TPL-шаблоны

Проверка в TPL-шаблоне

{if Core_Auth::logged()}
    Я админ!
{/if}

Template (макеты)

При разработке нового дизайн позволяет подменять макеты и XSL-шаблоны для ТДС на новые для администраторов сайта, но для посетителей будут работать старые, данный хук можно разметсить в bootstrap.php

if(Core_Auth::logged())
{
    class Auth_Template_Observer
    {
        static public function onBeforeSetTemplate($controller)
        {
            $libParams = Core_Page::instance()->libParams;
            $object = Core_Page::instance()->object;
            $template = Core_Page::instance()->template;
            
            if(CURRENT_SITE == 1) // ID сайта
            {
                isset($libParams['shopXsl']) && $libParams['shopXsl'] == 'МагазинКаталогТоваров'
                    && $libParams['shopXsl'] = 'МагазинКаталогТоваров [NEW]';
                    
                $aTemplates = array(
                    97 => 116 // старый макет => новый макет
                );
                
                $oTemplate = Core_Entity::factory('Template', Core_Array::get($aTemplates, $template->id, $template->id));

                Core_Page::instance()
                    ->libParams($libParams)
                    ->template($oTemplate);
            }
        }
    }
    
    Core_Event::attach('Core_Command_Controller_Default.onBeforeSetTemplate', array('Auth_Template_Observer', 'onBeforeSetTemplate'));
}

Вывод 404 на тестовой странице

if(!Core_Auth::logged() && strpos(Core::$url['path'], '/test/') !== FALSE)
{
    Core_Page::instance()->error404();
}

Last updated