Есть ли последовательность переопределении экшенов.

Вопрос для меня наверное насущный есть 2 плагина, дискуссии и привязка топика, плагины разные, первый делает сортировку топиков по последнему комменту, второй по признаку ТОП.

Вопрос вот в чем если их активировать то один из плагинов ломает другой, и получается что вся прелесть системы сходит на нет, или я опять упустил что то?

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

0
Можно наследовать один и тот же экшен/модуль разными плагинами и они не будут мешать друг другу. Наверняка вы что-т сделали не правильно
0
Скорее всего я не правильно выразился, простой пример есть два плагина 1. дискусии — расширяет функционал блога, добавляет возможность админу поставить галку ТИП — Дискусия -> топики в данном блоге сортируються в порядке последнего комментария в топике. Так как нельзя непосредственно влиять на выборку в ActionBlog пришлось его переопределить и сделать полностью свой вывод блога BlogView (вроде все работает нормально)

Теперь ставим второй плагин ТОП — суть плагина админ и модераторы могут прикрепить топик в ТОП тоесть он будет всегда сверху опять не имея возможности испарвить сортировку я опять переписал функцию вывода блона по факту если включить оба плагина срабатывает последний так как вывод полностью переписывается.

Вот примерно такая засада получается.
0
Второй плагин ТОП можно реализовать заменой функции GetTopics в Topic.mapper и к любой сортировке в начале добавить сортировку по ТОП
0
можно но не работает :)
0
да будет все работать, если правильно написать
0
Ну здесь у вас надо сначала логику более четко продумать. В той схеме, что вы описываете, логика плагинов друг другу противоречит: по логике плагина 1 самым верхним должен быть топик с последним комментом, а по логике плагина 2 — тот, который админ отметил.

Если же логика такая: при включенном плагине 2 мы ВСЕГДА сначала получаем топики «прилепленные» и только потом уже по любой другой логике, то можно воспользоваться этим: altocms.ru/1127.html

Например, так:
class PluginMine_ModuleTopic extends PluginMine_Inherits_ModuleTopic {

    public function Init() {
        parent::Init();
        $this->GetTopicsFilter(); // получаем фильтр по умолчанию
        $aFilter['order'] = array('...'); // здесь задаем первичную сортировку
        $this->SetTopicsFilter($aFilter); // задаем свой фильтр
    }
}
Только надо учесть, что код тут немного упрощен — ведь другие плагины тоже могут менять сортировку по умолчанию, поэтому, если грамотно делать, надо проверять — а нет ли уже у фильтра индекса 'order', и если есть, то свою сортировку добавлять либо в начало, либо в конец массива (это уж от задумки разработчика зависит)
0
Я уже понял что нужно менять кардинально, логику плагина ТОП, по факту нужно ТОП топики выводить отдельно от всего списка и убирать их из основной выборки :) сразу ступил, сейчас пробую этот вариант, думаю должно сработать.
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.