Динамический фильтр таксономии.

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

Аватар пользователя Gats Gats 31 октября 2009 в 23:10

Допустим имеются 2 словаря таксономии.

Словарь1:  |   Словарь2:
-А1        |   -A2
-B1        |   -B2
-C1        |   -C2

Требуется, чтобы при размещении этих словарей в блоках можно было бы осуществить динамическую фильтрацию контента по терминам, используя ссылки вида "/taxonomy/term/x,y"
Концепция:

<Блоки в исходном состоянии>

 _________________     
| Блок "Словарь1" |  
|_________________|
|                 |
|   *A1           |
|                 |
|   *B1           |
|                 |
|   *С1           |
|                 |
|_________________|
 _________________
| Блок "Словарь2" |  
|_________________|
|                 |
|   *A2           |
|                 |
|   *B2           |
|                 |
|   *С2           |
|                 |
|_________________|

1. При однократном нажатии на любой из терминов, например, "А1", он должен пометиться как активный и переместить нас на свою страницу "/taxonomy/term/А1";

 _________________     
| Блок "Словарь1" |  
|_________________|
|                 |
| [+]A1           | "/taxonomy/term/А1"
|                 |
|   *B1           |
|                 |
|   *С1           |
|                 |
|_________________|

а) при повторном нажатии на тот же термин(А1), он должен дезактивироваться, оставляя нас на текущей странице("/taxonomy/term/А1").

 _________________     
| Блок "Словарь1" |  
|_________________|
|                 |
|   *A1           | "/taxonomy/term/А1"
|                 |
|   *B1           |
|                 |
|   *С1           |
|                 |
|_________________|

2. В одном словаре может быть одновременно активных терминов только 1. Например, если А1 из "Словарь1" уже помечен как активный("/taxonomy/term/A1"), а при этом нажимают "B1" того же словаря (Словарь1), то "А1" дезактивируется, а "В1" активируется и перенаправляет нас на свою страницу "/taxonomy/term/B1".

<Было>

 _________________     
| Блок "Словарь1" |  
|_________________|
|                 |
| [+]A1           | "/taxonomy/term/А1"
|                 |
|   *B1           |
|                 |
|   *С1           |
|                 |
|_________________|

<Стало при клике на другой термин того же словаря>

 _________________     
| Блок "Словарь1" |  
|_________________|
|                 |
|   *A1           |
|                 |
| [+]B1           | "/taxonomy/term/B1"
|                 |
|   *С1           |
|                 |
|_________________|

3. Если в "Cловарь1" уже активен какой-либо термин(например, "А1" ("/taxonomy/term/A1")), и при этом нажимают любой термин(С2) из "Словарь2", то термин("А1") из "Словарь1" остается активным, а термин(С2) из "Словарь2" помечается также активным и перенаправляет нас на страницу пересекающихся активных терминов ("/taxonomy/term/A1,С2");

<По одному активных терминов в разных словарях>

 _________________     
| Блок "Словарь1" |  
|_________________|
|                 |
| [+]A1           |
|                 |
|   *B1           |
|                 |
|   *С1           |
|                 |
|_________________|
 _________________     
| Блок "Словарь2" |  
|_________________|
|                 |
|   *A2           |
|                 |
|   *B2           |
|                 |
| [+]С2           |"/taxonomy/term/A1,С2"
|                 |
|_________________|

а) если повторным нажатием дезактивируется "С2" из "Словарь2", то нас перенаправляет "А1" из "Словарь1" на свою страницу "/taxonomy/term/A1". И наоборот, если "А1" дезактивируется, то "С2" перенаправляет на страницу "/taxonomy/term/С2".

<дезактивация "С2" из "Словарь2">

 _________________     
| Блок "Словарь1" |  
|_________________|
|                 |
| [+]A1           | "/taxonomy/term/А1"
|                 |
|   *B1           |
|                 |
|   *С1           |
|                 |
|_________________|
 _________________     
| Блок "Словарь2" |  
|_________________|
|                 |
|   *A2           |
|                 |
|   *B2           |
|                 |
|   *С2           |
|                 |
|_________________|

-------------------
<дезактивация "А1" из "Словарь1">

 _________________     
| Блок "Словарь1" |  
|_________________|
|                 |
|   *A1           |
|                 |
|   *B1           |
|                 |
|   *С1           |
|                 |
|_________________|
 _________________     
| Блок "Словарь2" |  
|_________________|
|                 |
|   *A2           |
|                 |
|   *B2           |
|                 |
| [+]С2           |"/taxonomy/term/С2"
|                 |
|_________________|

4. Фильтр должен работать c:
* любой вложенностью терминов;
* любым количеством словарей;
* возможностью подключать к иерархии терминов словарей сторонние модули меню(например, jquerymenu)

Пробовал модуль taxonomy_filter, но, к сожалению, он работает по другой логике и не дает требуемого функционала.

Кто нибудь сталкивался с такой же задачей? Есть ли готовое решение? Можно ли такой фильтр создать при помощи модуля views?

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