171 похожих чатов

Добрый вечер, подскажите, пожалуйста, есть вызов через mFilter товаров, в

котором один из параметров &includeThumbs=`medium`,

В чанке далее получаем превьюшку {if $thumb} {$medium} {/if}

Как получить массив превьюшек, надо в цикл их запустить?

77 ответов

84 просмотра

Надо в чанке вызывать msGallery

Дмитрий- Автор вопроса
Артур Шевченко💀
Надо в чанке вызывать 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

Дмитрий
тут нагуглил ещё, что через $modx->getObject можно...

Единственный эффективный способ получить превью это джоин

Дмитрий- Автор вопроса
Артур Шевченко💀
Единственный эффективный способ получить превью эт...

а вот тут разве он не джоинит все првеьюшки? только он получает самый первый элемент, а не все rank=0

Дмитрий- Автор вопроса
Артур Шевченко💀
Ну да, только тебе же не одну надо а все

ну вот и говорю, может не надо дописывать новый джоин, а текущий изменить, убрать rank или как

Дмитрий
ну вот и говорю, может не надо дописывать новый дж...

Ну получается не надо новый, я просто код всех сниппетов наизусть не помню)))

Дмитрий- Автор вопроса
Артур Шевченко💀
Ну получается не надо новый, я просто код всех сни...

но я так понимаю это потом потянет за собой везде, где мы выводим thumb - надо будет указывать rank 0 везде, где нужно получить только первое превью

Дмитрий
но я так понимаю это потом потянет за собой везде,...

Нет, ты же сделаешь копию и где надо получить массив файлов вызывай кастомный, а где не надо - вызывай обычный

Дмитрий- Автор вопроса

Если msGallery вызывать для каждого блока товара, это намного тормознее будет, чем делать выборку в сниппете msProduct? например, если на странице 36 блоков с товарами

Дмитрий- Автор вопроса
Артур Шевченко💀
Если товаров до 1000 то не сильно

вообще-то в базе товаров много будет, но на одной странице категории будет выводиться 36 за раз.

Дмитрий- Автор вопроса
Артур Шевченко💀
Насколько много?

ну больше 10 тыс. , а может 20 тыс.

Дмитрий
ну больше 10 тыс. , а может 20 тыс.

Ну тогда лучше джойн сделать

Дмитрий- Автор вопроса
Дмитрий- Автор вопроса
Артур Шевченко💀
Ну тогда лучше джойн сделать

я сделал кастомный msProduct, убрал rank из выборки 'on' => "`{$thumb}`.product_id = msProduct.id AND {$thumb}.path LIKE '%/{$thumb}/%'", но у меня теперь выводится не массив изображений внутри одного товара, а столько блоков товаров, сколько изображений у него.. то есть если у товара 5 изображений - он мне 5 карточек выводит

Дмитрий- Автор вопроса

пробовал rank через i++ запускать, но там дичь какая-то получилась)

Дмитрий
я сделал кастомный msProduct, убрал rank из выборк...

Тебе нужно что-то типа такого https://yandex.ru/search/?text=sql+как+присоединить+несколько+строк+&lr=35&clid=2358536

Дмитрий
пробовал rank через i++ запускать, но там дичь как...

я правильно понимаю, что тебе для мобилок надо другой размер выводить?

Дмитрий- Автор вопроса
Дмитрий- Автор вопроса
Денис Усманов
пфф) изиже

ну я чёт не понял как мне массив thumbs получить для этого)

Дмитрий- Автор вопроса
Денис Усманов
msGallery конечно же

ну вот там выше Артур предлагал, либо в чанк добавить вызов msGallery, либо кастомный сниппет msProducts сделать, но вроде как через msGallery тормознее будет)

Дмитрий- Автор вопроса

да хз) наверно пока товаров немного норм, будет, вопрос когда товаров будет 20 тыщ

ответ хочешь? lazyload...

Дмитрий
да хз) наверно пока товаров немного норм, будет, в...

ну и да, ты же не сразу будешь выкатывать на страницу 20к товаров, ajaxMode всему голова

Денис Усманов
ну и да, ты же не сразу будешь выкатывать на стран...

и вряд ли будут те, кто эти 20к товаров будут мотать от и до

Дмитрий- Автор вопроса
Дмитрий- Автор вопроса
Дмитрий- Автор вопроса
Денис Усманов
ну и да, ты же не сразу будешь выкатывать на стран...

на одной странице будет по 36 карточек товаров и пагинация

Дмитрий
а фильтры в категории?

ну, фильтр же подгружать будет опять же с ajaxMode лимитированно

Дмитрий
на одной странице будет по 36 карточек товаров и п...

ну ты реализуй и смотри в debugParser, какое время вывода там будет

Дмитрий
на одной странице будет по 36 карточек товаров и п...

я бы главное максимум по 3 фотки вытаскивал, а не все у товаров

Дмитрий- Автор вопроса
Дмитрий- Автор вопроса
Денис Усманов
я бы главное максимум по 3 фотки вытаскивал, а не ...

так а я и хотел так, только limit=5 поставить. Нафига мне туда по 20 штук фоток вытаскивать

Дмитрий
так а я и хотел так, только limit=5 поставить. Наф...

ну вот, а при таком раскладе, считай 36 карточек - это если все умещаются на странице максимум 36 фото подгружаются, даже если jpg/png размером ~200-300x200x300 то вес не большой, норм

Дмитрий- Автор вопроса
Дмитрий- Автор вопроса
Денис Усманов
тем более webp раз...

👌 сделаю через msGallery, посмотрю как рабоатть будет, ну в крайнем случае уже переделаю, если проблемы каки-будут

Дмитрий- Автор вопроса
Денис Усманов
тем более webp раз...

Денис, подскажи ещё пжлс, а как мне передать id товаров в каждую карточку товара?

Дмитрий- Автор вопроса

да, спасибо, всё получилось

Дмитрий- Автор вопроса
Денис Усманов
а что надо то? msGallery не работает?)

короче, всё кайфово получилось, единственное, после применения любых фильтров mFilter у меня слетает этот HvrSlider.. Как его инициализировать заново?

Дмитрий
короче, всё кайфово получилось, единственное, посл...

хм, хз даже) повесь setInterval на него ахах) так будет работать, но точки тупить будут, да и это костыль тот ещё

Дмитрий
хм...

не, а если по правильному... надо повесить переинициализацию Hvr после фильтрации...

Дмитрий- Автор вопроса
Денис Усманов
не, а если по правильному... надо повесить переини...

Это я понимаю. Есть какой-нибудь eventlistener на события mFilter?

Дмитрий
Это я понимаю. Есть какой-нибудь eventlistener на ...

да просто кинь jquery где при клике на кнопку "фильтровать" (если такая имеется) переинициализировать Hvr

Дмитрий
Это я понимаю. Есть какой-нибудь eventlistener на ...

а если нету, то смотри у mFilter какое событие по JS происходит при фильтрации

Дмитрий- Автор вопроса
Дмитрий- Автор вопроса
Дмитрий- Автор вопроса
Денис Усманов
на вот, изучай

Денис, подскажи, пжс, а ты не делал на данном примере возврат первого изображения при отведении мыши из области? Я правда этот код на jquery взял, но мне бы хоть суть понять, событие вот начинаю обрабатывать, а дальше хз) hvrSectors.on("mouseleave", function (e) { console.log('Мышь сбежала'); });

Дмитрий- Автор вопроса
Денис Усманов
на вот, изучай

jquery у автора взял отсюда https://dimox.name/hover-images-slider-preview/#comment-22732

Дмитрий
Денис, подскажи, пжс, а ты не делал на данном прим...

ну, там же jquery, советую потыкать ChatGPT по такому вопросу

Дмитрий- Автор вопроса
Денис Усманов
ну, там же jquery, советую потыкать ChatGPT по так...

норм, в этот раз gpt помог, а то обычно дичь какую-то выдает) правда в основном про php я его спрашивал

Дмитрий
норм, в этот раз gpt помог, а то обычно дичь какую...

Готовые скрипты дает, ему надо научиться правильно вопросы задавать

Дмитрий- Автор вопроса
Александр Щербаков
Готовые скрипты дает, ему надо научиться правильно...

я по-разному задавать вопросы стараюсь, если понимаю, что он не то отвечает, но как правильно задавать их, хз, нигде же нет инструкции

Похожие вопросы

Обсуждают сегодня

а зачем этот вопрос для удаления из чата?
Mёdkinson Medvezhkin
63
Эх кто-то пришел и весь праздник испортил :( You need complex FBX scene importing setup to change things on import? good luck with that. You need navigation and pathfinding? g...
Serg Gini
5
Всем привет! Подскажите. Я написал приложение на Delphi 10.2 Tokyo под Windows 10. И передо мной стал вопрос о том чтобы сделать это приложение кроссплатформенным (под Linux и...
Дмитрий Завгородний
24
Какого хера? /Sources/App/Modules/User/Models/UserLinkApple.swift:21:20: warning: stored property '_id' of 'Sendable'-conforming class 'UserLinkApple' is mutable @ID(...
Alexander Sherbakov
14
У тебя в конфиге нигде нет deny all; или вообще любого deny?
Alexander Sherbakov
10
Привет всем. Подскажите где можно посмотреть, какая версия электрон, поддерживает версии windows? Некий changelog. Мне бы желательно, поддержку 7,8,10... latest, как понимаю и...
Anonym Squad
21
Почему стало ломаться на D11? "739002.86400000' is not a valid timestamp" function IncDateTime(aStamp:TTimeStamp;aKind:TTriggerKind;aInterval:Integer):TDateTime; //aStamp = 2...
Катерина Свиридова
8
Портфолио: Зовут меня Александр, мне 36 лет. Город Пушкино. Общий рабочий стаж: ~14 лет Уровень квалификации: Senior Full-stack developer Где прочесть мой код? https://github....
Magic
10
Ребят, чет я уже не догоняю... Крч в коде на асм там происходит нечто вроде a+число (a+1, a+2 и т.д.). Но почему строка lea ecx, [edx+1] работает как a+1?? В edx берется адрес...
Alan 🔝 Бэброу
4
думаешь я не смогу также сделать? мне это просто не удобно
int 💳 𝙖𝙞𝙧 𝙗𝙞𝙜 𝙗𝙤𝙗 🔫 check bio / spam block / AFK / nohello.com / GMT+3
9
Карта сайта