1 回答

TA貢獻1829條經驗 獲得超7個贊
第一次我們討論一般 OCMOD 和 VQMOD 邏輯。這次我將描述OCMOD的工作經驗(VQMOD的工作原理基本相同,并且已經過時,所以我將其省略)。OCMOD 本身是一個引擎(自 2.X 起內置在 OpenCart 中)。我們需要在這個引擎中放置一條指令才能使其工作。指令文件采用 XML 格式并具有特定名稱,例如my_file.ocmod.xml,其中需要.ocmod.xml結尾。
這是 OCMOD 文件的示例
<?xml version="1.0" encoding="utf-8"?>
<modification>
? <name>My OCMOD file</name>
? <code>my-ocmod</code>
? <version>1.0</version>
? <author>Me</author>
? <link>http://mywebsite.com</link>
? <file path="catalog/view/theme/default/template/common/header.twig">
? ? <operation>
? ? ? <search><![CDATA[<div id="top-links" class="nav pull-right">]]></search>
? ? ? <add position="before"><![CDATA[
? ? ? ? <div>Add Something</div>
? ? ? ]]></add>
? ? </operation>
? </file>??
??
? <file path="catalog/controller/common/header.php">
? ? <operation>
? ? ? <search><![CDATA[$data['name'] = $this->config->get('config_name');]]></search>
? ? ? <add position="replace"><![CDATA[
? ? ? ? $data['name'] = $this->config->get('config_name') . $this->document->getDescription();
? ? ? ]]></add>
? ? </operation>
? </file>??
</modification>
這里我們有 2 個指令(操作)在 2 個不同的文件中(我們也可以在一個文件中實現多個操作)。在操作中,我們在原始核心文件中搜索一行代碼,并在add
標簽中的代碼之前/之后添加或替換它。這是OCMOD 文件文檔,可能有助于.ocmod.xml文件構建。
當您有.ocmod.xml文件時 - 您需要安裝它。有兩種不同的方法可以做到這一點:
將文件插入/system文件夾并清除緩存。
在擴展安裝程序的管理面板中安裝.ocmod.xml文件并清除緩存。這種情況比較好處理。您可以在擴展 - 擴展中找到您的 OCMOD 文件。這些不是文件,而是數據庫條目。要在安裝后編輯它們,您可能需要OCMOD 編輯器。
在某些情況下,您可能會看到.ocmod.zip存檔以及install.xml和上傳文件夾。它可能是帶有 OCMOD 文件和附加文件的模塊,在單個安裝程序中編譯。
關于變化
現在,當我們安裝了包含操作.ocmod.xml 的文件并且清除了緩存時,系統會創建核心文件副本并將它們保存在/system/storage/modifications/...中。如果我們從示例中獲取代碼 - 您會發現文件/system/storage/modifications/catalog/view/theme/default/template/common/header.twig已實施來自.ocmod.xml的更改。
就是這樣了。OCMOD 的工作原理就這么簡單。一旦您安裝了任何.ocmod.xml文件 - 該文件就會保留在 OpenCart 中,并在每次緩存清理后執行操作。您在.ocmod.xml文件中進行了更改- 清除緩存。安裝新的.ocmod.xml?- 清除緩存。刪除了一些舊的.ocmod.xml?- 清除緩存。
升級 OpenCart 版本后 - OCMOD 文件可能保持不變。但如果它們消失了 - 只需再次安裝它們(您應該先將它們保存在某個地方)。
PS 不同的.ocmod.xml文件可能會影響同一個核心文件。這絕對沒問題。
- 1 回答
- 0 關注
- 167 瀏覽
添加回答
舉報