在 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 它们。
首先,我知道这不是在 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 它们。