Есть шаблон node, где вынесены поля, заданны им переменные $price, $sku и т.д. и они выведены в скрипте:
dataLayer = [{
'transactionId': '<?=$nid;?>',
'transactionTotal': <?=$total;?>,
'transactionProducts': [{
'sku': '<?=$sku;?>',
'name': '<?=$node_item->title;?>',
'category': '<?$cat;?>',
'price': <?=$price;?>,
'quantity': <?=$count;?>
}]
}];
</script>
Мне нужно что бы этот скрипт (именно скрипт) отображался сразу после тега Body, То есть передать его и результат с переменных в шаблон html.tpl.php или может можно передать это в Template.php как-то?...
Комментарии
https://www.drupal.org/node/304258#drupal-settings
а еще, вероятно, можно через hook_preprocess_page добавить нужные переменные и потом использовать их в шаблоне.
за такое я джуниоров бил шваброй.
по теме.
есть предпроцесс для html в template.php темы ( или объявить этот хук в файле модуля).
И в нем делать обработку ДО формирования на вывод html.tpl.php. Потому что после уже будет формироваться node.tpl.php и тд. Но это тоже кривое решение.
Используйте хуки. Лучше - написать свой модуль и в нем на предпроцессе делать уже все необходимое. Вы пытаетесь построить массив для какого-то js обработчка. Тут тоже кривое решение. Это не так делается, а через settings для js.
Не надо объявлять js массив inline, не надо делать так, не надо.
Лучше сразу делайте по уму.
Вам не нужно в шаблоне или template.php брать поля (значения) для формирования js. Это можно сделать спокойно своим модулем, через entity_load и drupal_add_js для добавления переменных в js окружение. Шаблоны - для вывода, а не для такой пред побработки.
Задайте конкретный вопрос. Я постараюсь дать ответ.
Если вы все же хотите сделать криво, но "а хуй с ним лишь бы работало", то товарищь выше вам подсказал решение.
Сколько экспрессии. Позвольте поинтересоваться, а чем ваш совет добавлять через настройки js отличается от моего?)
Никакой экспрессии. Только пожелание - пишите по стандартам. У автора изначально костыли.
---
Автору нужно обработать данные для html основного шаблона страницы, но он пытается взять их из шаблона ноды. Логично использовать предпроцесс, но правильно это делать не на уровне шаблона темы, и не на уровне предпроцесса в самой теме. Все же темизацию и обработку данных стоит разделять. Простым языком - при смене темы - это работать уже не будет.
Дело в том, что мне нужно передать данные с ноды в этот скрипт. Это скрипт Гугл Аналитикса. Не представляю как это вывести через свой модуль. Оно все нормально передается если писать в пределах шаблона node, но мне нужно вынести результат выше - в html
Без разницы, гугл аналитика там будет, яндекс метрика, гугл цели или еще какая-нибудь хрень.
Я вам дал совет по реализации и описал причины. Вы можете делать как вы считаете правильным - это тоже верное решение, потому что оно ваше.
Просто может наступить день, когда вашим проектом будет заниматься другой человек, и этот человек, возможно, будет крыть вас матом. Или наступит день, когда клиент попросит перекроить существующую систему, и у вас на задачу, на которую можно потратить от силы 1-2 часа уйдет несколько дней. Все механизмы внутри системы и правила работы с ними придумали не от не_уй делать, а для облегчения жизни проекта. Изучайте стандарты. Это, кстати, большой плюс. И часто обязательное условие даже для джуниоров в более менее адекватную компанию.
Поставьте модуль для Гугл Аналитикс и не любите всем нам мосх -
https://www.drupal.org/project/google_analytics
https://www.drupal.org/project/commerce_google_analytics
Это не код стандартного Аналитикса! И коммерсса у меня нет вообще.
Модуль никак не справляется с этой задачей.
Вопрос решен. всем спасибо за участие!
Пожалуйста.
Неблагодарная.