Двухуровневый словарь на 2000+ терминов — как упростить выбор термина при создании материала?
Прислано: n1313
ср, 25/07/2007 - 06:38
У меня есть здоровенный словарь марок и моделей автомобилей, порядка 2000 записей. Словарь — с одиночной иерархией, то есть родительские термины — это марки автомобилей, типа "Газ", а дочерние термины — это модели, типа "Газель". Всё замечательно, но, когда дело доходит до выбора терминов при создании материала, я сталкиваюсь с проблемой поиска нужных терминов в этом гигантском списке. Очень хотелось бы как-то поумнее организовать этот процесс, например, выбирать сначала родительский термин, чтобы на его основе при помощи AJAX загружался второй список с дочерними терминами.
Я пробовал добиться этого, используя связку CCK + Content Taxonomy + Active Select, и всё было бы замечательно, если бы не ошибка в яваскрипте модуля Active Select, из-за которой нифига буквально не работает. Я поискал в обсуждениях здесь, нашёл тему с обсуждением этого вопроса, но в теме той примерно год последнему ответу, и решения никто не предложил. Может, с тех пор что-то изменилось?
- n1313's blog
- Для комментирования войдите или зарегистрируйтесь
Актуально. Та же проблема.
- Для комментирования войдите или зарегистрируйтесь
я задал этот же вопрос на официальном сайте друпала — посоветовали модуль Taxonomy Super Select. но я с ним уже возился и никаких в нём функций, которые могли бы мне помочь, не нашёл (или не понял, как включаются). может, кто-нибудь есть поопытнее?
- Для комментирования войдите или зарегистрируйтесь
Судя по описанию модуля - это что надо, как-то я его упустил из виду... Есть ли тогда смысл его ставить? Что он делал в Вашем случае? Я бы посмотрел, но именно сейчас только рабочий сайт, тестировать пока негде.
- Для комментирования войдите или зарегистрируйтесь
в моём случае он просто превращал селект в набор чекбоксов/радиокнопок
- Для комментирования войдите или зарегистрируйтесь
решил проблему следующим образом:
- таксономия создаётся как обычно, но не привязывается к типу контента — таким образом я избегаю загрузки мега-словаря при создании сообщения
- при помощи модулей CCK + Active Select + Content Taxonomy ActiveSelect прикрепляем к нужному типу контента activeselect-поле, в котором указываем нужный словарь
- по идее, всё должно уже работать, но лично у меня в этом месте происходит глюк в activeselect.js в строке 35. слегка помозговав, я написал патчик для этого скрипта, и всё в итоге заработало
в моём случае проблема была в том, что скрипт пытался обратиться к полю по ошибочному айдишнику — вместо "-" там был "_". я не знаю, где происходит эта ошибка, но с помощью небольшого патчика могу устранить последствия этой ошибки:
строка 34:
var newTarget = $('#' + targetsArray[target]).get(0);
заменяется на:
var newTarget = $('#' + targetsArray[target].replace(/_/,"-")).get(0);
грубо, но работает, включая даже несколько activeselect-полей на странице. надеюсь, кому-нибудь поможет
- Для комментирования войдите или зарегистрируйтесь
Мда... не радует конечно, особенно доп. CCK + Active Select + Content Taxonomy, с учетом того, что модулей и так уже много и нагрузка соответственно. А словари включают по несколько сотен термов, не 2000 конечно, но все же...
- Для комментирования войдите или зарегистрируйтесь
спасибо, а можно где-то посмотреть что получилось?
- Для комментирования войдите или зарегистрируйтесь
у меня — нет, это не публичный проект
- Для комментирования войдите или зарегистрируйтесь
Вот пример: http://www.drugme.ru/users_search - явно похоже на решение Вашей задачи.
Вот реализация: http://www.drupal.ru/node/5761
- Для комментирования войдите или зарегистрируйтесь
Блин, сколько же я мучался, пока не набрел на этот топик! Для чистоты эксперимента замутил свежую инсталляцию, создал словарь с одиночной иерархией, добавил несколько терминов дабы "нарисовалось" дерево... Установил модули, сделал все по пунктам из коммента выше - заработало! В третьем пункте необходимости небыло - видимо с тех пор, как писали коммент, уже пофиксили.
Спасибо!
- Для комментирования войдите или зарегистрируйтесь
Есть еще hierarchical select. Пользуюсь им. Очень удобно для больших словарей с иерархией.
Например, как здесь http://berimir.com/production
- Для комментирования войдите или зарегистрируйтесь
а где взять hierarchical select для 6-го друпала, или скорее всего что то подобное для views есть
- Для комментирования войдите или зарегистрируйтесь
Перешел на hierarchical select - достойная альтернатива, плюсы - все в одном мудуле и никакого гемороя.
- Для комментирования войдите или зарегистрируйтесь
а кстати надо еще так что бы пользователи могли предлагать добавить новую категорию примерно так:
"Хотите предложить новую категорию? Нажмите сюда."
и что бы при нажатии выезжало поле для добавления, а потом админ его утверждал
ведь это надо наверняка всем
- Для комментирования войдите или зарегистрируйтесь
hierarchical select позволяет это делать. Можно поставить галочки в свойствах словарей.
Только не уверена, что возможна предварительная модерация категорий. Поэтому пока не даю своим пользователям добавлять новые ключевые слова. Боюсь, что совсем каша будет :)
- Для комментирования войдите или зарегистрируйтесь






Комментарии