Кастомный выпадающий список msFieldsManager из элементов дерева

Расскажу как я делал динамически заполняемый кастомный выпадающий список для поля товара. Этот список формируется из элементов дерева (структуры) сайта.

Выглядеть это будет так:


Нам потребуется сам компонент msFieldsManager и начнем мы создавать именно с процессора.
Я хотел в качестве названий видеть Название документа, а в качестве значений — его id. Поэтому в моем случае заполняется подобным образом:


После генерации кода, получаем следующее содержимое:


Вносим свои корректировки, так как требуется получать не все документы, а только дочерние элементы конкретного родителя. В нашем случае с id = 2
<?php
class MsfmTestListGetListProcessor extends modObjectGetListProcessor {
    public $classKey = 'modResource';
    public $languageTopics = array('resource');
    public $defaultSortField = 'pagetitle';
    public $permission = 'view';

    public function prepareQueryBeforeCount(xPDOQuery $c) {
        $c->where(array('parent' => 2));
        return $c;
    }

}
return 'MsfmTestListGetListProcessor';

Теперь можно приступить непосредственно к созданию дополнительного поля Кастомный выпадающий список.
Интересующая нас часть:


В выпадающем списке появился наш кастомный:


Выбираем его и нажимаем Генерировать код. Конечный вид заполненного поля


И собственно ожидаемый результат вывода элементов сайта в выпадающем списке поля товара minishop2.


Так как у нас в качестве значений использовались id ресурса, то при выводе этого поля, можно через Fenom получать
— ссылку на ресурс {'myfield' | url}
— поля ресурса, например, pagetitle {'myfield' | resource: 'pagetitle'}
Что считаю очень удобным

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