msProducts fenom в параметре where. И баг со связями
Задача вывести рекомендованные товары.
Сделал связь Рекомендованные (это уже вторая связь, первая — фасовка, товары с одинаковыми названиями, но разными весами). И тут оказывается, что на кнопку Создать связь на странице товара нельзя нажать — ничего не происходит. И ошибки в логах нет. Как понять что это и пофиксить?
Когда верстал сайт, это работало, я прописывал тестовые связи много-к-много и выводилось как надо. Делал я так:
Вызов сниппета на странице товара:
А теперь возникла мысль убрать из выборки открытый ресурс. Делаю через параметр where:
Если вместо 66 поставить $id, то это ожидаемо не парсится никак.
Стал думать как сделать через переменную:
Подскажите, как правильно сделать.
Сделал связь Рекомендованные (это уже вторая связь, первая — фасовка, товары с одинаковыми названиями, но разными весами). И тут оказывается, что на кнопку Создать связь на странице товара нельзя нажать — ничего не происходит. И ошибки в логах нет. Как понять что это и пофиксить?
Когда верстал сайт, это работало, я прописывал тестовые связи много-к-много и выводилось как надо. Делал я так:
Вызов сниппета на странице товара:
{$_modx->runSnippet('msProducts',[
'link' => '2',
'master' => $_modx->resource.id,
'parents' => '2',
'limit'=> '10',
'sortBy'=>'Rand()',
'tpl' => 'tpl.msProducts.row.my',
'tplWrapper' => 'tpl.wrapper.linked',
'includeThumbs' => '520x390',
])}
В чанке tpl.wrapper.linked:{if $output!=''}
<h3 class="text-center mb-3">С этим товаром смотрят:</h3>
<div class="row mb-3 adjacent owl-carousel">
{$output}
</div>
{else}
{$_modx->runSnippet('msProducts', [
'parents' => $_modx->resource.parent,
'limit' => '10',
'sortBy'=>'Rand()',
'tpl' => 'tpl.msProducts.row.my',
'includeThumbs' => '520x390',
'tplWrapper' => 'tpl.wrapper.adjacent'
])}
{/if}
Последний чанк выглядит как вывод при true в .linked.А теперь возникла мысль убрать из выборки открытый ресурс. Делаю через параметр where:
'where'=>'{"id:!=":66}'
— это работает, но исключается только ресурс с id 66.Если вместо 66 поставить $id, то это ожидаемо не парсится никак.
Стал думать как сделать через переменную:
{set $wher = [
'id:!=' => $id,
]}
{$wher = $wher|json_encode:$.const.JSON_PRETTY_PRINT} или {$wher = json_encode($wher)}
'where'=>$wher,
При этом перед выборкой выводится на странице { «id:!=»: null }, но ничего в выборке не меняется. Получается, что $id в этом чанке не парсится и отдельно тоже не выводится, хотя в конечном выводился.Подскажите, как правильно сделать.
Комментарии: 1
Удалось решить проблему, только переведя на обычный MODX. Как сделать на чистом феноме, по-прежнему, не представляю…
Попробовал подобавлять связи непосредственно в базу:
Добавились, но выскакивала ошибка 1062 Дублирующаяся запись (2,58,59) с ключом PRIMARY (как-то так) — хз, что это значит, я только начинаю осваивать php с работой с базой данных…
В админке тоже связи у товаров появились, сниппет работает как надо, но кнопка Создать всё равно не нажимается.
{set $topId = $_modx->runSnippet('pdoField', [
'id' => $_modx->resource.id,
'field' => 'id',
'topLevel' => 2
])}
[[!msProducts?
&parents=`{$topId}`
&limit=`10`
&sortBy=`Rand()`
&tpl=`tpl.msProducts.row.my`
&tplWrapper=`tpl.wrapper.adjacent`
&includeThumbs=`520x390`
&where=`{ignore}{"id:!=":[[*id]]}{/ignore}`
]]
И что делать с багом со связями, не знаю.Попробовал подобавлять связи непосредственно в базу:
INSERT INTO `modx_ms2_product_links` (`link`, `master`, `slave`) VALUES ('2', '58', '59');
и т.п.Добавились, но выскакивала ошибка 1062 Дублирующаяся запись (2,58,59) с ключом PRIMARY (как-то так) — хз, что это значит, я только начинаю осваивать php с работой с базой данных…
В админке тоже связи у товаров появились, сниппет работает как надо, но кнопка Создать всё равно не нажимается.
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.