При проведении работ на уже работающем сайте на HostCMS возникает необходимость выводить какой-либо функционал только администратору сайта. В этой статье мы решим этот вопрос.
Для добавления в XML параметра 'is_admin' позволяющему в XSL определить что мы залогинены в админке создаем файл modules/add/logged.php и записываем в него этот код
<?php
class Add_Logged {
static $aEvents = array(
'Shop_Controller_Show.onBeforeRedeclaredShow',
'My_Shop_Controller_Show.onBeforeRedeclaredShow',
'Informationsystem_Controller_Show.onBeforeRedeclaredShow',
'My_Informationsystem_Controller_Show.onBeforeRedeclaredShow',
'Structure_Controller_Show.onBeforeRedeclaredShow',
'Shop_Cart_Controller_Show.onBeforeRedeclaredShow'
);
static public function __init() {
if (Core_Auth::logged() && sizeof(self::$aEvents)) {
foreach (self::$aEvents as $sEvent) {
Core_Event::attach($sEvent, array('Add_Logged', 'addLogged'));
}
}
}
static public function addLogged($object) {
$object->addEntity(Core::factory('Core_Xml_Entity')->name('is_admin')->value(1));
}
}
В файл bootstrap.php в самый конец добавляем строку:
Add_Logged::__init();
Для определения в макете используем такое условие:
if (Core_Auth::logged()) {
echo 'это увидит только администратор сайта';
}