Некоторые вопросы по разработке плагинов
Написал около десятка плагинов, но мне кажется я не все понял о наследовании в 0.4.2
1) как в шаблоне использовать данные конфига для foreach, elseif?
Пример:
я пока решаю эту проблему таким костылем
2) Как обстоят дела с наследованием экшенов?
Если мне приходится вмешаться в регистрацию, чтобы добавить проверку, мне приходится переопределять метод класса регистрации, должен быть лучший путь
выдирать ради этого целый метод это большой костыль. вроде можно повесить свой код на конец или начало выполнения метода модуля регистрации, но что, если надо вывести сделать проверку и в экшене регистрации вывести ошибку, совать ее в модуль не правильно?
3) вот если мне необходимо изменить голосование за топики, строчку
как мне это лучше сделать? каким образом переопределить файл аякса, принимающий запрос на изменение рейтинга топика, а так же можно ли изменить саму эту строчку, не делегируя целиком шаблоны topic.tpl и topic_list.tpl и закрывая тем самым эти шаблоны от изменения другими плагинами?
1) как в шаблоне использовать данные конфига для foreach, elseif?
Пример:
{if {cfg name='path.root.web'}}
это естественно не работает, как правильно?
если мы делегируем только шаблон и у нас нет возможности присвоить
переменной значение конфига в блоке/экшене/хуке
{/if}
я пока решаю эту проблему таким костылем
{php}
if ((Config::Get('plugin.name.value')) && $oUserCurrent {
{/php}
вот такой костыль
{php}
}
{/php}
2) Как обстоят дела с наследованием экшенов?
Если мне приходится вмешаться в регистрацию, чтобы добавить проверку, мне приходится переопределять метод класса регистрации, должен быть лучший путь
class PluginExample extends Plugin {
/**
* Делегирование регистрации
*/
public $aInherits = array(
'action' => array('ActionLogin', 'ActionRegistration', 'ActionTalk'),
);
...
}
class PluginExample_ActionRegistration extends PluginExample_Inherit_ActionRegistration {
protected function EventIndex() {
...
$this->PluginAntistatist_Antistatist_addLogin($oUser->getLogin());
...
}
выдирать ради этого целый метод это большой костыль. вроде можно повесить свой код на конец или начало выполнения метода модуля регистрации, но что, если надо вывести сделать проверку и в экшене регистрации вывести ошибку, совать ее в модуль не правильно?
3) вот если мне необходимо изменить голосование за топики, строчку
<li class="minus"><a href="#" onclick="lsVote.vote({$oTopic->getId()},this,-5,'topic'); return false;"></a></li>
как мне это лучше сделать? каким образом переопределить файл аякса, принимающий запрос на изменение рейтинга топика, а так же можно ли изменить саму эту строчку, не делегируя целиком шаблоны topic.tpl и topic_list.tpl и закрывая тем самым эти шаблоны от изменения другими плагинами?