搜索
开启辅助访问 切换到宽版

QQ登录

只需一步,快速开始

扫一扫,访问微社区

注册 找回密码
查看: 3881|回复: 1
打印 上一主题 下一主题

vQmod xml 未加载的原因及解决办法

  [复制链接]
跳转到指定楼层
楼主
发表于 2017-7-31 12:05:19 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
原先根本没打算去了解 vQmod,但在安装模板时出了问题,安装始终失败,不得已去查看原因,发现新增的 xml 文件未加载。

原因:新添加的 xml 文件时间戳小于 vQmod 生成的缓存文件 vqmod/mods.cache。
vqmod/mods.cache 是用来缓存 xml 文件的,vQmod 在加载时,会遍历 xml 目录,并取得所有文件最大的文件修改时间,接下来,如果这个修改时间小于 mods.cache 的文件修改时间,则不会刷新 xml 文件列表,也就是说,后添加的 xml 文件,如果修改时间不是在 mods.cache 之后,则根本是无效的。
知道了原因,解决办法则是简单的删除 vqmod/mods.cache 文件即可。

解决了问题之后,简单地了解了一下 vQmod,其实,对于一个源代码不怎么变的 PHP 站点来说,vQmod 根本是没必要的,但是,对于有定制需求的代码,在升级时,可以尽可能地保留用户定制部分不受影响,我想,这应该是为什么出现 vQmod 的最大出发点。

vQmod 的思路非常简单,它相当于一个源代码版本管理的小系统,核心是文件 diff 定义,也就是 vQmod 中的 xml 文件定义,它可以根据 xml 文件中的定义,生成新版本的源代码文件,再接管 require, include 指令,将加载文件指向到新生成的源代码文件。
根据这个原理,在官网的 wiki 中,也说明了,要使用 vQmod,最好是带 framework 的项目,所有的 require, include 都在 framework 中进行,而不是分散在业务逻辑代码中,不然修改成本较高。所以,在 opencart 中,代码加载基本上都是用 $this->load->model('xxx') 来加载,而不是直接使用 require。

综上,根据其原理,如果出现错误,基本上是目录权限问题,或是 xml 定义文件的问题。
另外,xml 文件可以用工具生产,实际上没必要去手工编写,在 wiki 上作者提供了两个生成工具。
There are two tools we recommend to help create vQmods if you don't want to edit them manually

UKSB's vQgenerator
AvanOsch's vQmoderator Both are completely free and open source
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
收藏收藏 分享分享 支持支持1 反对反对
沙发
发表于 2017-8-7 19:33:34 | 只看该作者
写的不错,赞一个
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /1 下一条

QQ|手机版|OpenCart - 中文官方网站 ( 蜀ICP备09033774号|人工智能

GMT+8, 2024-12-22 21:28 , Processed in 0.055026 second(s), 20 queries , Gzip On.

快速回复 返回顶部 返回列表