示例#1
0
 protected function __construct()
 {
     ExternalPluginsManager::Smarty();
     /**
      * Начиная с версии 5.4 в функции htmlentities параметр encoding был изменён на UTF-8, 
      * до этого момента после применения данного метода к тексту шаблона мы будем получать кракозябру.
      */
     SmartyCompilerException::$escape = is_phpver_is_or_greater(5, 4);
     $this->smarty = new Smarty();
     $this->smarty->compile_check = true;
     $this->smarty->force_compile = false;
     //        $this->smarty->caching = TRUE;
     $SMARTY_BASE_PATH = DirManager::smarty()->absDirPath();
     /*
      * УПРАВЛЯЮЩИЕ ДИРЕКТОРИИ
      */
     $this->smarty->setTemplateDir($SMARTY_BASE_PATH . '/templates/');
     $this->smarty->setCompileDir($SMARTY_BASE_PATH . '/templates_c/');
     $this->smarty->setCacheDir($SMARTY_BASE_PATH . '/cache/');
     $this->smarty->setConfigDir($SMARTY_BASE_PATH . '/configs/');
     /*
      * ПЛАГИНЫ
      */
     //1. Функции
     $plugins_dir[] = $SMARTY_BASE_PATH . '/plugins/functions/';
     $plugins_dir[] = $SMARTY_BASE_PATH . '/plugins/functions/content/';
     $plugins_dir[] = $SMARTY_BASE_PATH . '/plugins/functions/mmedia/';
     $plugins_dir[] = $SMARTY_BASE_PATH . '/plugins/functions/gym/';
     $plugins_dir[] = $SMARTY_BASE_PATH . '/plugins/functions/replacements/';
     $plugins_dir[] = $SMARTY_BASE_PATH . '/plugins/functions/discussion/comments/';
     $plugins_dir[] = $SMARTY_BASE_PATH . '/plugins/functions/discussion/feedback/';
     //2. Модификаторы
     $plugins_dir[] = $SMARTY_BASE_PATH . '/plugins/modifiers/';
     $plugins_dir[] = $SMARTY_BASE_PATH . '/plugins/modifiers/content/';
     $plugins_dir[] = $SMARTY_BASE_PATH . '/plugins/modifiers/discussion/comments/';
     $plugins_dir[] = $SMARTY_BASE_PATH . '/plugins/modifiers/discussion/feedback/';
     $plugins_dir[] = $SMARTY_BASE_PATH . '/plugins/modifiers/rubric/';
     $plugins_dir[] = $SMARTY_BASE_PATH . '/plugins/modifiers/post/';
     //3. Блочные функции
     $plugins_dir[] = $SMARTY_BASE_PATH . '/plugins/blocks/';
     $plugins_dir[] = $SMARTY_BASE_PATH . '/plugins/blocks/content/';
     $plugins_dir[] = $SMARTY_BASE_PATH . '/plugins/blocks/text/';
     $plugins_dir[] = $SMARTY_BASE_PATH . '/plugins/blocks/child/';
     $plugins_dir[] = $SMARTY_BASE_PATH . '/plugins/blocks/post/';
     /*
      * ADMIN
      */
     $plugins_dir[] = $SMARTY_BASE_PATH . '/plugins/functions/admin/';
     $plugins_dir[] = $SMARTY_BASE_PATH . '/plugins/modifiers/admin/';
     $this->smarty->addPluginsDir($plugins_dir);
     /*
      * Импортируем константы некоторых классов, чтобы на них можно было ссылаться через 
      * {$smarty.const.CONST_NAME}
      */
     PsConstJs::defineAllConsts();
     /*
      * Подключим фильтры
      */
     new SmartyFilters($this->smarty);
     /*
      * Зарегистрируем наши функции
      */
     /* @var $plugin AbstractSmartyPlugin */
     foreach (Classes::getDirClasses(__DIR__, 'plugins/impl', 'AbstractSmartyPlugin') as $plugin) {
         $plugin->registerPlugins($this->smarty);
     }
 }