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

При проведении работ на уже работающем сайте возникает необходимость выводить какой-либо функционал только администратору сайта. В этой статье мы решим этот вопрос.

Для добавления в XML параметра 'is_logged' позволяющему в 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_logged')->value(1));
  }
}

В файл bootstrap.php в самый конец добавляем строку: 

Add_Logged::__init();

Для определения в макете используем такое условие:

<?php

if (Core_Auth::logged()) {

echo  'это увидит только администратор сайта';

}

?>

07.10.2018