在node.tpl.php中包含带有函数的文件,并在节点内容

时间:2015-11-29 20:34:11

标签: php drupal-7

首先,我知道这不是在D7中做到这一点的正确方法,但我需要这样做。

我在node.tpl.php中包含了一个文件:

include DRUPAL_ROOT . '/sites/all/themes/mytheme/inc/node_functions.php';

在这个包含的文件中,我有一个函数,之后我想从节点的内容体中调用。

目前,如果我从节点内容调用该函数,我会得到一个WSOD。我还检查了在函数存在的节点内容中是否存在PHP函数:

function_exists('name_of_my_function')

但它返回FALSE,因此该范围'中的函数不存在。

总之,我想要一个包含/附加到节点的有用功能的集合,但是我不想在每次创建节点时编写include / require语句。我只想简单地打电话给'那些功能。那么,我该怎么做呢?

提前致谢。

2 个答案:

答案 0 :(得分:0)

您好在template.php文件中使用以下代码,为此您必须使用节点预处理功能。

function THEME_NAME_preprocess_node(&$variables) {
 if(function_exists('FUNCTION_NAME_TO_BE_CALLED')) {
  include base_path() . path_to_theme() . "/file_to_include.php";
 }
}
function FUNCTION_NAME_TO_BE_CALLED() {
  echo "hello";
}

答案 1 :(得分:0)

我终于写了一个自定义模块来实现我的目标。正如@Leonando Tan在DrupalAnswers注意到我,有人可以编写一个带有自定义函数的模块(与特定的钩子无关)。我不知道,因为我是开发drupal模块的新手(事实上,这是我的第一个模块)。

然而,在这种情况下,很容易将我的通才功能包含在模块中。这样做,这些功能可以通过所有网站获得,所以我随时随地都可以调用/调用它们。