Загрузка списка товаров по клику
на одной странице выводятся около 15ти списков товара. В каждом из них много товаров.
Выводятся они свернутые в блок. При клике на блоке - разворачивается список.
Пока товаров было не много - все красиво. Как только нормально товаров накидали - БД удивилась. Сейчас страница вообще выпадает по таймауту.
В голове появилась идея - подгружать списки товара лишь в тот момент, когда пользователь разворачивает блок.
Подскажите как это можно реализовать? что-то типа лэзилоад надо...
Возможно ли с помощью JS запроса получить только отдельный список товара, а не всю страницу со списком товара?
Что-то додумать ни как не могу :(
4 ответа
Насколько понимаю список товаров получаете хелпером:
Можно применить такую технику, используйте один из существующих адресов приложения Магазин, например /search/, в файле шаблона этого "action" вписываете следующее условие:
Изначально допустим список не раскрыт, клик по элементу раскрывающему его запрашивает этот адрес(get запрос с помощью JavaScript) с параметром pset=id, где id - идентификатор вашего списка. Скрипт получает эту страницу и копирует оттуда блок с товарами в тело списка.
Таким образом можно получить товары по запросу.
*приведенный код может не работать
Возможно немного сумбурно описано, но идея просматривается. Выбор адреса думаю не важен, пусть это будет даже самый загруженный "action", все равно смотреть на загрузчик и ждать.
Доработав можно реализовать загрузку начального количества товаров в список, а при добавлении просто не добавлять уже существующие там. Большая часть работы будет происходить на стороне клиента, не считая времени на обработку запроса.
Спасибо, Александр.
Именно так и сделал.
Не очень хотелось использовать Ajax загрузку, но пришлось.
таки работает :
А как вы собирались сделать Lazy.Load без использования Ajax?
Иной вариант с перезагрузкой страницы, а это перезагрузка всего контента и не факт что пользователю это понравится. Без Ajax это нельзя сделать красиво. В основе Lazy.Load именно эта технология.
Можно пробовать что то делать с iframe, но это мне видится не лучшим вариантом. Неоправданно много лишних элементов, ради такого действа.
да. это понятно. просто я хотел избежать подгрузки инфы из какой-то страницы... думал, можно можно как-то иначе получить список товаров, но потом уже понял, что других технологий та и нет...
ифрэймы я вообще не люблю. стараюсь использовать в последнюю очередь (иногда без них не обойдешься)