Модуль Active select позволяет менять сотержимое ниспадающих списков на лету.
В концепции Active select существует два объекта - ведущий и ведомый. Ведущий объект действует на ведомый объект. Второй изменяет свое состояние в зависимости от состояния первого. Если в качестве объектов взять ниспадающие списки, то ведомый список будет наполняться разными пунктами в зависимости от того, какой пункт выбран в ведущем списке.
Вся эта функциональность доступна для использования в системе категорий.
Источник : http://drupal.org/node/74747
В рамках примера мы будем использовать тип материала Заметка - "story".
Что мы хотим получить:
На странице создания "story" пользователя просят "Выберите животное" и "Выберите породу". В начале выпадающий список "Выберите породу" пуст. Когда пользователь выбирает животное - второй список "Выберите породу" наполняется породами, которые соответствуют выбраному животному.
В нашем примере мы будем использовать два типа животных - "Кошка", "Собака".
Породы кошек -"сиамская", "персидская".
Породы собак - "бульдог", "такса".
1. Закачайте в папку modules модули category и active select. Включите их на странице управления модулями. Предварительных настроек можно не производить, оба модуля можно использовать сразу после установки.
2. Создайте контейнер "Выберите животное".
- Привяжите к этому контейнеру тип материала "story" (CONTAINER INFORMATION / TYPES).
- Установите в качестве родительского объекта - "начало" (ROOT as PARENT).
3. Создайте контейнер "Выберите породу".
- Привяжите к этому контейнеру тип материала "story" (CONTAINER INFORMATION / TYPES).
- Установите в качестве родительского объекта - "начало" (ROOT as PARENT).
- В качестве "Дальних предков" задайте пункт "Выберите животное" (важно: не задавайте пункт "Выберите животное*" со звездочкой).
- Если Вы хотите, чтобы конечный документ имел строку навигации, то в группе "меню для категорий" нужно включить "Пункты меню для связанных документов".
4. Создайте категорию "Кошка".
- В информации о категории (CATEGORY INFORMATION) в качестве предков задайте контейнер "Выберите животное".
5. Создайте категорию "Собака".
- В информации о категории (CATEGORY INFORMATION) в качестве предков задайте контейнер "Выберите животное".
6. Создайте категорию "сиамская".
- В информации о категории (CATEGORY INFORMATION) в качестве контейнера (CONTAINER) задайте "Выберите породу".
- Подождите немного, список предков (PARENT) обновится и затем задайте "кошка" в качестве предка.
Все остальные породы создайте таким же образом, задавая в качестве контейнера "Выберите породу" и в качестве предков соответственно "кошка" или "собака".
Грубо говоря, указывая в качестве контейнера "Выберите породу" мы говорим друпалу, что данный документ должен быть в выпадающем списке "Выберите породу". А выбирая предков "кошка" или "собака" мы связываем его с нужным животным.
Следует четко различать контейнер и предков. Это не одно и тоже. Выбирая контейнер мы можем задать любую категорию из этого контейнера в качестве предка (включая сам контейнер, контейнеры обозначаются звездочкой).
В дополнение прилагаю перевод для модуля категорий (category-module-ru-v 1.100.2.17). Формат "category-(9-64).po" обозначает следующее: первая цифра - количество не переведенных строк, вторая цифра - общее количество строк.
Переведено далеко не все. В основном перевод касается отображения категорий и добавления категорий/контейнеров (на стр. добавления слишком много опций и текста и даже если Вы очень хорошо знаете англицкий, все равно непонятно что для чего и к чему приведет выбор опций, я постарался расписать все по проще и по понятней.)
Вложение | Размер |
---|---|
category-module-ru-v 1.100.2.17.zip | 27.4 КБ |
Комментарии
Спасибо за статью!
А можно ли Active Select использовать для создания подобных полей в профиле пользователя?
Со стандартным модулем профилей - думаю, что нет. Если Вы используете Node Profile, то да.
спасибо конечно, за перевод, но вот ещё был бы файл общий, а то пофайлово муторно локализовывать.....
Спасибо за статью!
есть некоторые вопросы
>>Если Вы используете Node Profile, то да.
см также http://drupal.ru/node/4665
а как создать подобные поля в профиле пользователя ?
и второй вопрос как это все автоматизировать ?
а не вводить категории вручную
т е если есть уже список стран и городов как xml file
нужно сделать что то вида
http://ajax.zervaas.com.au/examples/CountryRegionCityJax/
- для трекера
В настоящее время нужно подумать 7 раз прежде чем использовать модуль категорий. А с какими еще модулями работает Active Select не знаю. Кто нибудь знает?
Почему?
Почему что?
Не стоит использовать модуль категорий или я не знаю с какими модулями работает Active Select???
Если по первому пункту, то даже здесь : http://drupal.org/project/category написано:
Warning: There are some longstanding bugs in Category, especially when dealing with menu handling! Please research other options before deciding to go with Category, and always keep backups!
А если по второму, то уж не обижайтесь на меня, не образованный я.
Естественно по первому. О some longstanding bugs - когда использовал лазил в код, вроде все работает как надо, даже хлебные крошки правильно обрабатывает(не создавая лишнего)... помниться еще что-то думал оптимизировать (эххх, надо записывать что делаю )... Вобщем я бы сказал что подумать стоит о том есть ли желание (возможности, знания, время - нужное подчеркнуть) чтоб довести до ума ;-). Релиз у них давно не обновлялся еще. Ну а в dev - вроде за август. В общем когда речь зашла о подумать - я подумал о закрытии проекта речь идет.
В настоящее время рулят CCK и Views !!!!
Категории (Category) работает отлично. Действительно, есть некоторые шероховатости с генерацией меню. Необходимо "въехать" в тонкости работы cac_lite (дабы не пропадал контент при включении системы доступа). Но в целом достоинства модуля с лихвой перекрывают все недостатки.
Год назад пытался отказаться от категорий и воспользоваться взамен набором модулей из группы таксономий. На долго отказа не хватило. К хорошему быстро привыкаешь. Хотя нет, не быстро . Пришлось повозится, пока освоился и выявил основные ямы. Зато модуль помог реализовать 5-и уровневую систему доступа к материалам, сложную иерархию групп пользователей, многомерную категоризацию материала "на лету" ("на лету" - это значит, что множество категорий расширяется пользователями, а модуль обеспечивает представление полного актуального списка категорий - для навигации по структуре просто неоценимая возможность), опять же автоматом генерируются меню и "крошки" (как упоминалось с меню необходимо повозиться) и т.д.
Что касается уполинаемых bug, то это, по-видимому, имеются в виду "ошибки логики", т.е. "странности" и "сложности" в поведении модуля (что неизбежно, имея такое количество опций настройки). Сам же модуль работает устойчиво, без реальных свалов. Всем бы так.
Category - это не просто пушка, а целая гаубица. И применять её стоит, естестно, не по воробьям.
PS
Всё сказанное верно для 4.7. С версией под 5.* только начинаю знакомиться.
Ни кто не говорит, что модуль Category не работает.
Он работает, еще как.
Этот модуль хорош для небольших сайтов так как при наличии 10000 нодов мы соответственно имеем 10000 пунктов меню. А каждый раз при загрузке страницы загружается ВСЕ меню. Да еще при сохранении ноды происходит ребилд всего меню.
Короче тормоза мы получаем реальные.
Тот же функционал, собранный на CCK + Views + несколько доп модулей позволит обслуживать на порядки больше запросов страниц.
Второй пункт: термины таксономии хранятся в базе как целые числа и индексируются таким же образом, поэтому любая выборка терминов таксономии происходит очень очень быстро.
Категории это ноды, соответственно при выборке приходиться задействовать весь механизм загрузки ноды, а это на много дольше чем для терминов таксономии.
По первому - хранятся только меню категорий (к документам их создавать не надо), исправляется патчем на офсайте (скоро буудет в модуле). 2-е - можно оптимизировать (подробнее уже не помню).
Вы писали:
По первому - хранятся только меню категорий (к документам их создавать не надо)
в концепции модуля категорий хлебные крошки создаются из пунктов меню.
Нет меню - нет хлебных крошек.
по второму, ну не знаю. оптимизируй или нет, но taxonomy_get_term явно всегда быстрее node_load
Поставила оба модуля: Category + Active select.
Завела контейнер Выберите животного
Завела контейнр Выберите породу ( всё как написано)
Завожу категорию Кошка - не могу сохранить, тк система просит выбрать родителя..а список родителей для Кошка -пуст...
В чём может быть проблема? подскажите?
Посмотрите еще раз пункт 3 внимательней.
Дальнего предка выбирайте БЕЗ звездочки.
Так и делаю..без звёздочки.
Может быть в пятым Друпалом это всё дело не работает..? (у меня версия 5.5)
Вот здесь человек тоже видимо не смог воспльзоваться комбинацией модулей на пятом друпале:
http://www.drupal.ru/node/4938
Возможно вместо комбинации Category + Active select присутствующим здесь подойдёт комбинация стандартной таксономии + Hierarchical Select (http://drupal.org/project/hierarchical_select , демо -- http://wimleers.com/demo/hierarchical-select)?
Автор Category заявил, что в D6 тормозов должно быть меньше, потому что меню переработано и теперь не будет загружаться полностью.
2 Вячеслав
а можно сделать вложенность 4 пункта
у меня получилось только три
может нужно что-то где-то подкрутить
Простите меня великодушно, но я уже не слежу за развитием этой технологии.
Я отказался от категорий по причинам, приведенным выше.
Если что то можно сделать без категорий, то я делаю.
Если нет, то я говорю заказчику что это невозможно и мы ищем другие варианты.
ЗЫ. Впрочем второй вариант чисто теоритический, такого еще не было.
seaji, а ты не пробовал заменить category модулем Node Relativity? на мой взгляд он _похож_ по действию на category....
Пользуюсь полями "Node Reference" и "User Reference" ну и самой таксономией тож