Загрузка списка товаров по клику

на одной странице выводятся около 15ти списков товара. В каждом из них много товаров.

Выводятся они свернутые в блок. При клике на блоке - разворачивается список.

Пока товаров было не много - все красиво. Как только нормально товаров накидали - БД удивилась. Сейчас страница вообще выпадает по таймауту.

В голове появилась идея - подгружать списки товара лишь в тот момент, когда пользователь разворачивает блок.

Подскажите как это можно реализовать? что-то типа лэзилоад надо...

Возможно ли с помощью JS запроса получить только отдельный список товара, а не всю страницу со списком товара?

Что-то додумать ни как не могу :(

4 ответа

  • 1

    Насколько понимаю список товаров получаете хелпером:

    {$wa->shop->productSet(set_id)}

    Можно применить такую технику, используйте один из существующих адресов приложения Магазин, например /search/, в файле шаблона этого "action" вписываете следующее условие:

    {if !$wa->get('pset')}
    тут код вашего блока списка товаров
    {else}
    тут прежний код этого шаблона
    {/if}

    Изначально допустим список не раскрыт, клик по элементу раскрывающему его запрашивает этот адрес(get запрос с помощью JavaScript) с параметром pset=id, где id - идентификатор вашего списка. Скрипт получает эту страницу и копирует оттуда блок с товарами в тело списка.

    Таким образом можно получить товары по запросу.

    *приведенный код может не работать

    Возможно немного сумбурно описано, но идея просматривается. Выбор адреса думаю не важен, пусть это будет даже самый загруженный "action", все равно смотреть на загрузчик и ждать.

    Доработав можно реализовать загрузку начального количества товаров в список, а при добавлении просто не добавлять уже существующие там. Большая часть работы будет происходить на стороне клиента, не считая времени на обработку запроса.

  • 2

    Спасибо, Александр.

    Именно так и сделал.

    Не очень хотелось использовать Ajax загрузку, но пришлось.

    таки работает :

    • +1

      А как вы собирались сделать Lazy.Load без использования Ajax?

      Иной вариант с перезагрузкой страницы, а это перезагрузка всего контента и не факт что пользователю это понравится. Без Ajax это нельзя сделать красиво. В основе Lazy.Load именно эта технология.

      Можно пробовать что то делать с iframe, но это мне видится не лучшим вариантом. Неоправданно много лишних элементов, ради такого действа.

      • +2

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

        ифрэймы я вообще не люблю. стараюсь использовать в последнюю очередь (иногда без них не обойдешься)

Добавить ответ

Чтобы добавить комментарий, зарегистрируйтесь или войдите