msProducts - не подключается превьюшка
Уже на нескольких сайтах заметил одну и ту же проблему с подставлением правильных превьюшек после перетаскивания порядка фоток в админке.
Создаёшь новый товар, грузишь фотку — всё круто, msProducts выводит подключённые превьюшки заданных размеров, которые указаны в источнике файлов.
Но как только изменишь изображение товара, например удалишь старые и зальёшь новые, или даже просто поменяешь порядок изображений, то новая превьюшка не подтягивается!
Новые превьюшки на сервере успешно создаются. Просто не подставляются в плейсхолдер, не джойнятся.
Примерный вызов msProducts:
Раньше вроде бы таких проблем не было.
Заметил похожие глюки и у галереи ms2Gallery отдельно от минишопа.
Почему такое происходит? Как исправить?
=============== РЕШЕНИЕ =================>
Короче, пришлось писать костыльное решение:
Сниппет-модификатор get_thumb:
а в чанке этот модификатор вытаскивает путь к нужной превьюшке:
Жаль что miniShop ищет превьюшку с нулевым ранком, логичнее было бы чтобы он искал с наименьшим…
Создаёшь новый товар, грузишь фотку — всё круто, msProducts выводит подключённые превьюшки заданных размеров, которые указаны в источнике файлов.
Но как только изменишь изображение товара, например удалишь старые и зальёшь новые, или даже просто поменяешь порядок изображений, то новая превьюшка не подтягивается!
Новые превьюшки на сервере успешно создаются. Просто не подставляются в плейсхолдер, не джойнятся.
Примерный вызов msProducts:
{'!msProducts'|snippet:[
'includeThumbs' => '290x215',
'tpl' => 'tpl.card',
]}В чанке же плейсхолдер [[+290x215]] не подтягивается для обновлённых товаров — пустой плейсхолдер!Раньше вроде бы таких проблем не было.
Заметил похожие глюки и у галереи ms2Gallery отдельно от минишопа.
Почему такое происходит? Как исправить?
=============== РЕШЕНИЕ =================>
Короче, пришлось писать костыльное решение:
Сниппет-модификатор get_thumb:
<?php
$output = ' ';
$q = $modx->prepare("SELECT url FROM ".$modx->config['table_prefix']."ms2_product_files WHERE product_id = '{$input}' AND path LIKE '%/{$options}/%' ORDER BY rank ASC LIMIT 1");
$q->execute();
$r = $q->fetchAll(PDO::FETCH_ASSOC);
if(count($r)) {$output = $r[0]['url'];}
return $output;а в чанке этот модификатор вытаскивает путь к нужной превьюшке:
{set $preview = $id|get_thumb:'290x215'|replace:' ':''}
{if $preview}
<img src="{$preview}"/>
{else}
<img src="/assets/images/blank.gif"/>
{/if}Жаль что miniShop ищет превьюшку с нулевым ранком, логичнее было бы чтобы он искал с наименьшим…
Комментарии: 17
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
Насколько я понимаю, в обоих случаях превьюшки джойнятся по
то есть только главная превьюшка.
Но у изменённых товаров нету фоток с [rank] => 0!
Проверил в таблице modx_ms2_product_files — у всех есть, а у изменённых товаров нету файлов с [rank] => 0.
Такая же история и с ms2Gallery при подключении превьюшки к вызову pdoResources например — у проблемных не подтягивается картинка с [rank] => 0:
Где проблема зарыта? Почему неправильно выставляется rank?
Спасибо за костыль!
Спасибо ещё раз!
Тут в последнем обновлении minishop2 есть пункт
— Fixed bug with incorrect rank of thumbnails after a sorting.
Наверное это решение проблемы, надо обновиться.
То есть в галерее 3 фотки, а в превью товара пусто — заглушка стоит…
Нет, глюк определённо остался!
Ты всегда можешь предложить своё более классное исправление в репозитории дополнения.
Там исключительно замена rank превьюшек на родительский.
Но баг с thumb-ом товара был и в прошлой версии точно — пару недель назад я тоже сталкивался с этим на другом сайте.
То есть иногда если перетаскивать картинки, thumb очищается, а не подставляется первая картинка.
Сложно отловить этот баг и сложно выявить закономерность. Например иногда, как писал Андрей выше, помогает удаление всех фоток товара и загрузка их заново, но иногда это не помогает, а помогает простая перегенерация первой превьюшки (что в других случаях тоже не всегда помогает).
Вот попробовал записать что получается у меня:
Я попробую ещё понаблюдать, может будет ещё что отписать.
Видимо, придется разбираться что к чему.
Решение в статье.
Жаль только что miniShop ищет превьюшку с нулевым ранком, а не с наименьшим… Из-за этого у меня в админке изменённые товары загруженными фотографиями остались без превьюшек, а это очень неудобно…
Интересно, а можно ли как-то джойнить превьюшку по наименьшему ранку не зная его?
Например вот это можно ли переделать:
chunks/image_url.tpl