За последние два месяца многие пользователи столкнулись с большой неприятностью, связанной с виджетами, использующих Яндекс.Карты: при попытке открыть виджет на экране появлялось пустое окно со списком пунктов самовывоза. Кто-то поспешил обратиться в техподдержку и получил консультацию, кто-то разобрался и решил проблему своими силами. Были и те, кто посчитал разработчиков виджета врагами народа и пожелал им соответствующего незавидного будущего. Давайте же попробуем ответить на два извечных вопроса: "кто виноват" и "что делать"?
Причина ошибки
С недавнего времени Яндекс изменили требования для пользования картами: теперь при подключении необходимо всегда указывать API-ключ, который можно бесплатно получить в кабинете разработчика. Без него блокируется доступ к Геокодеру и другому функционалу, необходимому для позиционирования виджета по городам. Причина "пустой карты" в ошибке 429 Too Many Requests (видна в консоли браузера при открытии карты ПВЗ). Справедливости ради следует заметить, что Яндекс предупреждал в своем блоге об этих изменениях за несколько месяцев, и стал вводить ограничения постепенно.
В модулях была добавлена соответствующая настройка, позволяющая указать АПИ-ключ Яндекс.Карт. Этот ключ подставлялся в шаблонах виджетов, и проблема с ошибкой 429 решалась при одном важном условии: если Яндекс.Карты подключает сам шаблон виджета и никто кроме него.
Проблема в том, что на сайтах порой установлено множество модулей, каждый из которых считает своим долгом подключить свои Яндекс.Карты, даже если они нужны только на одной конкретной странице сайта, да и то не всегда. А некоторые, в отличие от наших, еще и хамски не дают отключить свое вмешательство никаким способом, кроме прямой правки кода.
Казалось бы, раз в Битриксе используются Яндекс.Карты – то у него наверняка есть настройка, позволяющая оперировать АПИ-ключом. И это так: в настройках модуля Управление структурой есть соответствующее поле. Но есть проблема: разработчики CMS забыли объяснить коду шаблона компонента оформления заказа, что для Яндекс.Карт можно использовать АПИ-ключ. В дефолтных шаблонах карты подключаются без ключа и нет возможности задать его какими-либо настройками. Такого удара в спину мы, конечно, не ожидали, хотя сами предупредили техподдержку Битрикса о новых требованиях Яндекса, еще когда новость была анонсирована.
Кажется, получилось, что виноваты все, и не виноват никто – но, чтобы сгладить свое участие в творящемся безобразии, укажем как все это дело лечить.
Порядок лечения
Самое главное правило, которое необходимо осознать: чем меньше у вас сторонних модулей и модификаций – тем больше вероятность, что получится решить проблему без обращения к программистам. Шаги могут засыпаться из-за сторонних подключений карт (которые игнорируют передаваемый ключ) и кастомных шаблонов. Также помним, что стандартное оформление заказа в Битриксе на момент написания статьи не умеет подключать Яндекс.Карты с ключом.
Порядок действий
Эти четыре шага решат проблему, если у вас стандартный шаблон как оформления заказа, так и виджета, и Яндекс.Карты подключаются только виджетом.
Углубленное лечение
Давайте обратимся к более сложной ситуации: что делать, если в подключение влезает что-то еще.
Следует учесть, что карты могут подключаться и другими модулями служб доставок, а также быть прописаны напрямую в шаблоне сайта. Если рекомендации выше не помогли, то причина в этом, и нужно искать актуальное подключение скриптов Яндекс.Карт.
Опускаемся на дно
Вариант лечения сторонних модулей – пинать разработчиков, чтобы разобрались с их Яндекс.Картами. Но что же делать, если причина – в Битриксе? К сожалению, здесь придется вносить правки в шаблоны оформления заказа, то есть, кастомизировать их, по крайней мере, до тех пор, пока Битрикс не доработает подключение Яндекс.Карт в своем решении.
Отметим отдельно, что, если вы не в курсе, где именно искать эти мифические шаблоны – следует обратиться к опытному программисту. Мы нарочно не приводим ссылки, чтобы неопытный пользователь не убил себе сайт.
На данный момент можно встретить в основном два типа шаблонов оформления заказа.
Первый вариант шаблона, современный:
Второй вариант шаблона, олдскульный:
Напоминаем, что вносить правки в дефолтные шаблоны без выноса их в отдельное пространство имен – моветон. Если же все в данном абзаце для вас – техноколдовская белиберда – остается лишь последний способ решения проблемы.
Обращение в техподдержку
В случае, если проблема с картами не лечится – мы можем попытаться решить ее нашими силами. К сожалению, внесение правок на конкретный сайт не оплачивается службами доставки, обеспечивающими работу модуля. Поэтому с нашей стороны в рамках бесплатной техподдержки возможна консультация (см. выше), либо вмешательство в сайт – в рамках платной.
Актуальные контакты техподдержки указаны в Маркетплейсе Битрикса наших модулей.
Почему вы не добавите кнопку «Сделать все хорошо»???
И напоследок ответим на самый распространенный вопрос.
Как уже было замечено, корень проблемы (помимо того, что не все читают FAQ или не обновляют модуль вовремя), в том, что Яндекс.Карты в Битриксе (да и на любой другой открытой CMS, пожалуй) могут подключаться во многих местах.
Свою зону ответственности мы закрыли настройками для АПИ-ключа, однако карты могут подключаться либо Битриксом, либо сторонними модулями – и вот туда уже мы лезть не можем. Кнопка «сделать все хорошо» имела бы два варианта реализации:
На этой ноте смеем откланяться. Надеемся, статья помогла вам решить проблему с подключением и не подавила обилием букв.