首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 相關知識

Drupal 目錄結構深度解析:核心模組、主題與站點配置

     編輯:PHP 相關知識

Drupal 根目錄總覽

drupal/
├── core/                 # Drupal 8/9/10 核心程式碼(舊版在 includes/、modules/)
├── modules/              # 貢獻/自訂模組(舊版 sites/all/modules/)
├── themes/               # 貢獻/自訂主題(舊版 sites/all/themes/)
├── profiles/             # 安裝設定檔(標準、最小、測試等)
├── sites/                # 多站點配置、檔案儲存、settings.php
├── vendor/               # Composer 相依套件
├── index.php             # 進入點
├── update.php            # 資料庫更新腳本
├── cron.php              # 排程任務入口
├── robots.txt            # 搜尋引擎爬蟲規則
├── composer.json         # 專案相依管理
└── .htaccess / web.config

關鍵目錄詳細說明

1. core/ - 核心系統(Drupal 8+)

  • core/lib/Drupal/:PSR-4 命名空間,包含所有核心模組服務、控制器、表單、實體、插件等
  • core/modules/:核心模組(如 node、user、taxonomy、views、block、field 等)
  • core/themes/:核心主題(Stark、Stable、Classy、Bartik、Seven)
  • core/assets/:前端資源(JS、CSS、圖示)
  • core/includes/:引導載入、錯誤處理、常用函數

2. modules/ - 模組目錄

子目錄用途
contrib/社群貢獻模組(透過 Composer 安裝)
custom/專案自訂模組
features/Features 模組匯出的配置模組

模組標準結構:

mymodule/
├── mymodule.info.yml       # 模組中繼資料
├── mymodule.module         # Hook 實作
├── mymodule.routing.yml    # 路由定義
├── src/                    # PSR-4 類別
│   ├── Controller/
│   ├── Form/
│   ├── Plugin/
│   └── Entity/
├── config/                 # 配置匯入/匯出
├── templates/              # Twig 模板覆寫
└── tests/                  # PHPUnit 測試

3. themes/ - 主題目錄

mytheme/
├── mytheme.info.yml        # 主題定義
├── mytheme.libraries.yml   # CSS/JS 資源庫
├── mytheme.theme           # 預處理函數、模板建議
├── config/                 # 區塊配置等
├── templates/              # Twig 模板
│   ├── html.html.twig
│   ├── page.html.twig
│   ├── node.html.twig
│   └── block.html.twig
├── css/
├── js/
└── logo.svg

4. sites/ - 多站點與配置核心

sites/
├── default/
│   ├── settings.php        # 主配置(資料庫、信任主機、私有金鑰等)
│   ├── services.yml        # 服務容器覆寫
│   ├── files/              # 公開/私有檔案儲存
│   │   ├── styles/         # 圖片樣式衍生檔
│   │   └── ...
│   └── config_/      # 配置同步目錄(匯入/匯出)
├── example.com/            # 多站點:不同域名獨立配置
│   └── settings.php
└── sites.php               # 站點別名映射(可選)

5. profiles/ - 安裝設定檔

  • standard:標準安裝(內含常用模組)
  • minimal:最小安裝(僅核心)
  • demo_umami:示範內容(食譜網站)
  • 自訂 Profile:打包特定模組、配置、內容類型,實現一鍵部署

6. vendor/ - Composer 相依

包含 Symfony 元件、Guzzle、Twig、Doctrine、PHPUnit 等所有第三方函式庫。不可手動修改,透過 composer require/update 管理。

重要檔案說明

檔案用途
index.phpHTTP 請求進入點,啟動 Kernel、處理請求、輸出回應
update.php執行資料庫結構更新(需登入或設定免密)
cron.php排程任務入口(建議用 Drush 或系統 cron 呼叫)
robots.txt預設爬蟲規則,允許大多數路徑
.htaccessApache 重寫規則、安全設定、效能優化
composer.json專案相依宣告、腳本、最低穩定度

Drupal 7 與 8/9/10 目錄差異對照

Drupal 7Drupal 8+說明
includes/core/includes/ + core/lib/核心函數與引導
modules/ (核心)core/modules/核心模組移至 core/
modules/ (貢獻/自訂)modules/contrib/, modules/custom/分類更清晰
themes/ (核心)core/themes/核心主題移至 core/
themes/ (貢獻/自訂)themes/contrib/, themes/custom/同上
sites/all/modules/, themes/ (根目錄)簡化路徑
.module + .incPSR-4 src/ + .module物件導向、自動載入
PHPTemplateTwig模板引擎升級

開發者常用操作路徑

  • 清除快取:drush cr 或刪除 sites/default/files/php/twig/、sites/default/files/config_*/
  • 匯出配置:drush cex -y → 產生於 sites/default/config_/
  • 匯入配置:drush cim -y
  • 產生模組骨架:drush generate module
  • 查看資料庫結構:drush sql:schema

安全與部署建議

  1. settings.php 設定 $settings['config_sync_directory'] 指向 Web 根目錄外
  2. files/ 私有檔案目錄設為不可直接 Web 存取
  3. vendor/、core/ 不應暴露於 Web(Nginx/Apache 已透過 .htaccess 限制)
  4. 生產環境關閉 update.php 免密存取
  5. 使用 composer install --no-dev 部署

熟悉 Drupal 目錄結構,是模組開發、主題客製化、多站點架設與自動化部署的基礎。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved