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-параметра: допускаются только латинские буквы и символ подчеркивания.

Mem: 3.5 mb, MySQL: 0.0024 s, 2 req., PHP: 0.0356 s, all: 0.0379 s, cache.