Некоторые вопросы по разработке плагинов

Написал около десятка плагинов, но мне кажется я не все понял о наследовании в 0.4.2

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 и закрывая тем самым эти шаблоны от изменения другими плагинами?