@sashavol

Варианты подключения виджета и получения параметров?

Добрый день!

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

Сейчас мы делаем виджеты на сайт и некоторые проблемы начали проявляться. На данный момент мы рисуем виджет на сайте и в принципе проблем никаких нет, но, у виджета появляются параметры (цвет, положение и др.) все параметры мы планируем хранить в личном кабинете и вопрос встал, как их передать каждому клиенту персональные настройки.
Поясню: сейчас виджет подключается одной строчкой кода js с токеном клиента, без iframe

Так вот, какие есть варианты для передачи параметров каждому клиенту? Есть вариант создавать iframe где хранить параметры и оттуда таскать уникальные параметры для каждого клиента. Очень важно чтобы подключение осталось таким же, одной строчкой тега script с токеном клиента. Существуют какие-нибудь решения? :)
  • Вопрос задан
  • 162 просмотра
Пригласить эксперта
Ответы на вопрос 3
AMar4enko
@AMar4enko
Сделайте шаблон скрипта, заменив параметры плейсхолдерами. По запросу отдавайте не статику, а рендерите этот шаблон, подставляя вместо плейсхолдеров настройки для конкретного клиента. Кешируйте для каждого клиента его скрипт.
Ответ написан
Комментировать
alexey-m-ukolov
@alexey-m-ukolov Куратор тега JavaScript
Предположу, что по токену вы сможете получить параметры клиента.
Тогда, я бы сделал такую схему:
  1. Клиент подключает основной виджет.
  2. В этом виджете делается запрос с токеном на ваш сервер, в ответ на который приходит json с параметрами.
  3. Эти параметры используются в основном виджете и он рисует себя на странице.
Нужно, конечно, учесть нюансы вроде неполучения ответа на второй запрос (рисовать виджет с дефолтными параметрами по таймауту, например), но в целом схема несложная.

Альтернативный вариант - генерировать код виджета для каждого клиента отдельно на лету, вставляя значения параметров прямо в нужные места, но он кривоват и лишит вас кеширования.
Ответ написан
@k4o4
Новичок
Я тоже пробовал создать виджет, подключаемый одной строчкой, ломал голову и подсматривал решения других сервисов. Вот, что было бы хорошим, по моему мнению, вариантом:
1) Строка кода на сайте с ID виджета подключает к странице скрипт, который...
2) Создаёт iframe, внутри которого будет рендериться сам виджет, также внутри iframe подключается скрипт, который рендерит виджет согласно конфигу и CSS для элементов, которые будут одинаковыми у всех клиентов.
3) Этот скрипт внутри iframe подтягивает ID виджета либо как глобальную переменную, которую объявил скрипт из пункта 1, либо другим способом и запрашивает у сервера полный конфиг виджета в виде JSON и далее создаёт внутренние элементы виджета внутри iframe. Чтобы каждый раз не тягать конфиг, но и не иметь проблем с кэшированием, можно сохранять в LocalStorage весь объект с конфигом и c версией конфига в виде числа, генерирующегося при записи конфига и при очередной загрузке страницы просто запрашивать у сервера конфиг с параметром, содержащим версию того конфига, что в ls и если сервер ответит, что он не изменился, брать из ls. Если изменился - он отправит новый конфиг, который будет записан вместо старого
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
30 апр. 2024, в 23:39
3000 руб./за проект
30 апр. 2024, в 23:32
1500 руб./за проект
30 апр. 2024, в 22:44
500 руб./в час