在node.tpl.php中包含包含函数的文件,并在节点内容上执行它们


Include file with functions in node.tpl.php and execute them on node content

首先,我知道在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/request语句。我只想简单地"调用"那些函数。那么,我该怎么做呢?

提前谢谢。

Hello在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";
}

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

然而,在这种情况下,很容易将我的广义函数包含在一个模块中。通过这种方式,这些功能可以在所有网站上使用,所以我可以随时随地调用它们。