Иногда бывает нужным вывести что-то в head, но из какой-то компоненты. Ладно, если это скрипты, или css, есть стандартный функционал. Но что делать с более хитрой задачей.
[spoiler]
Итак, задача, внедриться в код Google Analytics, который расположен в секции head, но задача не дописать код, а именно внедриться.
На помощь придет понятие отложенной функции. Это функция, которую мы вставляем в нужное место шаблона, но она срабатывает не сразу, а только когда закончится построение страницы. По такому принципу работает SetTitile и ShowTitile.
И так, что нам потребуется. Потребуется три функции, которые можно прописать в /bitrix/php_interface/init.php:
Совершим более глобальный подход и напишем инструмент, который позволит вставлять какие угодно куски текста в различные места шаблона в любой момент. А также переопределять их.
Суть - у нас будет глобальный массив, ключи которого это своего рода названия переменных, а значения - те самые куски текста.
AddInTemplate - основная функция, она и выводит то, что надо в нужном месте по определенному ключу.
GetForAddInTemplate - системная функция, которая нужна для первой. Вы ее не будете применять.
SetForAddInTemplate - собственно инструмент для установки ключам нужных значений.
Как все это дело работает.
В тело head в нужное нам место вставляем такой маркер:

Как видите, я просто вызвал нашу функцию с определенным ключом. Причем, если ключ пуст, то функция ничего и не выведет.
Но теперь, на последнем шаге оформления заказа я могу сделать вот что:
И в текст GA вставится метод, который отправляет транзакцию на сервера Google, чтобы он учел оформление заказа по определенной РК.
PS: Это новый код GA, поэтому разместить его в футере нельзя (как мне сказали). Но пример лишь показывает как вы можете относительно легко управлять тем, что уже вывелось.
[spoiler]
Итак, задача, внедриться в код Google Analytics, который расположен в секции head, но задача не дописать код, а именно внедриться.
<script type="text/javascript">
var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-*********']);
/*и вот сюда надо вписать код, но не всегда, а только при оформлении заказа*/
(function() {
var ga = document.createElement('script');
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
ga.setAttribute('async', 'true');
document.documentElement.firstChild.appendChild(ga);
})();
</script>
|
На помощь придет понятие отложенной функции. Это функция, которую мы вставляем в нужное место шаблона, но она срабатывает не сразу, а только когда закончится построение страницы. По такому принципу работает SetTitile и ShowTitile.
И так, что нам потребуется. Потребуется три функции, которые можно прописать в /bitrix/php_interface/init.php:
function AddInTemplate($key=false)
{
global $APPLICATION;
echo $APPLICATION->AddBufferContent("GetForAddInTemplate", $key);
}
function GetForAddInTemplate($key)
{
global $ADDTEMPLATE;
return $ADDTEMPLATE[$key];
}
function SetForAddInTemplate($key, $value)
{
global $ADDTEMPLATE;
$ADDTEMPLATE[$key] = $value;
}
|
Совершим более глобальный подход и напишем инструмент, который позволит вставлять какие угодно куски текста в различные места шаблона в любой момент. А также переопределять их.
Суть - у нас будет глобальный массив, ключи которого это своего рода названия переменных, а значения - те самые куски текста.
AddInTemplate - основная функция, она и выводит то, что надо в нужном месте по определенному ключу.
GetForAddInTemplate - системная функция, которая нужна для первой. Вы ее не будете применять.
SetForAddInTemplate - собственно инструмент для установки ключам нужных значений.
Как все это дело работает.
В тело head в нужное нам место вставляем такой маркер:

<?AddInTemplate("GA_CODE");?> |
Как видите, я просто вызвал нашу функцию с определенным ключом. Причем, если ключ пуст, то функция ничего и не выведет.
Но теперь, на последнем шаге оформления заказа я могу сделать вот что:
SetForAddInTemplate("GA_CODE", $gaCode); |
И в текст GA вставится метод, который отправляет транзакцию на сервера Google, чтобы он учел оформление заказа по определенной РК.
PS: Это новый код GA, поэтому разместить его в футере нельзя (как мне сказали). Но пример лишь показывает как вы можете относительно легко управлять тем, что уже вывелось.
