TV-поле привязка к конкретному ресурсу (странице)
        Приветствую. 
Насколько понимаю, судя по документации, TV-поле можно привязать только к Шаблону.
Допустим, есть шаблон А. К нему подключены ресурсы с id 1, 2, 3. Если привязать TV к шаблону А, то оно будет доступно для всех ресурсов(1-3) шаблона.
Необходима привязка только к ресурсу id 2, для остальных ресурсов поле недоступно.
Будьте добры, подскажите, как привязать TV-поле к конкретному ресурсу?
    
    
                                                                                
            Насколько понимаю, судя по документации, TV-поле можно привязать только к Шаблону.
Допустим, есть шаблон А. К нему подключены ресурсы с id 1, 2, 3. Если привязать TV к шаблону А, то оно будет доступно для всех ресурсов(1-3) шаблона.
Необходима привязка только к ресурсу id 2, для остальных ресурсов поле недоступно.
Будьте добры, подскажите, как привязать TV-поле к конкретному ресурсу?
Комментарии: 19
                Создать для этого ресурса отдельный шаблон. Если всё делать через Fenom, то шаблонов можно создавать сколько угодно, при этом все они будут ссылаться на один и тот же файл, это очень сильно расширяет возможности для манёвра.            
                    
                Понимаю, но ресурсов с индивидуальным полем 9 штук. Создавать 9 шаблонов исключительно в угоду TV, мне думается, весьма иррациональный вариант. 
Неужели нет более гуманного способа привязки.
                    Неужели нет более гуманного способа привязки.
                Нет способ привязки только один через шаблон.            
                    
                Можете сделать так:
Создаете ТВ поле. У него ID допустим 28.
Создаете плагин вешаете событие на OnManagerPageInit.
                    Создаете ТВ поле. У него ID допустим 28.
Создаете плагин вешаете событие на OnManagerPageInit.
<?php
switch($modx->event->name){
    case 'OnManagerPageInit':
    	$ids = [183]; //Ресурсы, где ПОКАЗЫВАТЬ ТВ ПОЛЕ
    	if ($_GET['a'] == 'resource/create' || ($_GET['a'] == 'resource/update' && !in_array($_GET['id'], $ids))) {
    		$myCSS = '<style media="screen">
	            #tv28-tr{display:none!important}
	            </style>';
	        $modx->regClientCSS( $myCSS );
    	}
        break;
}            
                Надеялся, что пропустил функцию в админке. Значит только через шаблон. Это и хотел узнать. 
Парни, спасибо за уделенное время и помощь!
                    Парни, спасибо за уделенное время и помощь!
                А чем такой вариант не подошел?            
                    
                Он лишь скрывает, но не привязывает.            
                    
                Все почему-то забыли про очень хороший инструмент: «Настройка форм». =)
site.ru/manager/?a=security/forms
и не нужно будет никаких плагинов и танцов с бубнами =)
                    site.ru/manager/?a=security/forms
и не нужно будет никаких плагинов и танцов с бубнами =)
                Я вчера пробовал через него. Там можно поставить условие что id = 1 например и СНЯТЬ ГАЛОЧКУ. А поставить условие id != 1 нельзя. Если делать 2 правила. Например первое — для всех с шаблоном СКРЫТЬ ТВ, а второе правило id = 1 ПОКАЗЫВАТЬ ТВ, то правило СКРЫТЬ У ВСЕХ перекрывает правило ПОКАЗЫВАТЬ У ОДНОГО.
Если вы знаете как сделать — продемонстрируйте пожалуйста.
                    Если вы знаете как сделать — продемонстрируйте пожалуйста.
                В значение ограничивающего поля можно указать только равенство (т.е. id = 1)
Если нужно показывать TV только в одном ресурсе — создайте отдельный шаблон для этого ресурса и привяжите к этому шаблону нужный TV (это и будет "Если сделать 2 правила").
Если нужно показывать TV у множества ресурсов, но скрыть его только в одном ресурсе — то используйте правило в настройке форм.
                    Если нужно показывать TV только в одном ресурсе — создайте отдельный шаблон для этого ресурса и привяжите к этому шаблону нужный TV (это и будет "Если сделать 2 правила").
Если нужно показывать TV у множества ресурсов, но скрыть его только в одном ресурсе — то используйте правило в настройке форм.
                Получается вы ответили что «через настройку форм сделать как нужно автору нельзя»            
                    
                В «Ограничивающее значение» можно указать несколько id через запятую.
Перечислите id у которых нужно скрыть TV.
                    Перечислите id у которых нужно скрыть TV.
                Нет нельзя. Сейчас специально проверил.            
                    
                Можно =)
Но есть бага в самом MODX.
github.com/modxcms/revolution/blob/v2.8.4-pl/core/model/modx/modmanagercontroller.class.php#L847
А вот для TV полей данное условие не прописали:
github.com/modxcms/revolution/blob/v2.8.4-pl/core/model/modx/modtemplatevar.class.php#L627
Поэтому TV поля не скрываются как надо. Зато скрывается всё остальное (т.е. правило срабатывает).
                    Но есть бага в самом MODX.
github.com/modxcms/revolution/blob/v2.8.4-pl/core/model/modx/modmanagercontroller.class.php#L847
А вот для TV полей данное условие не прописали:
github.com/modxcms/revolution/blob/v2.8.4-pl/core/model/modx/modtemplatevar.class.php#L627
Поэтому TV поля не скрываются как надо. Зато скрывается всё остальное (т.е. правило срабатывает).
                Отправил коммит: github.com/modxcms/revolution/compare/2.x...tanzirev:patch-2
Возможно что в 2.8.5 ошибка будет исправлена.
                    Возможно что в 2.8.5 ошибка будет исправлена.
                Если верно понял, то в «Настройка форм» реализовано ограничение по Основным полям, например pagetitle, isfolder. По TV-полям(Дополнительным) ограничения нет. Поправьте, если ошибаюсь. 
Про такой инструмент я не знал, спасибо за наводку.
                    Про такой инструмент я не знал, спасибо за наводку.
                Ошибаюсь. При втором заходе появилась панель с Доп.полями TV. Буду разбираться, как этот инструмент работает.            
                    
                Ограничивающие поле — это поле, по которому СРАБОТАЕТ правило.
Т.е. если укажите id = 1, то правило будет срабатывать только у ресурса с id = 1
А всё что настраивается ниже — это и есть само правило.
Т.е. если снимите галочку у какого-то TV — то это TV скроется.
                    Т.е. если укажите id = 1, то правило будет срабатывать только у ресурса с id = 1
А всё что настраивается ниже — это и есть само правило.
Т.е. если снимите галочку у какого-то TV — то это TV скроется.
                Нее, парни, это совсем не то, что требуется. Продублирую заголовок топика «TV-поле привязка к конкретному ресурсу (странице) ». Не скрыть, не под ковёр замести, а именно привязать. 
Создал ресурс, создал TV-поле, привязал. В случае отвязки TV от ресурса данные поля в БД не хранятся, удаляются.
Разнообразие полей и их кастомизация в modx впечатляет, но сама реализация принципа ресурс-TV скорее для галки. Отталкиваюсь от профильных cms, ну да, оно и понятно, ведь профильные. Ок, будем работать с тем, что есть.
modx.pro/help/22993#comment-134159
Спасибо всем отписавшимся за помощь и время!
                    Создал ресурс, создал TV-поле, привязал. В случае отвязки TV от ресурса данные поля в БД не хранятся, удаляются.
Разнообразие полей и их кастомизация в modx впечатляет, но сама реализация принципа ресурс-TV скорее для галки. Отталкиваюсь от профильных cms, ну да, оно и понятно, ведь профильные. Ок, будем работать с тем, что есть.
modx.pro/help/22993#comment-134159
Спасибо всем отписавшимся за помощь и время!
                            Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.