SlideShare uma empresa Scribd logo
1 de 43
Baixar para ler offline
PHP CS-Cart
PHPでCS-Cartの機能をカスタマイズ
2015-06-28
Profile
• 吉浦寿洋(有限会社フロッグマンオフィス)
• WordpressカスタマイズレベルのPHPスキル
• Codeigniterを少々
• 昨日のPHPカンファレンスの内容は難しすぎました汗
• CS-Cartカスタマイズ(アドオン)歴は約1年程
基本構造:MVC
• MODEL・・・MySQL接続の基礎的な機能
• VIEW・・・Smarty
• CONTROLLER・・・PHP
CS-Cartはカスタマイズを前提とした
フレームワーク的な側面を持っています。
データ処理の流れ
index.php
?dispatch=products.view
&product_id=180
URL例:商品詳細ページ
コントローラー名.モード名
カスタマイズのアプローチ方法
1.既存のコントローラーを拡張する
2.独自のコントローラーを作成する
3.コアの関数を拡張する(PHP-HOOK)
テンプレートのカスタマイズ除く
1.既存コントローラーの拡張
Pre- / Post- コントローラーを作成することで拡張が可能。
例)カテゴリー(categories)コントローラーを拡張する場合

dispatch=categories.view&category_id=168
categories.pre.php(コントローラー実行前)

categories.post.php(コントローラー実行後)
コントローラー・ファイル名命名規則
コア
2.独自コントローラーの作成
例)index.php?dispatch=frogman.company
frogman.php
!コア・コントローラー名と被らないように
PHP-HOOKは後述します
どこに書く?
アドオンに書きます
アドオンとは?
CS-Cartのカスタマイズの基盤となる仕組み
=WordpressやEC-Cubeのプラグイン
標準のアドオン
ポイント
ほしいものリスト
Google Analytics
セット販売 返品管理
SNSログイン年齢認証
CS-Cartの様々な機能はアドオンでも提供されています。
サードパーティー製のアドオン
タブ拡張
フロントエンドエディター
ブログ Facebook Store
スライダー
FAQ
約400以上のアドオンが販売中

CS-Cart Marketplace
チュートリアル
http://docs.cs-cart.jp/
さっそくアドオンを書いてみましょう!
1. アドオンの構造を理解しましょう。
2. ルールに沿ったディレクトリ構造を作成しましょう。
3. アドオンのXMLを作成しましょう。
4. 言語ファイルを用意しましょう。
…………(学習することが最初は沢山ある??)
アドオン開発のTips
簡単に作れないの?
アドオンの
ベースを
作れます
CS-Cart Add-on Builder
cs-cart.ie 

Ireland
Demo
アドオンの作成∼インストール
コントローラー
テンプレートファイル
スキーマー
外部ライブラリー
アドオンを作成することで

コアから切り離された独自のスペースを

作る事が出来ます
知っておくべき

アドオンの基本構造
/apps/addons/your_addon
addon.xml
func.php
init.php
controllers
frontend
backend
your_addon.php
your_addon.php
products.post.php
アドオンの基本情報&設定項目
アドオンで使用する関数&フック
フックポイントの宣言
[ショップフロント用]
[管理パネル用]
addon.xmlで出来ること
• アドオンの設定値の定義、保存
• デフォルト言語の設定
• アドオンのプライオリティの設定
• 他のアドオンと依存、排他関係の定義
• PHPの対応可能最小/最大バージョン
• PHPエクステンションの依存関係
• インストール/アンインストール時のDB作成や削除
• インストール/アンインストール時に実行する関数の指定

…………
1.既存コントローラーの拡張
Hands-on#1
ショップフロントの
categoriesコントローラーに

dumpモードを追加する
index.php?dispatch=categories.dump
URL
controllers
frontend
backend
categories.post.php
[ショップフロント用]
[管理パネル用]
ファイルを作成
/app/controllers/frontend/categories.php
コアのcategories.phpが実行された後に
実行前の場合はcategories.pre.phpとする。
categories.phpとすると…
/apps/addons/your_addon
use TyghRegistry; //インポート文
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
2.独自コントローラーの作成
Hands-on#2
ショップフロントに
your_addonコントローラー

を新設する
index.php?dispatch=your_addon.view
URL
controllers
frontend
backend
your_addon.php
[ショップフロント用]
[管理パネル用]
ファイルを作成
/apps/addons/your_addon
use TyghRegistry; //インポート文
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
3.コアの関数を拡張する

PHP-HOOK
Hands-on#3
コアのコントローラー
/app/functions
fn.cart.php
fn.catalog.php
fn.promotions.phpfn.users.php
fn.search.php
fn.cms.php
fn.database.php
コア・コントローラーの実行時、常に特定の処理を行いたい
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
[コアを読む]
Step#1
フックポイントの利用を宣言する
fn_register_hooks(
get_cart_product_data_pre , //1

get_cart_product_data_post_options //2
);
/app/addons/your_addon/init.php
HOOKポイント名を登録する
Step#2
init.phpで定義した

フックポイントで動作する関数を作成する
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フックポイントの命名規則
PHP-HOOKの利用例
独自で作成したテーブルのフィールドも

検索対象としたい。
アドオンで作成した(商品と紐付いた)値も

合わせて取得したい/更新したい
まとめ
• カスタマイズのスタートは「アドオン」から
• 全体の構造をおおまかに理解する

(コアの構造と同じ構造をアドオンで組み立てる)
• CS-Cartをフレームワークとして向き合う。

かなりの部分は命名規則とディレクトリ構造の理解で充分
ご静聴ありがとうございました

Mais conteúdo relacionado

Mais procurados

御池サミット20130726
御池サミット20130726御池サミット20130726
御池サミット20130726Takeshiro Kani
 
Facebook対応と大規模サイト移転のトライ&エラー
Facebook対応と大規模サイト移転のトライ&エラーFacebook対応と大規模サイト移転のトライ&エラー
Facebook対応と大規模サイト移転のトライ&エラーGaryuten
 
a-blogcsm な寺子屋 2 in Okazaki
a-blogcsm な寺子屋 2 in Okazakia-blogcsm な寺子屋 2 in Okazaki
a-blogcsm な寺子屋 2 in OkazakiEtsushi Ishii
 
Advanced Custom Fields が重すぎると感じるあなたへ
Advanced Custom Fields が重すぎると感じるあなたへ Advanced Custom Fields が重すぎると感じるあなたへ
Advanced Custom Fields が重すぎると感じるあなたへ タカシ キタジマ
 
Htmlコーディングの効率化 前編
Htmlコーディングの効率化 前編Htmlコーディングの効率化 前編
Htmlコーディングの効率化 前編Yasuhito Yabe
 
WordPressで作るポートフォリオサイト
WordPressで作るポートフォリオサイトWordPressで作るポートフォリオサイト
WordPressで作るポートフォリオサイトTakuma Nishiyama
 
a-blog cmsのインポート機能を使いこなす
a-blog cmsのインポート機能を使いこなすa-blog cmsのインポート機能を使いこなす
a-blog cmsのインポート機能を使いこなすSeiko Kuchida
 
モダンすぎる静的サイトの作り方
モダンすぎる静的サイトの作り方モダンすぎる静的サイトの作り方
モダンすぎる静的サイトの作り方Yuya Matsushima
 
20130225 pronet study
20130225 pronet study20130225 pronet study
20130225 pronet studySix Apart
 
a-blog cms 勉強会 in 札幌 x SaCSS 2016 投稿画面を改良してみよう
a-blog cms 勉強会 in 札幌 x SaCSS 2016 投稿画面を改良してみようa-blog cms 勉強会 in 札幌 x SaCSS 2016 投稿画面を改良してみよう
a-blog cms 勉強会 in 札幌 x SaCSS 2016 投稿画面を改良してみようSeiko Kuchida
 
パララックス効果を使ったWordPressサイト
パララックス効果を使ったWordPressサイトパララックス効果を使ったWordPressサイト
パララックス効果を使ったWordPressサイトTakuma Nishiyama
 
WordPress初心者からの脱出! カスタムなんとかをちゃんと理解する
WordPress初心者からの脱出! カスタムなんとかをちゃんと理解するWordPress初心者からの脱出! カスタムなんとかをちゃんと理解する
WordPress初心者からの脱出! カスタムなんとかをちゃんと理解するTakashi Uemura
 
コードをさわらずにビジネスサイトを作ろう!
コードをさわらずにビジネスサイトを作ろう!コードをさわらずにビジネスサイトを作ろう!
コードをさわらずにビジネスサイトを作ろう!FLOW web planning & design
 
WordPress, concrete5, Drupal
WordPress, concrete5, DrupalWordPress, concrete5, Drupal
WordPress, concrete5, DrupalFumito Mizuno
 
HTML/CSSを効率的にする メタ言語とツールのアレコレ
HTML/CSSを効率的にする メタ言語とツールのアレコレHTML/CSSを効率的にする メタ言語とツールのアレコレ
HTML/CSSを効率的にする メタ言語とツールのアレコレ知己 久保
 
04 sending multipart_emails_using_template_handlers
04 sending multipart_emails_using_template_handlers04 sending multipart_emails_using_template_handlers
04 sending multipart_emails_using_template_handlersKazuyuki Ikeda
 
Htmlコーディングの効率化 後編
Htmlコーディングの効率化 後編Htmlコーディングの効率化 後編
Htmlコーディングの効率化 後編Yasuhito Yabe
 
Mtcafe tokyo 2013_spring_okuwaki
Mtcafe tokyo 2013_spring_okuwakiMtcafe tokyo 2013_spring_okuwaki
Mtcafe tokyo 2013_spring_okuwakiTomohiro Okuwaki
 
Galage labsサーバー部6U自己紹介
Galage labsサーバー部6U自己紹介Galage labsサーバー部6U自己紹介
Galage labsサーバー部6U自己紹介Seiko Kuchida
 

Mais procurados (20)

御池サミット20130726
御池サミット20130726御池サミット20130726
御池サミット20130726
 
Facebook対応と大規模サイト移転のトライ&エラー
Facebook対応と大規模サイト移転のトライ&エラーFacebook対応と大規模サイト移転のトライ&エラー
Facebook対応と大規模サイト移転のトライ&エラー
 
a-blogcsm な寺子屋 2 in Okazaki
a-blogcsm な寺子屋 2 in Okazakia-blogcsm な寺子屋 2 in Okazaki
a-blogcsm な寺子屋 2 in Okazaki
 
tansuの紹介
tansuの紹介tansuの紹介
tansuの紹介
 
Advanced Custom Fields が重すぎると感じるあなたへ
Advanced Custom Fields が重すぎると感じるあなたへ Advanced Custom Fields が重すぎると感じるあなたへ
Advanced Custom Fields が重すぎると感じるあなたへ
 
Htmlコーディングの効率化 前編
Htmlコーディングの効率化 前編Htmlコーディングの効率化 前編
Htmlコーディングの効率化 前編
 
WordPressで作るポートフォリオサイト
WordPressで作るポートフォリオサイトWordPressで作るポートフォリオサイト
WordPressで作るポートフォリオサイト
 
a-blog cmsのインポート機能を使いこなす
a-blog cmsのインポート機能を使いこなすa-blog cmsのインポート機能を使いこなす
a-blog cmsのインポート機能を使いこなす
 
モダンすぎる静的サイトの作り方
モダンすぎる静的サイトの作り方モダンすぎる静的サイトの作り方
モダンすぎる静的サイトの作り方
 
20130225 pronet study
20130225 pronet study20130225 pronet study
20130225 pronet study
 
a-blog cms 勉強会 in 札幌 x SaCSS 2016 投稿画面を改良してみよう
a-blog cms 勉強会 in 札幌 x SaCSS 2016 投稿画面を改良してみようa-blog cms 勉強会 in 札幌 x SaCSS 2016 投稿画面を改良してみよう
a-blog cms 勉強会 in 札幌 x SaCSS 2016 投稿画面を改良してみよう
 
パララックス効果を使ったWordPressサイト
パララックス効果を使ったWordPressサイトパララックス効果を使ったWordPressサイト
パララックス効果を使ったWordPressサイト
 
WordPress初心者からの脱出! カスタムなんとかをちゃんと理解する
WordPress初心者からの脱出! カスタムなんとかをちゃんと理解するWordPress初心者からの脱出! カスタムなんとかをちゃんと理解する
WordPress初心者からの脱出! カスタムなんとかをちゃんと理解する
 
コードをさわらずにビジネスサイトを作ろう!
コードをさわらずにビジネスサイトを作ろう!コードをさわらずにビジネスサイトを作ろう!
コードをさわらずにビジネスサイトを作ろう!
 
WordPress, concrete5, Drupal
WordPress, concrete5, DrupalWordPress, concrete5, Drupal
WordPress, concrete5, Drupal
 
HTML/CSSを効率的にする メタ言語とツールのアレコレ
HTML/CSSを効率的にする メタ言語とツールのアレコレHTML/CSSを効率的にする メタ言語とツールのアレコレ
HTML/CSSを効率的にする メタ言語とツールのアレコレ
 
04 sending multipart_emails_using_template_handlers
04 sending multipart_emails_using_template_handlers04 sending multipart_emails_using_template_handlers
04 sending multipart_emails_using_template_handlers
 
Htmlコーディングの効率化 後編
Htmlコーディングの効率化 後編Htmlコーディングの効率化 後編
Htmlコーディングの効率化 後編
 
Mtcafe tokyo 2013_spring_okuwaki
Mtcafe tokyo 2013_spring_okuwakiMtcafe tokyo 2013_spring_okuwaki
Mtcafe tokyo 2013_spring_okuwaki
 
Galage labsサーバー部6U自己紹介
Galage labsサーバー部6U自己紹介Galage labsサーバー部6U自己紹介
Galage labsサーバー部6U自己紹介
 

Semelhante a CS-Cart デベロッパーミーティング 2015-06-28

20120821 pronet study
20120821 pronet study20120821 pronet study
20120821 pronet studySix Apart
 
PHPとフロントのイイ関係・動くスタイルガイドをつくろう
PHPとフロントのイイ関係・動くスタイルガイドをつくろうPHPとフロントのイイ関係・動くスタイルガイドをつくろう
PHPとフロントのイイ関係・動くスタイルガイドをつくろうYusuke Kawabata
 
20141206 handson
20141206 handson20141206 handson
20141206 handsonSix Apart
 
20140926 mt cloud_handson_seminar
20140926 mt cloud_handson_seminar20140926 mt cloud_handson_seminar
20140926 mt cloud_handson_seminarSix Apart
 
WP-CLIとWordPress公式ディレクトリを活用した爆速サイト構築術 ーインストールからデザイン、ページ作成までを10分でー
WP-CLIとWordPress公式ディレクトリを活用した爆速サイト構築術 ーインストールからデザイン、ページ作成までを10分でーWP-CLIとWordPress公式ディレクトリを活用した爆速サイト構築術 ーインストールからデザイン、ページ作成までを10分でー
WP-CLIとWordPress公式ディレクトリを活用した爆速サイト構築術 ーインストールからデザイン、ページ作成までを10分でータカシ キタジマ
 
PHP 開発環境構築 - Windows 編 -
PHP 開発環境構築- Windows 編 -PHP 開発環境構築- Windows 編 -
PHP 開発環境構築 - Windows 編 -Masaki Takeda
 
WordPressでの制作説明
WordPressでの制作説明WordPressでの制作説明
WordPressでの制作説明Toshiaki Endo
 
検索エンジンを有効利用するWEBサイト構築
検索エンジンを有効利用するWEBサイト構築検索エンジンを有効利用するWEBサイト構築
検索エンジンを有効利用するWEBサイト構築sato165 @delab
 
2012 05-19第44回cocoa勉強会発表資料
2012 05-19第44回cocoa勉強会発表資料2012 05-19第44回cocoa勉強会発表資料
2012 05-19第44回cocoa勉強会発表資料OCHI Shuji
 
Concentrated HTML5 & Attractive HTML5
Concentrated HTML5 & Attractive HTML5Concentrated HTML5 & Attractive HTML5
Concentrated HTML5 & Attractive HTML5Sho Ito
 
SharePoint 2010 を使ったクラウドアプリ開発
SharePoint 2010 を使ったクラウドアプリ開発SharePoint 2010 を使ったクラウドアプリ開発
SharePoint 2010 を使ったクラウドアプリ開発Tusyoshi Matsuzaki
 
Long Life Web Performance Optimization
Long Life Web Performance OptimizationLong Life Web Performance Optimization
Long Life Web Performance OptimizationKoji Ishimoto
 
20141119 Movable Type HandsOn Seminar
20141119 Movable Type HandsOn Seminar20141119 Movable Type HandsOn Seminar
20141119 Movable Type HandsOn SeminarSix Apart
 
目指せ1秒切り!ECサイト表示高速化のワザ
目指せ1秒切り!ECサイト表示高速化のワザ目指せ1秒切り!ECサイト表示高速化のワザ
目指せ1秒切り!ECサイト表示高速化のワザKohei MATSUSHITA
 
php-timecopを実戦投入してみた
php-timecopを実戦投入してみたphp-timecopを実戦投入してみた
php-timecopを実戦投入してみたYoshio Hanawa
 
WTM53 phpフレームワーク いまさらcodeigniter
WTM53 phpフレームワーク いまさらcodeigniterWTM53 phpフレームワーク いまさらcodeigniter
WTM53 phpフレームワーク いまさらcodeigniterMasanori Oobayashi
 
Elixir入門「第3回:Phoenix 1.2で高速Webアプリ & REST APIをサクッと書いてみる」【旧版】※新版あります
Elixir入門「第3回:Phoenix 1.2で高速Webアプリ & REST APIをサクッと書いてみる」【旧版】※新版ありますElixir入門「第3回:Phoenix 1.2で高速Webアプリ & REST APIをサクッと書いてみる」【旧版】※新版あります
Elixir入門「第3回:Phoenix 1.2で高速Webアプリ & REST APIをサクッと書いてみる」【旧版】※新版ありますfukuoka.ex
 

Semelhante a CS-Cart デベロッパーミーティング 2015-06-28 (20)

20120821 pronet study
20120821 pronet study20120821 pronet study
20120821 pronet study
 
PHPとフロントのイイ関係・動くスタイルガイドをつくろう
PHPとフロントのイイ関係・動くスタイルガイドをつくろうPHPとフロントのイイ関係・動くスタイルガイドをつくろう
PHPとフロントのイイ関係・動くスタイルガイドをつくろう
 
20141206 handson
20141206 handson20141206 handson
20141206 handson
 
20140926 mt cloud_handson_seminar
20140926 mt cloud_handson_seminar20140926 mt cloud_handson_seminar
20140926 mt cloud_handson_seminar
 
WP-CLIとWordPress公式ディレクトリを活用した爆速サイト構築術 ーインストールからデザイン、ページ作成までを10分でー
WP-CLIとWordPress公式ディレクトリを活用した爆速サイト構築術 ーインストールからデザイン、ページ作成までを10分でーWP-CLIとWordPress公式ディレクトリを活用した爆速サイト構築術 ーインストールからデザイン、ページ作成までを10分でー
WP-CLIとWordPress公式ディレクトリを活用した爆速サイト構築術 ーインストールからデザイン、ページ作成までを10分でー
 
PHP 開発環境構築 - Windows 編 -
PHP 開発環境構築- Windows 編 -PHP 開発環境構築- Windows 編 -
PHP 開発環境構築 - Windows 編 -
 
ASP.NET Core 概要(2017年3月時点)
ASP.NET Core 概要(2017年3月時点)ASP.NET Core 概要(2017年3月時点)
ASP.NET Core 概要(2017年3月時点)
 
BPStudy20121221
BPStudy20121221BPStudy20121221
BPStudy20121221
 
WordPressでの制作説明
WordPressでの制作説明WordPressでの制作説明
WordPressでの制作説明
 
検索エンジンを有効利用するWEBサイト構築
検索エンジンを有効利用するWEBサイト構築検索エンジンを有効利用するWEBサイト構築
検索エンジンを有効利用するWEBサイト構築
 
20090606
2009060620090606
20090606
 
2012 05-19第44回cocoa勉強会発表資料
2012 05-19第44回cocoa勉強会発表資料2012 05-19第44回cocoa勉強会発表資料
2012 05-19第44回cocoa勉強会発表資料
 
Concentrated HTML5 & Attractive HTML5
Concentrated HTML5 & Attractive HTML5Concentrated HTML5 & Attractive HTML5
Concentrated HTML5 & Attractive HTML5
 
SharePoint 2010 を使ったクラウドアプリ開発
SharePoint 2010 を使ったクラウドアプリ開発SharePoint 2010 を使ったクラウドアプリ開発
SharePoint 2010 を使ったクラウドアプリ開発
 
Long Life Web Performance Optimization
Long Life Web Performance OptimizationLong Life Web Performance Optimization
Long Life Web Performance Optimization
 
20141119 Movable Type HandsOn Seminar
20141119 Movable Type HandsOn Seminar20141119 Movable Type HandsOn Seminar
20141119 Movable Type HandsOn Seminar
 
目指せ1秒切り!ECサイト表示高速化のワザ
目指せ1秒切り!ECサイト表示高速化のワザ目指せ1秒切り!ECサイト表示高速化のワザ
目指せ1秒切り!ECサイト表示高速化のワザ
 
php-timecopを実戦投入してみた
php-timecopを実戦投入してみたphp-timecopを実戦投入してみた
php-timecopを実戦投入してみた
 
WTM53 phpフレームワーク いまさらcodeigniter
WTM53 phpフレームワーク いまさらcodeigniterWTM53 phpフレームワーク いまさらcodeigniter
WTM53 phpフレームワーク いまさらcodeigniter
 
Elixir入門「第3回:Phoenix 1.2で高速Webアプリ & REST APIをサクッと書いてみる」【旧版】※新版あります
Elixir入門「第3回:Phoenix 1.2で高速Webアプリ & REST APIをサクッと書いてみる」【旧版】※新版ありますElixir入門「第3回:Phoenix 1.2で高速Webアプリ & REST APIをサクッと書いてみる」【旧版】※新版あります
Elixir入門「第3回:Phoenix 1.2で高速Webアプリ & REST APIをサクッと書いてみる」【旧版】※新版あります
 

CS-Cart デベロッパーミーティング 2015-06-28