Почему возникают проблемы с выводом сниппетов в MODX Revolution через чанки?

Есть MODX Revolution 2.7.1. Уже далеко не в первый раз (и на предыдущих версиях modx) возникают проблемы с выводом сниппетов. Не могу понять почему "разрывается" сниппет и как это исправить.

Вот код:
[[!getPage:empty=`<p>Список материалов в данном разделе пуст</p>`?
      &elementClass=`modSnippet`
      &element=`getResources`
      &tpl=`mainNewsTpl`
      &limit=`10`
      &includeContent=`1`
      &includeTVs=`1`
      &parents=`[[*id]]`
      &pageNavOuterTpl=`[[+prev]][[+pages]][[+next]]`
      &pageNextTpl=`[[$pageNextTplCustom]]`
      &pagePrevTpl=`[[$pagePrevTplCustom]]`
      &hideContainers=`1`
      ]]


А вот что выводится на фронтенде:
5cc9d0346938d905320121.png

В данном случае еще все параметры входные сниппет подтянул и обработал корректно, но зачастую обработка входных параметров бывает прерывается на каком-то определенном. Конкретно в этом проекте уже раз 4-й возникает такая проблема и я совершенно не понимаю из-за чего. Кто с таким сталкивался и как это можно вылечить? В базе данных вроде все лежит в корректном виде и никаких конструкций, которые способствовали бы такому поведению сниппета я не наблюдаю.
  • Вопрос задан
  • 126 просмотров
Пригласить эксперта
Ответы на вопрос 1
volfing
@volfing Автор вопроса
Пока временно "закостылил", надеюсь что причина и решение найдется.

Создал сниппет "snippetRunner":
<?php
if(empty($snippet)){
    return;
}

if(!empty($params)){
    $params = str_replace("`", "", $params);
    $params = json_decode($params, true);
    
    foreach($params as $key => $value){
        if(strpos($key, "htmldecode_") !== false){
            $params[str_replace("htmldecode_", "", $key)] = htmlspecialchars_decode($value);
        }
    }
}

$content = $modx->runSnippet($snippet, !empty($params) ? $params : []);

return !empty($content) ? $content : (!empty($params["if_empty"]) ? $params["if_empty"] : "");


В шаблоне прописал:
[[!snippetRunner? &snippet=`getPage` &params=`{
    "elementClass":"modSnippet", 
    "element": "getResources", 
    "tpl": "mainNewsTpl", 
    "tvFilters":"tags==%[[!getRequestValue? &param=`tag`]]%",
    "limit": 10,
    "includeContent": 1,
    "includeTVs": 1,
    "hideContainers": 1,
    "parents": 2,
    "htmldecode_pageNavOuterTpl": "[[$pageNavOuterTplCustom:htmlent]]",
    "htmldecode_pageNextTpl": "[[$pageNextTplCustom:htmlent]]",
    "htmldecode_pagePrevTpl": "[[$pagePrevTplCustom:htmlent]]",
    "if_empty": "<p>Список материалов в данном разделе пуст</p>"
    }`
    ]]
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы