Drupal Добавление пользовательского кода Omniture, переменная PHP не установлена

Хорошо, у меня есть пользовательский код Omniture, который мне нужно добавить на сайт Drupal. Все хорошо, так как я добавил код Javascript на страницу шаблона темы. Код отображается на всех страницах, как и ожидалось, но у меня есть пара переменных PHP, которые мне нужно напечатать в Javascript, которые становятся пустыми.

<?php

    $omniture_event = "test this works as expected";

    $omniture =<<<OMNITURE
<script language="JavaScript"><!--

s.events="{$omniture_event}"
s.landing="{$omniture_landing}"

OMNITURE;

    echo $omniture;

?>

но $omniture_landing установлен только на целевой странице, и похоже, что сначала загружается страница шаблона, а затем добавляется содержимое страницы. Я могу вывести значение на экран, и я вижу Javascript в нижнем колонтитуле, как и ожидалось, с другим набором переменных PHP, но когда я пытаюсь установить переменную на целевой странице, в javascript появляется пустое значение.


person Phill Pafford    schedule 13.10.2010    source источник


Ответы (2)


Вы можете отредактировать файл шаблона page.tpl.php. Если «Целевая страница» является вашей главной страницей, вы можете сделать что-то более простое и последовательное (если в конечном итоге вы измените заголовок).

if($is_front) { 
  $omniture_landing = 'Yeah we have landed!!!'; 
}

Или по идентификатору узла:

if($node->nid == '1') { 
  $omniture_landing = 'Yeah we have landed!!!'; 
} 

Замена 1 любым идентификатором узла, конечно

Кроме того, проверьте, есть ли у вас файл page-front.tpl.php. Если да, то этот файл page-front.tpl.php является шаблоном, который запускается на целевой странице вместо page.tpl.php, и вы можете добавить свой код в page-front.tpl.php или удалите его, если вам не нужен отдельный шаблон для целевой страницы.

person coderintherye    schedule 13.10.2010
comment
используя ваше решение из вашего комментария ниже - person Phill Pafford; 15.10.2010

В итоге я добавил это на страницу шаблона (page.tpl.php) перед кодом Omniture.

if($node->title == 'Landing Page Title') {
    $omniture_landing = 'Yeah we have landed!!!';
} else {
    $omniture_landing = '';
}
person Phill Pafford    schedule 13.10.2010
comment
Я вижу, если «Целевая страница» — это ваша главная страница, то вы можете сделать что-то более простое и последовательное (если вы в конечном итоге измените заголовок). if($is_front) { $omniture_landing = 'Да, мы приземлились!!!'; }... - person coderintherye; 14.10.2010
comment
Или, по крайней мере, я бы сделал if($node-›nid == '1') { $omniture_landing = 'Да, мы приземлились!!!'; } Замена 1 на любой идентификатор узла, конечно. В любом случае, рад, что вы это поняли, и спасибо за голосование. - person coderintherye; 14.10.2010
comment
Неплохая идея использовать идентификатор узла вместо строки, спасибо. Пожалуйста, отредактируйте свой ответ, чтобы включить этот параметр, чтобы я мог выбрать его как принятый ответ. - person Phill Pafford; 14.10.2010