[РЕШЕНО]Передать переменные из шаблона ноды в html.tpl.php

Главные вкладки

Аватар пользователя Boozenok Boozenok 5 июня 2015 в 13:57

Есть шаблон node, где вынесены поля, заданны им переменные $price, $sku и т.д. и они выведены в скрипте:

<script>

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 как-то?...

Комментарии

Аватар пользователя t1mm1 t1mm1 5 июня 2015 в 19:48
<?=$total;?>

за такое я джуниоров бил шваброй.

по теме.
есть предпроцесс для html в template.php темы ( или объявить этот хук в файле модуля).
И в нем делать обработку ДО формирования на вывод html.tpl.php. Потому что после уже будет формироваться node.tpl.php и тд. Но это тоже кривое решение.

Используйте хуки. Лучше - написать свой модуль и в нем на предпроцессе делать уже все необходимое. Вы пытаетесь построить массив для какого-то js обработчка. Тут тоже кривое решение. Это не так делается, а через settings для js.
Не надо объявлять js массив inline, не надо делать так, не надо.
Лучше сразу делайте по уму.
Вам не нужно в шаблоне или template.php брать поля (значения) для формирования js. Это можно сделать спокойно своим модулем, через entity_load и drupal_add_js для добавления переменных в js окружение. Шаблоны - для вывода, а не для такой пред побработки.

Задайте конкретный вопрос. Я постараюсь дать ответ.
Если вы все же хотите сделать криво, но "а хуй с ним лишь бы работало", то товарищь выше вам подсказал решение.

Аватар пользователя Advin Advin 6 июня 2015 в 1:02

Сколько экспрессии. Позвольте поинтересоваться, а чем ваш совет добавлять через настройки js отличается от моего?)

Аватар пользователя t1mm1 t1mm1 6 июня 2015 в 1:45

Никакой экспрессии. Только пожелание - пишите по стандартам. У автора изначально костыли.
---
Автору нужно обработать данные для html основного шаблона страницы, но он пытается взять их из шаблона ноды. Логично использовать предпроцесс, но правильно это делать не на уровне шаблона темы, и не на уровне предпроцесса в самой теме. Все же темизацию и обработку данных стоит разделять. Простым языком - при смене темы - это работать уже не будет.

Аватар пользователя Boozenok Boozenok 7 июня 2015 в 0:45

t1mm1 wrote:
Никакой экспрессии. Только пожелание - пишите по стандартам. У автора изначально костыли.
---
Автору нужно обработать данные для html основного шаблона страницы, но он пытается взять их из шаблона ноды. Логично использовать предпроцесс, но правильно это делать не на уровне шаблона темы, и не на уровне предпроцесса в самой теме. Все же темизацию и обработку данных стоит разделять. Простым языком - при смене темы - это работать уже не будет.

Дело в том, что мне нужно передать данные с ноды в этот скрипт. Это скрипт Гугл Аналитикса. Не представляю как это вывести через свой модуль. Оно все нормально передается если писать в пределах шаблона node, но мне нужно вынести результат выше - в html

Аватар пользователя t1mm1 t1mm1 10 июня 2015 в 1:34

Без разницы, гугл аналитика там будет, яндекс метрика, гугл цели или еще какая-нибудь хрень.
Я вам дал совет по реализации и описал причины. Вы можете делать как вы считаете правильным - это тоже верное решение, потому что оно ваше.
Просто может наступить день, когда вашим проектом будет заниматься другой человек, и этот человек, возможно, будет крыть вас матом. Или наступит день, когда клиент попросит перекроить существующую систему, и у вас на задачу, на которую можно потратить от силы 1-2 часа уйдет несколько дней. Все механизмы внутри системы и правила работы с ними придумали не от не_уй делать, а для облегчения жизни проекта. Изучайте стандарты. Это, кстати, большой плюс. И часто обязательное условие даже для джуниоров в более менее адекватную компанию.

Аватар пользователя Boozenok Boozenok 7 июня 2015 в 22:01

Это не код стандартного Аналитикса! И коммерсса у меня нет вообще.
Модуль никак не справляется с этой задачей.

Вопрос решен. всем спасибо за участие!