可以配置Drupal在其他位置查找模块吗?


13

我把我的模块放在site / all / modules中。有没有一种方法可以配置Drupal在其他位置找到更多模块?


已编辑

我经常使用虚拟主机,但不是按照您描述的方式使用。我熟悉的格式如下所示,它可以帮助我将整个工作项目放置在www之外的其他位置。

<VirtualHost *:80>
    ServerName testdrupal.com
    DocumentRoot "C:/proj/testdrupal"
    ServerAlias testdrupal.com

   <Directory "C:/proj/testdrupal/">
       Options Indexes MultiViews FollowSymLinks
       AllowOverride All
       Order allow,deny
       Allow from all
   </Directory>
</VirtualHost>

我认为您描述的内容有所不同,对吧?我试图像往常一样将drupal文件夹保留在www内,但仅将站点/所有/模块移动到另一个位置,但是在这种情况下,我仍然不知道VHost条目的外观。假设我要将其移至C:/ proj / testdrupal。我希望我不会完全误解你。

Answers:


14

在回答之前,了解一下Drupal如何找到模块的背景会很有帮助。Drupal使用来自Drupal根目录的建议列表来找出在哪里找到模块。按优先顺序:

  1. sites/$SITENAME/modules
  2. sites/all/modules
  3. profiles/$INSTALLPROFILE/modules
  4. modules

如果Drupal在(1)中找不到模块,则检查(2)。如果不存在,则检查(3),依此类推。

对于(1),如果您仅使用Drupal的基本单站点安装,$SITENAME则为default。除此以外:

  • 在Drupal 6中,$SITENAME是站点的主机名。如果您的网站位于example.com$SITENAMEexample.com
  • 在Drupal 7中,$SITENAME在中定义sites/sites.php。如果您看一下example.sites.php,您将看到如何定义它。同样重要的是要注意,在那里列出的任何模块仅适用于该特定站点,而不是所有站点。

(2)中,找到的任何模块将在Drupal安装的任何站点上可用。升级核心安装时,它也将保持不变。当然,这是建议的放置模块的地方,并且可能您已阅读的所有文档都告诉您将模块放置在这里。

(3)用于需要特定模块的安装配置文件。安装配置文件本质上是为Drupal站点定义自定义初始状态的一种方式。例如,Drupal内置了两个安装配置文件:Standard(包含最常用的功能)和Minimal(仅包含最低的Drupal站点正常运行所需的最低配置)。

(4)由Drupal核心使用。尽管您可以从技术上在此处添加模块,并且它们可用于所有站点,但您不应该。说真的 modules当Drupal核心更新时,该文件夹会被触摸,如果您坚持使用您的站点才能正常运行的模块,则会导致一系列问题。


现在背景已经不复存在,您可以使用文件系统技巧将模块放置在Drupal外观之外。

例如,您可以设置从Drupal安装之外的另一个目录的符号链接sites/all/modules

  • 在基于Unix / Linux / BSD的系统中: ln -s /path/to/modules/folder /path/to/drupal/sites/all/modules
  • 在Windows Vista / Server 2008/7和更高版本上: mklink C:\path\to\drupal\sites\all\modules C:\path\to\custom\modules\folder

据我所知,在没有mklink的Windows早期版本中您无能为力


非常感谢,这确实可以解释这一点,但是我仍然无法使其正常工作。您能否看一下我帖子中的“编辑”部分。它超出了这里的容纳能力。谢谢。
sameold 2011年

@sameold我已经修复并澄清了有关符号链接的部分。在Windows上,符号链接有点粗略,但是我相信我提供的命令应该可以使用。

3

在Drupal 7中,Drupal查找模块的目录如下:

  • 模组
  • 配置文件/ $ profile /模块
  • $ config /模块

$ profile是drupal_get_profile()返回的值;$ config是从conf_path()返回的值。
搜索系统对象文件(模块,主题等)的函数是drupal_system_listing()

在Drupal 6中寻找相同的目录。唯一的区别是$ profile是一个全局变量。当未设置全局变量时,该函数将获取“ install_profile”持久变量的值,该变量的默认值为“ default”。


2

您可以将它们放置在site / all / modules中,然后它们将可用于所有站点(如果您具有多站点配置),默认站点的site / default / modules或site / site.com / modules你有那个。对于后一个目录,这意味着它们仅可用于该特定站点。

此外,您可以根据需要在这些文件夹下组织它们,这意味着您可以在其中创建任何子文件夹。通常要做的事情是创建一个contrib文件夹,然后将从do下载的模块放在该文件夹中,同时将该站点的自写模块保留在自定义文件夹中。


1

不确定您的意思,但是我们使用将第三方模块与内部模块分开的通用约定。

“自制”自定义模块位于:

网站/所有/模块/自定义

第三方模块将位于:

站点/所有/模块/供应商

如果子目录不符合您的需求,我相信您可以轻松地将/ obscure / path / to / module目录符号链接到drupal的module目录中。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.