Отдельное TV для определенного контекста
Народ, подскажите, как для контекста сделать TV, чтобы у документов с аналогичным шаблоном в другом контексте его не было видно?
Комментарии: 6
Через плагин можно:
<?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>");
}
}
Не срабатывает. У меня имя TV — ptype_en, id=19. Вместо tv20 нужно подставить просто 19? Вобщем-то, пробовал все варианты: tv19, ptype_en19, ptype_en. Может, в другом месте что-то неправильно?
Да, вместо 20 поставить 19.
$hideTV = 'MODx.hideTV("tv19");';
Вы включили событие OnDocFormRender для плагина?
Да, включил.
Если условие if($modx->getOption('cultureKey') !== 'ru'), то TV в обоих контекстах выводится, а если if($modx->getOption('cultureKey') !== 'en'), то ни в одном контексте не видно.
Если условие if($modx->getOption('cultureKey') !== 'ru'), то TV в обоих контекстах выводится, а если if($modx->getOption('cultureKey') !== 'en'), то ни в одном контексте не видно.
Да, вы правы.
Нужно вот так
Нужно вот так
<?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>");
}
}
Спасибо, так работает!
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.