Вопрос с внедрением функции в ноду типа PHP-code
8 июля 2014 в 12:23
Есть насущная потребность вставить в ноду выполнение php-функции.
Тип материала ноды — PHP code.
Если написать прямо в ноде код
…то Всё отлично работает.
Если же изъять эту функцию из ноды и переместить её в template.php, оставив в ноде только
…то вместо ноды (и вообще сайта) выдаётся белая страница.
В чём может быть дело?
- Блог
- Войдите или зарегистрируйтесь, чтобы отправлять комментарии
Комментарии
Потому что это ЦМС Друпал. Почитайте как оформляются функции в template
Функции в template оформляются миллионом способов. В этом его, template, без сомнения, огромный плюс. Но весь интернет прочитать нельзя. Если вас не затруднит, ткните меня носом, в то, что вы имеете в виду. Я именно для этого сюда и написал.
У вас опечатка.
Надо писать не в template.php, а в page-- .tpl.php (тут уже маны в помощь)
Дак я хз, чо за функция ему там нужна была. Ясно если это от модуля, пихаем в модуль, от темы в тему (ну чтобы понятнее было). А если ему забубенить калькулятор для определенной странице надо? В темплей лезть?
Ну вот в template.php я и полез, и функция, которая в пределах ноды отлично работает, там работать не желает, а выдаёт белую страницу. Что не так?
Функция, если что, нужна чтобы выводить html-строку, находящуюся в зависимости от входной переменной.
переменная берётся из строки, вызывающей функцию:
в ноде будет как-то так:
<?php
print (имяфункции("переменная"))
?>
попробую preproccess_node(), спасибо
нужно не фунцию внедрять в ноду, а создать в препроцессе переменную и в нее записать возвращаемое значение функции, а затем эту переменную выводить в шаблоне ноды(node.tpl.php)
вот вам ядерный препроцесс ноды template_preprocess_node()
в template.php создаете препроцесс-функцию для ноды ИМЯТЕМЫ_preprocess_node() по аналогии с template_preprocess_node()
Подскажите, мне нужно, чтобы моя функция отрабатывла только в нодах. Я в template.php вставляю код
function моятема_preprocess_node($namespace, $path, $alt = '', $title = '', $attributes = NULL) {
$node = node_load(array('nid' => arg(1)));
if (is_null($attributes)) {
$attributes['class'] = 'imagecache imagecache-'. $namespace;
}
$attributes = drupal_attributes($attributes);
$imagecache_url = imagecache_create_url($namespace, $path);
if ($node) {
$alt=$node->title;
$title=$node->title;
}
return '';
}
И НИЧЕГО. Ткните носом что я делаю не так
З.Ы. Не могу нормально вставить здесь код
потому что нужно было хотя бы перейти по моей ссылке и посмотреть пример препроцесс функции, а не заниматься художественной самодеятельностью
Я переходил и смотрел, но поскольку я в коде, мягко говоря, не очень, то мне это ничего не дало. У меня задача заполнить alt и title в ноде. Именно только в ноде. Если у Вас есть возможность подсказать-буду очень благодарен или есть только желание тыкнуть носом не дав ответа..?
При добавлении данной функции в template - она отрабатывает на всех страницах, а мне нужно только в ноде