Top Banner
1 EC-CUBE Plugin
57

20120824_ハンズオンセミナー資料_第1部

Nov 29, 2014

Download

News & Politics

 
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: 20120824_ハンズオンセミナー資料_第1部

1

EC-CUBE Plugin

Page 2: 20120824_ハンズオンセミナー資料_第1部

Copyright c LOCKON CO.,LTD. All Rights Reserved. 2 2

自己紹介

吉本 啓顕 勤務先

株式会社ロックオン

主な仕事

プロモーション ・ 開発 ・ 運用・サポート

Page 3: 20120824_ハンズオンセミナー資料_第1部

Copyright c LOCKON CO.,LTD. All Rights Reserved. 3 3

今回のセミナーテーマ

Page 4: 20120824_ハンズオンセミナー資料_第1部

Copyright c LOCKON CO.,LTD. All Rights Reserved. 4 4

Agenda

Page 5: 20120824_ハンズオンセミナー資料_第1部

Copyright c LOCKON CO.,LTD. All Rights Reserved. 5 5

Agenda

Page 6: 20120824_ハンズオンセミナー資料_第1部

6

EC-CUBEとは?

新コンセプト EC Open Platform

Page 7: 20120824_ハンズオンセミナー資料_第1部

Copyright c LOCKON CO.,LTD. All Rights Reserved. 7 7

プラグインで出来る事

・EC-CUBEの本体処理に介入する。

・テンプレートに変更を加える。

Page 8: 20120824_ハンズオンセミナー資料_第1部

Copyright c LOCKON CO.,LTD. All Rights Reserved. 8 8

Agenda

Page 9: 20120824_ハンズオンセミナー資料_第1部

Copyright c LOCKON CO.,LTD. All Rights Reserved. 9 9

プラグインで出来る事

・EC-CUBEの本体処理に介入する。

・テンプレートに変更を加える。

Page 10: 20120824_ハンズオンセミナー資料_第1部

Copyright c LOCKON CO.,LTD. All Rights Reserved. 10 10

本体処理に介入

・フォームからのPOST値を変更する。

・別のページに遷移させる。

・全く別の処理を実行する。

Page 11: 20120824_ハンズオンセミナー資料_第1部

Copyright c LOCKON CO.,LTD. All Rights Reserved. 11 11

本体処理に介入

・フォームからのPOST値を変更する。

REQUEST{

‘mode’ = car t,

‘product_id’ = 1

‘quantity’ = 1

‘price’ = 100

}

REQUEST{

‘mode’ = car t,

‘product_id’ = 1

‘quantity’ = 1

‘price’ = 0

}

Page 12: 20120824_ハンズオンセミナー資料_第1部

Copyright c LOCKON CO.,LTD. All Rights Reserved. 12 12

本体処理に介入

・別のページに遷移させる カート

配送方法選択

支払方法選択

確認

購入完了

見積り入力

Page 13: 20120824_ハンズオンセミナー資料_第1部

Copyright c LOCKON CO.,LTD. All Rights Reserved. 13 13

本体処理に介入

・全く別の処理を実行する。 初期化

商品の価格計算

配送料計算

消費税の計算 新消費税の計算

合計の計算

Page 14: 20120824_ハンズオンセミナー資料_第1部

Copyright c LOCKON CO.,LTD. All Rights Reserved. 14 14

本体処理に介入

本体処理A

本体処理B

本体処理C

プラグイン処理

Page 15: 20120824_ハンズオンセミナー資料_第1部

Copyright c LOCKON CO.,LTD. All Rights Reserved. 15 15

プラグインで出来る事

controller

model view

request response

Pageクラス

SCクラス Viewクラス

Smarty

Page 16: 20120824_ハンズオンセミナー資料_第1部

Copyright c LOCKON CO.,LTD. All Rights Reserved. 16 16

プラグインで出来る事

なんでも出来る。

Page 17: 20120824_ハンズオンセミナー資料_第1部

Copyright c LOCKON CO.,LTD. All Rights Reserved. 17 17

プラグインで出来る事

・EC-CUBEの本体処理に介入する。

・テンプレートに変更を加える。

Page 18: 20120824_ハンズオンセミナー資料_第1部

Copyright c LOCKON CO.,LTD. All Rights Reserved. 18 18

テンプレートに変更を加える

・ボタンを追加する。

・フォームを追加する。

・テーブルを消す。

Page 19: 20120824_ハンズオンセミナー資料_第1部

Copyright c LOCKON CO.,LTD. All Rights Reserved. 19 19

Agenda

Page 20: 20120824_ハンズオンセミナー資料_第1部

Copyright c LOCKON CO.,LTD. All Rights Reserved. 20 20

プラグインの作り方

カテゴリ・コンテンツ。

Page 21: 20120824_ハンズオンセミナー資料_第1部

Copyright c LOCKON CO.,LTD. All Rights Reserved. 21 21

カテゴリコンテンツ

①商品カテゴリー毎にデータを持たせる。

②該当のカテゴリが選択・表示される際に

データを持ってきて画面に表示する。

Page 22: 20120824_ハンズオンセミナー資料_第1部

Copyright c LOCKON CO.,LTD. All Rights Reserved. 22 22

カテゴリコンテンツ

demonstration

Page 23: 20120824_ハンズオンセミナー資料_第1部

Copyright c LOCKON CO.,LTD. All Rights Reserved. 23 23

プラグインの作り方

CategoryContents.php (プラグインメインクラス) [必須]

CategoryContents.tar.gz

plugin_info.php (プラグイン情報) [必須]

plugin_update.php (アップデートクラス)

logo.png (縦65x横65ピクセル)

categorycontents_products_list_add.tpl

categorycontents_admin_basis_category_add.tpl

用意するファイル

Page 24: 20120824_ハンズオンセミナー資料_第1部

Copyright c LOCKON CO.,LTD. All Rights Reserved. 24 24

プラグインの作り方

①商品カテゴリー毎にデータを持たせる。

②該当のカテゴリが選択・表示される際に

データを持ってきて画面に表示する。

Page 25: 20120824_ハンズオンセミナー資料_第1部

Copyright c LOCKON CO.,LTD. All Rights Reserved. 25 25

plugin

SC_Helper_Plugin(エンジンクラス)

本体処理に介入する流れ

controller

LC_Page_Products_List

view

Viewクラス

CategoryContents

LC_Page_Products_List_action_after

dtb_plugin

Page 26: 20120824_ハンズオンセミナー資料_第1部

Copyright c LOCKON CO.,LTD. All Rights Reserved. 26 26

プラグインの作り方

CategoryContents.php (プラグインメインクラス) [必須]

CategoryContents.tar.gz

plugin_info.php (プラグイン情報) [必須]

plugin_update.php (アップデートクラス)

config.php (設定クラス)

logo.png (縦65x横65ピクセル)

categorycontents_products_list_add.tpl

categorycontents_admin_basis_category_add.tpl

用意するファイル

Page 27: 20120824_ハンズオンセミナー資料_第1部

Copyright c LOCKON CO.,LTD. All Rights Reserved. 27 27

プラグインメインクラス

CategoryContents.php (プラグインメインクラス)

Page 28: 20120824_ハンズオンセミナー資料_第1部

Copyright c LOCKON CO.,LTD. All Rights Reserved. 28 28

プラグインメインクラス

CategoryContents.php (プラグインメインクラス)

フックポイント通過時 に実行する

コールバック関数

Page 29: 20120824_ハンズオンセミナー資料_第1部

Copyright c LOCKON CO.,LTD. All Rights Reserved. 29 29

プラグインメインクラス

function disp_contents($objPage) {

// 選択されたカテゴリーID

$category_id = $objPage->arrSearchData['category_id'];

if(!empty($category_id)){

$array_category = CategoryContents::getCategoryByCategoryId($category_id);

$objPage->plg_categoryContents_category_contents

= $array_category['plg_categorycontents_category_contents'];

}

}

CategoryContents.php(プラグインメインクラス)

Page 30: 20120824_ハンズオンセミナー資料_第1部

Copyright c LOCKON CO.,LTD. All Rights Reserved. 30 30

プラグインメインクラス

function disp_contents($objPage) {

// 選択されたカテゴリーID

$category_id = $objPage->arrSearchData['category_id'];

if(!empty($category_id)){

$array_category = CategoryContents::getCategoryByCategoryId($category_id);

$objPage->plg_categoryContents_category_contents

= $array_category['plg_categorycontents_category_contents'];

}

}

CategoryContents.php(プラグインメインクラス)

カテゴリーのIDをキーに 登録されたコンテンツを取得する

Page 31: 20120824_ハンズオンセミナー資料_第1部

Copyright c LOCKON CO.,LTD. All Rights Reserved. 31 31

プラグインメインクラス

function disp_contents($objPage) {

// 選択されたカテゴリーID

$category_id = $objPage->arrSearchData['category_id'];

if(!empty($category_id)){

$array_category = CategoryContents::getCategoryByCategoryId($category_id);

$objPage->plg_categoryContents_category_contents

= $array_category['plg_categorycontents_category_contents'];

}

}

CategoryContents.php(プラグインメインクラス)

フックしたページクラスのインスタンス

Page 32: 20120824_ハンズオンセミナー資料_第1部

Copyright c LOCKON CO.,LTD. All Rights Reserved. 32 32

用意するファイル

CategoryContents.php (プラグインメインクラス) [必須]

CategoryContents.tar.gz

plugin_info.php (プラグイン情報) [必須]

plugin_update.php (アップデートクラス)

config.php (設定クラス)

logo.png (縦65x横65ピクセル)

categorycontents_products_list_add.tpl

categorycontents_admin_basis_category_add.tpl

Page 33: 20120824_ハンズオンセミナー資料_第1部

Copyright c LOCKON CO.,LTD. All Rights Reserved. 33 33

プラグイン情報

plugin_info.php (プラグイン情報)

Page 34: 20120824_ハンズオンセミナー資料_第1部

Copyright c LOCKON CO.,LTD. All Rights Reserved. 34 34

プラグイン情報

plugin_info.php (プラグイン情報)

フックポイント と

コールバック関数を定義

Page 35: 20120824_ハンズオンセミナー資料_第1部

Copyright c LOCKON CO.,LTD. All Rights Reserved. 35 35

プラグイン情報

plugin_info.php(プラグイン情報)

class plugin_info {

static $PLUGIN_CODE = "CategoryContents ";

static $PLUGIN_NAME = "カテゴリ・コンテンツ";

static $PLUGIN_VERSION = "0.1";

static $COMPLIANT_VERSION = "2.12.0";

static $AUTHOR = “株式会社ロックオン";

static $DESCRIPTION = “カテゴリにコンテンツを表示。";

static $PLUGIN_SITE_URL = "http://www.ec-cube.net/";

static $AUTHOR_SITE_URL = "http:// www.ec-cube.net /";

static $CLASS_NAME = "SampleClassHook";

static $HOOK_POINTS = array(

array(" LC_Page_Admin_Products_Category_action_after ", 'contents_set'),

array(" LC_Page_Products_List_action_after ", 'disp_contents'),

array("prefilterTransform", 'prefilterTransform'));

}

介入したいフックポイントとコールバック関数定義

Page 36: 20120824_ハンズオンセミナー資料_第1部

Copyright c LOCKON CO.,LTD. All Rights Reserved. 36 36

プラグイン情報

plugin_info.php(プラグイン情報)

class plugin_info {

static $PLUGIN_CODE = "CategoryContents ";

static $PLUGIN_NAME = "カテゴリ・コンテンツ";

static $PLUGIN_VERSION = "0.1";

static $COMPLIANT_VERSION = "2.12.0";

static $AUTHOR = “株式会社ロックオン";

static $DESCRIPTION = “カテゴリにコンテンツを表示。";

static $PLUGIN_SITE_URL = "http://www.ec-cube.net/";

static $AUTHOR_SITE_URL = "http:// www.ec-cube.net /";

static $CLASS_NAME = "SampleClassHook";

static $HOOK_POINTS = array(

array(" LC_Page_Admin_Products_Category_action_after ", 'contents_set'),

array(" LC_Page_Products_List_action_after ", 'disp_contents'), array("prefilterTransform", 'prefilterTransform'));

}

Page 37: 20120824_ハンズオンセミナー資料_第1部

Copyright c LOCKON CO.,LTD. All Rights Reserved. 37 37

プラグイン情報

plugin_info.php(プラグイン情報)

class plugin_info {

static $PLUGIN_CODE = "CategoryContents ";

static $PLUGIN_NAME = "カテゴリ・コンテンツ";

static $PLUGIN_VERSION = "0.1";

static $COMPLIANT_VERSION = "2.12.0";

static $AUTHOR = “株式会社ロックオン";

static $DESCRIPTION = “カテゴリにコンテンツを表示。";

static $PLUGIN_SITE_URL = "http://www.ec-cube.net/";

static $AUTHOR_SITE_URL = "http:// www.ec-cube.net /";

static $CLASS_NAME = "SampleClassHook";

static $HOOK_POINTS = array(

array(" LC_Page_Admin_Products_Category_action_after ", 'contents_set'),

array(" LC_Page_Products_List_action_after ", 'disp_contents'), array("prefilterTransform", 'prefilterTransform'));

}

介入したい場所

Page 38: 20120824_ハンズオンセミナー資料_第1部

Copyright c LOCKON CO.,LTD. All Rights Reserved. 38 38

プラグイン情報

plugin_info.php(プラグイン情報)

class plugin_info {

static $PLUGIN_CODE = "CategoryContents ";

static $PLUGIN_NAME = "カテゴリ・コンテンツ";

static $PLUGIN_VERSION = "0.1";

static $COMPLIANT_VERSION = "2.12.0";

static $AUTHOR = “株式会社ロックオン";

static $DESCRIPTION = “カテゴリにコンテンツを表示。";

static $PLUGIN_SITE_URL = "http://www.ec-cube.net/";

static $AUTHOR_SITE_URL = "http:// www.ec-cube.net /";

static $CLASS_NAME = "SampleClassHook";

static $HOOK_POINTS = array(

array(" LC_Page_Admin_Products_Category_action_after ", 'contents_set'),

array(" LC_Page_Products_List_action_after ", 'disp_contents'), array("prefilterTransform", 'prefilterTransform'));

}

実行する関数

Page 39: 20120824_ハンズオンセミナー資料_第1部

Copyright c LOCKON CO.,LTD. All Rights Reserved. 39 39

プラグイン情報

dtb_plugin_hookpoint

CREATE TABLE `dtb_plugin_hookpoint` (

`plugin_hookpoint_id` int(11) NOT NULL,

`plugin_id` int(11) NOT NULL,

`hook_point` text NOT NULL,

`callback` text, `create_date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,

`update_date` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',

PRIMARY KEY (`plugin_hookpoint_id`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8

$HOOK_POINTSで定義した定数は

インストール時に以下のテーブルにINSERTされます。

Page 40: 20120824_ハンズオンセミナー資料_第1部

Copyright c LOCKON CO.,LTD. All Rights Reserved. 40 40

まとめ

実行したい関数を メインクラスに作成

作成した関数とフックポイントを

設定ファイルに定義

Page 41: 20120824_ハンズオンセミナー資料_第1部

Copyright c LOCKON CO.,LTD. All Rights Reserved. 41 41

テンプレート変更の仕組み

テンプレート ファイル

コンパイル ファイル

解析

plugin

SC_Helper_Plugin

pre filter

テンプレート ファイル

テンプレート ファイル

コンパイル ファイル

一度コンパイルファイルが生成されると 次回からはコンパイルファイルが参照される

SC_Helper_Transform

Page 42: 20120824_ハンズオンセミナー資料_第1部

Copyright c LOCKON CO.,LTD. All Rights Reserved. 42 42

実例

<!--★タイトル★-->

<h2 class="title"><!--{$tpl_subtitle|h}--></h2>

<!--▼検索条件-->

<!--{if $tpl_subtitle == "検索結果"}-->

<ul class="pagecond_area">

<li><strong>商品カテゴリ:</strong><!--{$arrSearch.category|h}--></li>

<li><strong>商品名:</strong><!--{$arrSearch.name|h}--></li>

</ul>

<!--{/if}-->

<!--▲検索条件 <!--★タイトル★-->

<!--PLG:CategoryContents↓-->

<div><!--{$plg_categoryContents_category_contents|nl2br_html}--></div>

<!--PLG:CategoryContents↑-->

<h2 class="title"><!--{$tpl_subtitle|h}--></h2>

<!--▼検索条件-->

<!--{if $tpl_subtitle == "検索結果"}-->

<ul class="pagecond_area">

<li><strong>商品カテゴリ:</strong><!--{$arrSearch.category|h}--></li>

<li><strong>商品名:</strong><!--{$arrSearch.name|h}--></li>

</ul>

<!--{/if}-->

<!--▲検索条件-->

Page 43: 20120824_ハンズオンセミナー資料_第1部

Copyright c LOCKON CO.,LTD. All Rights Reserved. 43 43

プラグインメインクラス

function prefilterTransform(&$source, LC_Page_Ex $objPage, $filename) {

$objTransform = new SC_Helper_Transform($source);

$template_dir = PLUGIN_UPLOAD_REALDIR . 'CategoryContents/templates/';

switch($objPage->arrPageLayout['device_type_id']){

case DEVICE_TYPE_MOBILE:

case DEVICE_TYPE_SMARTPHONE:

case DEVICE_TYPE_PC:

// 商品一覧画面

if (strpos($filename, 'products/list.tpl') !== false) { $objTransform->select('h2.title')->insertBefore(file_get_contents($template_dir . 'categorycontents_products_list_add.tpl'));

}

break;

default:

break;

}

$source = $objTransform->getHTML();

}

Page 44: 20120824_ハンズオンセミナー資料_第1部

Copyright c LOCKON CO.,LTD. All Rights Reserved. 44 44

プラグイン情報

plugin_info.php(プラグイン情報)

class plugin_info {

static $PLUGIN_CODE = "CategoryContents ";

static $PLUGIN_NAME = "カテゴリ・コンテンツ";

static $PLUGIN_VERSION = "0.1";

static $COMPLIANT_VERSION = "2.12.0";

static $AUTHOR = “株式会社ロックオン";

static $DESCRIPTION = “カテゴリにコンテンツを表示。";

static $PLUGIN_SITE_URL = "http://www.ec-cube.net/";

static $AUTHOR_SITE_URL = "http:// www.ec-cube.net /";

static $CLASS_NAME = "SampleClassHook";

static $HOOK_POINTS = array(

array(" LC_Page_Admin_Products_Category_action_after ", 'contents_set'),

array(" LC_Page_Products_List_action_after ", 'disp_contents'),

array("prefilterTransform", 'prefilterTransform'));

}

Page 45: 20120824_ハンズオンセミナー資料_第1部

Copyright c LOCKON CO.,LTD. All Rights Reserved. 45 45

プラグインメインクラス

function prefilterTransform(&$source, LC_Page_Ex $objPage, $filename) {

$objTransform = new SC_Helper_Transform($source);

$template_dir = PLUGIN_UPLOAD_REALDIR . 'CategoryContents/templates/';

switch($objPage->arrPageLayout['device_type_id']){

case DEVICE_TYPE_MOBILE:

case DEVICE_TYPE_SMARTPHONE:

case DEVICE_TYPE_PC:

// 商品一覧画面

if (strpos($filename, 'products/list.tpl') !== false) { $objTransform->select('h2.title')->insertBefore(file_get_contents($template_dir . 'categorycontents_products_list_add.tpl'));

}

break;

default:

break;

}

$source = $objTransform->getHTML();

}

コールされたテンプレートのソース

Page 46: 20120824_ハンズオンセミナー資料_第1部

Copyright c LOCKON CO.,LTD. All Rights Reserved. 46 46

プラグインメインクラス

function prefilterTransform(&$source, LC_Page_Ex $objPage, $filename) {

$objTransform = new SC_Helper_Transform($source);

$template_dir = PLUGIN_UPLOAD_REALDIR . 'CategoryContents/templates/';

switch($objPage->arrPageLayout['device_type_id']){

case DEVICE_TYPE_MOBILE:

case DEVICE_TYPE_SMARTPHONE:

case DEVICE_TYPE_PC:

// 商品一覧画面

if (strpos($filename, 'products/list.tpl') !== false) { $objTransform->select('h2.title')->insertBefore(file_get_contents($template_dir . 'categorycontents_products_list_add.tpl'));

}

break;

default:

break;

}

$source = $objTransform->getHTML();

}

コール元のPageオブジェクト

Page 47: 20120824_ハンズオンセミナー資料_第1部

Copyright c LOCKON CO.,LTD. All Rights Reserved. 47 47

プラグインメインクラス

function prefilterTransform(&$source, LC_Page_Ex $objPage, $filename) {

$objTransform = new SC_Helper_Transform($source);

$template_dir = PLUGIN_UPLOAD_REALDIR . 'CategoryContents/templates/';

switch($objPage->arrPageLayout['device_type_id']){

case DEVICE_TYPE_MOBILE:

case DEVICE_TYPE_SMARTPHONE:

case DEVICE_TYPE_PC:

// 商品一覧画面

if (strpos($filename, 'products/list.tpl') !== false) { $objTransform->select('h2.title')->insertBefore(file_get_contents($template_dir . 'categorycontents_products_list_add.tpl'));

}

break;

default:

break;

}

$source = $objTransform->getHTML();

}

コールされたテンプレートのファイル名

Page 48: 20120824_ハンズオンセミナー資料_第1部

Copyright c LOCKON CO.,LTD. All Rights Reserved. 48 48

プラグインメインクラス

function prefilterTransform(&$source, LC_Page_Ex $objPage, $filename) {

$objTransform = new SC_Helper_Transform($source);

$template_dir = PLUGIN_UPLOAD_REALDIR . 'CategoryContents/templates/';

switch($objPage->arrPageLayout['device_type_id']){

case DEVICE_TYPE_MOBILE:

case DEVICE_TYPE_SMARTPHONE:

case DEVICE_TYPE_PC:

// 商品一覧画面

if (strpos($filename, 'products/list.tpl') !== false) { $objTransform->select('h2.title')->insertBefore(file_get_contents($template_dir . 'categorycontents_products_list_add.tpl'));

}

break;

default:

break;

}

$source = $objTransform->getHTML();

}

Page 49: 20120824_ハンズオンセミナー資料_第1部

Copyright c LOCKON CO.,LTD. All Rights Reserved. 49 49

プラグインメインクラス

function prefilterTransform(&$source, LC_Page_Ex $objPage, $filename) {

$objTransform = new SC_Helper_Transform($source); $template_dir = PLUGIN_UPLOAD_REALDIR . 'CategoryContents/templates/';

switch($objPage->arrPageLayout['device_type_id']){

case DEVICE_TYPE_MOBILE:

case DEVICE_TYPE_SMARTPHONE:

case DEVICE_TYPE_PC:

// 商品一覧画面

if (strpos($filename, 'products/list.tpl') !== false) {

$objTransform->select('h2.title')->insertBefore(

file_get_contents($template_dir . 'categorycontents_products_list_add.tpl')

); }

break;

default:

break;

}

$source = $objTransform->getHTML();

}

Page 50: 20120824_ハンズオンセミナー資料_第1部

Copyright c LOCKON CO.,LTD. All Rights Reserved. 50 50

プラグインメインクラス

function prefilterTransform(&$source, LC_Page_Ex $objPage, $filename) {

$objTransform = new SC_Helper_Transform($source); $template_dir = PLUGIN_UPLOAD_REALDIR . 'CategoryContents/templates/';

switch($objPage->arrPageLayout['device_type_id']){

case DEVICE_TYPE_MOBILE:

case DEVICE_TYPE_SMARTPHONE:

case DEVICE_TYPE_PC:

// 商品一覧画面

if (strpos($filename, 'products/list.tpl') !== false) {

$objTransform->select('h2.title')->insertBefore(

file_get_contents($template_dir . 'categorycontents_products_list_add.tpl')

); }

break;

default:

break;

}

$source = $objTransform->getHTML();

}

変更を加える ソース

Page 51: 20120824_ハンズオンセミナー資料_第1部

Copyright c LOCKON CO.,LTD. All Rights Reserved. 51 51

プラグインメインクラス

function prefilterTransform(&$source, LC_Page_Ex $objPage, $filename) {

$objTransform = new SC_Helper_Transform($source); $template_dir = PLUGIN_UPLOAD_REALDIR . 'CategoryContents/templates/';

switch($objPage->arrPageLayout['device_type_id']){

case DEVICE_TYPE_MOBILE:

case DEVICE_TYPE_SMARTPHONE:

case DEVICE_TYPE_PC:

// 商品一覧画面

if (strpos($filename, 'products/list.tpl') !== false) {

$objTransform->select('h2.title')->insertBefore(

file_get_contents($template_dir . 'categorycontents_products_list_add.tpl')

); }

break;

default:

break;

}

$source = $objTransform->getHTML();

}

Page 52: 20120824_ハンズオンセミナー資料_第1部

Copyright c LOCKON CO.,LTD. All Rights Reserved. 52 52

プラグインメインクラス

function prefilterTransform(&$source, LC_Page_Ex $objPage, $filename) {

$objTransform = new SC_Helper_Transform($source); $template_dir = PLUGIN_UPLOAD_REALDIR . 'CategoryContents/templates/';

switch($objPage->arrPageLayout['device_type_id']){

case DEVICE_TYPE_MOBILE:

case DEVICE_TYPE_SMARTPHONE:

case DEVICE_TYPE_PC:

// 商品一覧画面

if (strpos($filename, 'products/list.tpl') !== false) {

$objTransform->select('h2.title')->insertBefore(

file_get_contents($template_dir . 'categorycontents_products_list_add.tpl')

); }

break;

default:

break;

}

$source = $objTransform->getHTML();

}

Page 53: 20120824_ハンズオンセミナー資料_第1部

Copyright c LOCKON CO.,LTD. All Rights Reserved. 53 53

プラグインメインクラス

function prefilterTransform(&$source, LC_Page_Ex $objPage, $filename) {

$objTransform = new SC_Helper_Transform($source); $template_dir = PLUGIN_UPLOAD_REALDIR . 'CategoryContents/templates/';

switch($objPage->arrPageLayout['device_type_id']){

case DEVICE_TYPE_MOBILE:

case DEVICE_TYPE_SMARTPHONE:

case DEVICE_TYPE_PC:

// 商品一覧画面

if (strpos($filename, 'products/list.tpl') !== false) {

$objTransform->select('h2.title')->insertBefore(

file_get_contents($template_dir . 'categorycontents_products_list_add.tpl')

); }

break;

default:

break;

}

$source = $objTransform->getHTML();

}

要素を指定

Page 54: 20120824_ハンズオンセミナー資料_第1部

Copyright c LOCKON CO.,LTD. All Rights Reserved. 54 54

プラグインメインクラス

function prefilterTransform(&$source, LC_Page_Ex $objPage, $filename) {

$objTransform = new SC_Helper_Transform($source); $template_dir = PLUGIN_UPLOAD_REALDIR . 'CategoryContents/templates/';

switch($objPage->arrPageLayout['device_type_id']){

case DEVICE_TYPE_MOBILE:

case DEVICE_TYPE_SMARTPHONE:

case DEVICE_TYPE_PC:

// 商品一覧画面

if (strpos($filename, 'products/list.tpl') !== false) {

$objTransform->select('h2.title')->insertBefore(

file_get_contents($template_dir . 'categorycontents_products_list_add.tpl')

); }

break;

default:

break;

}

$source = $objTransform->getHTML();

}

指定した要素の操作

Page 55: 20120824_ハンズオンセミナー資料_第1部

Copyright c LOCKON CO.,LTD. All Rights Reserved. 55 55

プラグインメインクラス

function prefilterTransform(&$source, LC_Page_Ex $objPage, $filename) {

$objTransform = new SC_Helper_Transform($source); $template_dir = PLUGIN_UPLOAD_REALDIR . 'CategoryContents/templates/';

switch($objPage->arrPageLayout['device_type_id']){

case DEVICE_TYPE_MOBILE:

case DEVICE_TYPE_SMARTPHONE:

case DEVICE_TYPE_PC:

// 商品一覧画面

if (strpos($filename, 'products/list.tpl') !== false) {

$objTransform->select('h2.title')->insertBefore(

file_get_contents($template_dir . 'categorycontents_products_list_add.tpl')

); }

break;

default:

break;

}

$source = $objTransform->getHTML();

}

プラグインで用意した テンプレートを指定

Page 56: 20120824_ハンズオンセミナー資料_第1部

Copyright c LOCKON CO.,LTD. All Rights Reserved. 56 56

テンプレート変更のまとめ

テンプレートで変更したい 要素をDOM形式で指定

要素に対する操作を実行

Page 57: 20120824_ハンズオンセミナー資料_第1部

Copyright c LOCKON CO.,LTD. All Rights Reserved. 57 57

カテゴリコンテンツ おさらい

controller

model view

Pageクラス

SCクラス Viewクラス

Smarty

SC_Helper_Plugin

CategoryContents

② ③

①インスタンス生成

②PHP処理介入

③テンプレート介入