Здравствуйте.
Столкнулся с задачей, к которой не могу подобрать нормальное название, чтобы нагуглить. ((
В шаблоне страниц выполняется PHP код, который записывает в переменную $var определённое значение. Эта переменная используется для построения самого шаблона. С этим никаких проблем.
Вопрос в том, как это значение передать в блок, чтобы в содержании блока я смог использовать эту переменную? В содержании блока эта переменная не видна (( А значение этой переменной требуется, чтобы в содержании блока вывести разный результат.
Также на всякий случай уточню, что у разных пользователей значение этой переменной может быть разным. Значение генерируется скриптом в шаблоне страницы в зависимости от данных пользователя.
Заранее благодарен за любую помощь.
Комментарии
http://www.php.su/learnphp/vars/?statvars
в template.php
<?php function MYTHEME_set_myvar($var=NULL){
static $myvar;
if(!is_null($var)){
$myvar=$var;
}
return $myvar;
}
?>
В шаблоне страницы вызываете эту функцию передавая в параметре свою переменную.
В шаблоне блока эта функция без параметра вернет вам вашу переменную.
Не уверен, что это сработает.
Тонкость в том, что значение нужно вывести именно в СОДЕРЖАНИЕ блока, а не в шаблоне.
Скорее всего в шаблоне блока переменная будет видна напрямую и без обёртывания в эту функцию, раз функция будет работать.
формат ввода PHP придуман как раз для подобных случаев
Это никак не относится к вопросу. В блоке включён формат с поддержкой PHP. В блоке работает PHP. Но в содержании блока невозможно получить значение переменной, которая определена в шаблоне страницы. Область видимости у той переменной не распространяется на содержание блока.
А Вы попробуйте-)
Добрый вечер. Столкнулся с тем, что не могу вызвать эту функцию в блоке. Оказалось, что вообще никакую функцию не получается вызвать. При попытке вызвать любую функцию в блоке сайт ломается и передо мной белый экран.
Нагуглил единственное упоминание подобной проблемы - http://drupal.stackexchange.com/questions/118041/how-to-add-functions-in...
Но ответа там нет толкового. Отсылают к обработке проблемы белого экрана, но там нет никакой связи с возможностью вызова функции в блоках и связанных.
Подскажите, пожалуйста, в чём может быть проблема.
При возникновении этой ошибки в Журнале не появляется запись, а исходный код страницы при этом содержит только стандартную заготовку + содержание блока, которое есть в блоке ДО вызова функции.
Повторюсь, что проблема с любой функцией, а не только с описанной Вами ((
код покажите, который в блоке выполняется..
Сейчас перепроверил - если функция объявлена в самом содержимом блока, то всё в порядке. То есть следующий код выполняется:
<?php
function hello() { echo "hello"; }
hello();
?>
----
Вызов функции rdtheme_set_myvar(), которая объявлена в шаблоне страницы (или вызов несуществующей функции) приводит к белому экрану. Никаких ошибок. Просто белый экран.
function rdtheme_set_myvar($var=NULL){
static $myvar;
if(!is_null($var)){
$myvar=$var;
}
return $myvar;
}
---------
Результат аналогичный на всех сайтах.
Функция должна объявляться не в шаблоне, а как минимум в template.php
В шаблоне она только вызывается с параметром.
шаблон точно - шаблон страницы? (page.tpl.php)
на всякий случай проверьте последовательность "вызова" шаблонов.
В шаблоне страницы watchdog('my','page');
В шаблоне блока watchdog('my','block');
В журнале друпал проверьте очередность выведенных сообщений.
что то мне подсказывает, что пытаетесь собрать велосипед из костылей, лучше распишите подробно свою задачу, что конкретно нужно сделать и потом уже подскажут, как правильно реализовать