Обычная запись where работает, но если добавить get не работает, как исправить?
Такая where
{"news-type: LIKE":"%company%"}
работает, но если допустим добавить [[!#GET.news-type]]
{"news-type: LIKE":"%[[!#GET.news-type]]%"}
То уже не работает, или полностью сгенерироваться строку where в снипете, тоже не работает смотрел по логу{'!pdoPage' | snippet : [
'parents' => '[[*id]]',
'showHidden' => '1',
'limit' => '8',
'depth' => '1',
'level' => '1',
'showLog' => '1',
'ajaxMode' => 'default',
'sortby' => '{ "parent":"ASC", "menuindex":"ASC" }',
'includeTVs' => 'img,news-type',
'templates' => '7',
'where' => '{"news-type: LIKE":"%industry%"}',
'tpl' => 'newsTpl',
]}
Комментарии: 8
Допустим снипет просто формирует where запись без get и всё равно не работает
Довольно странно проблема была в fenom сменил на стандартный шаблонизатор, и всё заработало, пздц потратил 4 дня(
[[!pdoPage:default=`<h1>Ничего не найдено.</h1>`?
&parents=`[[*id]]`
&limit=`8`
&depth=`1`
&ajaxMode=`default`
&tpl=`newsTpl`
&pageLimit=`7`
&sortby=`{ "parent":"ASC", "menuindex":"ASC" }`
&where=`{ [[!WhereGen? &tv=`news-type` &sign=`LIKE` &get=`sort-type` &value=``]] }`
&includeTVs=`img,news-type`
&ajaxElemWrapper=`#pdopage`
&ajaxElemRows=`#pdopage .rows`
&ajaxElemPagination=`#pdopage .pagination`
&ajaxElemLink=`#pdopage .pagination a`
]]
Проблема не в fenom.
Если уж начали переводить вызов сниппета на другой синтаксис — то очень желательно делать это полностью.
Избавляйтесь от JSON строк внутри, от вложенных MODX тэгов
Примерно вот так должна выглядеть ваша конструкция
Вот такая конструкция пишется вот так
Если уж начали переводить вызов сниппета на другой синтаксис — то очень желательно делать это полностью.
Избавляйтесь от JSON строк внутри, от вложенных MODX тэгов
Примерно вот так должна выглядеть ваша конструкция
{'!pdoPage' | snippet : [
'parents' => $_modx->resource.id,
'showHidden' => 1,
'limit' => 8,
'depth' => 1,
'level' => 1,
'showLog' => 1,
'ajaxMode' => 'default',
'sortby' => ['parent' => 'ASC', 'menuindex' => 'ASC'],
'includeTVs' => 'img,news-type',
'templates' => '7',
'where' => ['news-type:LIKE' => '%industry%'],
'tpl' => 'newsTpl',
]}
Я не проверял — но это корректная запись — это как минимум первый шаг к нормальной работе кода.Вот такая конструкция пишется вот так
[[!#GET.news-type]]
{$.get.news-type}
И это выстрел себе в ногу — нельзя использовать нефильтрованные параметры в SQL запросах. Это прямая дорога к SQL инъекциям.
Сколько не пытался использовать вот это не работало
$_modx->resource.id
поэтому поставил [[*id]], вот эта запись выдаёт белую страницу'where' => ['news-type:LIKE' => '%{$.get.news-type}%'],
Вы здесь наткнулись сразу на две проблемы
В этой строке не нужны фигурные скобки, запускающие феном, так как вы и так внутри феном конструкции
Но если убрать фигурные скобки — то тоже ничего хорошего не получится
Здесь уже другая проблема — нельзя писать феном конструкции внутри кавычек.
Здесь нужно соединить строки с % и get конструкцию через конкатенацию
Вот так
Пожалуй вот такая конструкция должна отработать корректно
В этой строке не нужны фигурные скобки, запускающие феном, так как вы и так внутри феном конструкции
'where' => ['news-type:LIKE' => '%{$.get.news-type}%'],
Но если убрать фигурные скобки — то тоже ничего хорошего не получится
'where' => ['news-type:LIKE' => '%$.get.news-type%'],
Здесь уже другая проблема — нельзя писать феном конструкции внутри кавычек.
Здесь нужно соединить строки с % и get конструкцию через конкатенацию
Вот так
'where' => ['news-type:LIKE' => '%' ~ $.get.news-type ~ '%'],
И тут еще третья проблема, связанная с правилами именования переменных. Проблема с дефисом. В PHP нельзя использовать дефис в именах переменных. А вот в массиве ($.get это ведь массив) можно. Пожалуй вот такая конструкция должна отработать корректно
'where' => ['news-type:LIKE' => '%' ~ $.get['news-type'] ~ '%'],
Заработало НО, может быть я туплю, но всего есть 3 ресурса, ваш код сортирует только по названию «industry», по названию «company» вообще не сортирует, но стоит поставить, 2 ресурса(И ПРИЭТОМ поле должно быть типом тэг) одного значения всё сортирует. Или если будет 2 новости company и 1 новость industry он будет сортировать и выводить только industry. Если поставлю два ресурса industry то оно выводит два ресурса industry а company игнорирует, со стандартным шаблонизатором таких проблем нет.
{'!pdoPage' | snippet : [
'parents' => $_modx->resource.id,
'showHidden' => 1,
'limit' => 8,
'depth' => 1,
'level' => 1,
'showLog' => 1,
'ajaxMode' => 'default',
'sortby' => ['parent' => 'ASC', 'menuindex' => 'ASC'],
'includeTVs' => 'img,newsType',
'templates' => '7',
'where' => ['newsType:LIKE' => '%' ~ $.get['sortNewsType'] ~ '%'],
'tpl' => 'newsTpl'
]}
Это не мой код, это Ваш код.
Я лишь подсказал как его на феном переписать. Мелкие нюансы
Я лишь подсказал как его на феном переписать. Мелкие нюансы
сменил company на другое слово заработало
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.