Показать сообщение отдельно
  #33 (permalink)  
Старый 22.09.2019, 15:25
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Отвяжите вообще данные, которые нужно потом показать на странице, от шаблонизатора. Получить эти данные при запросе страницы и поместить их в атрибуты не будет проблемой? К примеру, пусть карточки товаров содержаться в неком слое. Если наведение мыши повешено на него, то добавляем ему атрибут 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, то способов показа ее много.

Это выгоднее чем терзать сервер, да и ответ не обязательно мгновенный. А объем данных не такой и большой будет.
Ответить с цитированием