Огриничить выбор по родительскому термину в поле таксономии

Главные вкладки

Аватар пользователя andreyy05 andreyy05 10 мая 2013 в 21:29

Подскажите пожалуйста , как реализовать такое.

Например, есть один словарь КАТАЛОГ:
Кондиционеры
- настенные
- потолочные
- бла бла бла
Осушители воздуха
- такие-то
- Другие-то

И есть разные типы контента. Кондиционеры и Осушители воздуха .
Нужно чтобы в типе контента Кондиционеры - к выбору были доступны только дочерние термины КОНДИЦИОЕРОВ. А в типе осушители - только термины осушителей . Т.е. при добавлении скажем кондиционеров, появлялся только такой выбор:
-настенные
-потолочные
-бла бла бла

Хочется реализовать именно так, а не разными словарями..

Есть ли решение, кроме кастомного кода?

P>S> пробовал модуль content_taxonomy - там типо есть похожий функционал. Ограничивает, но толком не работает, глючит, в общем не то...

Комментарии

Аватар пользователя andreyy05 andreyy05 11 мая 2013 в 1:35

А как ограничить? это нереально с помощью этого модуля.. Можно назначить по умолчанию, но в любом случае можно будет переключать при желании..

Аватар пользователя andreyy05 andreyy05 11 мая 2013 в 1:44

Пробовал. Не то.. А вы пробовали? или просто на вскидку советуете что нагуглили.. Этот модуль вообще не для этого, а для удобного множественного выделения. Может и возможно там так настроить, но у меня не получилось.. Также там есть функция ID Родительского Термина - не работает!

Аватар пользователя drupby drupby 11 мая 2013 в 1:57

"andreyy05" wrote:
Этот модуль вообще не для этого

если не можешь существующими решениями пользоваться - напиши свой виджет ,там то уж будешь знать где что

Аватар пользователя andreyy05 andreyy05 11 мая 2013 в 1:59

Нельзя! С помощью HS можно лишь назначить по умолчанию родительский термин, и он будет всегда выбран типо + запретить выбирать родителей и на этом все. Но все равно форма с родителями отображается. И я могу поменять родителя и выбрать дочерний термин из другого родителя, что мне не подходит.

В Taxonomy Term Reference Tree Widget - вообще нереал.

Аватар пользователя drupby drupby 11 мая 2013 в 2:02

"andreyy05" wrote:
В Taxonomy Term Reference Tree Widget - вообще нереал.

Filter by view
Filter the available options based on whether they appear in the selected view.
то же и в hs

Аватар пользователя drupby drupby 11 мая 2013 в 2:13

"andreyy05" wrote:
видать чего-то недопонимаю..

так видимо надо создать вьюху которая выбирает необходимые термины
делаешь две вьюхи и потом в разных типах выбираешь в настройках виджета поля нужную

Аватар пользователя vitaboss vitaboss 11 мая 2013 в 2:22

"andreyy05" wrote:
Нужно чтобы в типе контента Кондиционеры - к выбору были доступны только дочерние термины КОНДИЦИОЕРОВ. А в типе осушители - только термины осушителей . Т.е. при добавлении скажем кондиционеров, появлялся только такой выбор:

Вам верно ответили.
"<a href="mailto:sas@drupal.org">sas@drupal.org</a>" wrote:
Это может http://drupal.org/project/hierarchical_select[/quote]

"andreyy05" wrote:
А как ограничить? это нереально с помощью этого модуля..

В смысле как ограничить? Вы модуль устанавливали? Если выбран родитель, то доступны только дочерние термины детей.
"andreyy05" wrote:
но в любом случае можно будет переключать при желании..

Можно переключить на "осушители", значит будут доступны только дочерние термины осушителей.
"andreyy05" wrote:
А вы пробовали? или просто на вскидку советуете что нагуглили..

Лично для вас тут никто ничего не гуглил. Поверьте! Распинаются перед вами, а вы вые***

Аватар пользователя drupby drupby 11 мая 2013 в 2:40

"andreyy05" wrote:
С помощью HS можно лишь назначить по умолчанию родительский термин, и он будет всегда выбран типо

а с помощью Taxonomy Term Reference Tree Widget dev версии можно выбрать родителя и будут только его дети типо
стабильная "зеленая" его версия более года назад выходила и там выбор по родителю глючит а дев версия очень хорошо отрабатывает

Аватар пользователя vitaboss vitaboss 11 мая 2013 в 3:50

А проблема знаете в чем?

"andreyy05" wrote:
И есть разные типы контента. Кондиционеры и Осушители воздуха .

В этом вся ошибка!

ТС, зачем создавать тип материала с одинаковыми полями? Таксономия и так делает деление. Создайте тип материала "Товары" и делите их таксономией. А если у вас появятся какие-нибудь ионизаторы? Smile

Аватар пользователя drupby drupby 11 мая 2013 в 4:23

"vitaboss" wrote:
В этом вся ошибка!

не в этом ошибка , а если бы были телефоны и ноутбуки - это разные товары с разными свойствами(аттрибутами) ,и соответсвенно разные бандлы(типы материала)
просто ТС надо было сразу разделить на 2 словаря и не дурить голову не себе не людям
тем более что он не умеет ни свой модуль написать для кастомного виджета ни даже настроить контрибные существующие модули

Аватар пользователя andreyy05 andreyy05 11 мая 2013 в 14:10

"vitaboss" wrote:
ТС, зачем создавать тип материала с одинаковыми полями? Таксономия и так делает деление. Создайте тип материала "Товары" и делите их таксономией. А если у вас появятся какие-нибудь ионизаторы? :)

Это совершенно разные товары, с очень разными полями. Поэтому и делается разными типами контента. Один словарь - делать более логично, плюс можно более красиво сделать пути, иерархические с помощью пасавто.

"vitaboss" wrote:
В смысле как ограничить? Вы модуль устанавливали? Если выбран родитель, то доступны только дочерние термины детей.

Чего чего? Я то устанавливал, А Вы? Задача не решается этими модулями, Я еще раз повторяю.

"vitaboss" wrote:
Можно переключить на "осушители", значит будут доступны только дочерние термины осушителей.

Я уже пять раз говорил, что если это работает именно так, то не имеет смысла. Нужно чтобы нельзя было менять родителя. Чтобы в типе контента предлагался исключительно один родитель. Иначе нах оно ваще надо? смысл чето ограничивать, если я могу поменять родителя..

"vitaboss" wrote:
Лично для вас тут никто ничего не гуглил. Поверьте! Распинаются перед вами, а вы вые***

Послушайте, я не прошу никого распинаться. Но зачем вводить людей в заблуждение?
, не знаешь - молчи, либо скажи что может быть, в общем говори как есть. ЗНаешь - помоги.

"drupby" wrote:
стабильная "зеленая" его версия более года назад выходила и там выбор по родителю глючит а дев версия очень хорошо отрабатывает

Спасибо за ответ! Жаль только что в этом виджете выпадающий список нельзя вывести. А только вид чекбоксов/радиобатонов

Что касается вьюх:

"drupby" wrote:
делаешь две вьюхи и потом в разных типах выбираешь в настройках виджета поля нужную

Пробовал, не выводит зеленая версия. Пустой список показывает.. МОжет в дев по другому..

"imarat" wrote:
hook form alter решит ваши проблемы

Похоже что да.. Как обычно, ищещь сперва модуль чуть ли не пол дня, а потом пишешь решение за 5 мин Smile

Вызываем форм альтер для нужной формы, и внутри переопределяем поле таксономии (У меня это field_catalog_category)

<?php
 $terms 
taxonomy_get_tree(7,14);
    
$options = array();
    foreach (
$terms as $value) {
      
$options[$value->tid] = $value->name;
    }   
   
$form['field_catalog_category']['und']['#options'] = $options;
?>

7 - это ID словаря. Узнать можно с помощью функции taxonomy_vocabulary_machine_name_load($name); - name - машинное имя словаря, посмотреть можно при редактировании.
14 - это собственно наш родительский термин, чтобы показывались только его дети.

Данный код работает только для одного уровня вложенности. Если их больше, нужны доп. проверки.

Спасибо!

Аватар пользователя drupby drupby 11 мая 2013 в 15:35

"andreyy05" wrote:
Пробовал, не выводит зеленая версия

выводит любая версия - вьюха должна термины выводить
"andreyy05" wrote:
Если их больше, нужны доп. проверки.

не проверки ,а дополнительный перебор терминов внутри существующего foreach-a

Аватар пользователя vitaboss vitaboss 11 мая 2013 в 16:20

"andreyy05" wrote:
Один словарь - делать более логично, плюс можно более красиво сделать пути, иерархические с помощью пасавто.
Один тип материала тоже более логично. А пасавто вообще не проблема настроить у каждого типа материала на свой словарь.

"drupby" wrote:
просто ТС надо было сразу разделить на 2 словаря и не дурить голову не себе не людям

Есть модуль зависимости полей, который ограничивает отображение наборов полей в типе материала и ограничивает сами поля значениями (HS) в зависимости от выбранного значения предыдущего поля (кондеры/осушители - выпадающее меню). Все равно один тип материала!

"andreyy05" wrote:
Послушайте, я не прошу никого распинаться. Но зачем вводить людей в заблуждение?
, не знаешь - молчи, либо скажи что может быть, в общем говори как есть. ЗНаешь - помоги.

Не знаю, не скажу, не помогу!

Аватар пользователя drupby drupby 11 мая 2013 в 16:27

"vitaboss" wrote:
Есть модуль зависимости полей

мух от котлет принято разделять - такой вариант прокатывает если много общих полей и пара-тройка разных
реализуй своим методом товар телефон-ноутбук