一是以压缩方式 .ocmod.zip 上传安装
    二是以 . ocmod.xml 文件上传安装
    这两者都会有一个 xml 配置文件,在这xml文件配置可实现添加功能、替换功能再次了解一下这上传的过程
    \system\storage\modification\admin\controller\extension\installer.php 方法 upload() , 上传安装文件方法 xml() ,
    将上成功的 xml 文件内容写入表 modification 中完成这些过程后系统会提示上传成功

    上传成功后系统还没有将功能应用上,还需要到 扩展功能 -> 代码调整 下刷新调整
    这模块下这么一句话 “ 任何时候想启用/禁用或删除代码调整,只需要点击刷新按钮来重建代码调整缓存! “
    在系统目录下有这么一个目录,这一个目录就是用户代码的调整或者说替换
    \system\storage\modification\
    比如前文我说到FTP无法使有可安将另一插件QuickFix+OC2.2.0.0
    再我安装一个导入导出产品数据的功能
    安装了这两插件功能后在这目录会生成一些文件
    \system\storage\modification\admin\controller\extension\installer.php
    这个文件新添加了一个方法 localcopy() ,并替换了ftp 上传的功能
    \system\storage\modification\admin\controller\common\column_left.php
    这个文件对界面功能菜单新添加了一个导入导出的入口

    这两个是刷新重建代码的文件
    这两个文件在 \admin 对应目录都是存在的,当系统需要使用到这两个文件时会优先载入
    \system\storage\modification 目录下对应的文件
    可注意到 \system\startup.php 这个文件中有这一个函数 function modification($filename)

    这是两个配置文件

    1. <modification>
    2. <name>Local copy OCMOD by iSenseLabs</name>
    3. <version>1.3</version>
    4. <link>http://isenselabs.com</link>
    5. <author>iSenseLabs</author>
    6. <code>isensealabs_quickfix_ocmod</code>
    7. <file path="admin/controller/extension/installer.php">
    8. <operation error="skip">
    9. <search ><![CDATA['url' => str_replace('&amp;', '&', $this->url->link('extension/installer/ftp', 'token=' . $this->session->data['token'],]]></search>
    10. <add position="replace"><![CDATA['url' => str_replace('&amp;', '&', $this->url->link('extension/installer/localcopy', 'token=' . $this->session->data['token'],]]></add>
    11. </operation>
    12. <operation>
    13. <search><![CDATA[public function unzip() {]]></search>
    14. <add position="before"><![CDATA[
    15. public function localcopy() {
    16. ...
    17. }]]></add>
    18. </operation>
    19. </file>
    20. </modification>
    1. <modification>
    2. <name>Export/Import Tool (V3.7) for OpenCart 2.x</name>
    3. <code>Export/Import Tool (V3.7) for OpenCart 2.x</code>
    4. <version>2.x-3.6</version>
    5. <author>mhccorp.com</author>
    6. <file path="admin/view/template/common/menu.tpl">
    7. <operation error="skip">
    8. <search><![CDATA[<li><a href="<?php echo $backup; ?>"><?php echo $text_backup; ?></a></li>]]></search>
    9. <add position="replace"><![CDATA[<li><a href="<?php echo $backup; ?>"><?php echo $text_backup; ?></a></li><li><a href="<?php echo $export_import; ?>"><?php echo $text_export_import; ?></a></li>]]></add>
    10. </operation>
    11. </file>
    12. <file path="admin/controller/common/column_left.php">
    13. <operation error="skip">
    14. <search><![CDATA[if ($this->user->hasPermission('access', 'tool/log')) {]]></search>
    15. <add position="before"><![CDATA[
    16. if ($this->user->hasPermission('access', 'tool/export_import')) {
    17. $tool[] = array(
    18. 'name' => $this->language->get('text_export_import'),
    19. 'href' => $this->url->link('tool/export_import', 'token=' . $this->session->data['token'], true),
    20. 'children' => array()
    21. );
    22. }
    23. ]]></add>
    24. </operation>
    25. </file>
    26. <file path="admin/language/*/common/column_left.php">
    27. <operation error="skip">
    28. <search><![CDATA[$_['text_backup']]]></search>
    29. <add position="after"><![CDATA[
    30. $_['text_export_import'] = 'Export / Import';
    31. ]]></add>
    32. </operation>
    33. </file>
    34. </modification>
    1. <br />operation 标签是调整的动作<br />search 标签是查找调整的位置<br />add 标签添加代码具体动作 before 、after、replace