Ошибки в пакете pdoTools версии 2.10.4
Василий, в первую очередь хотелось бы выразить Вам огромную благодарность за прекрасные компоненты.
Во вторых — по делу:
После обновления pdoTools до версии 2.10.4 (до этого была 2.10.2) перестали генерироваться страницы. При откате к предыдущей версии вс е прекрасно работает.
Ошибки возникают, только в том случае, если в вызове сниппета в параметре — указана JSON-строка…
Вот так — НЕ РАБОТАЕТ:
Аналогичные проблемы ИМЕННО С ВЕРСИЕЙ 2.10.4 описаны тут:
1. modx.pro/help/14061/
2. modx.pro/help/14113/
3. modx.pro/help/14121/
ЗАРАНЕЕ СПАСИБО ОТ ВСЕГО СООБЩЕСТВА!
UPDATE: лечится конечно это все легко, добавлением пробелом после фигурной скобки (т.е. приведением к такому виду &sortby=`{ «menuindex»:«ASC»} `), но это уже напоминает костыли… раньше таким образом приходилось экранировать только JavaScript'ы
Во вторых — по делу:
После обновления 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'ы
Комментарии: 4
отключайте fenom в настройках
Чтобы словить эту ошибку, нужно включить обработку Fenom для всех страниц сайта. А после включения этой настройки, продолжать вызывать сниппеты по-старинке, с указанием JSON параметров.
Или вы переходите на Fenom, или нет
Ничего такого намеренно я не делал. В любом случае, если уж вы включаете Fenom для всего сайта — вызывайте все сниппеты через него.
Или вы переходите на Fenom, или нет
{'!pdoResources' | snippet : [
...
'sortby' => ['menuindex' => 'asc']
...
]}
Честно говоря, я не вижу в истории изменений, что именно послужило причиной этой ошибки. Ничего такого намеренно я не делал. В любом случае, если уж вы включаете Fenom для всего сайта — вызывайте все сниппеты через него.
Василий, спасибо за ответ.
Обработка Fenom для всех страниц сайта включена. :(
Вот другие настройки:
На сайте действительно половина вызовов сниппетов/чанков — через Fenom, другая половина — по старинке, стандартная.
Что интересно, в контенте одной из страниц был такой вызов чанка:
Что делал и что НЕ ПОМОГЛО:
— заключение кода чанка в {ignore}{/ignore};
— простановка пробелов после начала фигурной скобки в чанке;
— замена вызова чанка {$_modx->getChunk('CnunkName')} на [[$CnunkName]]…
Пришлось просто перенести тело чанка на страницу (в поле content)… в таком случае работает и без ignore, и без пробелов после фигурной скобки.
Обработка 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, и без пробелов после фигурной скобки.
у меня используется конструкция
[[!pdoResources?
…
&sortby=`{ «menuindex»:«ASC», «pagetitle»:«DESC» }`
…
]]
(до этого имел проблемы с работой, решил простановкой пробелов после {)
Как ее заменить на конструкцию вида как в решении выше когда 2 условия сортировки:
[[!pdoResources?
…
&sortby=`menuindex`
&sortdir=`ASC`
…
]]
Указывать дважды или через запятую?
[[!pdoResources?
…
&sortby=`{ «menuindex»:«ASC», «pagetitle»:«DESC» }`
…
]]
(до этого имел проблемы с работой, решил простановкой пробелов после {)
Как ее заменить на конструкцию вида как в решении выше когда 2 условия сортировки:
[[!pdoResources?
…
&sortby=`menuindex`
&sortdir=`ASC`
…
]]
Указывать дважды или через запятую?
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.