Доброго дня Николай. Спасибо за помощь. Да в данном случае array(«id» => $modx->getPlaceholder('id') id еще не подгружен. Такая конструкция [[!Gallery?album=`[[!getResourceField?id=`[[+id]]`]].........`........]] не работает через аякс.
Попробую объяснить что вообще хочу. У меня есть список ресурсов, которые нужно подгружать через аякс, после ввода в input фразы, часть фразы содержащей pagetitle ресурса. В общем с фильтрацией ресурсов по pagetitle.
Есть сниппет ajaxResources
<?php if ($_SERVER['HTTP_X_REQUESTED_WITH'] != 'XMLHttpRequest') {return;} $action = filter_input(INPUT_POST,'action'); if (empty($action)) {return;} $res = ''; switch ($action) { case 'getResources': $params = array(); $params['tpl'] = '@INLINE <div id="[[+id]]" class="pic">[[+idx]]</div> <div class="item"> <span class="title">Гостиница [[+pagetitle]]</span> <div class="foto">'. $modx->runSnippet("Gallery", array("album" => $modx->runSnippet("getResourceField", array("id" => [[+id]], "field" =>"GalleryAlbum", "isTV" =>"1")) , "thumbTpl" => "hotelTplThumbtop","limit" => "1")).' </div> <div class="inf"> <span class="adress">Адрес: [[+tv.adress]]</span><div class="clear"></div> <span class="metro">[[+tv.metro_vo]]</span><div class="clear"></div> <span class="metro">[[+tv.metro_p]]</span><div class="clear"></div> <a class="grey" href="/[[+alias]]/">О гостинице</a> <a class="blue" href="/">Номера</a> <a class="blue" href="/">Цены</a><div class="clear"></div> <p class="trans">[[+introtext]] </p> </div> <div class="buttons"> <span class="price">От [[+tv.min_price]] руб/сутки</span><div class="clear"></div> <a class="onmap"><img src="images/onmap.png"/> Показать на карте</a> <a class="buy" href="/"><img src="images/buy.png"/> Забронировать</a> <a class="show"><img src="images/show.png"/> Раскрыть</a><div class="clear"></div> </div> </div> <div class="clear"></div>'; $ltr = filter_input(INPUT_POST,'ltr'); $params['where'] = '{"pagetitle:LIKE":"%'.$ltr.'%"}'; $params['includeTVs'] = '1'; $params['processTVs'] = '1'; $params['parents'] = filter_input(INPUT_POST, 'parents', FILTER_SANITIZE_NUMBER_INT); $res = $modx->runSnippet('getResources', $params); break; } if (!empty($res)) { die($res); }
Есть input
<input id="findit" class="input" onfocus="if(this.value=='Поиск гостиницы по названию') this.value='';" onblur="if(this.value=='') this.value='Поиск гостиницы по названию';" value="Поиск гостиницы по названию" data-action="getResources" data-tpl="hotelTpl" data-parents="100" data-ltr=""/> <div id="input"></div>
аякс обработчик
$('div#findit_eaner input').livequery('change',function(){ $x = $('div#findit_eaner input').val(); $('div#findit_eaner input').replaceWith('<input class="input" data-action="getResources" data-tpl="hotelTpl" data-parents="100" data-ltr="'+$x+'" />'); // Ajax post-запрос к странице, выдающей ресурсы (в ней сниппет ajaxResources) $.ajax({ async: false, url:"/find.php", type: "POST", data: $('div#findit_eaner input').data(), success: function(data) { $('#input').append(data); } }) })