Внедрение php в блок

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

Аватар пользователя petav petav 25 августа 2008 в 22:40

Подскажите пожалуйста что я не парвильно делаю при внедрении php кода в блок

1) Создаю новый блок
2) Перехожу к разделу "Установки видимости для страницы"
3) В разделе "Установки видимости для страницы" выбираю "Показать, если данный PHP-код возвращает TRUE (PHP-режим, только для экспертов)."
4) Добавляю в поле "текст" следующее:
*
<?php
echo 'Hello';
?>

Так вот я не вижу слово 'Hello', только сам тектс блока.

P.S. Если вместо echo 'Hello' вызвать несуществующую функцию, то вываливается ошибка (по чем можно судить что PHPfilter работает)

Комментарии

Аватар пользователя obdj obdj 26 августа 2008 в 0:22

Я сам только начинаю разбираться с Друпалом, и если, как я понял, задача состоит в том что бы внедрить php код в блок, то "Установки видимости для страницы" тут не при чем, а для внедрение php кода, надо включить модуль PHP filter, затем в настройках блока выбрать Input format -> PHP code. После этого php можно вставлять в "Block body" <?php echo "Hello World!!!"; ?>.

А пункт "Установки видимости для страницы" это для того, что бы управлять на каких страницах должен показываться блок.

Аватар пользователя glu2006 glu2006 26 августа 2008 в 12:35

2) Перехожу к разделу "Установки видимости для страницы" этот пхп код должен возвращать TRUE или FALSE а никак не хелло ворд ))) т.е. его примерная структура должна быть какой:
<?php
$a = 'FALSE'
if (!$a) {$b = 'TRUE' //блок показывать
} else {$b = 'FALSE'} //блок не показывать
return $b;

Аватар пользователя Dan Dan 26 августа 2008 в 13:44

Что-то мне подсказывает, что этот код может не работать. Ибо 'true' и 'false' - это строки, которые при преобразовании _должны_ быть интерпретированы в true. Возможно что код работает, но это будет частный случай, исключение. Так делать нельзя.
Начиная с версии 4 в PHP введён тип bool, c двумя регистро-независимыми значениями переменной - true и false. Пользуйтесь ими.

<?php
return true;
?>

можно возвращать условие, оно будет преобразовано в тип bool:
<?php
return ($a > $b);
?>

приведённый выше пример можно переписать так:
<?php
$a = false;
return !$a;
?>