在 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')

但是它 returns FALSE,所以这个 'scope'.

中不存在函数

总而言之,我想要一个节点的有用函数集合 included/attached,但我不想每次创建节点时都写 include/require 语句。我只想简化 'call' 那些功能。那么,我该怎么做呢?

提前致谢。

您好,请在 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 模块的新手(事实上,这是我的第一个模块)。

但是,在这种情况下,将我的多面手功能包含在模块中非常容易。以这种方式,这些功能在所有网站上都可用,所以我随时随地 call/invoke 它们。