SAPID INFO

Интеграция форм getcourse на сайт

Есть страница с большим количеством кнопок, с которых появляется popup. Создание по 1 форме на каждую кнопку не целесообразно уже потому, что разработчики getcourse влепили много лишнего и грузится даже 1 форма крайне медленно. Итого задача – создать 1 форму и менять в ней информацию о том, по какой кнопке произошел клик. Перепробовано много вариантов, поскольку стандартный вариант “виджета через который встраивается форма” открывается в iframe – передать в него данные сложно. У меня не получилось.

Начал работать вариант, когда я воспользовался file_get_contents и “на ходу” немного изменил код. Конечно, можно было еще обрезать лишнее, но я не стал тратить на это время. Код получился вот такой:

Фактически – просто сделал, чтобы все ссылки работали и поставил правильную action. Примечательно, что если обращение идет с адреса вида “http://site.ru/page.php” – то появляются какие-то ошибки, но стоит сделать адрес вида “http://site.ru/page/” – и всё работает.

Итак, выше работающий код. Но я его не использую. Почему?

Сначала у меня сложилось впечатление, что подключаемые многочисленные скрипты собирают важную статистическую информацию. Потом я понял что (1) практически не собирают и (2) с использованием file_get_contents и вовсе бессмысленны. Потому вместо того чтобы пихать на страницу тяжелый виджет, я вставил свою легкую форму.

Есть еще один момент важный – в процессе отправки на обработку данных указанным выше способом вы попадете на страницу прописанную в action, на которой будет строка типа такой:

По задумке кодеров getcourse она парсится и обрабатывается скриптами в iframe, но мой метод видимо нарушает работу каких-то скриптов, потому переадресация со страницы с непонятной для среднестатистического человека строчкой не производится.

Как я уже сказал выше, код file_get_contents я сейчас не использую. Я просто добавил в обработчик эмулятор post указав в нем адрес с action. Получилось примерно следующее:

Если Вы всё-таки решите использовать первый блок кода выше – Вам вероятно понадобится и этот кусочек для установки в ссылки, по которым появляется popup:

Как Вы поняли, здесь мы по клику отправляем в поле с некрасивым названием информацию о месторасположении кнопки. Возможность дать Id полю разработчики getcourse не предусмотрели, а Class у всех полей один и тот же (если Вы через панельку задаете класс – он присваивается обёртке, а не полю). Задавать через класс[*] я не посчитал правильным, т.к. количество полей может изменится и всё нарушится.


Комментарии к статье
Автор блога sapid.info, Ноябрь 26, 2017 в 2:21 пп:

Возникла еще идея (нет времени проверить потому пишу здесь заметку):
Присваивание через js в основном документе значения cookie для домена, который в iframe; последующее считывание данных через js в iframe с обращением по имени. Даже если не сработает в данном случае – есть вероятность что это будет происходить из-за того что при выполнении кода в iframe все cookie чистятся точно так же, как чистятся все “неугодные” параметры при попытке передачи их в url в обращении при генерации iframe.

Добавьте свой комментарий - оставьте след в блоге!