$modx->getChunk в отдельном скрипте не работает вложенный сниппет

Подгружаю по ajax модальное окно. Если вызываю сниппет с $modx->getChunk на странице, то работают вложенные в чанк сниппеты, а, если загружаю чанк через отдельный php скрипт, то вложенный сниппет не обрабатывается. Это можно как-нибудь поправить?
подробнее под катом.

Написал скрипты
assets/components/ajaxmodal/js/web/default.js
function ajaxmodal(params){
	$.ajax({
	method: "POST",
	url: "/assets/components/ajaxmodal/action.php", ///ajaxmodalget.html /assets/components/ajaxmodal/action.php
	data: params, // params = {modal:ajaxmodal.modal.tpl, id: 23 и т.д.}
	dataType : "json",
	})
	.done(function( data ) {
		//console.info(data);
		$('body').append(data.modal);
		$('.ajaxmodal-overlay').addClass('active');
		$('.ajaxmodal').addClass('active');
		$('#ajaxmodal .zoom').zoom();
	});
}
$(document).on('click','.close-ajaxmodal',function(){
    $('.ajaxmodal-overlay').removeClass('active');
	$('.ajaxmodal').removeClass('active');
	$('#ajaxmodal').remove();
});
assets/components/ajaxmodal/action.php
<?php
define('MODX_API_MODE', true);
require_once dirname(dirname(dirname(dirname(__FILE__)))) . '/index.php';

$modx->getService('error', 'error.modError');
$modx->setLogLevel(modX::LOG_LEVEL_ERROR);

//print_r($_REQUEST);
echo json_encode(array(
	'modal'=> $modx->getChunk($_REQUEST['modal'],$_REQUEST)
));
и чанк ajaxmodal.modal.tpl
<div id="ajaxmodal">
	<!-- modal -->
	<div class="ajaxmodal-overlay">
		<div class="ajaxmodal">

			<a class="close-ajaxmodal">
				<svg viewBox="0 0 20 20">
				<path fill="#000000" d="M15.898,4.045c-0.271-0.272-0.713-0.272-0.986,0l-4.71,4.711L5.493,4.045c-0.272-0.272-0.714-0.272-0.986,0s-0.272,0.714,0,0.986l4.709,4.711l-4.71,4.711c-0.272,0.271-0.272,0.713,0,0.986c0.136,0.136,0.314,0.203,0.492,0.203c0.179,0,0.357-0.067,0.493-0.203l4.711-4.711l4.71,4.711c0.137,0.136,0.314,0.203,0.494,0.203c0.178,0,0.355-0.067,0.492-0.203c0.273-0.273,0.273-0.715,0-0.986l-4.711-4.711l4.711-4.711C16.172,4.759,16.172,4.317,15.898,4.045z"></path>
				</svg>
			</a><!-- close modal -->

			<div class="ajaxmodal-content">
				<!-- product_page -->
				<div class="product_page">

					<!-- wrap_product -->
					<div class="wrap_product">
						
						<div class="main_img zoom"><img src="[[+image:default=`[[++assets_url]]components/minishop2/img/web/ms2_small.png`]]" width="2149" height="1440"  alt=""/></div>
						<ul class="thumbs">
									[[!pdoResources?
	&class=`msProductFile`
	&sortby=`id`
	&sortdir=`asc`
    &where=`{"product_id":"[[+id]]","type:=":"image"}`
	&tpl=`@INLINE <li><img src="{{+url}}"></li>`
]]	
						</ul>
					</div>
					<!-- /wrap_product -->

					<!-- options -->
					<div class="options">
						<h2 class="title_tovar">[[+pagetitle]]</h2>
						<div class="price">[[+price]] бел.руб <a href="[[~[[+id]]]]">Подробнее о товаре</a></div>
						<form method="post" class="ms2_form">						
							<div class="count">
								<span>Количество</span>
								<select name="count">
									<option value="1">1</option>
									<option value="2">2</option>
									<option value="3">3</option>
									<option value="4">4</option>
									<option value="5">5</option>
									<option value="6">6</option>
								</select>
							</div>
					
							<button class="add_to_cart btn" type="submit" name="ms2_action" value="cart/add">ДОБАВИТЬ В КОРЗИНУ</button>

							<input type="hidden" name="id" value="[[+id]]">
							<input type="hidden" name="options" value="[]">

						</form>

					</div>
					<!-- /options -->

				</div><!-- /product_page -->
			</div><!-- content -->

		</div><!-- modal -->
	</div><!-- overlay -->
</div>
вложенный сниппет не отрабатывает
[[!pdoResources?
	&class=`msProductFile`
	&sortby=`id`
	&sortdir=`asc`
    &where=`{"product_id":"[[+id]]","type:=":"image"}`
	&tpl=`@INLINE <li><img src="{{+url}}"></li>`
]]
В модалке показывается это


Как-нибудь можно победить? Всю ночь промучился.
Александр Туниеков
30 июля 2018, 09:37
modx.pro
2 526
0
Поблагодарить автора Отправить деньги

Комментарии: 2

Николай
30 июля 2018, 13:39
0
Нужно не чанк вызывать, а парсер.
$input = $modx->getChunk($_REQUEST['modal'],$_REQUEST);
                    $maxIterations= (integer) $modx->getOption('parser_max_iterations', null, 10);
                    $modx->getParser()->processElementTags('', $input, false, false, '[[', ']]', array(), $maxIterations);
                    $modx->getParser()->processElementTags('', $input, true, true, '[[', ']]', array(), $maxIterations);
и дальше этот $input используй как душе угодно.
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
2