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

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

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

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

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

Заранее благодарю!
Peter Zenin
28 ноября 2013, 08:30
modx.pro
3
2 406
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, ну и они у тебя под каждую категорию будут свои
          Aliaksandr Katlou
          28 ноября 2013, 16:47
          0
          del)
            Peter Zenin
            29 ноября 2013, 12:18
            0
            С TV не было бы проблем, но я начал использовать плагины для свойств товаров.
            Хочется сделать так, чтобы у чая показывались одни свойства на доп. вкладке «Свойства товара»

            Я сразу написал, что речь не про ТВ…
              Володя
              29 ноября 2013, 13:24
              0
              кто вам запрещает добавить поля через плагины и в кастомизации форм сделать следующее:
              для чая — оставить видимыми поля актуальные только для чая
              не для чая -скрыть поля для чая
                Aliaksandr Katlou
                29 ноября 2013, 17:33
                0
                Настройка форм с полями минишопа не работает вроде?
                  Володя
                  29 ноября 2013, 17:53
                  0
                  ну если проявить немного смекалки — то работает)
                    Aliaksandr Katlou
                    29 ноября 2013, 18:01
                    0
                    А можно для тех кто в танке?)) Я как-то пробовал, и и поля минишопа родные и добавленные плагинами в настройке форм не отображались, хотя очень хотелось наоборот. Поковырял, плюнул и по другому выкрутился. Открой секрет плиз, как их заработать?)
                      Володя
                      29 ноября 2013, 18:03
                      0
                      слева расшир. редактор, справа ограниченный редактор…
                      prntscr.com/27g0kh
                      p.s. в консоли названия полей посмотрел, в формы добавил и скрыл…
                        Aliaksandr Katlou
                        29 ноября 2013, 18:51
                        0
                        Спасибо, день удался)))
                  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