Opencart代碼替換系統VQMOD寫法

VQMOD 後來演變 成官方自己寫了個 簡化版的VQMOD 叫OCMOD-使用資料庫來管理,但有看不到修改後源碼的缺點所以反正
2.3.0.2版也能裝VQMOD 我就裝了
VQMOD 安裝
http://o03.test.com/vqmod/install                      WIN下]安裝不了

https://github.com/vqmod/vqmod                     2.62
在vqmod官網下(鏈接:https://github.com/vqmod/vqmod/releases)載了一個自動安裝的vqmod才搞定這個問題:

安裝方法就是:

將vqmod目錄上傳到opencart根目錄,然後在瀏覽器上輸入:xxxxx/vqmod/install

然後瀏覽器上會顯示:VQMOD HAS BEEN INSTALLED ON YOUR SYSTEM!

你第二次或者第三次安裝:xxxxx/vqmod/install,

就會出現:VQMOD ALREADY INSTALLED!

然後,把剛才那兩個xml文件拷貝到vqmod/xml目錄下。

接下來我想要的效果就出來了:
VQMOD 會改變 原版幾個檔案 1個 index.php 多了6行而已
D:\wamp\www\o03\index.php
D:\wamp\www\o03\admin\index.php

<?php
// Version
define(‘VERSION’, ‘2.3.0.2’);
// Configuration
if (is_file(‘config.php’)) {
    require_once(‘config.php’);
}
// Install
if (!defined(‘DIR_APPLICATION’)) {
    header(‘Location: ../install/index.php’);
    exit;
}
// Startup
require_once(DIR_SYSTEM . ‘startup.php’);
start(‘admin’);

<?php
// Version
define(‘VERSION’, ‘2.3.0.2’);
// Configuration
if (is_file(‘config.php’)) {
    require_once(‘config.php’);
}
// Install
if (!defined(‘DIR_APPLICATION’)) {
    header(‘Location: ../install/index.php’);
    exit;
}
//VirtualQMOD
require_once(‘../vqmod/vqmod.php’);
VQMod::bootup();
// VQMODDED Startup
require_once(VQMod::modCheck(DIR_SYSTEM . ‘startup.php’));
前台是start(‘catalog’);     後台是     start(‘admin’);

會多出目錄
vqmod/xml           放VQMOD插件的XML檔
vqmod/logs vqmod日誌目錄
vqmod/vqcache vqmod緩存目錄 自己產生改變後的檔案
vqmod/checked.cache vqmod用於保存已緩存的文件名
vqmod/mods.cache vqmod用於保存緩存文件的序列化源碼

VQMOD 寫法

<?xml version=”1.0″ encoding=”UTF-8″?>
<modification>
    <id>VQMOD CORE FOR OPENCART – DO NOT REMOVE</id>
    <version>1.4.x and above</version>
    <vqmver required=”true”>2.6.0</vqmver>
    <author>vqmod.com</author>
    <file name=”system/startup.php,system/engine/*.php,system/library/*.php,admin/controller/extension/*.php,system/library/template/*.php,catalog/controller/event/theme.php,system/library/template/Twig/*.php” error=”skip”>
        <operation error=”skip” info=”For non OCMod includes/requires”>
            <search position=”replace” regex=”true”><![CDATA[~^(\s*)(require|include)(_once)?(\s+|\()(?!VQMod::modCheck\()(?!modification\()([^);]+)~]]></search>
            <add><![CDATA[$1$2$3$4\\VQMod::modCheck($5)]]></add>
        </operation>
        <operation error=”skip” info=”For OCMod includes/requires – OPERATION MUST BE AFTER NON OCMOD INCLUDES/REQUIRES OPERATION”>
            <search position=”replace” regex=”true”><![CDATA[~(require|include)(_once)?\((?!VQMod::modCheck\()modification\(([^)]+)~]]></search>
            <add><![CDATA[$1$2(\\VQMod::modCheck(modification($3), $3]]></add>
        </operation>
    </file>
    <file name=”system/library/template/Twig/*.php” error=”skip”>
        <operation error=”skip” info=”Add Twig support”>
            <search position=”replace”><![CDATA[dirname(__FILE__).’/../’]]></search>
            <add><![CDATA[DIR_SYSTEM . ‘library/template/’]]></add>
        </operation>
    </file>
    <file name=”system/library/template/Twig/Loader/*.php” error=”skip”>
        <operation error=”skip” info=”Add Twig support”>
            <search position=”replace”><![CDATA[= $realpath;]]></search>
            <add><![CDATA[= VQMod::modCheck($realpath);]]></add>
        </operation>
    </file>
</modification>

vQMOD 參數

        replace 為在搜尋標籤中的資料取代為add標籤上的資料。(預設)
before 為在搜尋標籤中的資料之前插入add標籤上的資料。
after 為在搜尋標籤中的資料之後插入add標籤上的資料。
top 為在文件頂部插入add標籤上的資料。搜尋資料會被忽略。
bottom 為在文件底部插入add標籤上的資料。搜尋資料會被忽略。
all 將完全以add標籤上的資料取代所有資料。搜尋資料會被忽略。
可選offset屬性為要工作的位置
若搜尋位置為before 及 offset 3,其會放置add標籤上的資料在搜尋前3行
若搜尋位置為after 及 offset 3,其會放置add標籤上的資料在搜尋後3行
若搜尋位置為replace 及 offset 3,其會從搜尋行中移除碼及下一個3行以add標籤上的資料取代
若搜尋位置為top 及 offset 3,其會在文件的最前3行下面放置add標籤上的資料
若搜尋位置為bottom 及 offset 3,其會在文件的最後3行前面放置add標籤上的資料
可選index屬性為搜尋標籤的例項將要指定動作標示
若搜尋字串為”echo”,在文件中有5個echo值,而只想取代第1和第3的值,可使用index=”1,3″來標示
多個實例是逗號來分隔,啟始值為”1″
遺漏或設置為false則取代所有例項。(預設)
可選regex屬性用於指定是否要以正規表示法模式來搜尋。
若為 true,則是以有效的正規表示法模式來搜尋
遺漏或設置為false則是使用正常字串來搜尋(預設)
可選trim屬性設置為 true|false
true將修剪遠離空白和換行。
        遺漏或設置為true,則代表要修剪。(預設為 true)

<search position=”replace” regex=”true”> 為在搜尋標籤中的資料取代 且用正規表示法模式來搜尋
<search position=”after”>                 /*after: 在尋找到的字符串後面增加;before:在尋找到的字符串前面增加;replace:替換尋找到的字符串*/
<search position=”after” offset=”6″> /*在尋找到的字符串後面增加
補充:
如要在一個文件中的某句前加入一段代碼,但該文件中搜索到多處有這句,可以使用index=「5」這樣的方式來指定要在第五處的前面加入。
比如:              <search position=”before” index=”2,4,6″><![CDATA[xxxxxxxxxxxx]]></search>即在文件中搜索xxxxxxxxxxxx,在搜索到的第2,4,6處改行前面加入。

#錯誤示範<search position=”after”><add offset=”6″>
#正確示範<search position=”after” offset=”6″><add>

<?xml version=”1.0″ encoding=”UTF-8″?>
<modification>
    <id>backgroundcorrection</id>
    <version>v1.0適用OPENCART2.3.X</version>
    <vqmver required=”true”>2.6.0</vqmver>
    <author>SuffixBig</author>
    <file name=”admin/controller/common/dashboard.php”>
        <operation error=”skip” info=”For non OCMod includes/requires”>
            <search position=”after” offset=”6″><![CDATA[
            if ($width >= 12) {
            ]]></search>
            <add><![CDATA[
if ($width >0  && $width < 12) {
$data[‘rows’][] = $column;//此3行我加的-不足12一行的部分應該也要出現
}
            ]]></add>
        </operation>
    </file>
</modification>

#結果 會在找到字串的下面6行然後加上1行空白和你要替換的內容

            if ($width >= 12) {
                $data[‘rows’][] = $column;
                $width = 0;
                $column = array();
            }
        }
if ($width >0  && $width < 12) {
$data[‘rows’][] = $column;//此3行我加的-不足12一行的部分應該也要出現
}

vQMOD 參數詳細

vQmod支援的參數有:
modification
這是檔案最高級別,也只有一個。
modification / id
這是模組的名稱和描述。
格式:文字形式。(信息)
modification / version
這是模組的版本。
格式:數字或Decimal (1.0.0)
modification / vqmver
這是最短VirtualQMod所需版本的腳本。
格式:數字或Decimal (1.0.0)
modification / author
這是模組的作者。
格式:文字形式。(信息)
modification / file
此為要變更的檔案名稱
需名稱屬性其為檔案文件名稱如index.php檔案的相對位置(如catalog/controller/product/product.php)。 名稱屬性支援建立動態路徑萬用字元(*)。每個萬用字元僅限於一個單一的目錄級別。
– catalog/view/theme/*/template/product/product.tpl
– catalog/view/theme/*/*/product/product.tpl
等等….
在一個 XML檔案中可標記多個標籤,每個檔案都可有自己的一套操作。
modification / file / operation
這是實際發生的操作包裝。
可以有多個相同檔案標籤。
可選的”error”屬性設置為skip | log | abort
skip意含所有其他操作將不可應用。將不會在log顯示錯誤。
log相同於skip,但會記錄錯誤。
abort意含記錄錯誤日誌和恢復到初始的來源。(預設)
modification / file / operation / search
這為所需操作的第一步。
只能搜尋單一行。但可使用offset 及 index屬性來協助。
自動修剪空白和換行
一個操作的標籤
推薦使用CDATA標籤來包裝程式碼。
需位置屬性來設置為before|after|replace|top|bottom|all幾種型式。
replace 為在搜尋標籤中的資料取代為add標籤上的資料。(預設)
before 為在搜尋標籤中的資料之前插入add標籤上的資料。
after 為在搜尋標籤中的資料之後插入add標籤上的資料。
top 為在文件頂部插入add標籤上的資料。搜尋資料會被忽略。
bottom 為在文件底部插入add標籤上的資料。搜尋資料會被忽略。
all 將完全以add標籤上的資料取代所有資料。搜尋資料會被忽略。
可選offset屬性為要工作的位置
若搜尋位置為before 及 offset 3,其會放置add標籤上的資料在搜尋前3行
若搜尋位置為after 及 offset 3,其會放置add標籤上的資料在搜尋後3行
若搜尋位置為replace 及 offset 3,其會從搜尋行中移除碼及下一個3行以add標籤上的資料取代
若搜尋位置為top 及 offset 3,其會在文件的最前3行下面放置add標籤上的資料
若搜尋位置為bottom 及 offset 3,其會在文件的最後3行前面放置add標籤上的資料
可選index屬性為搜尋標籤的例項將要指定動作標示
若搜尋字串為”echo”,在文件中有5個echo值,而只想取代第1和第3的值,可使用index=”1,3″來標示
多個實例是逗號來分隔,啟始值為”1″
遺漏或設置為false則取代所有例項。(預設)
可選regex屬性用於指定是否要以正規表示法模式來搜尋。
若為 true,則是以有效的正規表示法模式來搜尋
遺漏或設置為false則是使用正常字串來搜尋(預設)
可選trim屬性設置為 true|false
true將修剪遠離空白和換行。
遺漏或設置為true,則代表要修剪。(預設為 true)
modification / file / operation / add
這為所需操作的第三步。
可多行
一個操作的標籤
add標籤上的資料取決於屬性搜尋的位置。
使用CDATA標籤來包含程式碼。
可選trim屬性可設置為 true|false
true將修剪遠離空白和換行。
遺漏或設置為true,則代表要修剪。(預設為 true)
<![CDATA[ ]]>
此被稱為CDATA tags和其被用來指定xml資料。建議增加資料則是使用 search及 add operation tags

20170627 OPENCART後台-資訊總覽-為什麼只開2項會不出現,最少要開4項才出現

20170627 OPENCART後台-資訊總覽-為什麼只開2項會不出現,最少要開4項才出現
admin\controller\common\dashboard.php 作者在源碼當中有註解
// Split the array so the columns width is not more than 12 on each row. //拆分數組,使每行的列寬不超過12。
因為條件寬 要大於12才出現-沒超過12就整行不出現- 也就是說-你要用12來組合成1行
廢話不多說,這段程式明顯邏輯有問提,造我這樣修改就對了
admin\controller\common\dashboard.php 修改目標
這段
if ($width >= 12) {
$data[‘rows’][] = $column;

$width = 0;
$column = array();
}
下面加上3行
if ($width >= 12) {
$data[‘rows’][] = $column;

$width = 0;
$column = array();
}
}
if ($width >0 && $width < 12) { $data['rows'][] = $column;//此3行我加的-不足12一行的部分應該也要出現 }

網址解析

parse_url($data, PHP_URL_SCHEME); //切出 http 的部分
$url = ‘http://username:password@hostname/path?arg1=value1&arg2=value2#anchor’;
print_r(parse_url($url));
首先,先看一下這個程式的輸出結果
Array (
[scheme] => http
[host] => hostname
[user] => username
[pass] => password
[path] => /path
[query] => arg1=value1&arg2=value2
[fragment] => anchor )
其中,scheme是指他走的路線,而host則是站台網址,user則是使用者名稱,pass則是密碼,path則是路徑,query則是參數,fragment則是錨點。
而在「$component」的部份,則是有以下的參數可供傳遞。
PHP_URL_SCHEME
PHP_URL_HOST
PHP_URL_USER
PHP_URL_PASS
PHP_URL_PATH
PHP_URL_QUERY
PHP_URL_FRAGMENT
而這幾個參數則分別代表了Array中的scheme、host、user、pass、path、query和fragment。

OPENCART購物車-電子票劵下載檔案系統購買流程SOP與可能發生錯誤之原因

OPENCART購物車-電子票劵下載檔案系統購買流程SOP與可能發生錯誤之原因

OPENCART
您沒有購買過任何可下載的數位商品
下載文件
尚無含有下載文件的訂單!

原因

他是用訂單狀態去判斷你能否下載檔案
(3,’貨到付款–處理中’)或(5,’線上刷卡–處理中’)這2個狀態才會有下載檔案
而你增加一個訂單狀態如(7, 1, ‘已完成交易’)的話
會員下載文件資料就會變成不能下載,因為不論有幾個狀態,最後的狀態為準
OPENCART 下載檔案系統必定修改的地方 就是
\catalog\model\account\download.php 裡面 AND (o.order_status_id = ‘5’ OR o.order_status_id = ‘3’)
應該改成7和8才對
—————————————–
(1, 1, ‘待處理’),
(2, 1, ‘訂單處理中’),
(3, 1, ‘貨到付款–處理中’),
(4, 1, ‘ATM轉帳–請匯款’),
(5, 1, ‘線上刷卡–處理中’),
(6, 1, ‘到店取貨–等待中’),
(7, 1, ‘已完成交易’),
(8, 1, ‘已出貨’),
(9, 1, ‘已取消’),
(10, 1, ‘退款處理中…’);
〠▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧
#假設你要賣 電子票劵‎
〠▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧
1.別的網站如何賣票券
    http://support.accupass.com/knowledgebase/articles/150617-%E9%9B%BB%E5%AD%90%E7%A5%A8%E5%88%B8%E4%BD%BF%E7%94%A8%E6%87%B6%E4%BA%BA%E5%8C%85
    https://www.okbon.com/
    https://www.okbon.com/detail.php?unit=34 內容大致如下
〠▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧
#後台 電子票劵 下載型數位商品 功能 設定流程‎
〠▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧
登入後台=>商品管理=>數位商品下載
        新增
            檔案名稱
            偽裝
#檔案真實位置 和檔名
\system\storage\download
\system\storage\download\qrcode.png.TQGptDfUmZyLZbkWQukscwJ9F2Xd482k
〠▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧
#前台 電子票劵‎ 購買流程
〠▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧
已完成訂購
    您的訂單已成功送出,我們會在儘快處理!
    您可以到 會員專區, 或點擊 訂購記錄 查看訂單記錄。
    如果您的購買有相關的下載,您可以到 下載頁面 下載。
    如有任何問題或意見,請 連絡我們。
    感謝您的訂購!
=============================================
#訂單狀態 要哪一種才會出現下載文件
=============================================
訂單狀態 已出貨     無用
訂單狀態 已完成交易     無用
OPENCART
您沒有購買過任何可下載的數位商品
下載文件
尚無含有下載文件的訂單!
————————————————————————-
(1, 1, ‘待處理’),
(2, 1, ‘訂單處理中’),
(3, 1, ‘貨到付款–處理中’),
(4, 1, ‘ATM轉帳–請匯款’),
(5, 1, ‘線上刷卡–處理中’),
(6, 1, ‘到店取貨–等待中’),
(7, 1, ‘已完成交易’),
(8, 1, ‘已出貨’),
(9, 1, ‘已取消’),
(10, 1, ‘退款處理中…’);
訂單狀態要 3 和 5 才會有下載文件
後台
    智付寶Pay2go的訂單初始狀態(Order Default Status):要設為線上刷卡–處理中’
    編輯貨到付款模組-訂單狀態-貨到付款–處理中
=============================================
#程式位置
=============================================
/index.php?route=account/download                下載清單
/index.php?route=account/download/download&download_id=1    下載程式
=============================================
#相關資料表
SELECT * FROM     `oc_upload`        上傳檔案
SELECT * FROM    `oc_product_to_download`    商品下載資料表
=============================================
上傳檔案
INSERT INTO `oc_upload` (`upload_id`, `name`, `filename`, `code`, `date_added`) VALUES
(1, ‘0006.jpg’, ‘0006.jpg.rKbDQeXofbieNRQddYQZyLjinABdX246′, ’25ce74194786aad9690ecc7b2e83040e27ed80f3’, ‘2017-05-04 16:45:08’);
#商品id,下載id 對應表 product_to_download=>download_id對應upload=>upload_id
INSERT INTO `oc_product_to_download` (`product_id`, `download_id`) VALUES
(10, 1),
(12, 1);
=============================================
#撈資料的條件
=============================================
SELECT DISTINCT d.download_id, o.order_id, o.date_added, dd.name, d.filename FROM `oc_order` o LEFT JOIN oc_order_product op ON (o.order_id = op.order_id) LEFT JOIN oc_product_to_download p2d ON (op.product_id = p2d.product_id) LEFT JOIN oc_download d ON (p2d.download_id = d.download_id) LEFT JOIN oc_download_description dd ON (d.download_id = dd.download_id) WHERE o.customer_id = ‘4’ AND dd.language_id = ‘1’ AND (o.order_status_id = ‘5’ OR o.order_status_id = ‘3’) ORDER BY o.date_added DESC LIMIT 0,15
#分析
SELECT DISTINCT d.download_id, o.order_id, o.date_added, dd.name, d.filename FROM `oc_order` o
LEFT JOIN oc_order_product op ON (o.order_id = op.order_id) LEFT JOIN oc_product_to_download p2d ON (op.product_id = p2d.product_id) LEFT JOIN oc_download d ON (p2d.download_id = d.download_id) LEFT JOIN oc_download_description dd ON (d.download_id = dd.download_id) WHERE o.customer_id = ‘4’ AND dd.language_id = ‘1’ AND (o.order_status_id = ‘5’ OR o.order_status_id = ‘3’)
ORDER BY o.date_added DESC LIMIT 0,15
使用資料表
oc_order        訂單
oc_order_product    購買的商品
oc_product_to_download    商品下載資料表
oc_download
———————————————————–
order_status_id 訂單狀態(關聯order_status主鍵)
(1, 1, ‘待處理’),
(2, 1, ‘訂單處理中’),
(3, 1, ‘貨到付款–處理中’),
(4, 1, ‘ATM轉帳–請匯款’),
(5, 1, ‘線上刷卡–處理中’),
(6, 1, ‘到店取貨–等待中’),
(7, 1, ‘已完成交易’),
(8, 1, ‘已出貨’),
(9, 1, ‘已取消’),
(10, 1, ‘退款處理中…’);
條件
o.customer_id = ‘4’ AND dd.language_id = ‘1’
o.order_status_id = ‘5’ OR o.order_status_id = ‘3’
表示
SELECT * FROM `oc_order` 這裡面 會員的註冊ID 和 order_status_id 要為5或3
=============================================
#錯誤的原因
=============================================
SELECT * FROM `oc_order` 這裡面的 order_status_id 要為5或3
也就是
(3,’貨到付款–處理中’)或(5,’線上刷卡–處理中’)這2個狀態才會有下載檔案
而你增加一個訂單狀態如(7, 1, ‘已完成交易’)的話
會員下載文件資料就會變成不能下載,因為不論有幾個狀態,最後的狀態為準
=============================================
#進階修正法
=============================================
OPENCART 下載檔案系統必定修改的地方 就是
\catalog\model\account\download.php 裡面 AND (o.order_status_id = ‘5’ OR o.order_status_id = ‘3’)
應該改成7和8才對
—————————————–
或是不改程式你修正資料庫的資料也可以
SELECT * FROM `oc_order_status`
資深工程師重整版
(1, 1, ‘待處理’),
(2, 1, ‘訂單處理中’),
(3, 1, ‘貨到付款–處理中’),
(4, 1, ‘ATM轉帳–請匯款’),
(5, 1, ‘線上刷卡–處理中’),
(6, 1, ‘到店取貨–等待中’),
(7, 1, ‘已完成交易’),
(8, 1, ‘已出貨’),
(9, 1, ‘已取消’),
(10, 1, ‘退款處理中…’);
原版-少了4和6
(2, 1, ‘處理中’),
(3, 1, ‘已配送’),
(7, 1, ‘已取消’),
(5, 1, ‘已完成’),
(8, 1, ‘已拒絕’),
(9, 1, ‘取消恢復’),
(10, 1, ‘失敗’),
(11, 1, ‘已返還’),
(12, 1, ‘Reversed’),
(13, 1, ‘已退款’),
(1, 1, ‘待處理’),
(16, 1, ‘空訂單’),
(15, 1, ‘已處理’),
(14, 1, ‘已過期’);
#英文對照
(1, 1, ‘Pending’),
(2, 1, ‘Processing’),
(3, 1, ‘Shipped’),
(7, 1, ‘Canceled’),
(5, 1, ‘Complete’),
(8, 1, ‘Denied’),
(9, 1, ‘Canceled Reversal’),
(10, 1, ‘Failed’),
(11, 1, ‘Refunded’),
(12, 1, ‘Reversed’),
(13, 1, ‘Chargeback’),
(14, 1, ‘Expired’),
(15, 1, ‘Processed’),
(16, 1, ‘Voided’),
#本人作法1
保留原版 修改 注意 狀態3 已出貨 和狀態5 已完成交易 不能更動名稱
TRUNCATE oc_order_status          #清空舊表
INSERT INTO `oc_order_status` (`order_status_id`, `language_id`, `name`) VALUES
(1, 1, ‘待處理’),
(2, 1, ‘訂單處理中’),
(3, 1, ‘已出貨 ‘),
(4, 1, ‘到店取貨–等待中’),
(5, 1, ‘已完成交易’),
(6, 1, ‘貨到付款–處理中’),
(7, 1, ‘已取消’),
(8, 1, ‘已拒絕’),
(9, 1, ‘取消恢復’),
(10, 1, ‘失敗’),
(11, 1, ‘已返還’),
(12, 1, ‘退款處理中…’),
(13, 1, ‘已退款’),
(14, 1, ‘已過期’),
(15, 1, ‘已處理’),
(16, 1, ‘空訂單’),
(17, 1, ‘ATM轉帳–請匯款’);
—————————————————————–
#本人作法2
#使用修改\catalog\model\account\download.php 裡面 AND (o.order_status_id = ‘7’ OR o.order_status_id = ‘8’)
TRUNCATE oc_order_status
INSERT INTO `oc_order_status` (`order_status_id`, `language_id`, `name`) VALUES
(1, 1, ‘待處理’),
(2, 1, ‘訂單處理中’),
(3, 1, ‘貨到付款–處理中’),
(4, 1, ‘ATM轉帳–請匯款’),
(5, 1, ‘線上刷卡–處理中’),
(6, 1, ‘到店取貨–等待中’),
(7, 1, ‘已完成交易’),
(8, 1, ‘已出貨’),
(9, 1, ‘已取消’),
(10, 1, ‘已返還’),
(11, 1, ‘退款處理中…’),
(12, 1, ‘已退款’),
(13, 1, ‘已過期’),
(14, 1, ‘已處理’),
(15, 1, ‘空訂單’);

自寫關閉預設會員註冊功能

<?xml version=”1.0″ encoding=”utf-8″?>
<modification>
<name>自寫關閉預設會員註冊功能</name>
<version>2.4</version>
<link> </link>
<author><![CDATA[SuffixBig suffixbig@gmail.com]]></author>
<code>shutdown_accountregister2</code>
<!–註解:修改檔案–>
<file path=”catalog/view/theme/*/template/account/register.tpl”>
<operation>
<search><![CDATA[<h1><?php echo $heading_title; ?></h1>]]></search>
<add position=”replace”><![CDATA[
<!–<h1><?php echo $heading_title; ?></h1>
]]></add>
</operation>
<operation>
<search><![CDATA[<?php echo $content_bottom; ?></div>]]></search>
<add position=”replace”><![CDATA[
<?php echo $content_bottom; ?>–></div>
]]></add>
</operation>
</file>
</modification>

OCMOD

OCMOD 是 opencart 系統的程式碼修改系統,遵循GPL3協議免費使用。
如果 OCMOD 外掛開發正確,那麼使用者就可以在不更改系統核心程式碼的情況下增刪相關程式功能,
這也代表如果移除了某 OCMOD 外掛,則 opencart 的原始程式是不需要恢復或修復的。
OCMOD 是基於 Qphoria 的 VQMOD 系統。
OCMOD 是簡化版的 VQMOD. 主要區別:
保留了 Replace, Before, After, Regex, Offset, Limit, ignoreif, error
去掉了 Attributes top, bottom, ibefore, iafter
OCMOD 檔案可以透過 opencart 網站管理後台的[擴充功能]上傳:
若要上傳 OCMOD 檔案,則該檔案的附檔名必須為 .ocmod.zip 或者 .ocmod.xml。
這是為了避免非 ocmod 的檔案上傳到網站後台。

#OCMOD 的xml檔上傳之後 資料是存到資料庫 modification
系統檔案
system\storage\modification
後台相關檔案
D:\wamp\www\o03\admin\model\extension

#找到3個相同怎辦

可選index屬性為搜尋標籤的例項將要指定動作標示
若搜尋字串為”echo”,在文件中有5個echo值,而只想取代第1和第3的值,可使用index=”0,2″來標示
<search index=’2′><![CDATA[$data[‘header’] = $this->load->controller(‘common/header’);]]></search>
index=’2′ 改找到的第3個
<search index=”0″>0的結果是 只改第1個找到的

OCMOD 也是有 暫存檔 因為OCMOD改哪個檔-該檔案就會變成 直接改後上傳也無用要按更新才會改動
\system\storage\modification\admin\controller\common\column_left.php

#行數計算
===
                ‘edit’          => $this->url->link(‘sale/order/edit’, ‘token=’ . $this->session->data[‘token’] . ‘&order_id=’ . $result[‘order_id’] . $url, true)
            );
        }
#要加在}之前的話-要設 <add position=”after” offset=”1″> 本身找到那行是0 );後是1
/*
<file path=”catalog/controller/common/home.php”> 目標檔案
<add position=”replace”>
after : 在尋找到的字符串後面增加;     這裡有疑問 也有寫法是 Ater
before:在尋找到的字符串前面增加;
replace:替換尋找到的字符串
<add position=”replace”><![CDATA[
test123
]]></add>
*/

#以下為寫法範例

<?xml version=”1.0″ encoding=”utf-8″?>
<modification>
  <name>test 01</name>
  <code>test 01</code>
  <version>1.0</version>
  <author><![CDATA[作者suffixbig suffixbig@gmail.com]]></author>
  <link>http://www.opencart.com</link>
  <file path=”catalog/controller/common/home.php”>
    <operation>
      <search>
        <![CDATA[
        $data[‘column_left’] = $this->load->controller(‘common/column_left’);
        ]]>
      </search>
      <add position=”replace”>
        <![CDATA[
        echo ‘test123’;
        ]]>
      </add>
    </operation>
  </file>
</modification>

後台檔案也能是修改目標

    <file path=”admin/controller/sale/return.php”>
        <operation>
            <search><![CDATA[
                protected function getList() {
                ]]>
            </search>
            <add position=”before” offset=”6″>
                <![CDATA[
                if(isset($this->request->get[‘next’]) && $this->request->get[‘next’] == ‘guest/guestreturn’) {
                    $next = $this->request->get[‘next’];
                    $this->response->redirect($this->url->link($next, ‘token=’ . $this->session->data[‘token’], true));
                }
                ]]>
            </add>
        </operation>
    </file>

找到字之後的下幾行  offset=偏移量

<add position=”after ” offset=”6″>
position=」before」 (位置為之前)和偏移為3行。找到【$var = 『123』;】的位置向上偏移3行插入add裡面的數據
position=」after「  (位置為後面)和偏移為3行。找到【$var = 『123』;】的位置向下偏移3行插入add裡面的數據
position=」replace「(位置為替換)和偏移為3行。找到【$var = 『123』;】的位置從當前位置到向下偏移3行全部清除,並用add裡面的數據替換
#被去掉了
position=」top「    (位置為頂部)和偏移為3行。找到【$var = 『123』;】的位置從頂部向下偏移3行的頂部
position=」bottom「 (位置為底部)和偏移為3行。找到【$var = 『123』;】的位置從底部上方3行文件的底部
錯誤原因
Parse error: syntax error, unexpected end of file, expecting function (T_FUNCTION) in /usr/local/www/public/system/storage/modification/admin/controller/common/dashboard.php on line 88
<add position=”after ” offset=”6″> 打成 <add position=”ater ” offset=”6″>

同一檔改2段要這樣寫,你只寫一個<operation>的話,第2段不會執行

<?xml version=”1.0″ encoding=”utf-8″?>
<modification>
    <name>自寫關閉預設會員註冊功能</name>
    <version>2.4</version>
    <link> </link>
    <author><![CDATA[SuffixBig suffixbig@gmail.com]]></author>
    <code>shutdown_accountregister2</code>
    <!–註解:修改檔案–>
    <file path=”catalog/view/theme/*/template/account/register.tpl”>
        <operation>
            <search><![CDATA[<h1><?php echo $heading_title; ?></h1>]]></search>
            <add position=”replace”><![CDATA[
            <!–<h1><?php echo $heading_title; ?></h1>
            ]]></add>
        </operation>
        <operation>
            <search><![CDATA[<?php echo $content_bottom; ?></div>]]></search>
            <add position=”replace”><![CDATA[
      <?php echo $content_bottom; ?>–></div>
            ]]></add>
        </operation>
    </file>
</modification>

NOT FOUND – OPERATIONS ABORTED! 找不到問題
換行和空格 所有範例目前 沒找到有2行的 \r\n 換行該如何處理

FILE: catalog/view/theme/default/template/account/register.tpl
CODE: <div class=”form-group”>
            <label class=”col-sm-2 control-label” for=”input-fax”><?php echo $entry_fax; ?></label>
            <div class=”col-sm-10″>
              <input type=”text” name=”fax” value=”<?php echo $fax; ?>” placeholder=”<?php echo $entry_fax; ?>” id=”input-fax” class=”form-control” />
            </div>
          </div>
NOT FOUND – OPERATIONS ABORTED!
找不到

\r\n 這樣也不對

FILE: catalog/view/theme/default/template/account/register.tpl
CODE: <script type=”text/javascript”><!–\r\n$(‘button[id
NOT FOUND – OPERATIONS ABORTED!

#xml 中 name 不能有&符號

<?xml version=”1.0″ encoding=”utf-8″?>
<modification>
    <name>Facebook登入&註冊</name>
    <version>v1.0適用OPENCART2.3.0.2</version>
    <code>03032016002158</code>
    <author>suffixbig 此插件其實沒修改任何檔案</author>
    <link></link>
</modification>

#再附上一個成功案例

<?xml version=”1.0″ encoding=”utf-8″?>
<modification>
    <name>將訂單內容地址數字部分取代為星號</name>
    <version>1.0</version>
    <link></link>
    <author>SuffixBig – suffixbig@gmail.com</author>
    <code>Theorderaddressnumberispartiallyreplaced</code>
    <!–註解:修改目標檔案–>
    <file path=”catalog/controller/account/order.php”>
    <!–地址2–>
        <operation>
            <search><![CDATA[
            ‘address_1’ => $order_info[‘payment_address_1’]
            ]]></search>
            <add position=”replace”><![CDATA[
            ‘address_1’ => preg_replace(‘@\d@’,’*’,$order_info[‘payment_address_1’])
            ]]></add>
        </operation>
        <operation>
            <search><![CDATA[
            ‘address_1’ => $order_info[‘shipping_address_1’]
            ]]></search>
            <add position=”replace”><![CDATA[
            ‘address_1’ => preg_replace(‘@\d@’,’*’,$order_info[‘shipping_address_1’])
            ]]></add>
        </operation>
    </file>
</modification>

VQMOD 看 修改後的檔案 源碼 /vqmod/vqcache 目錄下有暫存檔
OCMOD 看 修改後的檔案 源碼 完全不知道該如何才有辦法看到 (因為谷哥大神完全查不到 事隔一個月20170704 才查到位置 )

OCMOD 也是有 暫存檔 因為OCMOD改哪個檔-該檔案就會變成 直接改後上傳也無用要按更新才會改動
\system\storage\modification\admin\controller\common\column_left.php

OpenCart 是他一個人寫出來的 (Daniel Kerr)

OpenCart 是他一個人寫出來的 (Daniel Kerr)

 

專訪
http://www.opencartnews.com/interviews/an-interview-with-opencart-founder-daniel-kerr/
.
以下 google 翻譯
.
作為OpenCart創始人和開發人員,Daniel Kerr是開源社區的知名人士。

我最近有機會訪問丹尼爾·克爾。他談到了他今天的工作,發布OpenCart 1.5.5,下一個版本可以看到什麼,以及他未來的計劃。

Q#1 – 你好,丹尼爾,你好嗎?感謝您給我們您的第一次面試。告訴我們,你的生活和工作最近有什麼事情?

你好,我很好,一切都很好。

Q#2 – 很多問題在我腦海裡問,但我會從基本問題開始。請告訴我們什麼時候和什麼讓你想開發OpenCart?

等待OsCommerce發布他們的下一個版本。那些傢伙真的放下了球。而不是更新系統以使用正確的OOP框架,他們只是將垃圾代碼堆疊在垃圾代碼之上。

Q#3 – OpenCart的名字聽起來很簡單,引人入勝,是你的想法還是從別的?

我以為因為我希望這個項目是開源的,所以它應該有一個開放的詞,比如Open Office。

我經歷了不少名字,這樣的Live Cart,Oscart。有人已經擁有域名OpenCart.com,我想如果我要開始這個項目,我也可以花費額外的錢來獲得我想要的名字,所以我不斷通過電子郵件發送所有者提供的域名。

我設法買了1000美元。對我來說,當時我住在我媽媽的家裡,沒有工作,這是非常多的。

Q#4 – 您如何看到OpenCart與現有的開源電子商務軟件?

我看到OpenCart目前是市場上最好的。其他解決方案在代碼中過於復雜。

Q#5 – OpenCart 1.5.5剛剛發布,很多開發人員不滿意的發布,他們認為是半途而止的釋放。你說什麼?

不是真的。你不能讓大家開心。自從我上次發布以來已經有將近6個月了,我想得到一些東西。花了這麼長時間的原因是因為我對OpenCart.com做了很多更新。

我重新設計了主站點,更新了擴展部分,並從頭開始寫了一個文檔系統。

Q#6 – 許多OpenCart設計師和開發人員通過銷售OpenCart主題賺取數千美元。 Shoppica即將觸及5,000個銷售額。當你聽到這一切的時候你感覺如何?

OpenCart不斷增長。我以為我們現在已經達到頂峰,但是我們每個月的銷售量都比上個月大約增加500多個。去年10月至11月,銷售額在一個月內躍升至1000多個。

Q#7 – 很多嗡嗡聲“Attn主題開發者…我們需要干預”論壇帖子,我們想听聽您對這次辯論的意見?

由於他的擴展和主題開發人員替代部分代碼的問題,所以Qphoria放棄了這一點。我計劃將自己的類型的vqmod系統添加到下一個版本,所以希望模板設計者將使用它而不是修改核心文件。

Q#8 – 請分享您現在和未來OpenCart的計劃嗎?

OpenCart的未來計劃是關於添加新功能,直到我們覆蓋競爭對手擁有或沒有的每個功能。我正在添加自定義字段,允許用戶將自己的字段添加到客戶註冊和地址。目前只有CsCart內置這個功能。

OpenCart還有很多功能,競爭對手不像聯盟系統那樣。我也認為新的vqmod系統將使我們超越其他推車,因為它將使用戶對網站的修改變得非常簡單。

Q#9 – 您對HTML5和CSS3的簡短想法?有什麼計劃在未來開放OpenCart?

是的,這是我想盡快添加的東西。實際上我在想一個公司提供一個模板,或者使用我們設置的模板競爭系統來選擇一個模板來使用。

Q#10 – 您目前在OpenCart開發中面臨的最大挑戰是什麼?

還有幾個很難找到處於編碼層級的優秀開發人員。我現在有3名開發人員為我工作,我不斷試圖推動他們盡可能多地學習編碼。

當我第一次開始寫網站時,我正在全職工作,然後回家應該繼續工作,直到12歲。不是這是我期望的,但如果你擅長的東西,你會嘗試學習一切你可以關於它

Q#11 – 最近有設計比賽,請告訴我們如何去做,我們可以期待在不久的將來會更多嗎?

模板比賽將每月舉行一次。我為此寫了一個模板比賽系統。獲獎者將來決定誰能獲得最多的Facebook喜歡。

Q#12 – 你有什麼秘密或夢想的項目,你想揭示我們?

我希望進入託管解決方案。應該從我從電子商務行業的眾多來源收集到的東西,這就是大錢。

我還沒有解決的唯一問題是如何設置類似的東西

OPENCART 非會員-訂單查詢功能

〠▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧
#非會員-訂單查詢功能
非會員-如何查訂單
〠▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧
—————————————————-
非會員-如何查訂單? 內建真的無此功能,真的不能查
—————————————————-
非會員可以查詢訂單的功能 使用 插件 可以增加此功能用 訂單編號 和 EMAIL 查訂單
https://www.opencart.com/index.php?route=marketplace/extension/info&extension_id=28745&filter_search=guest%20order    #39美金
http://oc.webkul.com/demo1/index.php?route=guest/order/info                                #DEMO
——————————————————————————————————————————–
https://www.opencart.com/index.php?route=marketplace/extension/info&extension_id=4332&filter_search=guest%20order&filter_license=0    使用 訂單編號 和 EMAIL 和IP
http://vger.co.uk/two/index.php?route=account/guest                                    #DEMO
——————————————————————————————————————————–
https://www.opencart.com/index.php?route=marketplace/extension/info&extension_id=28108&filter_search=guest%20order    #結帳後訂單顯示自訂 (預設訂購完成後 是不顯示訂單的)
〠▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧
https://www.opencart.com/index.php?route=marketplace/extension/info&extension_id=21223                    #使用 訂單編號 和 EMAIL 免費
#GuestOrderView_1.4_for_OC_2.3.x.ocmod 使用方式
http://guestorderview.demo.isenselabs.com/index.php?route=account/guestorder                        #DEMO
〠▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧
1.拷貝檔案
2.登入後台
    擴充功能安裝=>上傳檔案
    擴充功能安裝=>代碼替換模組=>點右上的更新
20170608
    修改了語系檔英文目錄
COMOD修改目標catalog/language/*/extension/module/account.php
〠▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧
#出現位置
〠▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧
會員專區
    也就是點登入後 右邊的區塊選單=>他加在訂單歷史下面 Guest Order View 我當然把這字換成中文了
〠▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧
#運作流程
〠▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧
index.php?route=account/guestorder            程式位置 自貼網址也可以
查詢訂單記錄 輸入
    訂購電子郵件: suffixbig@gmail.com
    訂單ID 42
成功:確認電子郵件已發送到suffixbig@gmail.com。 請點擊電子郵件中的鏈接查看此訂單。
〠▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧
#EMAIL內容
〠▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧
標題:花蓮遠雄悅來大飯店 – 訂單查看確認
您好,請點擊下面的鏈接查看您的訂單。
http://apm013.surehigh.com.tw/index.php?route=account/guestorder/info&order_id=42&order_email=suffixbig@gmail.com&order_code=7d44069f5b    任何人知道這個連結都可以看

OPENCART一頁式結帳模組-中文化與認證機制皆被我研究出來了

2017/05/31******************************************************************************************************
一頁式結帳-前台啟動條件
if ($this->config->get(‘quickcheckout_status’) && $this->validated()) {
1.$this->config->get(‘quickcheckout_status’) 該商店啟用
2.$this->validated 憑證通過vendor/equotix/quickcheckout/equotix.php 155行 用curl送值和接收
//==============================================================================================================
protected function validated() {
$this->callbackServer($this->config->get($this->code . ‘_license_license_key’), false);
return $this->config->get($this->code . ‘_license_license_key’) ? true : false;
}
//==============================================================================================================

#寫了一隻測試程式 看$this->config->get(‘quickcheckout_status’) 和 $this->validated
view-source:http://o03.test.com/index.php?route=test
========================================================================================================
protected $code = ‘quickcheckout’;
protected $extension_id = ’58’;

[quickcheckout_license_date_expired] => 29 May 2018
[quickcheckout_license_license_key] => xxxxxxx-xxxxxx-fabb673-9c40513-3b17864-ff16b4b
[quickcheckout_license_order_id] => 876666
[quickcheckout_license_name] => gggg
[quickcheckout_license_date_purchased] => 29 May 2017
[quickcheckout_field_address_1] => Array

http://o03.test.com/index.php?route=test
http://o03.test.com/index.php?route=quickcheckout/checkout #一頁結帳頁面 -手動過去
正常會返回8個值

=======================================
#POST送出的值
=======================================
[license_key] => oc52284-ceba4f2-fabb673-9c40513-3b17864-ff16b4b
[extension_id] => 58
[domain] => apm013.surehigh.com.tw //去除www.// 去除http://// 去除/ //轉小寫
=======================================
#CURL返回的值
[success] => 1 #成功或失敗
[license_key] => xxxxxxx-xxxxxx-fabb673-9c40513-3b17864-ff16b4b
[order_id] => 876666 #訂單號
[name] => gggg #購買人
[date_purchased] => 26 May 2017 #授權購買日
[date_expired] => 26 May 2018 #授權到期日
[domains] => Array([0] => Array(
[domain] => apm013.surehigh.com.tw
[date_added] => 26 May 2017
))
[services] => Array
[service] => Change Admin URL
[cost] => Only $39

[service] => OpenCart Upgrade
[cost] => Only $69

[service] => Professional Extension Installation
[cost] => Only $99

[service] => Custom Development
[cost] => From $139

[service] => Resolve Errors in Error Log
[cost] => Only $299

[service] => Website Audit
[cost] => Only $699
=======================================

//自行製造返回內容 S**********************************************************/
$response=array(‘success’ => 1,//#成功或失敗
‘license_key’=> ‘xxxxxxx-xxxxxx-fabb673-9c40513-3b17864-ff16b4b’,//許可證號
‘order_id’=> ‘874189’,//#訂單號
‘name’=> ‘gggg’,//#購買人
‘date_purchased’=> ’26 May 2017’,//#授權購買日
‘date_expired’=> ’26 May 2018’);//#授權到期日
$response[‘domains’][]=array(‘domain’ => ‘apm013.surehigh.com.tw’,’date_added’ => ’29 May 2017′);//允許授權網址
$response[‘services’][]=array(‘service’ => ‘更改管理後台網址’,’cost’=>’$39′);
$response[‘services’][]=array(‘service’ => ‘升級 OpenCart’,’cost’=>’$69′);
$response[‘services’][]=array(‘service’ => ‘專業擴展包安裝’,’cost’=>’$99′);
//自行製造返回內容 END**********************************************************/
=======================================
#有8個值 要寫入設定
=======================================
$this->code . ‘_license_license_key’ => ”,
$this->code . ‘_license_order_id’ => ”,
$this->code . ‘_license_name’ => ”,
$this->code . ‘_license_date_purchased’ => ”,
$this->code . ‘_license_date_expired’ => ”,
$this->code . ‘_license_domains’ => array(),
$this->code . ‘_license_check’ => time(),
$this->code . ‘_license_services’ => ”

=======================================
#資料表記的位置
=======================================
SELECT * FROM `OPENCART`.`oc_setting` WHERE code =’quickcheckout_license’

setting_idstore_idcodekeyvalueserialized2690quickcheckout_licensequickcheckout_license_date_expired26 May 201802700quickcheckout_licensequickcheckout_license_domains[{“domain”:”apm013.surehigh.com.tw”,”date_added”:”…12710quickcheckout_licensequickcheckout_license_check149622471302720quickcheckout_licensequickcheckout_license_services[{“service”:”\u66f4\u6539\u7ba1\u7406\u5f8c\u53f0\…12680quickcheckout_licensequickcheckout_license_date_purchased26 May 201702670quickcheckout_licensequickcheckout_license_namesuffix NO.1002650quickcheckout_licensequickcheckout_license_license_keyoc52284-ceba4f2-fabb673-9c40513-3b17864-ff16b4b02660quickcheckout_licensequickcheckout_license_order_id874189

[{“domain”:”apm013.surehigh.com.tw”,”date_added”:”26 May 2017″}]

——————————————————————————————-
#手動看他有幾種訊息
——————————————————————————————-
http://license.marketinsg.com/index.php?load=common/home/checkUpdate #按下Update時
http://license.marketinsg.com/index.php?load=common/home/validatelicense #檢查全縣 每48小時檢查一次
——————————————————————————————-
http://apm013.surehigh.com.tw/index.php?route=test #手動執行-強制認證 不等48小時
http://license.marketinsg.com/index.php?load=common/home/validatelicense #目標
成功只會返回
Array ( [error] => [success] => 1 ) {“success”:true}
失敗狀況
——————————————————————————————-
#domain 密鑰通過 網址不對 比對部分 surehigh.com.tw apm013.surehigh.com.tw 子網域也不行
Array ( [error] => License key has reached its limit. Please verify your license key and its usage on http://license.marketinsg.com. [success] => ) {“error”:”License key has reached its limit. Please verify your license key and its usage on http:\/\/license.marketinsg.com.”}
許可證密鑰已經達到極限。 請驗證您的許可證密鑰及其在http://license.marketinsg.com上的用途。
——————————————————————————————-
#沒POST license_key 過去
Array ( [error] => Invalid license key entered. [success] => ) {“error”:”Invalid license key entered.”}
輸入的許可證密鑰無效
——————————————————————————————-
D:\wamp\www\o03\catalog\controller\test.php 的內容
$license_key=”oc52284-ceba4f2-fabb673-9c40513-3b17864-ff16b4b”;
$license_info = $this->callbackServer($license_key, true); //呼叫權限檢查

——————————————————————————————-
目標
http://license.marketinsg.com/index.php?load=common/home/checkUpdate #按下Update時
//按下Update的動作
/*
正常送出
Array ( [license_key] => oc52284-ceba4f2-fabb673-9c40513-3b17864- [version] => 10.1.0
正常傳回
恭喜!您正在使用最新版本的擴展名。
{“type”:”alert alert-success”,”message”:”Congratulations! You are using the latest version of the extension.”}
——————————————————————————————-
結果
正常
{“type”:”alert alert-success”,”message”:”Congratulations! You are using the latest version of the extension.”}
{“type”:“alert alert-success”,“message”:“恭喜!您正在使用最新版本的擴展名。”}
——————————————————————————————-
{“type”:”alert-danger”,”message”:”We are unable to retrieve your license information. Please contact us if you require assistance.”}
{“type”:“alert-danger”,“message”:“我們無法檢索您的許可證信息,如果需要幫助,請與我們聯繫。”}

自架購物平台-OpenCart購物商城1-檔案篇

免費的電子購物車系統很多,包括OpenCart, Magento, osCommerce, zenCart, PrestaShop等等,在華文世界中OpenCart由於中文化的很早,而且有一些人無償在推廣(以http://blog.dnono.com最為著名)

下載

OpenCart 2.0.2.0 中文化的版本請至opencart 2 中文版 (www.opencart.idv.tw)下載。
版本2.3.0.2
發佈日期2016/09/19
更新日期2016/09/19

注意:以下步驟適用於全新安裝,如果您要升級現有的購物車請觀看Upgrade.txt文件
——-
INSTALL
——-
此安裝指南適用FTP、cPanel 或其他的主機操作介面。
– Linux 安裝方式 –
1. 上傳 “Upload” 文件夾內的所有檔案至你的主機空間根目錄下,根目錄名稱會因主機所使用的管理程式而有所差異,例如:cPanel 的根目錄應該是 public_html/ 、而 Plesk 的根目錄則是httpdocs/
2. 將”網站根目錄”和”admin目錄”下的config-dist.php檔案,名稱修改為config.php
3. 如果您是使用 Linux/Unix 系統,請確定以下檔案和文件夾是可寫入的狀態
        chmod 0755 or 0777 system/storage/cache/
        chmod 0755 or 0777 system/storage/logs/
        chmod 0755 or 0777 system/storage/download/
        chmod 0755 or 0777 system/storage/upload/
        chmod 0755 or 0777 system/storage/modification/
        chmod 0755 or 0777 image/
        chmod 0755 or 0777 image/cache/
        chmod 0755 or 0777 image/catalog/
        chmod 0755 or 0777 config.php
        chmod 0755 or 0777 admin/config.php
        如果 0755 權限尚無法正常運作,可嘗試使用 0777 權限
4. 請確定您已經創建了MySQL的資料庫,並取得該資料庫的用戶資格
    (為了安全,請不要使用root用戶和密碼)
5. 瀏覽網站 例如: http://www.example.com 或 http://www.example.com/store/
6. 按照網頁指示的步驟進行安裝
7. 安裝完成後請刪除主機內的install目錄資料
8. 如果您已下載包含vendor資料夾的compiled版本且需要使用此功能,則vendor資料夾應該上傳至網站根目錄的上層目錄(和public_html or httpdocs目錄同一層)
– Windows 安裝方式 –
1. 上傳 “Upload” 文件夾內的所有檔案至你的主機空間根目錄下,例如:/wwwroot/store 或 /wwwroot
2. 將”網站根目錄”和”admin目錄”下的config-dist.php檔案,名稱修改為config.php
3. 請確定以下檔案和文件夾是可讀寫的狀態
        system/cache/
        system/logs/
        system/download/
        system/upload/
        image/
        image/cache/
        image/catalog/
        config.php
        admin/config.php
4. 請確定您已經創建了MySQL的資料庫,並取得該資料庫的用戶資格
    (為了安全,請不要使用root用戶和密碼)
5. 瀏覽網站 例如: http://www.example.com 或 http://www.example.com/store/
6. 按照網頁指示的步驟進行安裝
7. 安裝完成後請刪除主機內的install目錄資料
– 本地安裝方式 –
下面列出一些可幫助您快速建構本地運作環境的程式。
http://www.apachefriends.org/en/xampp.html
http://www.ampps.com/
http://www.usbwebserver.net
http://www.wampserver.com/en/
 – 備註 –
Godaddy 虛擬主機問題
如果使用 godaddy 的虛擬主機,您可能需要將”網站根目錄”和”admin目錄”下的php.ini檔案,名稱修改為 user.ini
—————————-
COMPOSER OR NOT TO COMPOSER
—————————-
從2.2版加入了有助於開發者的composer。同時有兩個版本(已編譯和未編譯)可依需求使用。
我們強烈建議將vendor資料夾放置於非網站根目錄下以確保檔案不會被直接訪問
Composer installing is extremely simple – https://getcomposer.org