Opencart 3完美静态化

、去除url中分类目录

1、修改catalog文件夹下,controller > product > category.php

'href'        => $this->url->link('product/product', 'path=' . $this->request->get['path'] . '&product_id=' . $result['product_id'] . $url)

删除其中的 “ . $this->request->get[‘path’] ” 改为如下:

‘href’ => $this->url->link(‘product/product’, ‘path=’ . ‘&product_id=’ . $result[‘product_id’] . $url)

2、修改catalog文件夹下,controller > startup > seo_url.php
大概在第82行至86行:

if ($query->num_rows && $query->row['keyword']) {
						$url .= '/' . $query->row['keyword'];

						unset($data[$key]);
					}
修改为:
if ($query->num_rows && $query->row['keyword']) {
                        if($key == 'product_id'){
                            $url = '/' . $query->row['keyword'];
                        }else{
                            $url .= '/' . $query->row['keyword'];
                        }

                        unset($data[$key]);
                    }

二、URL静态化

1、修改catalog文件夹下,controller > startup > seo_url.php

找到
unset($data[$key]);
				}
在其后增加:
elseif ($key == 'route') {
                    $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "seo_url WHERE `query` = '" . $this->db->escape($value) . "'");
                    if ($query->num_rows) {
                        $url .= '/' . $query->row['keyword'];
                        unset($data[$key]);
                    }
                }

2、数据库查询
在数据库中,SQL里输入以下查询,如有遗漏,可以按规则新增即可。

INSERT INTO oc_seo_url (store_id, language_id, query, keyword) VALUES (0, 1, 'common/home', ''); 
INSERT INTO oc_seo_url (store_id, language_id, query, keyword) VALUES (0, 1, 'account/wishlist', 'wishlist.html'); 
INSERT INTO oc_seo_url (store_id, language_id, query, keyword) VALUES (0, 1, 'account/account', 'my-account.html'); 
INSERT INTO oc_seo_url (store_id, language_id, query, keyword) VALUES (0, 1, 'checkout/cart', 'shopping-cart.html'); 
INSERT INTO oc_seo_url (store_id, language_id, query, keyword) VALUES (0, 1, 'checkout/checkout', 'checkout.html'); 
INSERT INTO oc_seo_url (store_id, language_id, query, keyword) VALUES (0, 1, 'account/login', 'login.html'); 
INSERT INTO oc_seo_url (store_id, language_id, query, keyword) VALUES (0, 1, 'account/logout', 'logout.html'); 
INSERT INTO oc_seo_url (store_id, language_id, query, keyword) VALUES (0, 1, 'account/order', 'order-history.html'); 
INSERT INTO oc_seo_url (store_id, language_id, query, keyword) VALUES (0, 1, 'account/newsletter', 'newsletter.html'); 
INSERT INTO oc_seo_url (store_id, language_id, query, keyword) VALUES (0, 1, 'product/special', 'specials.html'); 
INSERT INTO oc_seo_url (store_id, language_id, query, keyword) VALUES (0, 1, 'affiliate/account', 'affiliates.html'); 
INSERT INTO oc_seo_url (store_id, language_id, query, keyword) VALUES (0, 1, 'checkout/voucher', 'gift-vouchers.html'); 
INSERT INTO oc_seo_url (store_id, language_id, query, keyword) VALUES (0, 1, 'product/manufacturer', 'brands.html'); 
INSERT INTO oc_seo_url (store_id, language_id, query, keyword) VALUES (0, 1, 'information/contact', 'contact-us.html'); 
INSERT INTO oc_seo_url (store_id, language_id, query, keyword) VALUES (0, 1, 'account/return/insert', 'request-return.html'); 
INSERT INTO oc_seo_url (store_id, language_id, query, keyword) VALUES (0, 1, 'information/sitemap', 'sitemap.html'); 
INSERT INTO oc_seo_url (store_id, language_id, query, keyword) VALUES (0, 1, 'account/forgotten', 'forgot-password.html'); 
INSERT INTO oc_seo_url (store_id, language_id, query, keyword) VALUES (0, 1, 'account/download', 'downloads.html'); 
INSERT INTO oc_seo_url (store_id, language_id, query, keyword) VALUES (0, 1, 'account/recurring', 'recurring.html'); 
INSERT INTO oc_seo_url (store_id, language_id, query, keyword) VALUES (0, 1, 'account/return', 'returns.html'); 
INSERT INTO oc_seo_url (store_id, language_id, query, keyword) VALUES (0, 1, 'account/transaction', 'transactions.html'); 
INSERT INTO oc_seo_url (store_id, language_id, query, keyword) VALUES (0, 1, 'account/register', 'create-account.html'); 
INSERT INTO oc_seo_url (store_id, language_id, query, keyword) VALUES (0, 1, 'product/compare', 'compare-products.html'); 
INSERT INTO oc_seo_url (store_id, language_id, query, keyword) VALUES (0, 1, 'product/search', 'search.html'); 
INSERT INTO oc_seo_url (store_id, language_id, query, keyword) VALUES (0, 1, 'account/edit', 'edit-account.html'); 
INSERT INTO oc_seo_url (store_id, language_id, query, keyword) VALUES (0, 1, 'account/password', 'change-password.html'); 
INSERT INTO oc_seo_url (store_id, language_id, query, keyword) VALUES (0, 1, 'account/address', 'address-book.html'); 
INSERT INTO oc_seo_url (store_id, language_id, query, keyword) VALUES (0, 1, 'account/reward', 'reward-points.html'); 
INSERT INTO oc_seo_url (store_id, language_id, query, keyword) VALUES (0, 1, 'affiliate/edit', 'edit-affiliate-account.html'); 
INSERT INTO oc_seo_url (store_id, language_id, query, keyword) VALUES (0, 1, 'affiliate/password', 'change-affiliate-password.html'); 
INSERT INTO oc_seo_url (store_id, language_id, query, keyword) VALUES (0, 1, 'affiliate/payment', 'affiliate-payment-options.html'); 
INSERT INTO oc_seo_url (store_id, language_id, query, keyword) VALUES (0, 1, 'affiliate/tracking', 'affiliate-tracking-code.html'); 
INSERT INTO oc_seo_url (store_id, language_id, query, keyword) VALUES (0, 1, 'affiliate/transaction', 'affiliate-transactions.html'); 
INSERT INTO oc_seo_url (store_id, language_id, query, keyword) VALUES (0, 1, 'affiliate/logout', 'affiliate-logout.html'); 
INSERT INTO oc_seo_url (store_id, language_id, query, keyword) VALUES (0, 1, 'affiliate/forgotten', 'affiliate-forgot-password.html'); 
INSERT INTO oc_seo_url (store_id, language_id, query, keyword) VALUES (0, 1, 'affiliate/register', 'create-affiliate-account.html'); 
INSERT INTO oc_seo_url (store_id, language_id, query, keyword) VALUES (0, 1, 'affiliate/login', 'affiliate-login.html');
INSERT INTO oc_seo_url (store_id, language_id, query, keyword) VALUES (0, 1, 'account/voucher', 'account-voucher.html'); 
INSERT INTO oc_seo_url (store_id, language_id, query, keyword) VALUES (0, 1, 'account/return/add', 'account-return-add.html');

关于opencart模块应用中,js引用的一些思考

跟传统的最优的页面结构有所区别,opencart的js或者局部css引用,会在单独模块下引入。
一般,大家共识的最优的方案,即css在页面head部分引入,js在页面footer后面引入。

其实,这个问题很简单,就是opencart的扩展方式就是模块,即开即用,随时弃用。
一开始,我也忽略了这个问题。
我做模板时,按常规思路,把css全部在head部分引入,插件js,全部在footer文件里引入。
当我注意到浏览器控制台有报错时,我才想到,有些应用了插件的模块没有启用,js引入了,但是找不到对象。

再想想opencart官方demo的做法,一开始觉得不合常规的,现在也觉得很合理了。
虽然在页面中间引用js或css,不是最优化的方式,或者就是看起来很奇怪,但是,当不再使用这个模块时,页面也不会出现多余的js,优点就体现出来了。

当然,有全局公共的js文件,还是适合在head或者footer里引入的。
针对那些模块化的插件使用,还是在对应模块下引用为佳。

关于opencart新增一个布局模板的内容位置模块

2020年8月13日更新:此篇文章的广泛使用待验证,我在尝试添加左右两侧的布局时,能显示,但是无法保存布局中的更改。

做笔记,留给自己以后看。

默认的一些布局排版不够用,就需要新增自定义位置,实现定制化模块。
默认的就左右上下。如果布局中出现上中下,中间又分了左右,中间的左右可能又有上中下的布局。这样的需求很常见,然后布局就不够用了。

新增一个的布局位置,还是需要去前端和后台两个对应的文件夹下修改文件。
catalog文件夹下:

1、controller文件夹,common, 复制一个content_top, 例如重命名为content_body.
修改文件内ControllerCommonContentTop为ControllerCommonContentBody,并全文查找content_top, 修改为content_body(共计两处需要修改)。

2、仍然是以上文件夹内,打开home.php文件,在对应位置新增行content_body即可。

3、view文件夹,theme, 对应主题模板的文件夹内,template, common, 复制content_top, 重命名为content_body.

4、至于新增布局的放置位置,需要去对应模板里修改。
例如首页,在common文件夹下,打开home.twig文件,把content_body新增到需要的位置即可。

admin文件夹下:

1、language文件夹,对应的语言包内,design, layout.php文件, 新增一行text_content_body.

2、view文件夹,template, design, 打开layout_form.twig文件。
找到id=”module-content-top”的table,并复制一个,重命名为id=”module-content-body”,修改这个table里的content_top为content_body(共计两处);修改相关字符content-top为content-body(共计两处)。

回到后台,规划设计里面,布局排版,打开首页,就可以看到新增了一个内容主体,添加需要的模块进去即可。

关于opencart后台新增模块的一些说明

关于opencart的一些教程说明,旨在为自己提供个笔记。
我不是专业开发者,纯粹是外行,自己做一点点小小的定制。

模块里适合做前端产品展示的,可自由选择产品的,就是featured这个模块了。
其他几个模块,例如latest,bestseller,special等,规则是既定的,最新产品,就是最后添加的几个,热卖,就是销量最高的等等。
所以,需要自由选择,就是featured这个模块。

新增模块就是在featured的基础上。
需要分别在前端展示和后台编辑两个部分新增对应文件。
切记,模块可识别的命名方式为下划线的方式,连字符无法识别。

catalog文件夹下,按文件夹名称排序:
1、controller, extension, module文件夹内,复制一个featured文件,重命名为featured_latest。
打开文件,修改名称,将ControllerExtensionModuleFeatured,改为ControllerExtensionModuleFeaturedLatest,全文查找featured,修改为featured_latest。

2、language文件夹下,找到对应语言的文件夹,extension, module, 复制对应文件,并修改文件内对应标题名称即可。

3、view文件夹下,theme, 对应主题名称的文件夹下,template, extension, module,复制对应文件,修改名称,然后打开文件,将写好的HTML模块,按文件规则修改好即可。

admin文件夹下,按文件夹名称排序:
1、controller, extension, module文件夹内,复制一个featured文件,重命名为featured_latest。
打开文件,修改名称,将ControllerExtensionModuleFeatured,改为ControllerExtensionModuleFeaturedLatest,全文查找featured,修改为featured_latest。

2、language文件夹下,找到对应语言的文件夹,extension, module, 复制对应文件,并修改文件内对应标题名称即可。

3、view文件夹下,template, extension, module,复制对应文件,修改名称。

回到后台,扩展功能里,打开扩展功能子模块,下拉选项里选择模组,就可以找到新增的模块了。

关于OpenCart 报错“currency.php”

如果OpenCart网站后台报告如下错误:model/localisation/currency.php on line 141
这是由于OpenCart开启汇率自动更新,而OpenCart默认提供的汇率接口失效所导致的。只要关闭汇率自动更新即可解决该问题。

关闭汇率自动更新的方法如下:
在OpenCart后台“系统设置”中点击“网店设置”,在右侧对应网站列表的后方点击编辑按钮。
随后在新开页面中选择“本地参数”选项卡,将表单中“自动更新汇率”选项选择为“否”,最后保存即可。

关于opencart2.3版本多语言分别显示的问题

标题不便写太长,我所要表达的就是,我要后台显示中文,前台显示日语。
我不是要多语言版本的网站,我只是想要一个显示日语的网站。
而opencart默认是英语,所以,我必须分别安装中文和日语语言包。并且在语言设置里开启三个语言。

那么,我在编辑商品分类的时候,也要同时填写三种语言的信息。我只需要日语,其他的就做了无用功。

好吧,其实就是语言包的问题了。
首先,默认是英语的,那么就以这个语言包为基础。
网站也无需安装多语言,网站设置也默认前后台都是英文。
然后……
后台,把admin文件夹里,language文件夹下中文语言包的名称,改成英语的名称,里面对应的引导文件名词同样由zh-cn改成en-gb。
前台,把catalog文件夹里,language文件夹下日语语言包的名称,改成英语的名称,同上,文件夹内引导文件的名称由japan改成en-gb。

如此,完美解决了我的需求,后台是中文,前台是日语。

hostease主机,绑定SSL后,关于自动跳转https的一些事……

hostease的附加域只能在public_html的目录下创建,即,只能在主域名的根目录下创建附加域的目录。

接下来的问题是,主域名绑定了ssl,要http自动跳转https,就需要在根目录的.htaccess添加如下:

RewriteEngine On
RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R,L]

这样是没啥问题了,但是,这样的重定向,是针对整个目录而言的,即,根目录下,所有子目录都会跳转到以主域名为前缀的路径。所以,对于附加域,这是完全不能接受的。

例如主域名是www.aaa.com在根目录,附加域是www.bbb.com,在根目录下ccc文件夹。
输入附加域,自动变成www.aaa.com/ccc/www.bbb.com

解决方案如下,在根目录下的.htaccess添加以下内容:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$ https://www.sanseistone.com/$1 [L,R=301]
</IfModule>

然后在附加域的目录下的.htaccess添加以下内容:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.html$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.html [L]
</IfModule>

注意:以上index为入口文件,如果是php文件,需要把html改为php。

WordPress搬家后的500错误

换了服务器,搬家前,理所当然的打包文件,备份数据库。
然后把文件上传到新服务器,上传数据库,修改了数据库对应的配置。
然后,信心满满的打开域名……

500!

按照网上说的一些方法都没有啥用。
我解决的步骤如下:
先全新安装Wordpress,然后,把旧数据库覆盖新安装的数据库,然后把旧的文件覆盖新文件,搞定!

npm 查看版本、安装及卸载

npm list // 查看本地已安装模块清单
npm list [packageName] // 查看本地已安装模块版本
npm info [packageName] //查看模块的详细信息 包括各版本号等
npm view [packageName] version // 查看模块远程最新版本
npm view [packageName] versions // 查看模块远程所有版本

npm install [packageName] //安装模块
npm install [packageName]@xxx.xx //安装模块的指定版本
npm install [packageName] -g //全局安装模块
npm install [packageName] –save 安装好后写入package.json的dependencies中(生产环境依赖)
npm install [packageName] –save-dev 安装好后写入package.json的devDepencies中(开发环境依赖)

npm uninstall [packageName] // 删除模块
npm uninstall [packageName] -g //卸载全局模块
npm uninstall [packageName] –save // 删除模块,同时删除模块留在package.json中dependencies下的对应信息
npm uninstall [packageName] –save-dev // 删除模块,同时删除模块留在package.json中devDependencies下的对应信息

作者:少华一号
来源:CSDN
原文:https://blog.csdn.net/u012982629/article/details/80676928
版权声明:本文为博主原创文章,转载请附上博文链接!

WampServer 修改以localhost开始为路径的地址

打开www目录下index.php,大概在第480行:
将如下代码:
if($suppress_localhost)
$projectContents .= 'http://'.$file.$UrlPort.'/"';
else
$projectContents .= 'http://localhost'.$UrlPort.'/'.$file.'/"';
$projectContents .= '>'.$file.'';

修改为:
if($suppress_localhost)
$projectContents .= 'http://localhost/'.$file.$UrlPort.'/"';
else
$projectContents .= 'http://localhost'.$UrlPort.'/'.$file.'/"';
$projectContents .= '>'.$file.'';

备注:wampserver 2.5,在index.php的第338行

WHM下开启PHP扩展

近期测试安装magento和opencart,在cpanel里放了安装文件,安装时总是提示各种php扩展的问题。
cpanel里面有开启php扩展的选项,一开始,一直在这里面绕圈,各种测试都没有用。

具体开启php扩展的方法是在WHM控制面板下。

如图,在软件里面,找到EasyApache,里面有服务器配置定制,找到php扩展,搜索未开启的扩展,然后勾选对应的php版本,按步骤设定,最后保存好即可。

关于cPanel添加附加域出现的“抱歉”提示

在cPanel里面添加附加域时,出现以下提示:

(XID u3tm2v) 抱歉,该域已经指向一个未使用 DNS 服务器的 IP 地址。 请将此域转移至该服务器的名称服务器,或者请系统管理员把它的一个名称服务器添加到 /etc/ips.remotedns 中,并在该远程名称服务器上添加相应的 A 条目。

如图所示:

解决方案:
回到WHM,在“服务器配置”  →  “调整设置”  →  “Domains”,找到“Allow Remote Domains” 将值设置为“on”即可。

如图所示: