我们正在使用Opencart 1.5.5.1(我知道它是一个过时的版本,但此前的开发人员几乎将所有内容编码到核心文件中,因此无法升级到目前为止的最新版本。)
我最近浏览了整个网站,将所有http://
更改为https://
,并修复了一些Opencart核心错误。例如,结帐页面上的一个众所周知的问题(catalog / controller / checkout / cart.php,第170行):
改变了这个:
$this->data['action'] = $this->url->link('checkout/cart');
对此:
$this->data['action'] = $this->url->link('checkout/cart', '', 'SSL');
如上所述,我能够轻松解决大部分问题。
但是......我的问题在于文件管理器。每当我想在产品描述中链接图像时,使用WYSIWYG编辑器中的插入图像功能,它会自动创建http://
链接,而不是https://
。当然,这会打破该页面上的SSL,我到目前为止找到的唯一解决方案是手动将插入的图像链接从http
更改为https
。
我尝试了什么...我已经浏览了文件管理器的控制器文件(admin / controller / common / filemanager.php),试图找到图片链接的地方生成了,似乎Opencart正在传递ckEditor的image.js
插件的相对路径,然后创建我认为的整个链接(但我不是100%确定这一点)。不幸的是,我使用Javascript并不是那么好,image.js
缩小了。我在询问之前尝试过谷歌,并且我发现了几个关于这个问题的论坛帖子,但是他们都没有提到过这方面的解决方案(或者我可能已经错过了)。
周围的任何一个Opencart大师,遇到过同样的事情,并且能够指出我正确的方向吗?
非常感谢你。
编辑:我在管理员/系统/设置中启用了SSL,我的.htaccess文件将每个http页面请求重写为https。
答案 0 :(得分:2)
我设法解决了这个问题。如果其他人遇到同样的问题,请执行以下操作:
打开admin/controller/common/filemanager.php
。转到第35行:
$this->data['directory'] = HTTP_CATALOG . 'image/data/';
将其更改为:
if (isset($this->request->server['HTTPS']) && (($this->request->server['HTTPS'] == 'on') || ($this->request->server['HTTPS'] == '1'))) {
$this->data['directory'] = HTTPS_CATALOG . 'image/data/';
} else {
$this->data['directory'] = HTTP_CATALOG . 'image/data/';
}
我希望它有所帮助。
编辑:我刚检查过,这个问题仍然存在于1.5.6.4中,所以它也可能是其他人的实际修复。
答案 1 :(得分:1)
我在使用https:// URL和CKEditor的图像选择器时遇到了同样的问题。我也在使用Opencart 1.5.5.1 :)需要更改CKE配置,以便插入包含不包含协议,域名/ IP地址等的相对URL的图片。
我试图搜索负责构建完整网址但无法找到它的代码。谢谢你指出它,这有很大的帮助。
我的解决方案基于您的。但是,原始代码我看起来有点不同。无论如何,我从我的admin/controller/common/filemanager.php
:
$this->data['directory'] = HTTP_IMAGE . 'data/';
...并将其替换为:
$this->data['directory'] = str_replace(HTTP_CATALOG, '/', HTTP_IMAGE) . 'data/';
这不会检查HTTPS是否已启用,因为这无关紧要 - 无论协议如何,所选文件的路径都是相对于root的。
这是我制作的完整vQmod:
<modification>
<id>forcing ckeditor to use relative paths for images</id>
<version>1.5.5.x</version>
<vqmver></vqmver>
<author>Stackoverflow Comunity</author>
<file name="admin/controller/common/filemanager.php">
<operation>
<search position="replace"><![CDATA[
$this->data['directory'] = HTTP_IMAGE . 'data/';
]]></search>
<add><![CDATA[
// make sure HTTP_CATALOG has a trailing slash
// check admin/config.php
$this->data['directory'] = str_replace(HTTP_CATALOG, '/', HTTP_IMAGE) . 'data/';
]]></add>
</operation>
</file>
</modification>
再次,@ Tibor B.感谢您分享您的解决方案。它有很多帮助