ms2: скрывать/показывать свойства у разных товаров

С TV не было бы проблем, но я начал использовать плагины для свойств товаров.
Оказалось что у меня в магазине должен быть не только чай, но и посуда — с абсолютно другими свойствами.

Хочется сделать так, чтобы у чая показывались одни свойства на доп. вкладке «Свойства товара», а у посуды — другие.

Предполагаю, что оптимальным вариантом было бы написание плагина (модыксового) по какому-то событию и либо перехват вывода полей… Либо проверять родительскую категорию и подцеплять разные js, которые уберут лишние свойства.

Василий, не подскажешь возможный путь решения данной задачи?
Может уже кто-то сталкивался?

Заранее благодарю!
Peter Zenin
28 ноября 2013, 08:30
modx.pro
3
2 308
0

Комментарии: 24

Timur Sonaev
28 ноября 2013, 12:33
0
Разные категории — разные шаблоны. В чём трудность то?
    Clean
    28 ноября 2013, 13:35
    0
    Такого решения сейчас нет. самым красивым вариантом могло бы быть переделанное подобие табличных параметров, вроде MigX — типо под каждый товар заводишь что нужно… Но пока увы, если плагинами расширять — то будет куча-мала
      Peter Zenin
      28 ноября 2013, 14:36
      0
      Причем здесь шаблоны? Ты хоть знаешь что такое свойства товара, или плагины для minishop2?
      Или может я чего-то не понимаю???
        Clean
        28 ноября 2013, 14:55
        0
        Видимо Timur не понял фишку, или не развернул ответ до конца — цепляешь к нужному шаблону нужные TV, ну и они у тебя под каждую категорию будут свои
          Александр Котлов
          28 ноября 2013, 16:47
          0
          del)
            Peter Zenin
            29 ноября 2013, 12:18
            0
            С TV не было бы проблем, но я начал использовать плагины для свойств товаров.
            Хочется сделать так, чтобы у чая показывались одни свойства на доп. вкладке «Свойства товара»

            Я сразу написал, что речь не про ТВ…
              Володя
              29 ноября 2013, 13:24
              0
              кто вам запрещает добавить поля через плагины и в кастомизации форм сделать следующее:
              для чая — оставить видимыми поля актуальные только для чая
              не для чая -скрыть поля для чая
                Александр Котлов
                29 ноября 2013, 17:33
                0
                Настройка форм с полями минишопа не работает вроде?
                  Володя
                  29 ноября 2013, 17:53
                  0
                  ну если проявить немного смекалки — то работает)
                    Александр Котлов
                    29 ноября 2013, 18:01
                    0
                    А можно для тех кто в танке?)) Я как-то пробовал, и и поля минишопа родные и добавленные плагинами в настройке форм не отображались, хотя очень хотелось наоборот. Поковырял, плюнул и по другому выкрутился. Открой секрет плиз, как их заработать?)
                      Володя
                      29 ноября 2013, 18:03
                      0
                      слева расшир. редактор, справа ограниченный редактор…
                      prntscr.com/27g0kh
                      p.s. в консоли названия полей посмотрел, в формы добавил и скрыл…
                Peter Zenin
                29 ноября 2013, 17:45
                0
                А можно поподробнее?
                Например, как определять чай это или нет? Или как делать видимыми или скрывать? Откуда?
                  Володя
                  29 ноября 2013, 17:54
                  0
                  Настройка форм применительно к шаблону, поэтому либо ручками ставите шаблон для чая… либо как то автоматизируете, но все равно с шаблоном…
                    Peter Zenin
                    30 ноября 2013, 06:24
                    0
                    Благодарю! Понял где копать!
        Володя
        30 ноября 2013, 10:19
        0
        Пока на работу тащился, иная мысль пришла.
        ведь можно совсем все проще делать, и скрывать поля у одного и того же шаблона в зависимости от родителя.
        примерно так
        <?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 ...)
          Alex Vakhitov
          30 ноября 2013, 13:57
          0
          Ведь можно в настройках форм задавать ограничевающее значение, типо modResource.parent = 12 и исходя из этого скрывать поля на странице. Или я неправильно понял суть обсуждения?
            Володя
            30 ноября 2013, 14:04
            0
            А ведь точно))) внимания ведь даже раньше не обращал на это!
            Но я думаю вообще в идеале было бы, если под кастомизацию полей minishop была бы своя страничка в админке…
            типа родитель | шаблон | отображаемые поля
              Alex Vakhitov
              30 ноября 2013, 14:13
              0
              Было бы круто создать дополнение которое отвечает за свойства товара, скажем чтобы оно рендерило набор полей в момент создания товара, чтото типо такого:


              А то как это делать при создании сайта уже дело десятое, все равно всем не угодишь
                Володя
                30 ноября 2013, 14:23
                0
                Да да… Крутяк… )
                  Alex Vakhitov
                  30 ноября 2013, 14:42
                  0
                  Но это достаточно сложно сделать на MODX и MS2, как мне кажется. Нужно переопределить модель товара и ее связать с моделью класса товара которая в свою очередь будет связывать товар со свойствами и участвовать в организации логики, в общем объем работ не меньше чем в самом MS2 по хорошему должно быть (: но возможно я ошибаюсь и все можно проще сделать (:
                    Володя
                    30 ноября 2013, 15:16
                    0
                    ну а если ничего не переопределять, а просто создать некое подобие шаблона товара — связь тип используемых полей.
                    и при создании/редактировании товара просто использовать этот шаблон
            Ilya Ev
            23 декабря 2013, 18:57
            0
            Так если посмотреть значения в консоли они все время разные! Скрыл все что нужно было эти способом а потом открыл и значения другие( я про id="#ext-gen158" )

            их можно как-то зафиксировать?

            так то метод рабочий)
            Abu
            Abu
            20 января 2016, 20:55
            1
            0
            Сделал такой плагинчик на 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;  
            }
              Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
              24