Drupal 如何设置库路径和包含文件
Drupal how to set up path for library and include files
在 Drupal 7 中,我在 Front Page 模块内部编写 PHP,例如:
$page = include_once "templates/page.php";
我将 "templates/page.php" 放在 /sites/all/modules/front 下,Drupal 抱怨文件丢失。有什么建议最好将要包含的文件放在哪里?
然后,在安装了PHP Simple HTML DOM Parser之后,我写了下面的
$html = new simple_html_dom();
并被投诉 Class 'simple_html_dom' 未找到。我试过将库文件复制到同一个文件夹和主目录,但所有情况都不起作用。如何设置正确的路径?
非常感谢。
您应该使用 drupal_get_path
获取文件的完整路径:
$page = include_once(drupal_get_path('module', 'front') . 'templates/page.php');
Here 是文档。
Libraries API提供了这个功能。
如何包含一些文件?
方法一
您可以将文件放在 web-root 文件夹下的任何位置,该文件夹是包含 index.php 文件(主文件夹)的文件夹。
$type = 'module';
$name_of_module = 'custom_module';
$path = drupal_get_path($type, $name_of_module);
include_once($path . 'custom_file.inc.php');
有效类型如下所列:
- 模块
- 主题
- 简介
- theme_engine
模块名称是模块文件夹中.info 文件的文件名。
Read more about drupal_get_path()
方法二
要包含现有模块中的文件,您应该使用:
module_load_include('inc', 'content', 'includes/content.node_form');
如何包含模板文件?
模板文件最好放在主题文件夹中,因为其他人会希望模板文件放在那里。
Read more about template naming suggestions.
但是如果没有您的自定义模块此模板没有任何意义,您可以将此模板文件放在自定义模块文件夹中。
要在主题中附加模板,您应该使用:
function MYTHEME_preprocess_page(&$variables, $hook) {
if (array_key_exists('node', $variables)) {
if ($variables['node']->type == 'article'){
$variables['theme_hook_suggestions'][] = 'page__article';
}
}
}
要在模块中附加模板:
/**
* Implements hook_theme().
*/
function MODULE_theme($existing, $type, $theme, $path) {
return array (
'node__CONTENTTYPE' => array (
'variables' => array( . . . ),
'template' => 'node--CONTENTTYPE' ,
'base hook' => 'node',
'path' => drupal_get_path('module', 'CUSTOM_MODULE'),
),
);
}
模板文件应命名为 node--CONTENTTYPE.tpl.php 并放在 CUSTOM_MODULE 文件夹下。
别忘了清除缓存。
在 Drupal 7 中,我在 Front Page 模块内部编写 PHP,例如:
$page = include_once "templates/page.php";
我将 "templates/page.php" 放在 /sites/all/modules/front 下,Drupal 抱怨文件丢失。有什么建议最好将要包含的文件放在哪里?
然后,在安装了PHP Simple HTML DOM Parser之后,我写了下面的
$html = new simple_html_dom();
并被投诉 Class 'simple_html_dom' 未找到。我试过将库文件复制到同一个文件夹和主目录,但所有情况都不起作用。如何设置正确的路径?
非常感谢。
您应该使用 drupal_get_path
获取文件的完整路径:
$page = include_once(drupal_get_path('module', 'front') . 'templates/page.php');
Here 是文档。
Libraries API提供了这个功能。
如何包含一些文件?
方法一
您可以将文件放在 web-root 文件夹下的任何位置,该文件夹是包含 index.php 文件(主文件夹)的文件夹。
$type = 'module';
$name_of_module = 'custom_module';
$path = drupal_get_path($type, $name_of_module);
include_once($path . 'custom_file.inc.php');
有效类型如下所列:
- 模块
- 主题
- 简介
- theme_engine
模块名称是模块文件夹中.info 文件的文件名。 Read more about drupal_get_path()
方法二
要包含现有模块中的文件,您应该使用: module_load_include('inc', 'content', 'includes/content.node_form');
如何包含模板文件?
模板文件最好放在主题文件夹中,因为其他人会希望模板文件放在那里。
Read more about template naming suggestions.
但是如果没有您的自定义模块此模板没有任何意义,您可以将此模板文件放在自定义模块文件夹中。
要在主题中附加模板,您应该使用:
function MYTHEME_preprocess_page(&$variables, $hook) {
if (array_key_exists('node', $variables)) {
if ($variables['node']->type == 'article'){
$variables['theme_hook_suggestions'][] = 'page__article';
}
}
}
要在模块中附加模板:
/**
* Implements hook_theme().
*/
function MODULE_theme($existing, $type, $theme, $path) {
return array (
'node__CONTENTTYPE' => array (
'variables' => array( . . . ),
'template' => 'node--CONTENTTYPE' ,
'base hook' => 'node',
'path' => drupal_get_path('module', 'CUSTOM_MODULE'),
),
);
}
模板文件应命名为 node--CONTENTTYPE.tpl.php 并放在 CUSTOM_MODULE 文件夹下。
别忘了清除缓存。