Возможно ли?

Статус
В этой теме нельзя размещать новые ответы.

lover

Создатель
Регистрация
25 Сен 2009
Сообщения
46
Реакции
2
есть кусок кода:
$doc =& JFactory::getDocument();
$gmapsapi = "http://maps.google.com/maps?file=api&v=2.x&oe=utf-8&sensor=false&key=" . HotspotsHelper::getSettings(api_key, none);
$doc->addScript("$gmapsapi"."&hl=ru");

добавляет в head строку:

<script type="text/яваскрипт" src="http://maps.google.com/maps?file=api&v=2.x&oe=utf-8&sensor=false&key=ABQI...></script>

надо, чтоб он ещё внутрь тега вставил charset="utf-8", т.е.:

<script type="text/яваскрипт" charset="utf-8" src="http://maps.google.com/maps?file=api&v=2.x&oe=utf-8&sensor=false&key=ABQI...></script>

Как это реализовать??
 
Редактируйте функцию addScript, сделайте так, чтобы она принимала еще один необязательный параметр и передавайте его при вызове функции.
 
Редактируйте функцию addScript, сделайте так, чтобы она принимала еще один необязательный параметр и передавайте его при вызове функции.
а как это сделать? где её редактировать?
 
Речь идет о Joomla, я ведь правильно понимаю?
 
Честно-говоря, давно с Joomla не имел дела, сейчас просмотрел бегло, быстрое решение такое:
Файл /libraries/joomla/document/html/renderer/head.php, 130-я строка:
PHP:
$strHtml .= $tab.'<script type="'.$strType.'" src="'.$strSrc.'"></script>'.$lnEnd;
Замените на:
PHP:
$strHtml .= $tab.'<script type="'.$strType.'" charset="utf-8" src="'.$strSrc.'"></script>'.$lnEnd;
Тогда всем скриптам, добавляемым через функцию addScript будет проставлен аттрибут charset.
Если хотите сами указывать, каким скриптам проставлять этот аттрибут, а каким нет - отпишитесь, если завтра будет свободное время, напишу.
 
спасибо, кодировку внутрь тега прописал, но карта всё равно в IE не грузится:( наверно дело в другом
 
Насколько я помню, Google использует векторный формат SVG, который IE не поддерживается (IE использует свой кривой VML).
Хотя они (Google, то-бишь) наверняка озаботились поддержкой говнобраузера, но все-таки...
 
Eihwaz, спасибо тебе большое!! Переустановил компонент и всё заработало:yahoo:
Если будет не трудно, напиши, пожалуйста, как только тому скрипту установить кодировку!
Ещё раз спасибо большое!
 
В общем и целом выглядеть должно так (не тестил нигде, проверяй на локальной машине сначала, но по-идее, должно работать как надо:(
Файл /libraries/joomla/document/document.php ~425 строка, замени функцию addScript на:
PHP:
function addScript($url, $type="text/javascript", $encoding=false) {
        // Вообще если вам нужно всегда подставлять ТОЛЬКО utf-8,
        // можно сделать по-другому: простым boolean'ом.
        // если же планируется, что может быть и другая кодировка,
        // здесь нужно сделать проверку переданного значения
        // (можно при помощи in_array(), например).
        // Сейчас я оставил только проверку на 'utf8', и в таком виде 
        // это не лучший вариант, но он нагляднее
	if($encoding && strtolower($encoding) == 'utf8') {
		$this->_scripts[$url]['type']    = $type;
		$this->_scripts[$url]['charset'] = $encoding;
	} else {
		$this->_scripts[$url] = $type;
	}
}
Файл /libraries/joomla/document/html/renderer/head.php ~129 строка, замени цикл foreach на этот:
PHP:
foreach ($document->_scripts as $strSrc => $value) {
    if(is_array($value)) {
	    $strHtml .= $tab.'<script type="'.$value['type'].'" charset="'.$value['charset'].'" src="'.$strSrc.'"></script>'.$lnEnd;
    } else {
	    $strHtml .= $tab.'<script type="'.$value.'" src="'.$strSrc.'"></script>'.$lnEnd;
    }
}
Теперь при вызове функции в твоем скрипте:
PHP:
$doc->addScript("$gmapsapi"."&hl=ru", "text/javascript", "utf8");
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху