Вводная
Как известно, в MODX пользовательские переменные(TV) привязаны к шаблонам страниц. Это уж не изменить. Часто возникает желание "отвязаться" от шаблонов. Есть расширения (в частности на базе MIGX) позволяющие создавать индивидуальные поля для каждой страницы. Но это не решает проблему. Когда на сайте есть несколько тысяч товаров в нескольких десятках каталогах удобнее иметь "наследуемые" поля, привязанные именно к каталогам и товарам. Т.е. когда товары наследуют все поля, назначенные родительским каталогам. Меня уж давно просили поработать над этой проблемой. Но не решался. Т.к. это требует больших затрат времени и ресурсов. Но свербило). И когда очередной клиент пожелал такую систему, я не раздумывая, согласился. И полегчало))).
В качестве инструментария выбрал ExtJS. Эта штука создана на базе Yahoo UI. Если всю жизнь использовать инструменты Yahoo, то возможно в ExtJS работается легко и весело. Но не в моем случае). Я уж 2 года пытаюсь оседлать этого зверя. К сожалению не систематически. А временами. Даже написал людям 4-5 модулей. Очень сложный для меня фрейморк. Очередной раз прочитав книжку (на чистом английском), взялся и ведь сделал))).
Параметры(поля ввода)
В первую очередь, нужно создать сами поля.

Кнопка "Редактор полей"

Для добавления и удаления строк используются соответсвующие кнопики. Так-же выбираем "Тип поля"

В колонке "Действие", нажатием на иконку "Варианты значений", можно вызвать окно редактирования вариантов значений.

Здесь добаляем значения, которые можно потом просто выбрать как вариант.
Назначение параметров
Кнопка "Вид" - переключает режимы. "Настройка параметров" и "Значения полей"

Для начала нужно войти в режим "Настройка параметров".

Здесь можно каждому каталогу и даже товару назначить поля. Ранее созданные. И возникает вопрос: к чему такой геморой? Не проще ли прямо тут написать какие нужно. Ответ: может и проще, но это сразу обрубит расширяемость, создаст проблемы для контроля уникальности и параметризации(типы поля, параметры отображения и прочее).

Здесь показано, как можно на разных уровнях вложенности назначать специфичные параметры.

Я умышленно назначил товару параметр, уже назначенный родителю. Чтоб проверить поведение.
Установка значений полей
Теперь переходим к установке самих значений.

Переходим в режим "Значения полей"

Встаем на любой товар и видим, что автоматом каждому товару назначаются все поля назначенные всем родительским каталогам. При этом дублирующие откидываютя.




Значения полей можно выбрать из списка. Ранее составленного для каждого поля. Что предпочтительно для организации фильтров пользователя. Можно и просто забить прямо тут новое значение. Что не рекомендуется, но иногда нужно.
PS
Продолжение следует...
Комментарии 1
Евгений:
Aug 20, 2017 at 01:09 PM
Спасибо большое, что решились! Для магазинов с таким большим ассортиментом как наш - это огромное подспорье!