Поддержать Проект

Обратная связь

[MODX] Guru
  • Информация
  • Разработчикам
  • Дополнения
    • DocLister
    • DLMenu
    • DLCrumbs
    • DLBuildMenu
    • DLLastViews
    • DLSiblings
    • DLRequest
    • DLglossary
    • DLSitemap
    • DocInfo
    • FormLister
    • Wayfinder
    • phpthumb
    • LikeDislike
    • eForm
    • Ditto
    • multiTV
    • AjaxMegaSearch
    • AjaxSearch
    • WebLoginPE
    • Breadcrumbs
    • CodeMirror
    • AnythingRating
    • Easy Newsletter
    • FirstChildRedirect
    • OpenGraphTags
    • ddTypograph
    • TagSaver
    • BlackList
    • CfgTv
    • ModxAccount
    • Forgot Manager Login
    • GetField
    • if
    • Jot
    • ListChild
    • ListIndexer
    • ManagerManager
    • ddMMEditor
    • MaxiGallery
    • MemberCheck
    • ddGetMultipleField
    • MetaX
    • MODxBB и phpBB
    • Yams
    • Personalize
    • PHx
    • Reflect
    • tagLinks
    • TransAlias
    • TvTagCloud
    • UltimateParent
    • WebSignup
    • WebLogin
    • countViews
    • thumb
    • imageCaptor
    • optimizeJPG
    • Preview Next
    • Shopkeeper
    • SiteMap
    • Sass
    • Selector
    • SimpleGallery
    • SimpleTube
    • SimpleFiles
    • Star Rating
    • MinifyX
    • adminNav
    • SimplePolls
    • CResource
    • MODxAPI
    • customTables
    • HtmlInLine
    • HtmlMinModxEvo
    • SHKUserProfile
    • PickDocsInTree
    • evoSearch
    • editDocs
    • PageBuilder
    • HybridAuth
    • Compare
    • alterTitle
  • Виджеты
  • Уроки
  • Разработчики
  • Готовые примеры
  • Блог
  • Конфиги
  • HTML коды
© [MODX] Guru
  • Дополнения
  • avatar
    • Автор: Pathologic
    • HybridAuth
    • DLSitemap
    • SimplePolls
    • Selector
    • DLMenu
    • LikeDislike
    • SimpleGallery
    • SimpleTube
    • FormLister

DLRequest - запуск сниппетов с параметрами из get/post

  • Дополнения
  • DLRequest
2552

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.

Теперь приведу пример вызова, из которого понятно, как это все работает:

[+paramsForm+]
<div>
	[!DLRequest? 
	&runSnippet=`DocLister` 
	&parents=`2` 
	&tpl=`@CODE:

[+id+]. [+pagetitle+]

` &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:
[+keepParams+] [+params+]
` &param.ownerTPL=`@CODE: ` &param.tpl=`@CODE: ` &sortBy.tpl=`@CODE: ` &display.ownerTPL=`@CODE: ` &keepTpl=`@CODE: ` !] </div> [+pages+]