DLRequest - запуск сниппетов с параметрами из get/post
Сниппет разработан для замены Ditto с экстендером request по просьбе Extremum и на его же средства, за что большое спасибо.
Сниппет принимает значения из post или get-массива и использует их в качестве параметров для запуска другого сниппета. Изначально планировалась работа только с DocLister (отсюда и название), но в итоге можно вызывать любой сниппет. Тем не менее, наличие установленного DocLister'а обязательно.
DLRequest умеет не только передавать параметры, но и строить форму для управления этими самыми параметрами, без костылей типа:
<?php
//[!selected? &field=`ditto_id1_sortDir` &value=`DESC`!]
if ($_REQUEST[$field] == $value) {
echo "selected";
}
Важный момент – возможные значения параметров задаются разработчиком, то есть если в форме для выбора количества документов на странице указано «10, 20, 50, 100», то подставить руками url?display=100500 не получится – такой параметр будет просто проигнорирован.
Предусмотрена также возможность сохранять значения параметров, которые передаются из браузера для других сниппетов, например, для DocLister это будет параметр page. То есть если в списке документов вы находитесь на странице 5, то после смены, например, направления сортировки, все равно останетесь на странице 5.
Теперь приведу пример вызова, из которого понятно, как это все работает:
<div>
[!DLRequest?
&runSnippet=`DocLister`
&parents=`2`
&tpl=`@CODE:.
`
&paginate=`pages`
&display=`0`
&rqParams=`{
"sortBy":{
"id":"По id",
"pagetitle":"По pagetitle"
},
"sortDir":{
"asc":"По возрастанию",
"desc":"По убыванию"
},
"display":{
"1":"1 документ",
"3":"3 документа",
"5":"5 документов"
}
}`
&rqParamsNames=`{
"sortBy":"Сортировать по",
"sortDir":"Порядок",
"display":"Результатов на странице"
}`
&selectedClassName=`selected`
& paramsForm=`paramsForm`
&keepParams=`page`
& paramsOwnerTPL=`@CODE:
`
& param.ownerTPL=`@CODE:
`
& param.tpl=`@CODE:
`
&sortBy.tpl=`@CODE:
`
&display.ownerTPL=`@CODE:
`
&keepTpl=`@CODE:
`
!]
</div>
После & пробелы стоят, потому что иначе редактор подменяет символы.
Автор: Pathologic