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.zip27.4 кб

Комментарии


Настройки просмотра комментариев

Выберите нужный метод показа комментариев и нажмите "Применить"
Опубликовано Dan в ср, 15/11/2006 - 20:11.

Спасибо за статью! :)


Опубликовано Andrew Stephanoff в сб, 18/11/2006 - 23:39.

А можно ли Active Select использовать для создания подобных полей в профиле пользователя?


Опубликовано seaji в пн, 20/11/2006 - 08:17.

Со стандартным модулем профилей - думаю, что нет. Если Вы используете Node Profile, то да.


Опубликовано jason32 в пн, 20/11/2006 - 13:30.

спасибо конечно, за перевод, но вот ещё был бы файл общий, а то пофайлово муторно локализовывать.....


Опубликовано yuriyb в вс, 08/04/2007 - 14:27.

Спасибо за статью! :)

есть некоторые вопросы

>>Если Вы используете Node Profile, то да.
см также http://drupal.ru/node/4665

а как создать подобные поля в профиле пользователя ?


Опубликовано yuriyb в вс, 08/04/2007 - 14:32.

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

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

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

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

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


Опубликовано shamaner в пт, 09/11/2007 - 16:58.

- для трекера


Опубликовано seaji в сб, 10/11/2007 - 13:02.

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


Опубликовано orbisnull в чт, 22/11/2007 - 17:52.

Почему?


Опубликовано seaji в чт, 22/11/2007 - 21: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!

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


Опубликовано seaji в чт, 22/11/2007 - 21:13.

В настоящее время рулят CCK и Views !!!!


Опубликовано orbisnull в пт, 23/11/2007 - 05:22.

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


Опубликовано Pozniy в пт, 23/11/2007 - 07:21.

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

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

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

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

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


Опубликовано seaji в пт, 23/11/2007 - 13:49.

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

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

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


Опубликовано orbisnull в пт, 23/11/2007 - 15:40.

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


Опубликовано seaji в пт, 23/11/2007 - 17:28.

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

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

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


Опубликовано Гость (гостевой логин) в ср, 16/01/2008 - 10:05.

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


Опубликовано seaji в ср, 16/01/2008 - 12:47.

Посмотрите еще раз пункт 3 внимательней.
Дальнего предка выбирайте БЕЗ звездочки.


Опубликовано Гость (гостевой логин) в чт, 17/01/2008 - 04:26.

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


Опубликовано Гость (гостевой логин) в чт, 17/01/2008 - 05:02.

Вот здесь человек тоже видимо не смог воспльзоваться комбинацией модулей на пятом друпале:
http://www.drupal.ru/node/4938


Опубликовано Dan в чт, 17/01/2008 - 16:17.

Возможно вместо комбинации Category + Active select присутствующим здесь подойдёт комбинация стандартной таксономии + Hierarchical Select (http://drupal.org/project/hierarchical_select , демо -- http://wimleers.com/demo/hierarchical-select)?


Опубликовано Natalie в чт, 17/01/2008 - 17:44.

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


Опубликовано yasik в пн, 04/02/2008 - 15:30.

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

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


Опубликовано seaji в пн, 04/02/2008 - 22:47.

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


Опубликовано Dan в вт, 05/02/2008 - 17:17.

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


Опубликовано seaji в ср, 06/02/2008 - 11:07.

Пользуюсь полями "Node Reference" и "User Reference" ну и самой таксономией тож :)