为了账号安全,请及时绑定邮箱和手机立即绑定

OpenCart OCMOD 和 VQMOD 修改系统

OpenCart OCMOD 和 VQMOD 修改系统

PHP
潇湘沐 2023-10-15 15:13:16
我是 OpenCart OCMOD 和 VQMOD 系统的新手。所以我需要一些帮助。我的问题是。据说OCMOD是OC2+默认系统。也有人说我们必须自己编写 OCMOD。这是什么意思?如果OCMOD自带OC2+。那为什么我们需要自己写呢?如果 OCMOD 是 OC+2 的默认部分。那么我们在OC 3.0.2.0中哪里可以找到它呢?如何使用OCMOD在OpenCart中进行更改而不影响核心文件?安装新的 OCMOD.zip 或 OCMOD.xml 和 VQMOD.zip 或 VQMOD.xml 后,如何在不安装 OpenCart 核心文件中安装 OCMOD 或 VQMOD 的情况下删除已进行的更改,而不删除该更改的影响。如何使用 OCMOD 或 VQMOD 恢复升级版本中 OpenCart 中所做的更改?如果安装了新的 OCMOD 或 VQMOD,它是否会删除 OpenCart 核心文件中已进行的所有更改?
查看完整描述

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文件时 - 您需要安装它。有两种不同的方法可以做到这一点:

  1. 将文件插入/system文件夹并清除缓存。

  2. 扩展安装程序的管理面板中安装.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文件可能会影响同一个核心文件。这绝对没问题。


查看完整回答
反对 回复 2023-10-15
  • 1 回答
  • 0 关注
  • 108 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信