Некорректная работа сниппета Markdown
        Столкнулся со странным поведением сниппета Markdown, когда его несколько раз вызываю на странице с опцией 'escapeTags' => false (выключает экранирование тэгов MODX, чтоб всякие ссылки обрабатывались).
Выражается в том, что во все места вызова он вставляет обработанный контент первого вызова. При чем не важно что у него было на входе: 'field' => 'content' или же 'input' => $_modx->resource.content
В случаях, когда вызывается pdoResources и в чанке нужно обработать каждый introtext или контент, либо на странице нужно обработать и introtext и content, приходится, например, включать экранирование тэгов, что не очень хорошо.
Например
В шаблоне:
В итоге покопавшись, вроде бы нашел причину в сниппете:
Поменял вот так и заработало!
Теперь при вызове
Может можно было как-то элегантнее сделать?
    
    
                                                                                
            
        0
    Выражается в том, что во все места вызова он вставляет обработанный контент первого вызова. При чем не важно что у него было на входе: 'field' => 'content' или же 'input' => $_modx->resource.content
В случаях, когда вызывается pdoResources и в чанке нужно обработать каждый introtext или контент, либо на странице нужно обработать и introtext и content, приходится, например, включать экранирование тэгов, что не очень хорошо.
Например
В шаблоне:
{'Markdown' | snippet : [
    'input' => '111 {2 | url}',
    'escapeTags' => false
]}
{'Markdown' | snippet : [
    'input' => '222 {3 | url}',
    'escapeTags' => false
]}
{'Markdown' | snippet : [
    'input' => '333 {4 | url}',
    'escapeTags' => false
]}Получается:111 /sitemap.xml
111 /sitemap.xml
111 /sitemap.xmlЕсли включить экранирование:{'Markdown' | snippet : [
    'input' => '111 {2 | url}',
    'escapeTags' => true
]}
{'Markdown' | snippet : [
    'input' => '222 {3 | url}',
    'escapeTags' => true
]}
{'Markdown' | snippet : [
    'input' => '333 {4 | url}',
    'escapeTags' => true
]}Получается без копий, но и без обработанных тэгов:111 {2 | url}
222 {3 | url}
333 {4 | url}Если же чередовать true и false, то такие повторы тоже присутствуют.В итоге покопавшись, вроде бы нашел причину в сниппете:
// Parse MODX tags
if (empty($escapeTags)) {
    $input = $modx->newObject('modChunk')->process(null, $input); // <---- вот тут
} else {
    $input = preg_replace('/=`(.*?)`/', '=`$1`', $input);
}С включенной настройкой pdotools_fenom_parser, видимо, не корректно работает такая конструкция.Поменял вот так и заработало!
if (empty($escapeTags)) {
    if ($modx->getOption('pdotools_fenom_parser', null, false, true) && ($pdo = $modx->getService('pdoTools'))) {
        $input = $pdo->parseChunk('@INLINE ' . $input);
    } else {
        $input = $modx->newObject('modChunk')->process(null, $input);
    }
} else {
    $input = preg_replace('/=`(.*?)`/', '=`$1`', $input);
}т.е. если включен парсер на страницах, то обработать инпут через него, а иначе — через стандартный MODX.Теперь при вызове
{'Markdown' | snippet : [
    'input' => '111 {2 | url}',
    'escapeTags' => false
]}
{'Markdown' | snippet : [
    'input' => '222 {3 | url}',
    'escapeTags' => false
]}
{'Markdown' | snippet : [
    'input' => '333 {4 | url}',
    'escapeTags' => false
]}получается всё правильно111 /sitemap.xml
222 /robots.txt
333 /404Хотелось бы услышать мнения о корректности такого решения :) Может можно было как-то элегантнее сделать?