2013-05-03 3 views
1

Я получаю странную ошибку при попытке объявить простую функцию в drupal 7. Я объявляю функцию в верхней части файла шаблона (я знаю, как правило, нет, но мне нужно получить эти шаблоны из быстро, нет времени, чтобы разработать модуль для функций прямо сейчас) Так я заявляю следующее в верхней части файла:.Объявление функции, противоречащее самому себе

1. function templateB_EventRegistrationNode($params = NULL) { 
2. /* code */ 
3. } 

Однако, когда я пытаюсь запустить шаблон я получаю следующая ошибка,

Fatal error: Cannot redeclare templateB_EventRegistrationNode() (previously declared in C:\wamp\www\vsi\sites\all\themes\vsi_new_template_b\templates\node.tpl.php:1) in C:\wamp\www\vsi\sites\all\themes\vsi_new_template_b\templates\node.tpl.php on line 3

(Номера линий были изменены в соответствии с ex достаточно.)

У кого-нибудь есть идея, почему первая строка противоречит последней строке функции? BTW, копия функции с другим именем работает в другом шаблоне, поэтому код действителен.

+2

возможно, потому что файлы шаблонов могут быть включены несколько раз, а второе включение вызывает ошибку. –

+2

Номера строк неактуальны (как и ваше затенение, так для примера). Это проблема с переделкой функции. Используйте отложенные определения, обернув их в 'if (! Function_exists (" ... ")) {' как минимум. – mario

+0

потрясающий, спасибо, ребята, который указал мне в правильном направлении. – matt

ответ

1

В Drupal любая функция, используемая файлом шаблона темы, должна находиться в файле template.php, используемом этой темой.

@mario прав насчет ошибки, вызванной включением файла более одного раза, но если вы поместите функции в файл template.php, ошибка больше не появится, поскольку она включена только один раз.

Содержимое файла шаблона должно быть просто кодом, необходимым для отображения результата.

+0

Я думаю, что это ошибка новобранец, не думая, что добавлена ​​крошечная функция - это мой файл * .tpl.php. Как ни странно, он работал без ошибок на моем местном бродяжнике, но не на моем тестовом сервере. Определенно одна из тех вещей, которые вы не будете делать неправильно дважды. – Zoheir

Смежные вопросы