ブラウザバック対策だと思われますが、デフォルトの商品購入ボタンは<form>を使用しているにもかかわらずボタン自体は<a>で表示し、ボタンを押したらJavaScriptで検知して<form>に値を突っ込んでPOSTするという意味のわからない仕様になっています。
ソースを追うのが面倒なのですが、最終的にやってることはproduct_idに商品IDを突っ込んで送信です。
送信先での動きは2種類の経路があります。
まず商品詳細ページから。フォームの宛先は自分自身。
/html/productes/detail.php
/data/class_extends/page_extends/products/LC_Page_Products_Detail_Ex.php
/data/class/pages/products/LC_Page_Products_Detail.php
/data/class/pages/products/LC_Page.php
具体的な登録ロジックはLC_Page_Products_Detail::process()のSC_CartSessionを触っている部分です。
商品一覧、検索ページからでも購入することができますが、こちらもフォームの宛先は自分自身です。
/html/productes/list.php
/data/class_extends/page_extends/products/LC_Page_Products_List_Ex.php
/data/class/pages/products/LC_Page_Products_List.php
/data/class/pages/products/LC_Page.php
購入ロジックはLC_Page_Products_List::process()のやはりSC_CartSessionの部分です。
どちらも、商品表示を行うロジック中で、引数product_idを見つけたら買い物籠に突っ込んでショッピングカートに飛ばす、ということを行っています。
普通籠に投入する専用のクラスとか作るだろ。
また、この両者、行うことは同じなのに書き方が全然違います。
なんでこんなことになってるんだよ。
見通しのいいように、ていうか既存のロジック触りたくないので、購入処理専用のロジックを作成することにします。
まず、購入ブロックを呼び出すロジックを作成します。
内容的に/html/productsディレクトリに作成するのが無難だろうので/html/products/buy.phpを作成。
中身はブロックの呼び出しと同じ作りです。
/html/products/buy.php
/data/class_extends/page_extends/products/LC_Page_Products_Buy_Ex.phpを作成。
/data/class/page/products/LC_Page_Products_Buy.phpを作成。
ここに実際のロジックを記入していきます。
なんと驚いたことに容量制限とやらで入りきらないので続く。
ソースを追うのが面倒なのですが、最終的にやってることはproduct_idに商品IDを突っ込んで送信です。
送信先での動きは2種類の経路があります。
まず商品詳細ページから。フォームの宛先は自分自身。
/html/productes/detail.php
/data/class_extends/page_extends/products/LC_Page_Products_Detail_Ex.php
/data/class/pages/products/LC_Page_Products_Detail.php
/data/class/pages/products/LC_Page.php
具体的な登録ロジックはLC_Page_Products_Detail::process()のSC_CartSessionを触っている部分です。
商品一覧、検索ページからでも購入することができますが、こちらもフォームの宛先は自分自身です。
/html/productes/list.php
/data/class_extends/page_extends/products/LC_Page_Products_List_Ex.php
/data/class/pages/products/LC_Page_Products_List.php
/data/class/pages/products/LC_Page.php
購入ロジックはLC_Page_Products_List::process()のやはりSC_CartSessionの部分です。
どちらも、商品表示を行うロジック中で、引数product_idを見つけたら買い物籠に突っ込んでショッピングカートに飛ばす、ということを行っています。
普通籠に投入する専用のクラスとか作るだろ。
また、この両者、行うことは同じなのに書き方が全然違います。
なんでこんなことになってるんだよ。
見通しのいいように、ていうか既存のロジック触りたくないので、購入処理専用のロジックを作成することにします。
まず、購入ブロックを呼び出すロジックを作成します。
内容的に/html/productsディレクトリに作成するのが無難だろうので/html/products/buy.phpを作成。
中身はブロックの呼び出しと同じ作りです。
/html/products/buy.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
/*
* 商品を買い物籠に入れる専用のロジック
* 買い物籠に入れた後はカートに移動します。
*/
//必要ファイルのインクルード、セッション呼び出しなど
require_once('../require.php');
//ロジックを実行
require_once(CLASS_EX_PATH .
"page_extends/products/LC_Page_Products_Buy_Ex.php");
$objPage = new LC_Page_Products_Buy_Ex();
register_shutdown_function(array($objPage, "destroy"));
$objPage->init();
$objPage->process();
|
/data/class_extends/page_extends/products/LC_Page_Products_Buy_Ex.phpを作成。
1
2
3
4
5
6
7
|
require_once(CLASS_PATH .
"pages/frontparts/bloc/LC_Page_FrontParts_Bloc_Buy.php");
class LC_Page_Products_Buy_Ex extends LC_Page_Products_Buy {
public function init() { parent::init(); }
public function process() { parent::process();}
public function destroy() { parent::destroy();}
}
|
/data/class/page/products/LC_Page_Products_Buy.phpを作成。
ここに実際のロジックを記入していきます。
なんと驚いたことに容量制限とやらで入りきらないので続く。
PR
トラックバック
トラックバックURL: