насчет карты гугл

Вопросы и ответы по изменению функционала, смене дизайна, переносу сайта и т.п.

Модераторы: Xpycm, Koduc

Правила форума
ВНИМАНИЕ! Форум не является средством гарантированной поддержки клиентов и пользователей. Поэтому на быстрый ответ тут рассчитывать не нужно, как и на ответ вообще. Сотрудники отвечают по мере своих возможностей.

На форуме действует ограничение в 3 сообщения / сутки.
Если Вы хотите сказать "спасибо", то воспользуйтесь функцией "Повысить репутацию" - зелёная иконка "плюс" под ником ответившего.

насчет карты гугл

Сообщение vanred79 » 07 сен 2017, 15:58

Добрый день! Подскажите пожалуйста можно ли сделать загрузку карты гугл асинхронно? В коде страницы как я понял за загрузку карты отвечает вроде этот код
Код: Выделить всё
<script type="text/javascript" src="https://www.google.com/jsapi"
. Файл который его формирует вот этот framework\web\helpers\CGoogleApi.php.
Подскажите пожалуйста как сделать в этом коде:
Код: Выделить всё
public static $bootstrapUrl='http://www.google.com/jsapi';

    
/**
     * Renders the jsapi script file.
     * @param string $apiKey the API key. Null if you do not have a key.
     * @return string the script tag that loads Google jsapi.
     */
    
public static function init($apiKey=null)
    {
        if(
$apiKey===null)
            return 
CHtml::scriptFile(self::$bootstrapUrl);
        else
            return 
CHtml::scriptFile(self::$bootstrapUrl.'?key='.$apiKey);
    } 


чтобы в итоге получилось
Код: Выделить всё
<script async defer type="text/javascript" src="https://www.google.com/jsapi"
Вся недвижимость Астаны у нас на сайте
vanred79
Местная знаменитость
Местная знаменитость
 
Сообщения: 660
Зарегистрирован: 02 фев 2013, 18:42
Откуда: Казахстан
Очки репутации: 2

Re: насчет карты гугл

Сообщение Xpycm » 08 сен 2017, 08:48

Здравствуйте.

Попробуйте так:
Код: Выделить всё
CHtml::scriptFile('ссылка_на_js_карт', array('async' => '''defer'=> '')); 
Dropbox
Open Real Estate CMS: FAQ | FAQ 2 | FAQ 3
Изображение
Xpycm
Разработчик
Разработчик
 
Сообщения: 1592
Зарегистрирован: 30 дек 2011, 11:06
Откуда: Йошкар-Ола
Очки репутации: 50

Re: насчет карты гугл

Сообщение vanred79 » 08 сен 2017, 12:52

Xpycm писал(а):Здравствуйте.

Попробуйте так:
Код: Выделить всё
CHtml::scriptFile('ссылка_на_js_карт', array('async' => '', 'defer'=> ''));

Добрый день Хруст!
Оказывается не этот кусок кода ответственный за загрузку, а вот этот:
Код: Выделить всё
$cs=Yii::app()->getClientScript();
        
$url=$apiKey===null?self::$bootstrapUrl:self::$bootstrapUrl.'?key='.$apiKey;
        
$cs->registerScriptFile($url); 

Сделал вот так:
Код: Выделить всё
$cs->registerScriptFile($url, array('async' => '''defer'=> '')); 

Но тогда этот код
Код: Выделить всё
<script type="text/javascript" src="https://www.google.com/jsapi"></script>

вообще исчезает со страницы
Вся недвижимость Астаны у нас на сайте
vanred79
Местная знаменитость
Местная знаменитость
 
Сообщения: 660
Зарегистрирован: 02 фев 2013, 18:42
Откуда: Казахстан
Очки репутации: 2

Re: насчет карты гугл

Сообщение Xpycm » 08 сен 2017, 13:56

Конечно оно будет исчезать.

Вы документацию вообще читаете перед тем как писать код?
http://www.yiiframework.com/doc/api/1.1 ... ile-detail

Вторым параметром идёт позиция, а не опции
Dropbox
Open Real Estate CMS: FAQ | FAQ 2 | FAQ 3
Изображение
Xpycm
Разработчик
Разработчик
 
Сообщения: 1592
Зарегистрирован: 30 дек 2011, 11:06
Откуда: Йошкар-Ола
Очки репутации: 50

Re: насчет карты гугл

Сообщение vanred79 » 08 сен 2017, 18:28

Сделал вот так
Код: Выделить всё
$cs->registerScriptFile($url,CClientScript::POS_HEAD,array('async'=>'''defer'=> '')); 

но все равно не работает, возможно из-за версии yii, вот здесь об этом пишут http://www.yiiframework.ru/forum/viewtopic.php?t=14309
Вся недвижимость Астаны у нас на сайте
vanred79
Местная знаменитость
Местная знаменитость
 
Сообщения: 660
Зарегистрирован: 02 фев 2013, 18:42
Откуда: Казахстан
Очки репутации: 2

Re: насчет карты гугл

Сообщение Xpycm » 08 сен 2017, 19:19

Похоже на правду, что для корректной работы требуется обновить фреймворк до версии 1.1.14.
Ранее это был баг фреймворка по всей видимости: - Bug #1724: Allow CClientScript registering scripts and script files with the HTML options (klimov-paul)

Взято отсюда: https://raw.githubusercontent.com/yiiso ... /CHANGELOG

Рекомендую сразу обновить до 1.1.15. Не вспомню как оно обновится с "танцами с бубном" или без них, т.к 1.1.15 вышла более 3 лет назад

Помню точно, что до версии 1.1.16 "без танцев с бубном" и необходимым багажом знаний не обновить, т.к - Chg #2025: Upgraded jQuery to 1.11.1 (marcovtwout)
Dropbox
Open Real Estate CMS: FAQ | FAQ 2 | FAQ 3
Изображение
Xpycm
Разработчик
Разработчик
 
Сообщения: 1592
Зарегистрирован: 30 дек 2011, 11:06
Откуда: Йошкар-Ола
Очки репутации: 50

Re: насчет карты гугл

Сообщение vanred79 » 09 сен 2017, 11:58

Добрый день Хруст! Как думаете можно вот так сделать в моем случае:
1) закомментировать код
Код: Выделить всё
$cs->registerScriptFile($url);
в файле \framework\web\helpers\CGoogleApi.php
2) в файл protected\views\layouts\main.php в head вставить код:
Код: Выделить всё
<script async defer type="text/javascript" src="//www.google.com/jsapi">

Можно ли так сделать?

Если, да, то еще такой вопрос, как задать условие, чтобы
Код: Выделить всё
<script async defer type="text/javascript" src="//www.google.com/jsapi">
появлялся только на страницах объявлений (/property)?
Вся недвижимость Астаны у нас на сайте
vanred79
Местная знаменитость
Местная знаменитость
 
Сообщения: 660
Зарегистрирован: 02 фев 2013, 18:42
Откуда: Казахстан
Очки репутации: 2


Вернуться в Вопросы и помощь по изменениям

Кто сейчас на конференции

Сейчас этот форум просматривают: Google [Bot] и гости: 5

cron