Добавление плагина в Smarty

Дмитрий П.

Появилась необходимость встроить свой плагин Smarty. Единственный способ, как мне удалось это сделать - создать файл в директории:

/wa-system/vendors/smrty-plugins/

Влезать в системную директорию - отвратительный подход. Хотелось бы иметь возможность включать плагины так, чтобы после обновлений они не перезатирались.

29 февраля 2016
  • Syrnik.com 29 февраля 2016 11:55

    не перезатрется, если имя не совпадет

  • Eugen Nichikov 29 февраля 2016 14:20

    Это не только не отвратительный подход, но даже и рекомендуемый :)

    При обновлении фреймворк не удаляет старые файлы, а заливает поверх них новые. Поэтому добавленные файлы остаются.

    По сабжу я просто использовал префиксные имена плагинов.

  • Евгений Е 19 ноября 2020 17:58

    Если при инсталляции плагин SS создаст в каталоге /wa-system/vendors/smrty-plugins/ свой плагин smarty будет ли это нарушением требованием к плагину SS на публикацию? Т,е. контроль пропустит публикацию такого плагина?

  • Евгений Е 26 ноября 2020 13:27

    Сам спросил - сам отвечу)) как это обойти один из вариантов:

    Для примера создаем в каталоге PLUGIN_ID/lib/vendors/smarty код SMARTY плагина.

    Добавляем в наш плагин метод вида:

    public static function addCustomSmartyPluginPath($path = ''){
      try{
    	$view = (wa())? wa()->getView() : null;
    	if ($view && $view instanceof waSmarty3View && $view->smarty) {
    	    if (empty ($path) ){
                    $view->smarty->addPluginsDir(dirname(__FILE__).'/vendors/smarty');
    	    } else $view->smarty->addPluginsDir($path);
    	} else {
    	    waLog::log('addCustomSmartyPluginPath error view = ', $view, 'error.log');
    	}
        }catch(Exception $e){
            waLog::log($e,'error.log');
        }
    }

    и вызываем его в конструкторе этого плагина

    public function __construct(){
    	self::addCustomSmartyPluginPath();
    } 

    Дальше используем смарти плагин внутри шаблона smarty ))

    Если у кого есть другие идеи поделитесь.



Чтобы добавить комментарий, зарегистрируйтесь или войдите