Drupal如何为库和包含文件设置路径

时间:2015-07-10 05:17:42

标签: drupal include-path

在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'而被投诉未找到。我已经尝试将库文件复制到同一文件夹和主页,但所有情况都不起作用。如何设置正确的路径?

非常感谢。

3 个答案:

答案 0 :(得分:0)

您应该使用drupal_get_path来获取文件的完整路径:

$page = include_once(drupal_get_path('module', 'front') . 'templates/page.php');

Here是文档。

答案 1 :(得分:0)

Libraries API提供此功能。

答案 2 :(得分:0)

如何包含一些文件?

方法1

您可以将文件放在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

模块名称是modules文件夹中.info文件的文件名。 Read more about drupal_get_path()

方法2

要包含现有模块中的文件,您应该使用:     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文件夹下。

Read more about hook_theme()

不要忘记清除缓存。