Selector

    Selector - custom TV для составления списка документов

    Selector - custom TV для составления списка документов в Evolution CMS.

    Скачивать здесь: Pathologic

    Selector является заменой для mm_ddSelectDocuments.

    В отличие от mm_ddSelectDocuments:

    • уживается с SimpleGallery;
    • благодаря DocLister позволяет выбирать данные для списка как угодно и откуда угодно;
    • список результатов поиска можно оформлять по-всякому (реализовано с помощью prepare в DocLister);
    • код полностью открыт (была мысль разобраться в конфликте mm_ddSelectDocuments с SimpleGallery, но минифицированный js сразу же отбил желание).

    Код получился простой, разобраться при желании не сложно.

    Для работы требуется DocLister.

    Больше и нечего написать про этот компонент, разве что некоторых пояснений требует процесс настройки под себя. Сразу поясню на примере.

    Допустим, есть tv-параметр c названием related, для хранения списка похожих товаров. Чтобы его поведение отличалось от базового, нужно создать в файле assets/tvs/selector/lib/related.controller.class.php класс:

    <?php namespace Selector;
    include_once(MODX_BASE_PATH.'assets/tvs/selector/lib/controller.class.php');
    class RelatedController extends SelectorController {
    ... //переопределяем что нужно
    }
    

    В большинстве случаев, думаю, будет достаточно изменить свойство dlParams, в котором хранятся параметры по умолчанию для запуска DocLister:

    <?php namespace Selector;
    include_once(MODX_BASE_PATH.'assets/tvs/selector/lib/controller.class.php');
    class RelatedController extends SelectorController {
        public function __construct($modx) {
            parent::__construct($modx);
            $this->dlParams['parents'] = 5;
            $this->dlParams['addWhereList'] = 'c.published = 1';
        }
    }
    

    Если эта часть не понятна, то могу посоветовать обратиться сюда: bezumkin

    Следует обратить внимание, что параметр – related, название файла – related.controller.class.php, а название класса – RelatedController (с большой буквы).

    Можно также подгружать нужный класс вручную с помощью плагина на OnManagerPageInit. В этом случае значение имеет только правильное название класса. Также есть ограничение на название tv-параметра: допускаются только латинские буквы и символ подчеркивания.