Вывод сниппета из чанка другого сниппета через Ajax
Всем привет!
Подскажите, пожалуйста, мб кто-то сталкивался или просто знает решение: есть такой сниппет, который при клике на определенный элемент выводит pdoResources с заданными параметрами
Подскажите, пожалуйста, мб кто-то сталкивался или просто знает решение: есть такой сниппет, который при клике на определенный элемент выводит pdoResources с заданными параметрами
<?php
if ($_SERVER['HTTP_X_REQUESTED_WITH'] != 'XMLHttpRequest') {return;}
$action = filter_input(INPUT_POST,'action');
if (empty($action)) {return;}
$res = '';
switch ($action) {
case 'pdoResources':
$params = array();
$params['parents'] = filter_input(INPUT_POST, 'parents', FILTER_SANITIZE_NUMBER_INT);
$params['resources'] = filter_input(INPUT_POST, 'resources', FILTER_SANITIZE_NUMBER_INT);
$params['tpl'] = filter_input(INPUT_POST,'tpl');
$params['includeTVs'] = filter_input(INPUT_POST,'includeTVs');
$res = $modx->runSnippet('pdoResources', $params);
break;
}
if (!empty($res)) {
die($res);
}
JS выглядит так<script>
$('.trigger').on('click', function() {
var data = {
action: 'pdoResources',
parents: '25',
resources: objectId,
tpl: 'tpl.mapObjectsItem',
includeTVs: 'objectStatus'
};
$.post('/ajax/', data, function(data) {
$('.current-object').empty().prepend(data);
})
});
</script>
В чанке tpl.mapObjectsItem подгружается ms2Gallery...
[[!ms2Gallery?
&resources = `[[+id]]`
&tpl = `tpl.ms2GalleryCatalog`
&frontend_css = ``
&frontend_js = ``
]]
...
Все было бы замечательно, если бы не одно НО — когда на страницу при клике загружается нужный ресурс, вместо того, чтобы выполнить сниппет ms2Gallery, он выводится в виде текста, т.е. так[[!ms2Gallery? &resources = `61` &tpl = `tpl.ms2GalleryCatalog` &frontend_css = `` &frontend_js = `` ]]
Комментарии: 1
Решение найдено:
<?php
...
$res = $modx->runSnippet('pdoResources', $params);
// Добавляем следующие 3 строки:
$maxIterations= (integer) $modx->getOption('parser_max_iterations', null, 10);
$modx->getParser()->processElementTags('', $res, false, false, '[[', ']]', array(), $maxIterations);
$modx->getParser()->processElementTags('', $res, true, true, '[[', ']]', array(), $maxIterations);
...
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.