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