Кстати, сервер то отвечает чистыми данными и это не такой и большой объем будет, тем более если только нужное, а не все скопом. А их то можно поместить в data атрибуты, по которым потом строить/заполнять панель, без запросов сервера.
|
Да, панель уже есть на странице, вот ее код
<div class="modal" id="fast-view">
<div class="modal-main modal-view">
<div class="modal-view-navigation flex flex-between">
<a data-pjax="0" href="/#" class="button button-prev js-fast-view" onclick="return false;">
<span class="icon mr-10"></span>
Предыдущий товар
</a>
<a data-pjax="0" href="/#" class="button button-next js-fast-view" onclick="return false;">
Следующий товар товар
<span class="icon ml-10"></span>
</a>
</div>
<div class="modal-wrap">
<span class="modal-close js-close icon"></span>
<div id="fast-view-container">Загружаем...</div>
</div>
<a data-pjax="0" href="/#" class="button button-full">Перейти к полной карточке товара</a>
</div>
</div>
По клику на кнопке ей добавляется класс show-modal и подгружаются данные. Вот Вы говорите в нее что-то вставить, проще пареной репы. Но это что-то нужно как-то получить? Как получать? Тем же контроллером, что показывает подробную информацию о товаре? Но он передает полученную информацию в шаблон. В шаблоне она выводится в блоке с идентификатором details_container. Я так думаю, что его-то и нужно как-то вставлять в панель этот блок <div id="fast-view-container">Загружаем...</div> ? |
Отвяжите вообще данные, которые нужно потом показать на странице, от шаблонизатора. Получить эти данные при запросе страницы и поместить их в атрибуты не будет проблемой? К примеру, пусть карточки товаров содержаться в неком слое. Если наведение мыши повешено на него, то добавляем ему атрибут data-prop, в который помещаем данные о товаре (и так для всех товаров). Данные не просто json, но еще пропущенные через htmlspecialchars. Допустим, для примера эта массив:
Array
(
[id] => 12
[base] => /path/
[ims] => Array
(
[0] => Array
(
[name] => img1.jpg
[title] => text
)
[1] => Array
(
[name] => img2.jpg
[title] => text
)
[2] => Array
(
[name] => img3.jpg
[title] => text
)
)
)
Здесь все что требуется для вывода, например base, это путь к файлам изображений, и все прочее, и только необходимое. Вывод на страницу, это:
<div data-prop="{{prop}}">....</div>
где prop, это массив/объект переданный в шаблон как htmlspecialchars(json_encode($data), ENT_QUOTES). При наведении мыши из атрибута получается объект как:
var obj = $(this).data('prop'); //или у найденного родителя если обработчик не у родителя
И коли панель уже на странице, то размещаем эти данные в панели или строим по ним html код, который размещаем в панели. Остается показать панель, для чего используем ее метод. Например, если это Bootstrap, то способов показа ее много. Это выгоднее чем терзать сервер, да и ответ не обязательно мгновенный. А объем данных не такой и большой будет. |
Спасибо за помощь, буду пытаться. Ну а если не получится, то тогда тупо приделаю к каждому товару модалку и все.
Успехов Вам. |
| Часовой пояс GMT +3, время: 15:57. |