Иногда бывает нужным вывести что-то в 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, поэтому разместить его в футере нельзя (как мне сказали). Но пример лишь показывает как вы можете относительно легко управлять тем, что уже вывелось.