drupal/core

Drupal 是一个开源的内容管理系统平台,为数百万人提供网站和应用。

维护者

详细信息

github.com/drupal/core

源代码

安装次数: 44,912,096

依赖项: 1,000

建议者: 1

安全: 93

星标: 188

关注者: 21

分支: 54

类型:drupal-core

11.0.4 2024-09-12 09:38 UTC

This package is auto-updated.

Last update: 2024-09-21 08:38:37 UTC


README

这是一个 [Git subtree] (https://github.com/git/git/blob/master/contrib/subtree/git-subtree.txt),它将 [Drupal] (https://github.com/drupal/drupal) 8 的 core 目录分割出来,可以用来构建 Drupal 网站的目录结构,并且相较于将整个 Drupal 仓库拖入,它具有以下优势

  • Drupal 网站的所有组件,包括 Drupal、贡献的模块和主题,以及外部库,都可以通过 [Composer] (https://getcomposer.org.cn) 拖入
  • Drupal 和任何外部库都可以通过 Composer 引导(即不安装任何外部库的模块)
  • index.php.htaccessrobots.txt 等文件有完全控制权,因为这些文件不会被 Drupal 核心更新覆盖

用法

将以下内容添加到您网站的 composer.json

{
    "require": {
        "composer/installers": "^1.0.20",
        "drupal/drupal-core": "8.0.*"
    },
}

(此存储库可在 [Packagist] (https://packagist.org.cn/packages/drupal/core) 上找到,因此不需要明确指定此存储库的 URL。)

目录布局

这将下载 Drupal 的 core 目录到存储库的根目录。如果 Drupal 8 模块包含 composer.json 文件,它将被下载到 Drupal 期望的 modules 目录中。这与主题或安装配置类似。 (包不会放在 vendor 目录中是 composer/installers 包的功能,因此需要它。)

如果您想将 Drupal 核心或模块、主题或安装配置文件放在不同的目录中,您可以在 composer.json"extra" 部分提供一个 "installer-paths" 配置指令。例如,要将整个 Drupal 网站放置在名为 web 的存储库子目录中,可以使用以下命令

{
    "extra": {
        "installer-paths": {
            "web/core": ["type:drupal-core"],
            "web/modules": ["type:drupal-module"],
            "web/profiles": ["type:drupal-profile"],
            "web/themes": ["type:drupal-theme"]
        }
    }
}

或者,要将模块放置在 modules 目录中的 contrib 子目录中,使用以下命令

{
    "extra": {
        "installer-paths": {
            "modules/contrib": ["type:drupal-module"]
        }
    }
}

网站模板

为了实际安装 Drupal,您需要将一些文件从上游 Drupal 仓库复制到您的存储库根目录。要操作 Drupal,需要复制 index.phpsites/default/default.services.ymlsites/default/default.settings.php 文件,并且建议复制 .htaccessweb.config 以及 robots.txt 文件。其余文件可以按您的喜好复制。

您可以通过克隆上游 Drupal 仓库并手动复制文件,或者通过命令行直接获取这些文件来复制文件。例如

# Copy index.php from the upstream Drupal repository
wget https://raw.githubusercontent.com/drupal/drupal/8.0.x/index.php

查看我的[Drupal网站模板](https://github.com/tstoeckler/drupal-site-template),其中包含安装和运行Drupal所需的文件目录示例,包括上述的composer.json文件。模板还包括下面详细说明的index.php修改和drushrc.php。请注意,此网站模板遵循最佳实践,将Drupal根目录放在存储库的子目录中,在这个特定情况下,称为web

Drupal的自动加载器

上游Drupal存储库包含所有Composer依赖项和core/vendor目录中的Composer自动加载器。然而,此存储库的一个目的就是控制用于启动Drupal的自动加载器。如果你在composer.json中拉入了额外的库,你将无法使用Drupal的硬编码自动加载器来自动加载它们。要为Drupal请求使用从你的composer.json生成的自动加载器,只需在index.php中更改以下行即可

$autoloader = require_once __DIR__ . '/core/vendor/autoload.php';

适当修改,例如

$autoloader = require_once __DIR__ . '/vendor/autoload.php';

修改install.php(或authorize.phprebuild.php)的方式相同,尽管这些文件位于core目录中[遗憾的是](https://www.drupal.org/node/2406681),因此无法将这些文件的修改放入版本控制中。

Drush的Drupal自动加载器

在启动Drupal网站[Drush](https://github.com/drush-ops/drush)时,加载Drupal的自动加载器,并默认使用Drupal提供的自动加载器(core/vendor/autoload.php)。这也违背了此存储库的目的,并可能导致使用从相同的composer.json安装的本地Drush版本时出现致命错误。要使Drush使用从你的composer.json生成的自动加载器,请使用来自网站的drushrc.php$new_autoloader参数调用drush_drupal_load_autoloader()。例如

// In drush/drushrc.php
$autoloader = require __DIR__ . '/../../vendor/autoload.php';
drush_drupal_load_autoloader(NULL, $autoloader);

关于此存储库

此存储库包含Drupal core子树分割,如上所述,在8.0.x分支中镜像上游分支。master分支包含此README.md,一个空的composer.json,这是此存储库与[Packagist](https://packagist.org.cn)一起工作的要求,以及用于维护子树分割的subtree-split bash脚本(以及一个.gitignore文件)。此存储库中的标签是各自上游标签的子树分割。

./subtree-split的使用

初始化存储库

# Clone the repository
git clone https://github.com/tstoeckler/drupal-core.git
cd drupal-core

# Initialize the upstream repository
./subtree-split init

更新存储库

./subtree-split fetch

发布分割存储库

# Publish the 8.0.x branch
./subtree-split push branch 8.0.x

# Publish the 8.0.0-beta2 tag
./subtree-split push tag 8.0.0-beta2

配置

要使用不同的上游和下游存储库或不同的目录,请在此存储库的根目录中放置一个看起来像以下的subtree-split.config文件

UPSTREAM_REPOSITORY=https://github.com/drupal/drupal
UPSTREAM_DIRECTORY=upstream
[email protected]:tstoeckler/drupal-core.git

默认情况下,DOWNSTREAM_REPOSITORY变量从Git配置值remote.origin.url中获取,因此不需要在分支此存储库时更改它。