CS-Cartセミナー東京 20151128
-
Upload
toshihiro-yoshiura -
Category
Software
-
view
780 -
download
0
Transcript of CS-Cartセミナー東京 20151128
![Page 1: CS-Cartセミナー東京 20151128](https://reader030.fdocument.pub/reader030/viewer/2022021503/5887939d1a28ab5b1a8b5781/html5/thumbnails/1.jpg)
♥アドオンアドオンでCS-Cartの機能をカスタマイズ
2015-11-28
![Page 2: CS-Cartセミナー東京 20151128](https://reader030.fdocument.pub/reader030/viewer/2022021503/5887939d1a28ab5b1a8b5781/html5/thumbnails/2.jpg)
カスタマイズは どこに書く?
![Page 3: CS-Cartセミナー東京 20151128](https://reader030.fdocument.pub/reader030/viewer/2022021503/5887939d1a28ab5b1a8b5781/html5/thumbnails/3.jpg)
アドオンに書きますすべて
![Page 4: CS-Cartセミナー東京 20151128](https://reader030.fdocument.pub/reader030/viewer/2022021503/5887939d1a28ab5b1a8b5781/html5/thumbnails/4.jpg)
アドオンとは?CS-Cartのカスタマイズの基盤となる仕組み =WordpressやEC-Cubeのプラグイン
![Page 5: CS-Cartセミナー東京 20151128](https://reader030.fdocument.pub/reader030/viewer/2022021503/5887939d1a28ab5b1a8b5781/html5/thumbnails/5.jpg)
標準のアドオンポイント
ほしいものリスト
Google Analytics
セット販売 返品管理
SNSログイン年齢認証
CS-Cartの様々な機能はアドオンでも提供されています。
![Page 6: CS-Cartセミナー東京 20151128](https://reader030.fdocument.pub/reader030/viewer/2022021503/5887939d1a28ab5b1a8b5781/html5/thumbnails/6.jpg)
サードパーティー製のアドオン
タブ拡張
フロントエンドエディター
eBay統合 Facebook Store
スライダーFAQ
約400以上のアドオンが販売中CS-Cart Marketplace
![Page 7: CS-Cartセミナー東京 20151128](https://reader030.fdocument.pub/reader030/viewer/2022021503/5887939d1a28ab5b1a8b5781/html5/thumbnails/7.jpg)
コントローラー
テンプレートファイル
スキーマー
外部ライブラリー
アドオンを作成することでコアから切り離された独自のスペースを
作る事が出来ます
![Page 8: CS-Cartセミナー東京 20151128](https://reader030.fdocument.pub/reader030/viewer/2022021503/5887939d1a28ab5b1a8b5781/html5/thumbnails/8.jpg)
さっそくアドオンを書いてみましょう!
![Page 9: CS-Cartセミナー東京 20151128](https://reader030.fdocument.pub/reader030/viewer/2022021503/5887939d1a28ab5b1a8b5781/html5/thumbnails/9.jpg)
1. アドオンの構造を理解しましょう。 2. アドオンのXMLを作成しましょう。 3. ルールに沿ったディレクトリ構造を作成しましょう。 4. 言語ファイルを用意しましょう。 ……
アドオン開発のTips
![Page 11: CS-Cartセミナー東京 20151128](https://reader030.fdocument.pub/reader030/viewer/2022021503/5887939d1a28ab5b1a8b5781/html5/thumbnails/11.jpg)
簡単に作れないの?
アドオンのベースを
![Page 12: CS-Cartセミナー東京 20151128](https://reader030.fdocument.pub/reader030/viewer/2022021503/5887939d1a28ab5b1a8b5781/html5/thumbnails/12.jpg)
作れます
![Page 14: CS-Cartセミナー東京 20151128](https://reader030.fdocument.pub/reader030/viewer/2022021503/5887939d1a28ab5b1a8b5781/html5/thumbnails/14.jpg)
Demoアドオンビルダーを使ってみよう
作成~インストール
![Page 15: CS-Cartセミナー東京 20151128](https://reader030.fdocument.pub/reader030/viewer/2022021503/5887939d1a28ab5b1a8b5781/html5/thumbnails/15.jpg)
知っておくべきアドオンの基本構造
![Page 16: CS-Cartセミナー東京 20151128](https://reader030.fdocument.pub/reader030/viewer/2022021503/5887939d1a28ab5b1a8b5781/html5/thumbnails/16.jpg)
/apps/addons/your_addonaddon.xml
func.php
init.php
アドオンの基本情報&設定項目
アドオンで使用する関数を書く
初期化用ファイル
アドオン独自のディレクトリには 他にも様々なファイルを置くことが出来ます。
![Page 17: CS-Cartセミナー東京 20151128](https://reader030.fdocument.pub/reader030/viewer/2022021503/5887939d1a28ab5b1a8b5781/html5/thumbnails/17.jpg)
addon.xmlで出来ること• アドオンの設定値の定義、保存
• デフォルト言語の設定
• アドオンのプライオリティの設定
• 他のアドオンと依存、排他関係の定義
• PHPの対応可能最小/最大バージョン
• PHPエクステンションの依存関係
• インストール/アンインストール時のDB作成や削除
• インストール/アンインストール時に実行する関数の指定…………
フルバージョンを見る
![Page 18: CS-Cartセミナー東京 20151128](https://reader030.fdocument.pub/reader030/viewer/2022021503/5887939d1a28ab5b1a8b5781/html5/thumbnails/18.jpg)
休憩
![Page 19: CS-Cartセミナー東京 20151128](https://reader030.fdocument.pub/reader030/viewer/2022021503/5887939d1a28ab5b1a8b5781/html5/thumbnails/19.jpg)
テンプレートフックTemplate Hook
コアのテンプレートに用意されている 「フックポイント」を利用するカスタマイズ方法
![Page 20: CS-Cartセミナー東京 20151128](https://reader030.fdocument.pub/reader030/viewer/2022021503/5887939d1a28ab5b1a8b5781/html5/thumbnails/20.jpg)
/design/themes/responsive/templates/index.tpl
テンプレートフック例
![Page 21: CS-Cartセミナー東京 20151128](https://reader030.fdocument.pub/reader030/viewer/2022021503/5887939d1a28ab5b1a8b5781/html5/thumbnails/21.jpg)
テンプレートの見つけ方
index.php ?dispatch=products.view
&product_id=180
URL例:商品詳細ページ
コントローラー名.モード名
![Page 22: CS-Cartセミナー東京 20151128](https://reader030.fdocument.pub/reader030/viewer/2022021503/5887939d1a28ab5b1a8b5781/html5/thumbnails/22.jpg)
先ほどのアドオンを利用して テンプレートフックを使ってみよう
![Page 23: CS-Cartセミナー東京 20151128](https://reader030.fdocument.pub/reader030/viewer/2022021503/5887939d1a28ab5b1a8b5781/html5/thumbnails/23.jpg)
hooksindex
XXXXXX
head_scripts.tpl[ディレクトリを作成]
{hook name="index:head_scripts"}{/hook}フックポイント
/design/themes/responsive/templates/addons/your_addon/
![Page 24: CS-Cartセミナー東京 20151128](https://reader030.fdocument.pub/reader030/viewer/2022021503/5887939d1a28ab5b1a8b5781/html5/thumbnails/24.jpg)
ファイルを作成したあとは
テンプレートキャッシュのクリア
![Page 25: CS-Cartセミナー東京 20151128](https://reader030.fdocument.pub/reader030/viewer/2022021503/5887939d1a28ab5b1a8b5781/html5/thumbnails/25.jpg)
フックポイントを探して 色々と試してみましょう
![Page 26: CS-Cartセミナー東京 20151128](https://reader030.fdocument.pub/reader030/viewer/2022021503/5887939d1a28ab5b1a8b5781/html5/thumbnails/26.jpg)
では、自分の求めるところに フックポイントがなかったら?
![Page 27: CS-Cartセミナー東京 20151128](https://reader030.fdocument.pub/reader030/viewer/2022021503/5887939d1a28ab5b1a8b5781/html5/thumbnails/27.jpg)
テンプレートオーバーライドTemplate Override
コアのテンプレートを直接改変せずに 自分の用意したファイルで
オーバーライド(上書き)するカスタマイズ方法
![Page 28: CS-Cartセミナー東京 20151128](https://reader030.fdocument.pub/reader030/viewer/2022021503/5887939d1a28ab5b1a8b5781/html5/thumbnails/28.jpg)
オーバーライドも先ほどの アドオンに設置します
![Page 29: CS-Cartセミナー東京 20151128](https://reader030.fdocument.pub/reader030/viewer/2022021503/5887939d1a28ab5b1a8b5781/html5/thumbnails/29.jpg)
overrides/design/themes/responsive/templates/addons/your_addon/
アドオンのテンプレートディレクトリに この名前のフォルダを作成します
![Page 30: CS-Cartセミナー東京 20151128](https://reader030.fdocument.pub/reader030/viewer/2022021503/5887939d1a28ab5b1a8b5781/html5/thumbnails/30.jpg)
overridesディレクトリを作成すると
コア
同じディレクトリ構造で置くだけ!
![Page 31: CS-Cartセミナー東京 20151128](https://reader030.fdocument.pub/reader030/viewer/2022021503/5887939d1a28ab5b1a8b5781/html5/thumbnails/31.jpg)
色々とオーバーライドしてみましょう
![Page 32: CS-Cartセミナー東京 20151128](https://reader030.fdocument.pub/reader030/viewer/2022021503/5887939d1a28ab5b1a8b5781/html5/thumbnails/32.jpg)
休憩
![Page 33: CS-Cartセミナー東京 20151128](https://reader030.fdocument.pub/reader030/viewer/2022021503/5887939d1a28ab5b1a8b5781/html5/thumbnails/33.jpg)
コントローラーcontroller
処理を書いてみましょう
![Page 34: CS-Cartセミナー東京 20151128](https://reader030.fdocument.pub/reader030/viewer/2022021503/5887939d1a28ab5b1a8b5781/html5/thumbnails/34.jpg)
処理のカスタマイズのアプローチ方法
1.既存のコントローラーを拡張する
2.独自のコントローラーを作成する
3.コアの関数を拡張する(PHP-HOOK)
![Page 35: CS-Cartセミナー東京 20151128](https://reader030.fdocument.pub/reader030/viewer/2022021503/5887939d1a28ab5b1a8b5781/html5/thumbnails/35.jpg)
Controllerも アドオンに書きます
![Page 36: CS-Cartセミナー東京 20151128](https://reader030.fdocument.pub/reader030/viewer/2022021503/5887939d1a28ab5b1a8b5781/html5/thumbnails/36.jpg)
データ処理
index.php ?dispatch=products.view
&product_id=180
URL例:商品詳細ページ
コントローラー名.モード名
![Page 37: CS-Cartセミナー東京 20151128](https://reader030.fdocument.pub/reader030/viewer/2022021503/5887939d1a28ab5b1a8b5781/html5/thumbnails/37.jpg)
/apps/addons/your_addonaddon.xml
func.php
init.php
controllers
frontend
backend
your_addon.php
your_addon.php
products.post.php
アドオンの基本情報&設定項目
アドオンで使用する関数&フック
フックポイントの宣言
[ショップフロント用]
[管理パネル用]
![Page 38: CS-Cartセミナー東京 20151128](https://reader030.fdocument.pub/reader030/viewer/2022021503/5887939d1a28ab5b1a8b5781/html5/thumbnails/38.jpg)
1.既存コントローラーの拡張Pre- / Post- コントローラーを作成することで拡張が可能。
例)カテゴリー(categories)コントローラーを拡張する場合dispatch=categories.view&category_id=168
categories.pre.php(コントローラー実行前)
categories.post.php(コントローラー実行後)
Pre/Postコントローラーの命名規則
コア
![Page 39: CS-Cartセミナー東京 20151128](https://reader030.fdocument.pub/reader030/viewer/2022021503/5887939d1a28ab5b1a8b5781/html5/thumbnails/39.jpg)
pre/post - controllerのデモ
![Page 40: CS-Cartセミナー東京 20151128](https://reader030.fdocument.pub/reader030/viewer/2022021503/5887939d1a28ab5b1a8b5781/html5/thumbnails/40.jpg)
2.独自コントローラーの作成
例)index.php?dispatch=frogman.company
frogman.php
!コア・コントローラー名と被らないように
![Page 41: CS-Cartセミナー東京 20151128](https://reader030.fdocument.pub/reader030/viewer/2022021503/5887939d1a28ab5b1a8b5781/html5/thumbnails/41.jpg)
1.既存コントローラーの拡張
Hands-on#1
![Page 42: CS-Cartセミナー東京 20151128](https://reader030.fdocument.pub/reader030/viewer/2022021503/5887939d1a28ab5b1a8b5781/html5/thumbnails/42.jpg)
”ショップフロントの categoriesコントローラーにdumpモードを追加する”
index.php?dispatch=categories.dumpURL
![Page 43: CS-Cartセミナー東京 20151128](https://reader030.fdocument.pub/reader030/viewer/2022021503/5887939d1a28ab5b1a8b5781/html5/thumbnails/43.jpg)
controllers
frontend
backend
categories.post.php[ショップフロント用]
[管理パネル用]
ファイルを作成
/app/controllers/frontend/categories.php
コアのcategories.phpが実行された後に
実行前の場合はcategories.pre.phpとする。 categories.phpとすると…
/apps/addons/your_addon
![Page 44: CS-Cartセミナー東京 20151128](https://reader030.fdocument.pub/reader030/viewer/2022021503/5887939d1a28ab5b1a8b5781/html5/thumbnails/44.jpg)
use Tygh\Registry; //インポート文 if (!defined('BOOTSTRAP')) { die('Access denied'); }
if ($mode == 'dump') //独自のモード { $root_categories = fn_get_subcategories(0); fn_print_r($root_categories); //print_r exit(); //処理を終了 //終了しない場合はVIEWを読み出す処理 }
categories.post.php
/design/themes/responsive/templates/addons/your_addon/views/categories/dump.tpl
![Page 45: CS-Cartセミナー東京 20151128](https://reader030.fdocument.pub/reader030/viewer/2022021503/5887939d1a28ab5b1a8b5781/html5/thumbnails/45.jpg)
2.独自コントローラーの作成
Hands-on#2
![Page 46: CS-Cartセミナー東京 20151128](https://reader030.fdocument.pub/reader030/viewer/2022021503/5887939d1a28ab5b1a8b5781/html5/thumbnails/46.jpg)
”ショップフロントに your_addonコントローラー
を新設する”
index.php?dispatch=your_addon.viewURL
![Page 47: CS-Cartセミナー東京 20151128](https://reader030.fdocument.pub/reader030/viewer/2022021503/5887939d1a28ab5b1a8b5781/html5/thumbnails/47.jpg)
controllers
frontend
backend
your_addon.php[ショップフロント用]
[管理パネル用]
ファイルを作成
/apps/addons/your_addon
![Page 48: CS-Cartセミナー東京 20151128](https://reader030.fdocument.pub/reader030/viewer/2022021503/5887939d1a28ab5b1a8b5781/html5/thumbnails/48.jpg)
use Tygh\Registry; //インポート文 if (!defined('BOOTSTRAP')) { die('Access denied'); }
if ($mode == 'view') //モード { $root_categories = fn_get_subcategories(0); fn_print_r($root_categories); //print_r exit(); //処理を終了 //終了しない場合はVIEWを読み出す処理 }
your_addon.php
/design/themes/responsive/templates/addons/your_addon/views/your_addon/view.tpl
![Page 49: CS-Cartセミナー東京 20151128](https://reader030.fdocument.pub/reader030/viewer/2022021503/5887939d1a28ab5b1a8b5781/html5/thumbnails/49.jpg)
3.コアの関数を拡張するPHP-HOOK
Hands-on#3
![Page 50: CS-Cartセミナー東京 20151128](https://reader030.fdocument.pub/reader030/viewer/2022021503/5887939d1a28ab5b1a8b5781/html5/thumbnails/50.jpg)
コアのコントローラー /app/functions
fn.cart.php
fn.catalog.phpfn.promotions.phpfn.users.php
fn.search.php fn.cms.phpfn.database.php
コア・コントローラーの実行時、常に特定の処理を行いたい
![Page 51: CS-Cartセミナー東京 20151128](https://reader030.fdocument.pub/reader030/viewer/2022021503/5887939d1a28ab5b1a8b5781/html5/thumbnails/51.jpg)
function fn_get_cart_product_data($hash, ……){ ……… fn_set_hook('get_cart_product_data_pre', $hash, $product, $skip_promotion, $cart, $auth, $promotion_amount); ……… }
/app/functions/fn.cart.php
get_cart_product_data_preというフックポイント
引数は… $hash, $product, $skip_promotion, $cart, $auth, $promotion_amount
[コアを読む]
![Page 52: CS-Cartセミナー東京 20151128](https://reader030.fdocument.pub/reader030/viewer/2022021503/5887939d1a28ab5b1a8b5781/html5/thumbnails/52.jpg)
Step#1フックポイントの利用を宣言する
![Page 53: CS-Cartセミナー東京 20151128](https://reader030.fdocument.pub/reader030/viewer/2022021503/5887939d1a28ab5b1a8b5781/html5/thumbnails/53.jpg)
fn_register_hooks( ‘get_cart_product_data_pre’, //1 ‘get_cart_product_data_post_options’ //2 );
/app/addons/your_addon/init.php
HOOKポイント名を登録する
![Page 54: CS-Cartセミナー東京 20151128](https://reader030.fdocument.pub/reader030/viewer/2022021503/5887939d1a28ab5b1a8b5781/html5/thumbnails/54.jpg)
Step#2init.phpで定義した
フックポイントで動作する関数を作成する
![Page 55: CS-Cartセミナー東京 20151128](https://reader030.fdocument.pub/reader030/viewer/2022021503/5887939d1a28ab5b1a8b5781/html5/thumbnails/55.jpg)
function fn_your_addon_get_cart_product_data_pre( $hash, $product, $skip_promotion, $cart, $auth, $promotion_amount
)
/app/addons/your_addon/func.php
引数はHOOKポイントを参照する
fn_[アドオンID]_[フックポイント名](引数){……}
PHPフックポイントの命名規則
![Page 56: CS-Cartセミナー東京 20151128](https://reader030.fdocument.pub/reader030/viewer/2022021503/5887939d1a28ab5b1a8b5781/html5/thumbnails/56.jpg)
PHP-HOOKの利用例
独自で作成したテーブルのフィールドも検索対象としたい。
アドオンで作成した(商品と紐付いた)値も合わせて取得したい/更新したい
![Page 57: CS-Cartセミナー東京 20151128](https://reader030.fdocument.pub/reader030/viewer/2022021503/5887939d1a28ab5b1a8b5781/html5/thumbnails/57.jpg)
まとめ
![Page 58: CS-Cartセミナー東京 20151128](https://reader030.fdocument.pub/reader030/viewer/2022021503/5887939d1a28ab5b1a8b5781/html5/thumbnails/58.jpg)
• カスタマイズのスタートは「アドオン」から
• 全体の構造をおおまかに理解する(コアの構造と同じ構造をアドオンで組み立てる)
• CS-Cartをフレームワークとして向き合う。かなりの部分は命名規則とディレクトリ構造の理解で充分
![Page 59: CS-Cartセミナー東京 20151128](https://reader030.fdocument.pub/reader030/viewer/2022021503/5887939d1a28ab5b1a8b5781/html5/thumbnails/59.jpg)
ご静聴ありがとうございました