模組組態檔概觀

舊版Commerce中使用的config.xml組態檔職責現在由位於不同模組目錄中的數個檔案分擔。 只有當模組請求特定設定型別時,Commerce才會視需要載入多個設定檔案。

您可以使用這些檔案(也稱為​ 組態型別)來自訂模組行為的特定方面。

多個模組可宣告會影響相同組態型別的組態檔案(例如事件),然後合併這些多個組態檔案。

以下是此主題中使用的常用辭彙:

  • 組態物件 — 負責定義及驗證組態型別的Commerce程式庫或類別。 例如,config.xml的組態物件是Magento\Framework\App\Config

  • 組態階段 — 階段定義為​ 主要全域 ​和​ 區域。 每個階段會決定何時載入組態型別並與相同名稱的組態型別合併。 例如,module.xml個檔案與其他module.xml個檔案合併。

  • 組態範圍 — 作為組態階段的補充,範圍定義了組態型別模型。 例如,adminhtml是在階段與其他模組adminhtml設定一起載入的區域範圍。 如需詳細資訊,請參閱模組和區域

設定載入和合併

本節討論如何載入及合併組態檔。

Commerce如何載入設定檔案

Commerce會依照以下順序載入設定檔(所有路徑都相對於Commerce安裝目錄):

  • 主要組態(app/etc/di.xml)。 此檔案用於啟動Commerce。
  • 來自模組(<your component base dir>/<vendorname>/<component-type>-<component-name>/etc/*.xml)的全域組態。 會從所有模組收集特定組態檔,並將它們合併在一起。
  • 來自模組(<your component base dir>/<vendorname>/<component-type>-<component-name>/etc/<area>/*.xml)的區域特定組態。 從所有模組收集組態檔,並將其合併至全域組態。 某些區域特定設定可能會覆寫或擴充全域設定。

位置

  • <your component base dir>是元件所在的基本目錄。 相對於Commerce安裝目錄,一般值為app/codevendor

  • <vendorname>是元件的廠商名稱;例如,Commerce的廠商名稱為magento

  • <component-type>為下列其中一項:

    • module-:擴充功能或模組。
    • theme-:主題。
    • language-:語言套件。
INFO
目前,主題位於<magento_root>/app/design/frontend<magento_root>/app/design/adminhtml下。

設定檔合併

組態檔中的節點會根據其完整限定的XPath進行合併,XPath在$idAttributes陣列中定義特殊屬性,宣告為其識別碼。 此識別碼對巢狀內嵌於相同父項節點下的所有節點而言必須是唯一的。

Commerce應用程式合併演演算法:

  • 如果節點識別碼相等(或如果未定義識別碼),則會覆寫節點中的所有基礎內容(屬性、子節點和純量內容)。
  • 如果節點識別碼不相等,則該節點是父節點的新子節點。
  • 如果原始檔案有多個具有相同識別碼的節點,則會觸發錯誤,因為無法辨別識別碼。

合併組態檔案後,產生的檔案會包含原始檔案中的所有節點。

INFO
您可以使用\Magento\Framework\Config\Reader\Filesystem類別進行偵錯,並瞭解組態檔載入器合併組態處理序背後的邏輯。

組態型別、物件和介面

以下各節提供有關配置型別、其對應的配置物件以及可用於處理物件的介面的資訊:

組態型別和物件

下表顯示每種設定型別及其相關的Commerce設定物件。

組態檔
說明
階段
設定物件
address_formats.xml
位址格式宣告
主要,全域
\Magento\Customer\Model\Address\Config
acl.xml
存取控制清單
全域
\Magento\Framework\Acl\AclResource\Provider
analytics.xml
[進階報告]https://developer.adobe.com/commerce/php/development/advanced-reporting/data-collection/)
主要,全域
\Magento\Analytics\Model\Config\Reader
cache.xml
快取型別宣告
主要,全域
\Magento\Framework\Cache\Config\Data
catalog_attributes.xml
目錄屬性設定
全域
\Magento\Catalog\Model\Attribute\Config\Data
config.phpenv.php
部署組態
這些檔案可由內部設定處理器讀取/寫入。
沒有物件,無法自訂
config.xml
系統組態
主要,全域
\Magento\Framework\App\Config
communication.xml
定義訊息佇列系統的方面
全域
\Magento\WebapiAsync\Code\Generator\Config\RemoteServiceReader\Communication
crontab.xml
設定cron群組
全域
\Magento\Cron\Model\Config\Data
cron_groups.xml
指定cron群組選項
全域
\Magento\Cron\Model\Groups\Config\Data
db_schema.xml
宣告式結構描述
全域
Magento\Framework\Setup\Declaration\Schema
di.xml
相依性插入組態
主要、全域、區域
\Magento\Framework\ObjectManager\Config
eav_attributes.xml
提供EAV屬性組態
全域
\Magento\Eav\Model\Entity\Attribute\Config
email_templates.xml
電子郵件範本設定
全域
\Magento\Email\Model\Template\Config\Data
esconfig.xml
搜尋引擎地區設定停用字詞設定
全域
\Magento\Elasticsearch\Model\Adapter\Index\Config\EsConfig
events.xml
事件/觀察者設定
全域,區域
\Magento\Framework\Event
export.xml
匯出實體設定
全域
\Magento\ImportExport\Model\Export\Config
extension_attributes.xml
延伸屬性
全域
\Magento\Framework\Api\ExtensionAttribute\Config
fieldset.xml
定義欄位集
全域
\Magento\Framework\DataObject\Copy\Config\Reader
indexer.xml
宣告索引子
全域
\Magento\Framework\Indexer\Config\Reader
import.xml
宣告匯入實體
全域
\Magento\ImportExport\Model\Import\Config
menu.xml
定義管理員的功能表專案
adminhtml
\Magento\Backend\Model\Menu\Config\Reader
module.xml
定義模組設定資料和軟性相依性
主要,全域
\Magento\Framework\Module\ModuleList\Loader
mview.xml
MView設定
主要,全域
\Magento\Framework\Mview\Config\Data
payment.xml
付款模組設定
主要,全域
\Magento\Payment\Model\Config
persistent.xml
Magento_持續設定檔
全域
\Magento\Persistent\Helper\Data
pdf.xml
PDF設定
全域
\Magento\Sales\Model\Order\Pdf\Config\Reader
product_options.xml
提供產品選項設定
全域
\Magento\Catalog\Model\ProductOptions\Config
product_types.xml
定義產品型別
全域
\Magento\Catalog\Model\ProductTypes\Config
queue_consumer.xml
定義現有佇列與其消費者之間的關係
全域
\Magento\Framework\MessageQueue\Consumer\Config\Xml\Reader
queue_publisher.xml
定義發佈主題的Exchange。
全域
\Magento\WebapiAsync\Code\Generator\Config\RemoteServiceReader\Publisher
queue_topology.xml
定義郵件路由規則,宣告佇列和交換
全域
\Magento\Framework\MessageQueue\Topology\Config\Xml\Reader
reports.xml
進階報告
全域
\Magento\Analytics\ReportXml\Config
resources.xml
定義模組資源
全域
\Magento\Framework\App\ResourceConnection\Config\Reader
routes.xml
路由設定
區域
Magento\Framework\App\Route\Config
sales.xml
定義銷售總計設定
全域
\Magento\Sales\Model\Config\Data
search_engine.xml
提供搜尋引擎設定
全域
Magento\Search\Model\SearchEngine\Config
search_request.xml
定義目錄搜尋設定
全域
\Magento\Framework\Search\Request\Config
sections.xml
定義會觸發私人內容區塊快取失效的動作
前端
SectionInvalidationConfigReader
system.xml
定義系統組態頁面的選項
adminhtml
\Magento\Framework\App\Config
validation.xml
模組驗證設定檔
全域
\Magento\Framework\Validator\Factory
view.xml
定義Vendor_Module檢視設定值
全域
\Magento\Framework\View\Config
webapi.xml
設定網頁API
全域
\Magento\Webapi\Model\Config
webapi_async.xml
定義REST自訂路由
全域
\Magento\WebapiAsync\Model\ServiceConfig
widget.xml
定義Widget
全域
\Magento\Widget\Model\Config\Reader
zip_codes.xml
定義每個國家/地區的郵遞區號格式
全域
\Magento\Directory\Model\Country\Postcode\Config\Data

設定介面

您可以使用Magento\架構\組態下的介面與組態檔互動。

如果您建立組態型別,就可以使用這些介面。

Magento\Framework\Config提供下列介面:

也就是說,檔案系統、資料庫和其他儲存體會根據合併規則合併組態檔,並使用驗證結構來驗證組態檔。

recommendation-more-help
386822bd-e32c-40a8-81c2-ed90ad1e198c