Как известно, в MODX пользовательские переменные(TV) привязаны к шаблонам страниц. Это уж не изменить. Часто возникает желание "отвязаться" от шаблонов. Есть расширения (в частности на базе MIGX) позволяющие создавать индивидуальные поля для каждой страницы. Но это не решает проблему. Когда на сайте есть несколько тысяч товаров в нескольких десятках каталогах удобнее иметь "наследуемые" поля, привязанные именно к каталогам и товарам. Т.е. когда товары наследуют все поля, назначенные родительским каталогам. Меня уж давно просили поработать над этой проблемой. Но не решался. Т.к. это требует больших затрат времени и ресурсов. Но свербило). И когда очередной клиент пожелал такую систему, я не раздумывая, согласился. И полегчало))).

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

В первую очередь, нужно создать сами поля.


Тестовая отрисовка TV

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


Тестовая отрисовка TV

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


Тестовая отрисовка TV

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


Тестовая отрисовка TV

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

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


Тестовая отрисовка TV

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


Тестовая отрисовка TV

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


Тестовая отрисовка TV

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


Тестовая отрисовка TV

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

Теперь переходим к установке самих значений.


Тестовая отрисовка TV

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


Тестовая отрисовка TV

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


Тестовая отрисовка TV


Тестовая отрисовка TV


Тестовая отрисовка TV


Тестовая отрисовка TV

Значения полей можно выбрать из списка. Ранее составленного для каждого поля. Что предпочтительно для организации фильтров пользователя. Можно и просто забить прямо тут новое значение. Что не рекомендуется, но иногда нужно.

PS

Продолжение следует...