понедельник, 24 июня 2013 г.

Смена ключа Яндекс.Карт в сайте на Битрикс

Вводная: Внезапно перестали работать карты на сайте построенном на CMS Bitrix. Перестал быть валидным ключ API яндекс.карт (оказалось, что разработчики сайта прописали свой и то-ли удалили его, то-ли его сам яндекс забанил).

Решение:  Делаем резервную копию сайта.
Идём на http://api.yandex.ru/maps/getkey.xml (надо быть зарегистрированным пользователем яндекса, так что или регаемся, или входим под имеющимся аккаунтом) и получаем новый ключ.

Ключ имеет примерно такой вид - AAAAAAAAAAABBBBBBBBBBBBBBBBBBBBBBBBBBBBCCCCCCCCCCCCCCCCFFFFFFFFFFFFFFFFFFFDDDDDDDDDDDDD=

Ключ яндекс-карт не меняется через админку битрикса!

Создаём php файл (к примеру с имененем change_map_yandex_key.php) следующего содержания
<?
define('BX_SESSION_ID_CHANGE', false);
define('BX_SKIP_POST_UNQUOTE', true);
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/header.php");
?>
<?
//Меняем ключ
$params = array("example.com" => "AAAAAAAAAAABBBBBBBBBBBBBBBBBBBBBBBBBBBBCCCCCCCCCCCCCCCCFFFFFFFFFFFFFFFFFFFDDDDDDDDDDDDD=");
COption::SetOptionString("fileman", "map_yandex_keys", serialize($params));
//Проверяем, что ключ изменился
$aa=COption::GetOptionString("fileman", "map_yandex_keys");
if ($aa!=''){
$apiKeys = unserialize($aa);
echo '<pre>';print_r($apiKeys);echo '</pre>';
}
?>
<?require($_SERVER["DOCUMENT_ROOT"]."/bitrix/footer.php");?>



Закидываем его в корневую папку сайта и вызываем - http://example.com/change_map_yandex_key.php

Дополнительные ссылки:
http://dev.1c-bitrix.ru/api_help/main/reference/cpageoption/setoptionstring.php CPageOption::SetOptionString официальная документация