Определение глобальной переменной в node.tpl.php

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

Аватар пользователя volocuga@drupal.org volocuga@drupal.org 4 июля 2010 в 1:54

Как то неудобно спрашивать Smile

задаю функцию в node.tpl.php

$desc = $node->content['body']['#value'];
// идёт разное всякое

function myfunct() {
global $desc;
$output = $desc;
// идёт разное всякое
return $output;
}

<?php echo myfunct() ?>

Ничё не выводит, т.к $desc не передаётся, а должна. В чём трабла?

Комментарии

Аватар пользователя Sinkora Sinkora 4 июля 2010 в 2:57

Попробуй так в первой строчке:
global $desc = $node->content['body']['#value'];

Т.е. у тебя сейчас переменная $desc не является глобальной.

Или можно так, без глобальной переменной:

$desc = $node->content['body']['#value'];

function myfunct($desc) {
  $output = $desc;
  // идёт разное всякое
  return $output;
}

echo myfunct($desc);

Аватар пользователя glu2006 glu2006 4 июля 2010 в 7:36

Вставлю свои 5 копеек.
Задавать функцию в шаблоне крайне не правильно с точки зрения архитектуры друпала.
В шаблоне должен быть только хтмл, переменные из препроцессов и theme функции.
Необходимо задать функцию, так определите ее в другом месте и передайте параметром $desc. А в шаблоне должно быть только


 <?php print myfunct($desc); ?>
Аватар пользователя volocuga@drupal.org volocuga@drupal.org 4 июля 2010 в 12:27

Это понятно и я полностью согласен, просто задумка такая, чтобы это всё лежало в одном месте. Хочу сделать для уберкарта некий универсальный node.tpl.php со всеми возможными переменными - кнопки, поля, цены в разном формате,виджеты и тд

В данном случае функция - блок с jquery табами.