Category + Active select

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

Аватар пользователя seaji seaji 15 ноября 2006 в 19: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.zip27.4 КБ

Комментарии

Аватар пользователя yuriyb yuriyb 8 апреля 2007 в 18:32

и второй вопрос как это все автоматизировать ?

а не вводить категории вручную

т е если есть уже список стран и городов как xml file

нужно сделать что то вида

http://ajax.zervaas.com.au/examples/CountryRegionCityJax/

Аватар пользователя seaji seaji 10 ноября 2007 в 16:02

В настоящее время нужно подумать 7 раз прежде чем использовать модуль категорий. А с какими еще модулями работает Active Select не знаю. Кто нибудь знает?

Аватар пользователя seaji seaji 23 ноября 2007 в 0:11

Почему что?
Не стоит использовать модуль категорий или я не знаю с какими модулями работает 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!

А если по второму, то уж не обижайтесь на меня, не образованный я.

Аватар пользователя orbisnull orbisnull 23 ноября 2007 в 8:22

Естественно по первому. О some longstanding bugs - когда использовал лазил в код, вроде все работает как надо, даже хлебные крошки правильно обрабатывает(не создавая лишнего)... помниться еще что-то думал оптимизировать (эххх, надо записывать что делаю Wink )... Вобщем я бы сказал что подумать стоит о том есть ли желание (возможности, знания, время - нужное подчеркнуть) чтоб довести до ума ;-). Релиз у них давно не обновлялся еще. Ну а в dev - вроде за август. В общем когда речь зашла о подумать - я подумал о закрытии проекта речь идет.

Аватар пользователя Pozniy Pozniy 23 ноября 2007 в 10:21

Категории (Category) работает отлично. Действительно, есть некоторые шероховатости с генерацией меню. Необходимо "въехать" в тонкости работы cac_lite (дабы не пропадал контент при включении системы доступа). Но в целом достоинства модуля с лихвой перекрывают все недостатки.

Год назад пытался отказаться от категорий и воспользоваться взамен набором модулей из группы таксономий. На долго отказа не хватило. К хорошему быстро привыкаешь. Хотя нет, не быстро Smile . Пришлось повозится, пока освоился и выявил основные ямы. Зато модуль помог реализовать 5-и уровневую систему доступа к материалам, сложную иерархию групп пользователей, многомерную категоризацию материала "на лету" ("на лету" - это значит, что множество категорий расширяется пользователями, а модуль обеспечивает представление полного актуального списка категорий - для навигации по структуре просто неоценимая возможность), опять же автоматом генерируются меню и "крошки" (как упоминалось с меню необходимо повозиться) и т.д.

Что касается уполинаемых bug, то это, по-видимому, имеются в виду "ошибки логики", т.е. "странности" и "сложности" в поведении модуля (что неизбежно, имея такое количество опций настройки). Сам же модуль работает устойчиво, без реальных свалов. Всем бы так.

Category - это не просто пушка, а целая гаубица. И применять её стоит, естестно, не по воробьям.

PS
Всё сказанное верно для 4.7. С версией под 5.* только начинаю знакомиться.

Аватар пользователя seaji seaji 23 ноября 2007 в 16:49

Ни кто не говорит, что модуль Category не работает.
Он работает, еще как.
Этот модуль хорош для небольших сайтов так как при наличии 10000 нодов мы соответственно имеем 10000 пунктов меню. А каждый раз при загрузке страницы загружается ВСЕ меню. Да еще при сохранении ноды происходит ребилд всего меню.
Короче тормоза мы получаем реальные.

Тот же функционал, собранный на CCK + Views + несколько доп модулей позволит обслуживать на порядки больше запросов страниц.

Второй пункт: термины таксономии хранятся в базе как целые числа и индексируются таким же образом, поэтому любая выборка терминов таксономии происходит очень очень быстро.
Категории это ноды, соответственно при выборке приходиться задействовать весь механизм загрузки ноды, а это на много дольше чем для терминов таксономии.

Аватар пользователя orbisnull orbisnull 23 ноября 2007 в 18:40

По первому - хранятся только меню категорий (к документам их создавать не надо), исправляется патчем на офсайте (скоро буудет в модуле). 2-е - можно оптимизировать (подробнее уже не помню).

Аватар пользователя seaji seaji 23 ноября 2007 в 20:28

Вы писали:
По первому - хранятся только меню категорий (к документам их создавать не надо)

в концепции модуля категорий хлебные крошки создаются из пунктов меню.
Нет меню - нет хлебных крошек.

по второму, ну не знаю. оптимизируй или нет, но taxonomy_get_term явно всегда быстрее node_load

Аватар пользователя Гость Гость (не проверено) 16 января 2008 в 13:05

Поставила оба модуля: Category + Active select.
Завела контейнер Выберите животного
Завела контейнр Выберите породу ( всё как написано)
Завожу категорию Кошка - не могу сохранить, тк система просит выбрать родителя..а список родителей для Кошка -пуст...
В чём может быть проблема? подскажите?

Аватар пользователя Гость Гость (не проверено) 17 января 2008 в 7:26

Так и делаю..без звёздочки.
Может быть в пятым Друпалом это всё дело не работает..? (у меня версия 5.5)

Аватар пользователя Natalie Natalie 17 января 2008 в 20:44

Автор Category заявил, что в D6 тормозов должно быть меньше, потому что меню переработано и теперь не будет загружаться полностью.

Аватар пользователя yasik yasik 4 февраля 2008 в 18:30

2 Вячеслав
а можно сделать вложенность 4 пункта

у меня получилось только три
может нужно что-то где-то подкрутить

Аватар пользователя seaji seaji 5 февраля 2008 в 1:47

Простите меня великодушно, но я уже не слежу за развитием этой технологии.
Я отказался от категорий по причинам, приведенным выше.
Если что то можно сделать без категорий, то я делаю.
Если нет, то я говорю заказчику что это невозможно и мы ищем другие варианты.
ЗЫ. Впрочем второй вариант чисто теоритический, такого еще не было.

Аватар пользователя Dan Dan 5 февраля 2008 в 20:17

seaji, а ты не пробовал заменить category модулем Node Relativity? на мой взгляд он _похож_ по действию на category....