Здравствуйте.
Возникла такая идея — сделать с помощью Ditto -> request фильтрацию по каталогу (
со стороны пользователя), используя html-форму(checkbox или multiple select) где использовать тэги, как параметры для фильтрации.
Напомню, что расширение Request позволяет ditto принимать и обрабатывать параметры, пришедшие методом GET.
Таким образом в ditto-параметр &tags можно поместить значения какого-либо TV и сделать фильтр соответствующих документов, отправляя данные с html-формы методом get.
Проблема в том, что html форма, которую придётся использовать для формирования GET запроса, передаёт параметры поочереди, так, что ditto обрабатывает только самую поледнюю переменную.
index.php?id=1&ditto_tags=param1&ditto_tags=param2&ditto_tags=param3
А request понимает, только когда тэги разделены запятой
index.php?id=1&ditto_tags=param1,param2,param3
Какие могут быть способы решения проблемы?
(Может с помощью javascript «научить» html-форму передавать параметры через запятую, или изменить сам request, чтобы понимал поочерёдные параметры?)
Может быть, подобный фильтр реализуем как-то подругому?
Спасибо большое за внимание к проблеме!
РЕШЕНИЕ:
Создан сниппет [[GetStringMod]], который преобразует полученный методом GET значения параметров, в вид, приемлемый для ditto, т.е. поочередно, через запятые;
В моем примере три параметра формы priority, place, style (принимают значения из input selelct'а).
$Priority = isset($_GET["priority"]) ? $_GET["priority"] : false;
$Place = isset($_GET["place"]) ? $_GET["place"] : false;
$Style = isset($_GET["style"]) ? $_GET["style"] : false;
if ($Priority=="priority") $Priority="";
if ($Place=="place") $Place="";
else $Place=','.$Place;
if ($Style=="style")$Style="";
else $Style=','.$Style;
echo $Priority.$Place.$Style;
Таким образом GET запрос например
index.php?tags=priority1&tags=style1&tags=place1
преобразуется в priority1,style1,place1
Далее он(сниппет) помещен в вызов ditto
[!Ditto? &startID=`id` &tpl=`list-output` &display=`all` &tagDelimiter=`,` &tags=`[!GetStringMod!]` &tagData=`priority,style,place` &tagMode=`onlyTags` &sortBy=`createdon` &sortDir=`ASC` &extenders=`request`!]
И дитто выбирает значения подкаталога только по пришедшим, с помощью расширения request, тэгам (параметр &tags)
Всё, надеюсь это кому-нибудь пригодится :)