котором один из параметров &includeThumbs=`medium`,
В чанке далее получаем превьюшку {if $thumb} {$medium} {/if}
Как получить массив превьюшек, надо в цикл их запустить?
Надо в чанке вызывать msGallery
если чанк формируется в шаблоне категории товаров, это для каждой карточки товара он будет вызываться по N-раз на страницу тогда, не слишком это тяжело?
Именно так. Другой вариант изменить msProducts, чтобы он цеплял все превьюшки
"изменить msProducts" - сорцы чтоли править?
Зачем? Сделай копию сниппета и допиши джойн еще одной таблицы
Ок, примерно понятно. Тут ещё в сниппете и ошибка кстать, ругается на 111 строке
Ну ты не знаешь на какую версию PHP настроен линтер в админке, вряд ли на 7.4
тут нагуглил ещё, что через $modx->getObject можно получить url к превьюшкам <?php $size = $iddd."/340x390/"; // размер превью $rank = 1; //порядковый номер if ($r = $modx->getObject('msProductFile',array('product_id'=>$iddd, 'path'=>$size,'rank'=>$rank))){ echo $r->get('url'); } else { echo 'нет такого'; } но тут конкретно второе превью получают, а как массив получить и ограничить его лимитом? например задать limit=5 и он выдаст массив 5 первых url
Единственный эффективный способ получить превью это джоин
а вот тут разве он не джоинит все првеьюшки? только он получает самый первый элемент, а не все rank=0
Ну да, только тебе же не одну надо а все
ну вот и говорю, может не надо дописывать новый джоин, а текущий изменить, убрать rank или как
Ну получается не надо новый, я просто код всех сниппетов наизусть не помню)))
но я так понимаю это потом потянет за собой везде, где мы выводим thumb - надо будет указывать rank 0 везде, где нужно получить только первое превью
Нет, ты же сделаешь копию и где надо получить массив файлов вызывай кастомный, а где не надо - вызывай обычный
Если msGallery вызывать для каждого блока товара, это намного тормознее будет, чем делать выборку в сниппете msProduct? например, если на странице 36 блоков с товарами
Если товаров до 1000 то не сильно
вообще-то в базе товаров много будет, но на одной странице категории будет выводиться 36 за раз.
ну больше 10 тыс. , а может 20 тыс.
Ну тогда лучше джойн сделать
хорошо, понял, спасибо
я сделал кастомный msProduct, убрал rank из выборки 'on' => "`{$thumb}`.product_id = msProduct.id AND {$thumb}.path LIKE '%/{$thumb}/%'", но у меня теперь выводится не массив изображений внутри одного товара, а столько блоков товаров, сколько изображений у него.. то есть если у товара 5 изображений - он мне 5 карточек выводит
пробовал rank через i++ запускать, но там дичь какая-то получилась)
Тебе нужно что-то типа такого https://yandex.ru/search/?text=sql+как+присоединить+несколько+строк+&lr=35&clid=2358536
я правильно понимаю, что тебе для мобилок надо другой размер выводить?
да не, вот такое хочу замутить
ну я чёт не понял как мне массив thumbs получить для этого)
msGallery конечно же
ну вот там выше Артур предлагал, либо в чанк добавить вызов msGallery, либо кастомный сниппет msProducts сделать, но вроде как через msGallery тормознее будет)
да хз) наверно пока товаров немного норм, будет, вопрос когда товаров будет 20 тыщ
ответ хочешь? lazyload...
ну и да, ты же не сразу будешь выкатывать на страницу 20к товаров, ajaxMode всему голова
и вряд ли будут те, кто эти 20к товаров будут мотать от и до
а фильтры в категории?
на одной странице будет по 36 карточек товаров и пагинация
ну, фильтр же подгружать будет опять же с ajaxMode лимитированно
ну ты реализуй и смотри в debugParser, какое время вывода там будет
я бы главное максимум по 3 фотки вытаскивал, а не все у товаров
в выборке товров у меня сейчас &ajaxMode=`default`
ну это простая пагинация 12345....
так а я и хотел так, только limit=5 поставить. Нафига мне туда по 20 штук фоток вытаскивать
ну вот, а при таком раскладе, считай 36 карточек - это если все умещаются на странице максимум 36 фото подгружаются, даже если jpg/png размером ~200-300x200x300 то вес не большой, норм
у меня там webp и размер 480х360 px
тем более webp раз...
👌 сделаю через msGallery, посмотрю как рабоатть будет, ну в крайнем случае уже переделаю, если проблемы каки-будут
Денис, подскажи ещё пжлс, а как мне передать id товаров в каждую карточку товара?
$id или [[+id]] не?
а что надо то? msGallery не работает?)
да, спасибо, всё получилось
короче, всё кайфово получилось, единственное, после применения любых фильтров mFilter у меня слетает этот HvrSlider.. Как его инициализировать заново?
хм, хз даже) повесь setInterval на него ахах) так будет работать, но точки тупить будут, да и это костыль тот ещё
не, а если по правильному... надо повесить переинициализацию Hvr после фильтрации...
Это я понимаю. Есть какой-нибудь eventlistener на события mFilter?
да просто кинь jquery где при клике на кнопку "фильтровать" (если такая имеется) переинициализировать Hvr
а если нету, то смотри у mFilter какое событие по JS происходит при фильтрации
Кнопки нет, фильтр сразу реагирует
Ладно, завтра гляну уже... Доброй ночи)
Есть в доке посмотри
Денис, подскажи, пжс, а ты не делал на данном примере возврат первого изображения при отведении мыши из области? Я правда этот код на jquery взял, но мне бы хоть суть понять, событие вот начинаю обрабатывать, а дальше хз) hvrSectors.on("mouseleave", function (e) { console.log('Мышь сбежала'); });
jquery у автора взял отсюда https://dimox.name/hover-images-slider-preview/#comment-22732
ну, там же jquery, советую потыкать ChatGPT по такому вопросу
норм, в этот раз gpt помог, а то обычно дичь какую-то выдает) правда в основном про php я его спрашивал
Готовые скрипты дает, ему надо научиться правильно вопросы задавать
я по-разному задавать вопросы стараюсь, если понимаю, что он не то отвечает, но как правильно задавать их, хз, нигде же нет инструкции
Обсуждают сегодня