ms2: скрывать/показывать свойства у разных товаров
С TV не было бы проблем, но я начал использовать плагины для свойств товаров.
Оказалось что у меня в магазине должен быть не только чай, но и посуда — с абсолютно другими свойствами.
Хочется сделать так, чтобы у чая показывались одни свойства на доп. вкладке «Свойства товара», а у посуды — другие.
Предполагаю, что оптимальным вариантом было бы написание плагина (модыксового) по какому-то событию и либо перехват вывода полей… Либо проверять родительскую категорию и подцеплять разные js, которые уберут лишние свойства.
Василий, не подскажешь возможный путь решения данной задачи?
Может уже кто-то сталкивался?
Заранее благодарю!
Оказалось что у меня в магазине должен быть не только чай, но и посуда — с абсолютно другими свойствами.
Хочется сделать так, чтобы у чая показывались одни свойства на доп. вкладке «Свойства товара», а у посуды — другие.
Предполагаю, что оптимальным вариантом было бы написание плагина (модыксового) по какому-то событию и либо перехват вывода полей… Либо проверять родительскую категорию и подцеплять разные js, которые уберут лишние свойства.
Василий, не подскажешь возможный путь решения данной задачи?
Может уже кто-то сталкивался?
Заранее благодарю!
Комментарии: 24
Разные категории — разные шаблоны. В чём трудность то?
Такого решения сейчас нет. самым красивым вариантом могло бы быть переделанное подобие табличных параметров, вроде MigX — типо под каждый товар заводишь что нужно… Но пока увы, если плагинами расширять — то будет куча-мала
Причем здесь шаблоны? Ты хоть знаешь что такое свойства товара, или плагины для minishop2?
Или может я чего-то не понимаю???
Или может я чего-то не понимаю???
Видимо Timur не понял фишку, или не развернул ответ до конца — цепляешь к нужному шаблону нужные TV, ну и они у тебя под каждую категорию будут свои
del)
С TV не было бы проблем, но я начал использовать плагины для свойств товаров.
Хочется сделать так, чтобы у чая показывались одни свойства на доп. вкладке «Свойства товара»
Я сразу написал, что речь не про ТВ…
Хочется сделать так, чтобы у чая показывались одни свойства на доп. вкладке «Свойства товара»
Я сразу написал, что речь не про ТВ…
кто вам запрещает добавить поля через плагины и в кастомизации форм сделать следующее:
— для чая — оставить видимыми поля актуальные только для чая
— не для чая -скрыть поля для чая
— для чая — оставить видимыми поля актуальные только для чая
— не для чая -скрыть поля для чая
Настройка форм с полями минишопа не работает вроде?
ну если проявить немного смекалки — то работает)
А можно для тех кто в танке?)) Я как-то пробовал, и и поля минишопа родные и добавленные плагинами в настройке форм не отображались, хотя очень хотелось наоборот. Поковырял, плюнул и по другому выкрутился. Открой секрет плиз, как их заработать?)
слева расшир. редактор, справа ограниченный редактор…
prntscr.com/27g0kh
p.s. в консоли названия полей посмотрел, в формы добавил и скрыл…
prntscr.com/27g0kh
p.s. в консоли названия полей посмотрел, в формы добавил и скрыл…
Спасибо, день удался)))
А можно поподробнее?
Например, как определять чай это или нет? Или как делать видимыми или скрывать? Откуда?
Например, как определять чай это или нет? Или как делать видимыми или скрывать? Откуда?
Настройка форм применительно к шаблону, поэтому либо ручками ставите шаблон для чая… либо как то автоматизируете, но все равно с шаблоном…
Благодарю! Понял где копать!
Пока на работу тащился, иная мысль пришла.
ведь можно совсем все проще делать, и скрывать поля у одного и того же шаблона в зависимости от родителя.
примерно так
ведь можно совсем все проще делать, и скрывать поля у одного и того же шаблона в зависимости от родителя.
примерно так
<?php
switch($modx->event->name) {
case 'OnDocFormPrerender':
$s = $resource->get('parent'); //родитель товара
switch($s) {
case 87:
$modx->regClientCSS('<style>
#ext-gen173 { //id поля что необходимо скрыть
display: none;
}
</style>');
break;
case 181:
$modx->regClientCSS('<style>
#ext-gen158 {
display: none;
}
</style>');
break;
default: ;
}
break;
}
Возможно можно как то еще проще, если знать extjs ...)
Ведь можно в настройках форм задавать ограничевающее значение, типо modResource.parent = 12 и исходя из этого скрывать поля на странице. Или я неправильно понял суть обсуждения?
А ведь точно))) внимания ведь даже раньше не обращал на это!
Но я думаю вообще в идеале было бы, если под кастомизацию полей minishop была бы своя страничка в админке…
типа родитель | шаблон | отображаемые поля
Но я думаю вообще в идеале было бы, если под кастомизацию полей minishop была бы своя страничка в админке…
типа родитель | шаблон | отображаемые поля
Да да… Крутяк… )
Но это достаточно сложно сделать на MODX и MS2, как мне кажется. Нужно переопределить модель товара и ее связать с моделью класса товара которая в свою очередь будет связывать товар со свойствами и участвовать в организации логики, в общем объем работ не меньше чем в самом MS2 по хорошему должно быть (: но возможно я ошибаюсь и все можно проще сделать (:
ну а если ничего не переопределять, а просто создать некое подобие шаблона товара — связь тип используемых полей.
и при создании/редактировании товара просто использовать этот шаблон
и при создании/редактировании товара просто использовать этот шаблон
Так если посмотреть значения в консоли они все время разные! Скрыл все что нужно было эти способом а потом открыл и значения другие( я про id="#ext-gen158" )
их можно как-то зафиксировать?
так то метод рабочий)
их можно как-то зафиксировать?
так то метод рабочий)
Сделал такой плагинчик на OnDocFormPrerender, для родителя id=5 скрывать цену и артикул, case 26 скрывать introtext. Работает и при создании товаров.
<?php
switch($modx->event->name) {
case 'OnDocFormPrerender':
if($mode == modSystemEvent::MODE_NEW) {
$s = intval($_REQUEST['parent']);
} else {
$s = $resource->get('parent'); //родитель товара
}
switch($s) {
case 5:
$modx->regClientStartupHTMLBlock('
<script type="text/javascript">
Ext.onReady(function () {
var divs= Ext.get("modx-resource-main-left").child("fieldset");
divs.hide();
});
</script>
');
break;
case 26:
$modx->regClientStartupHTMLBlock('
<script type="text/javascript">
Ext.onReady(function () {
var divs= Ext.get("x-form-el-modx-resource-introtext").parent();
divs.hide();
var vendors = Ext.get("x-form-el-modx-resource-vendor").parent();
vendors.hide();
});
</script>
');
break;
default: ;
}
break;
}
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.