Category + Active select
Прислано: seaji
ср, 15/11/2006 - 16:54
Модуль 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 кб |
- seaji's blog
- Для комментирования войдите или зарегистрируйтесь
Спасибо за статью! :)
- Для комментирования войдите или зарегистрируйтесь
А можно ли 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!
А если по второму, то уж не обижайтесь на меня, не образованный я.
- Для комментирования войдите или зарегистрируйтесь
В настоящее время рулят CCK и Views !!!!
- Для комментирования войдите или зарегистрируйтесь
Естественно по первому. О some longstanding bugs - когда использовал лазил в код, вроде все работает как надо, даже хлебные крошки правильно обрабатывает(не создавая лишнего)... помниться еще что-то думал оптимизировать (эххх, надо записывать что делаю ;-) )... Вобщем я бы сказал что подумать стоит о том есть ли желание (возможности, знания, время - нужное подчеркнуть) чтоб довести до ума ;-). Релиз у них давно не обновлялся еще. Ну а в dev - вроде за август. В общем когда речь зашла о подумать - я подумал о закрытии проекта речь идет.
- Для комментирования войдите или зарегистрируйтесь
Категории (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" ну и самой таксономией тож :)
- Для комментирования войдите или зарегистрируйтесь









Комментарии