Ошибки в пакете pdoTools версии 2.10.4

Василий, в первую очередь хотелось бы выразить Вам огромную благодарность за прекрасные компоненты.

Во вторых — по делу:
После обновления pdoTools до версии 2.10.4 (до этого была 2.10.2) перестали генерироваться страницы. При откате к предыдущей версии вс е прекрасно работает.

Ошибки возникают, только в том случае, если в вызове сниппета в параметре — указана JSON-строка…

Вот так — НЕ РАБОТАЕТ:
[[!pdoResources? 
	....
	&sortby=`{"menuindex":"ASC"}`
	....
]]
так тоже НЕ РАБОТАЕТ:
[[!pdoResources? 
	....
	&where=`{"template:=":"2"}`
	...
]]
а вот так — РАБОТАЕТ:
[[!pdoResources? 
	....
	&sortby=`menuindex`
	&sortdir=`ASC`
	....
]]
В логе ошибок: [2018-01-12 20:55:21] (ERROR @ /home/***/***/public_html/core/components/pdotools/model/pdotools/pdotools.class.php: 977) Unexpected token ':' in *** line 140, near '{«template:=»:' < — there

Аналогичные проблемы ИМЕННО С ВЕРСИЕЙ 2.10.4 описаны тут:
1. modx.pro/help/14061/
2. modx.pro/help/14113/
3. modx.pro/help/14121/

ЗАРАНЕЕ СПАСИБО ОТ ВСЕГО СООБЩЕСТВА!

UPDATE: лечится конечно это все легко, добавлением пробелом после фигурной скобки (т.е. приведением к такому виду &sortby=`{ «menuindex»:«ASC»} `), но это уже напоминает костыли… раньше таким образом приходилось экранировать только JavaScript'ы
Rover
12 января 2018, 18:22
modx.pro
1 777
0

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

Евгений Webinmd
13 января 2018, 00:33
0
отключайте fenom в настройках
    Василий Наумкин
    13 января 2018, 00:42
    +2
    Чтобы словить эту ошибку, нужно включить обработку Fenom для всех страниц сайта. А после включения этой настройки, продолжать вызывать сниппеты по-старинке, с указанием JSON параметров.

    Или вы переходите на Fenom, или нет
    {'!pdoResources' | snippet : [
    	...
    	'sortby' => ['menuindex' => 'asc']
    	...
    ]}
    Честно говоря, я не вижу в истории изменений, что именно послужило причиной этой ошибки.

    Ничего такого намеренно я не делал. В любом случае, если уж вы включаете Fenom для всего сайта — вызывайте все сниппеты через него.
      Rover
      13 января 2018, 12:25
      0
      Василий, спасибо за ответ.

      Обработка Fenom для всех страниц сайта включена. :(

      Вот другие настройки:
      parser_class = pdoParser
      pdotools_fenom_cache = нет
      pdotools_fenom_default = да
      pdotools_fenom_modx = да
      pdotools_fenom_parser = да
      pdotools_fenom_php = нет
      pdotools_fenom_save_on_errors = нет
      Версия MODX — 2.6.1, PHP — 7.1.5

      На сайте действительно половина вызовов сниппетов/чанков — через Fenom, другая половина — по старинке, стандартная.

      Что интересно, в контенте одной из страниц был такой вызов чанка:
      {$_modx->getChunk('CnunkName')}
      при этом CnunkName — банальный вызов блока с Адсенсом:
      <script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
          <ins class="adsbygoogle"
               style="display:block"
               data-ad-client="ca-pub-************"
               data-ad-slot="************"
               data-ad-format="auto">
          </ins>
          <script>
          (adsbygoogle = window.adsbygoogle || []).push({});
          </script>
      В этом случае страница не генерировалась (просто белый экран).
      Что делал и что НЕ ПОМОГЛО:
      — заключение кода чанка в {ignore}{/ignore};
      — простановка пробелов после начала фигурной скобки в чанке;
      — замена вызова чанка {$_modx->getChunk('CnunkName')} на [[$CnunkName]]…

      Пришлось просто перенести тело чанка на страницу (в поле content)… в таком случае работает и без ignore, и без пробелов после фигурной скобки.

      Олег Захаров
      22 февраля 2018, 21:31
      0
      у меня используется конструкция
      [[!pdoResources?

      &sortby=`{ «menuindex»:«ASC», «pagetitle»:«DESC» }`

      ]]
      (до этого имел проблемы с работой, решил простановкой пробелов после {)

      Как ее заменить на конструкцию вида как в решении выше когда 2 условия сортировки:
      [[!pdoResources?

      &sortby=`menuindex`
      &sortdir=`ASC`

      ]]
      Указывать дважды или через запятую?
        Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
        4