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

Drupal如何设置库和包含文件的路径,drupal,include-path,Drupal,Include Path,在Drupal 7中,我从首页模块内部编写PHP,比如: $page = include_once "templates/page.php"; 我将“templates/page.php”放在/sites/all/modules/front下,Drupal抱怨文件丢失。有什么建议最好把文件放在哪里 然后,在安装了PHP简单HTML DOM解析器之后,我编写了以下代码 $html = new simple_html_dom(); 并因未找到“simple_html_dom”类而受到投诉。我曾尝

在Drupal 7中,我从首页模块内部编写PHP,比如:

$page = include_once "templates/page.php";
我将“templates/page.php”放在/sites/all/modules/front下,Drupal抱怨文件丢失。有什么建议最好把文件放在哪里

然后,在安装了PHP简单HTML DOM解析器之后,我编写了以下代码

$html = new simple_html_dom();
并因未找到“simple_html_dom”类而受到投诉。我曾尝试将库文件复制到同一文件夹和主文件夹,但所有案例都不起作用。如何设置正确的路径


非常感谢。

您应该使用
drupal\u get\u path
获取文件的完整路径:

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

是文档。

您应该使用
drupal\u get\u path
获取文件的完整路径:

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

提供了此功能。

提供了此功能。

如何包含一些文件? 方法1 您可以将文件放在web根文件夹下的任何位置,该文件夹是index.php文件的文件夹(主文件夹)

有效类型如下所示:

  • 模块
  • 主题
  • 侧面图
  • 主题引擎
Module name是modules文件夹中.info文件的文件名。

方法2 要包含现有模块中的文件,应使用: 模块加载包含('inc','content','includes/content.node_form')

如何包含模板文件? 模板文件的更好位置是主题文件夹,因为其他人希望模板文件在那里

但如果没有自定义模块,此模板就没有意义,则可以将此模板文件放在自定义模块文件夹中

要在主题中附加模板,应使用: 要在模块中附加模板,请执行以下操作: 模板文件应命名为node--CONTENTTYPE.tpl.php,并放置在自定义_模块文件夹下

不要忘记清除缓存。

如何包含一些文件? 方法1 您可以将文件放在web根文件夹下的任何位置,该文件夹是index.php文件的文件夹(主文件夹)

有效类型如下所示:

  • 模块
  • 主题
  • 侧面图
  • 主题引擎
Module name是modules文件夹中.info文件的文件名。

方法2 要包含现有模块中的文件,应使用: 模块加载包含('inc','content','includes/content.node_form')

如何包含模板文件? 模板文件的更好位置是主题文件夹,因为其他人希望模板文件在那里

但如果没有自定义模块,此模板就没有意义,则可以将此模板文件放在自定义模块文件夹中

要在主题中附加模板,应使用: 要在模块中附加模板,请执行以下操作: 模板文件应命名为node--CONTENTTYPE.tpl.php,并放置在自定义_模块文件夹下


别忘了清除缓存。

我发现如果我将include文件放在主目录(Drupal安装的地方)中,它总是可以工作的。但是我认为这不是一个好的做法,我发现如果我把include文件放在主目录(Drupal安装的地方)中,它总是有效的。我想这不是一个好的练习,谢谢。我认为这是一个非常全面的答案。尽管如此,我发现如果我将include文件放在主目录(Drupal安装的地方)中,默认情况下它似乎总是工作的,没有任何附加声明。这总是正确的吗?当然,如果您将文件放在主目录(drupal安装的地方)并使用
include_once“templates/page.php”为什么它有效?因为路径是相对于主目录的。尝试将前导反斜杠(“/”)添加到路径或将drupal移动到子文件夹,但这将无法按预期工作。谢谢。我认为这是一个非常全面的答案。尽管如此,我发现如果我将include文件放在主目录(Drupal安装的地方)中,默认情况下它似乎总是工作的,没有任何附加声明。这总是正确的吗?当然,如果您将文件放在主目录(drupal安装的地方)并使用
include_once“templates/page.php”为什么它有效?因为路径是相对于主目录的。尝试将前导反斜杠(“/”)添加到路径或将drupal移动到子文件夹,这将无法按预期工作。
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'),
    ),
  );
}