Переопределение плагина смарти

Ребята, подскажите пожалуйста. Как через плагин сделать переопределение engine/modules/viewer/plugs

Подробнее что сделано livestreet.ru/blog/questions/18270.html#comment287181

UPD

Проще всего создать свой плагин, например:

— скопировать function.date_format.php
— переименовть function.date_format_name.php
— В шаблоне обращаться к нему:

{date_format_name date=$oTopic->getDateAdd() format='c'}

8 комментариев

avatar
ак через плагин сделать переопределение engine/modules/viewer/plugs
никак через сам движок лс, но у самого смарти есть методы (де)регистрации плагинов, но не пробовал.

касательно сути задачи: а почему такая сложность для такой маленькой задачи? нужен короткий вариант имени месяца? почему бы тогда не менять логику основного плагина смарти для форматирования дат, а получить номер месяца из $oTopic->getDateAdd() и на основе его выводить новую текстовку (примитивно говоря, накидать 12 этажей if«ов в шаблоне), либо создать свой смарти плагин.
  • PSNet
  • +1
avatar
А можно ли задействовать свой смарти-плагин через плагин?
avatar
Да, там по ссылке есть про это информация.
avatar
да, наиболее лучший способ — наследовать модуль вьюера и в метод Init добавить директорию с плагинами для смарти, это позволит использовать свои плагины смарти везде: и в общей сущности вьюера и в локальных копиях.

class PluginTEST_ModuleViewer extends PluginTEST_Inherit_ModuleViewer {


	/**
	 * Инициализация вьюера
	 *
	 * @param bool $bLocal		локальная ли копия вьюера это
	 * @return bool
	 */
	public function Init($bLocal = false) {
		parent::Init($bLocal);
		/*
		 * добавить директорию с плагинами для Smarty
		 */
		$this->AddSmartyPluginsDir(Plugin::GetPath(__CLASS__) . 'include/smarty/');
	}


	/**
	 * Добавить директорию с плагинами для Smarty
	 * 
	 * @param string $sDir		директория
	 * @return bool
	 */
	protected function AddSmartyPluginsDir($sDir) {
		if (!is_dir($sDir)) {
			return false;
		}
		$this->GetSmartyObject()->addPluginsDir($sDir);
		return true;
	}

}


после этого создать директорию 'include/smarty/' в папке плагина и туда добавлять все свои смарти плагины.
avatar
Спасибо! Раз переопределить нельзя, сделаю по номеру месяца.
avatar
Мне кажется добавить свой smarty-плагин будет правильнее
avatar
Согласен, но для меня это разовое решение, просто шаблон того требует, писать доп код не очень хочется под это. Стараюсь как можно меньше использовать доработки функционала, да и не силен в этом, не программист.
avatar
Можно попробовать переопределить ModuleViewer, он наследуются от стандартного Module и должен корректно подхватывать все делагаты и инхерты.

Переопределить достаточно функцию

/**
	 * Создает и возвращает объект Smarty
	 *
	 * @return Smarty
	 */
	public function CreateSmartyObject() {
		return new Smarty();
	}


Правда встает вопрос инклуда своего Смарти, что бы не дублировать имя класса.
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.