Операторы И/ИЛИ в модуле таксономии и адресах ссылок

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

Аватар пользователя direqtor direqtor 8 мая 2008 в 11:53

Хотелось бы узнать стоит ли модуль таксономии небольшой доработки?
Касается это ссылок на страницы где показываются ноды принадлежащие нескольким терминам таксономии одновременно (операция «И») или хотя бы одному из них (операция «ИЛИ»). Ссылка при этом формируется taxnomy/term/2+5+3 или taxnomy/term/2,5,3 и обрабатывается модулем taxonomy.

У обоих возможностей заложенных разработчиками Drupal есть недостаток. Вне режима чистых ссылок оператор «плюс» преобразуется в пробел (специальное значение для параметров запроса), потому в модуле таксономии парсится еще и пробел. Оператор же «запятая» при пропускании его через функцию друпала l() превращается в код со знаком %. Связано это опять со спецзначением запятой, иногда она заменяет амперсанд (&).

У себя в блоге я уже описывал один хак модуля таксономии, но мне кажется стоит еще поразмышлять.

Внимательное рассмотрение небуквенноцифровых символов показывает, что безопасными для составления гиперссылок являются только три: «точка» (.), «дефис» (-) и «нижнее подчеркивание» (_).

Мне кажется подходящими в качестве оператора И будет «дефис», а в качестве оператора ИЛИ - «нижнее подчеркивание». Хотелось бы знать мнение сообщества.

Доработка, кстати, очень простая - выше описывал.

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

Комментарии

Аватар пользователя axel axel 10 мая 2008 в 15:04

В старых версиях друпала был принят такой синтаксис /or/1/2/3 и /and/1/2/3 - на мой взгляд было очень наглядно. Затем его заменили на вроде как более понятную людям инфиксную нотацию 1,2,3 и 1+2+3.

Аватар пользователя Dan Dan 11 мая 2008 в 18:55

есть модуль taxonomy_forceall - лучше всего взять его за основу и добавить нужную функциональность.
насколько я помню, он использует для преобразования пути хук hook_init

Аватар пользователя xakudu xakudu 13 августа 2012 в 18:27

"RxB" wrote:
На вьюс

Ага, но это вывод. Тут другая задача - передать несколько терминов в качестве аргументов.