Плагин доставки, добавить <script> в <head>
Руками если в index->head шаблона пишу:
<script src="https://api-maps.yandex.ru/2.1/?apikey=мойключ&lang=ru_RU" ></script>
то якарта работает в корзине с моим кастомным способом доставки. Но почитал на форуме, что можно скрипт ключа карты добавить и через customFields() плагина. Решил реализовать и завис(, подскажите направьте пожалуйста в нужную сторону. Делаю так:
-------------------------
wa-plugins/shipping/myshipping/lib/myshippingShipping.class.php
function customFields() {
$this->registerControl('Yamapcustom', array($this, 'yaMapcontrol'));
$fields['Yamapcustom'] = array(
'value' => null,
'title' => '',
'control_type' => 'Yamapcustom'
);
return $fields;}
-------------------------
wa-plugins/shipping/myshipping/lib/myshippingShipping.class.php
public function yaMapcontrol() {
$yamapapi = wa()->getMap('yandex')->getJs(true);
wa()->getView()->assign('yamapapi', $yamapapi);
$path = $this->path;
$view = wa()->getView();
return $view->fetch($path . '/templates/yamap.html');
}
-------------------------
wa-plugins/shipping/myshipping/templates/yamap.html
{wa_dumpc($yamapapi)} //ВЫВОДИТ НУЖНЫЙ СКРИТП С КЛЮЧЕМ КАРТЫ НО В <BODY>
$('{$yamapapi}').appendTo('head'); //ПРОБУЮ ДОБАВИТЬ ЕГО В <HEAD>. НЕ ПЕРЕДАЁТ. ДУМАЮ СКРИПТ НЕПОНИМАЕТ СМАРТИ
Что делаю не так, куда капать?
4 ответа
Ну и выводите его в body, чем он вам там мешает-то? :)
Видимо то, что в инструкции ЯКарт сказано, что этот скрипт должен подключаться в <head>, обязательное условие.
Инструкция технически правильная, но, благодаря буквальному следованию таким предписаниям, <head> сайта со временем начинает напоминать помойку.
Если подумать, то это ни разу не обязательное условие. Причем не стоит это делать именно так, как Яндекс завещал, чтобы не таскать карту по всем страницам сайта. Пусть подключается через <script></script> только там, где ей место. Как минимум ограничьте активацию скрипта через {$action == 'то, что вам надо'}, если уж он в <head> поселился.
Вот пример из пошагового оформления для активации слоя карт уже на первом шаге для ряда плагинов доставки. Ключ лежит в параметрах витрины.
Да знаком с помойкой в head и что на pagespeed влияет плохо.
Так блок для карты выводится, но карта не грузится. ошибка ymaps is not defined
Ок, переношу руками скрипт с ключом apikey в index.php в блок <head> шаблона
а в wa-plugins/shipping/myshipping/templates/yamap.html оставляю
Так карта грузится. То есть только когда ключ в хед удается запустить карту.
ещё пробую через jq функцию .appendTo('head') добавить переменную со скриптом в хед
и строкой
не получается, как буд-то что-то блокирует доступ к хед из плагина доставки. help!)