ANTO, вас не смущает, что при выводе ~VALUE - TEXT вывод как-то поехал?
там кусок html'я видимо, который как раз отрендерился. Смотрите исходный ко страницы
Как вам уже справедливо заметили - такой подход - одна из крайних степеней говнокода.
В данном случае стоило бы хранить такие пары замен в БД, при старте бота доставать их из БД и в цикле вешать обработчики.
seapdesign, добавьте фильтрацию результатов через WHERE, примерно так
SELECT visits.id, card.id AS id, card.user
FROM visits LEFT OUTER JOIN card
ON visits.id = card.id
WHERE visits.id='...'
либо если надо фильтровать по нескольким ID одновременно:
WHERE visits.id IN ('...', '...', '...')
либо если надо не по визитам, а по card.id - аналогично укажите card.id:
WHERE card.id IN ('...', '...', '...')
seapdesign, вам бы действительно самые основы SQL подучить. Изучение чего-то через бездумный копипаст чужих решений без понимания базовых вещей - тупиковый путь.
Ещё считаю спорным решением добавлять в футер интерактивную яндекс-карту. Она не мало весит, и выполняет значительный объём JS. На каждой странице, даже на тех где пользователь до футера не долистает. Либо поставить статику, либо хотя бы добавить lazy-загрузку.
Вы уверены, что у вас корректно работает функция подмены webp? Открыл через хром, вижу в сетевых запросах что сначала стягивается /img/service2.png, затем после срабатывания скрипта стягивается ещё и /img/service2.webp
Могу порекомендовать либо подменять на стороне сервера, либо использовать тег picture с перечислением разным источников source type="image/webp" и source type="image/png" например - браузер сам разберётся что грузить.
Александр, "запускать обработчик события" - вы имеете ввиду устанавливать новый обработчик?
вижу 2 варианта
1. хранить события в базе (как делается при установке модуля, InstallEvents). При выборе хайлоада и сохранении формы удаляете прошлый обработчик и сохраняете новый.
2. либо храните где-то в настройках своего модуля ID выбранного хайлоада, и при старте страницы (например в обработчике OnBeforeProlog вытаскиваете сохранённый ID, по нему получаете сущность и вешаете обработчик.
Павел Сидоров, Вы написали про фильтрацию, я вам ответил про фильтрацию. В вопросе вообще нет слова "Сортировка" ни в каком виде.
С сортировкой просто так не сделаешь. Навскидку:
Либо отдельное кеширующее поле для цены (хук на изменение инфоэлемента, смотреть что заполнено, заполнять полученную цену в отдельно поле, сортировать по нему).
Либо кастомный запрос в базу. Select, через CASE заполнять значение колонки либо одной ценой либо другой, и сортировку по этому полю. Тут конкретно синтаксис подсказать не смогу.
krokoko, в var id - значение корректно получается?
Как вы поняли, что id не передаётся? Обработчик точно вызывается?
Попробуйте передавать data не строкой, а объектом, data: { id: id }
malayamarisha, если мой ответ помог - отметьте его решением.
Про "только один элемент массива" не совсем понял - больше одного элемента в избранном не сохраняется? Если так - то тут надо уже разбираться что именно достаётся из кук, что отдаётся на клиента после записи, проверять что лежит в куках на клиенте и корректно ли они передаются на сервер.
Меня ещё немного смущает прямое указание списка кук в аякс-запросе. Насколько я помню jQuery.ajax и без указания headers: { Cookie: ... } сам по себе передаёт куки. Попробуйте убрать это.
Поставьте перед echo в конце файла
\Bitrix\Main\Context::getCurrent()->getResponse()->flush('');
В последних версиях Битрикса (не помню с какой точно 17 или 18), кука, выставленная через $APPLICATION->set_cookie не добавляется к заголовкам сразу, а накапливаются во внутреннем буфере и отправляются во время выполнения футера. У вас вместо подключения футера сразу идёт die(); Предоставленная строка кода выполняет отправку накопленных куки.
И, не могу удержаться и не сказать - а зачем вообще это действие для неавторизованного производить на сервере? Менять куки можно и на клиенте.
Телепаты в отпуске.
Без хоть каких-либо конфигов (webpack'а, package.json) и логов могу посоветовать вам только справиться с этой проблемой самостоятельно.
там кусок html'я видимо, который как раз отрендерился. Смотрите исходный ко страницы