Отдельное TV для определенного контекста

Народ, подскажите, как для контекста сделать TV, чтобы у документов с аналогичным шаблоном в другом контексте его не было видно?
Murashkin
29 июня 2018, 18:03
modx.pro
2
882
0

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

Aleksandr Huz
30 июня 2018, 09:17
0
Через плагин можно:
<?php
/** @var modX $modx */
if($modx->event->name == 'OnDocFormRender') {
        
    // Прячем TV для всех контекстов, кроме ru
    if($modx->getOption('cultureKey') !== 'ru') {
        $hideTV = 'MODx.hideTV("tv20");'; // 20 - id tv

        $modx->regClientStartupHTMLBlock("<script>
            Ext.onReady(function(){ 
                $hideTV 
            });
        </script>");
    }
}
    Murashkin
    30 июня 2018, 11:56
    1
    0
    Не срабатывает. У меня имя TV — ptype_en, id=19. Вместо tv20 нужно подставить просто 19? Вобщем-то, пробовал все варианты: tv19, ptype_en19, ptype_en. Может, в другом месте что-то неправильно?
      Aleksandr Huz
      30 июня 2018, 12:15
      0
      Да, вместо 20 поставить 19.
      $hideTV = 'MODx.hideTV("tv19");';
      Вы включили событие OnDocFormRender для плагина?
        Murashkin
        30 июня 2018, 12:27
        0
        Да, включил.
        Если условие if($modx->getOption('cultureKey') !== 'ru'), то TV в обоих контекстах выводится, а если if($modx->getOption('cultureKey') !== 'en'), то ни в одном контексте не видно.
          Aleksandr Huz
          30 июня 2018, 13:02
          +1
          Да, вы правы.
          Нужно вот так
          <?php
          /** @var modX $modx */
          if($modx->event->name == 'OnDocFormRender') {
                  
              // Прячем TV для всех контекстов, кроме web(ru)
              if(!$resource) return; // Выходим, если это новый ресурс
              if($resource->get('context_key') !== 'web') {
                  $hideTV = 'MODx.hideTV("tv20");'; // 20 - id tv
          
                  $modx->regClientStartupHTMLBlock("<script>
                      Ext.onReady(function(){ 
                          $hideTV 
                      });
                  </script>");
              }
          }
            Murashkin
            30 июня 2018, 13:20
            0
            Спасибо, так работает!
    Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
    6