EC-CUBEプラグイン講義

15,409 views

Published on

2012/10/19
EC-CUBEプラグイン開発講義

本体カスタマイズとプラグイン制作

1 Comment
4 Likes
Statistics
Notes
No Downloads
Views
Total views
15,409
On SlideShare
0
From Embeds
0
Number of Embeds
10,169
Actions
Shares
0
Downloads
66
Comments
1
Likes
4
Embeds 0
No embeds

No notes for slide
  • はじめまして、\n本日プラグイン開発講義をすることになりました。\n坂本篤史です。\n\n2011年度 去年のHAL卒業生で\nWEB開発学科を卒業してWEB制作会社の\n今はサイバーウィルで働いています。\n\n卒業してからまだ半年ちょっとで\nこんな場所に立つのもすごい\n違和感があるんですが\nよろしくおねがいします。\n\nこのスライドもあとでスライドシェアか何かに\nアップする予定なのでとくにメモとかは\nとらなくていいです。\n\n
  • 今回のプラグイン講義で使用する環境が\n\n最新版のEC-CUBE 2.12.2\nWindowsOSにxampp環境\n\nURLはhostsとかで設定してるのかなと思うのですが\n\nこれに関してはlocalhostでも問題ありません。\n\n
  • 次に今回の講義の内容が\n\nまずプラグインとはどういったものか?\n\n次にEC-CUBEの基本的な仕組みの説明と\nEC-CUBE本体の簡単なカスタマイズの実装\n\n最後にプラグインの作り方と\nEC-CUBE本体のカスタマイズと\n同じ物をプラグインで作成\n\nといった流れの予定です。\n
  • Javaで音楽ダウンロードサイト作ったと伺っているので\nMVCモデルもご存知かと思います。\n\nJavaで言うと、\nサーブレット\nビーンズ\nJSPになるかと思いますが\n\nEC-CUBEも同じようにMVCモデルで構成されています。\n\n各ページ毎の処理を行うのがController\n複数のページで利用される処理を行うのがModel\n表示部分がViewといった認識です。\n
  • ではEC-CUBEのプラグインが実際どのようなものか\n\nプラグインはEC-CUBE本体の処理に\nプラグインの処理を追加することで\n機能の拡張が行えます。\n
  • EC-CUBEの本来の処理に\nプラグインから機能を追加してしたり\n\n表示される画面をプラグインから\n編集したりできます。\n\n例えば\n入力項目を増やして\nプラグインがその入力値に対する\n処理を追加したり、\n\nメニューバーなどにリンクを追加し、\n新規ページのファイルを追加する\nことも可能です。\n
  • プラグインからEC-CUBEの処理に介入し\n機能の拡張などが行えます\n\nフックポイントはプラグインの処理が\n介入するポイントのことで、\n\nプラグインが設定したフックポイントの箇所で\nEC-CUBE本体の処理を書き換えたりすることができます。\n
  • プラグインから画面の内容を編集することも可能です。\n\nViewで表示する際にプラグインから\nテンプレートの操作ができます。\n\n例えば、\nこのタグの後に\nこのテキストを表示させたい、とか\nプラグインで処理した情報を表示したい\nなど見た目に影響する変更ができます。\n
  • 実際にプラグインの説明をする前に\nEC-CUBEのプログラム部分の説明をしていきます。\n\n今回はプラグインを作る前知識としての説明なので\nEC-CUBE本体をカスタマイズするときに\n必要な知識などは省いてなるべくシンプルに説明していきます。\n\n\n\n
  • EC-CUBEのディレクトリ構成\n画面には基本的な部分のみ表示しています。\n\nルート以下の\nhtmlディレクトリが公開ディレクトリ\ndataディレクトリが非公開ディレクトリになります。\n\nWebからhtmlディレクトリ以下にアクセスし、\nhtml以下のページが、\ndataディレクトリ以下にあるファイルを\n実行する形になっています。\n\nこの先紹介するファイルはフルパスで\n書くようにしていますが、\n全体をイメージしながら作業していくと\nEC-CUBEの構成を覚えやすいかと思います。\n
  • EC-CUBE上で使用する各種設定値を定数で\nconfig.php\nmtb_constatnts_init.php\n\nで定義されています。\n\nconfig.phpには\nサイトのURL\nDB接続設定などが\n\nmtb_constants_init.phpには\n入力文字数の上限などが設定されています。\n\n手動でmtb_constants.initを手動で\n編集することがほとんどですが、\n\n管理画面から更新するとDBに保存されている\n値が上書きされるので注意してください。\n\n手動で編集した場合はDBの値も更新しておくことをおすすめします。\n\n\n
  • 具体的な処理の流れは、\n\n利用者が\n/html以下のアクセスページにアクセス\n\nアクセスページがControllerを読み込み\n\nControllerが必要に応じてModelを読み込み\n\n処理が終わった時点でViewに変数を送って\nテンプレートに値を埋め込み表示\n\nのステップになります。\n
  • アクセスページの中が\n
  • 画面上のCLASS_EX_REALDIRっていうのが\n/data内のディレクトリを設定している定数なので\n\nファイルの読み込みを行い\n実行するだけの簡単な処理になっています。\n\n基本はこの形でページによって\nhogeになっている部分が変わるだけで\n\n他に編集するような箇所はありません。\n
  • 次にControllerの中\n
  • PageクラスがEC-CUBE本来の処理、\nPage拡張クラスがカスタマイズする際に\n編集するファイルでデフォルトでは\n何の処理も書かれていません。\n\nプラグイン制作に限って言うならば\nPageクラスを参考にするだけで問題ありません。\n\nアクセスページからPage拡張クラスを読み込んで\nPageクラスを読み込んでいるような\nイメージでいいと思います。\n
  • 最後にView部分、\n
  • ViewはSmartyという\nテンプレートエンジンで\n実装されていて、\n\nテンプレート上でPHPの処理は\n基本的にできないようになっています。\n\nPageクラスから渡ってきた変数の表示や\n表などの表示に必要なループ\nなどが使えます。\n\n画面には、\nPageクラスでメンバ変数に値を格納し、\nSmartyで表示するコードを貼り付けています。\n\n他にも日付フォーマットの指定や、\nHTMLタグのエスケープ\nループ処理などありますが\nSmartyで検索すると色々参考になるものが\n見つかると思います。\n
  • 次に\nSmartyを使ったテンプレートファイルの\n構成ですが、\n部分的に複数のファイルに分割されています。\n\n各ページのテンプレートを編集するのが\nほとんどだと思います。\n
  • 以上でEC-CUBEの説明が終わったので、\n\nプラグインを作る前に少し実習してもらおうと思います。\n\nとりあえず簡単なカスタマイズということで、\n会員登録画面に「携帯番号」の項目を追加してください。\n\n元々ある「電話番号」に携帯番号入力しても問題ないですが、\nあくまで今回の実習用ということでお願いします。\n\n今回は\n他のページは触らないので\nMYページ会員情報編集などが\n中途半端な形のままになります\n
  • 顧客情報がDBの\ndtb_customerに保存されています。\n\n電話番号がtel01〜03で登録されているので、\n今回はmobile01〜03を追加していきます。\n\nphpmyadminからDBを選択して\nスライドに映っている3つのフィールドを追加してください。\n
  • テンプレートに入力ボックスを追加します。\n\n「電話番号」と同じで問題ないので\nコピーして「携帯番号」の項目を作成します。\n\n\n
  • Pageクラスで入力チェックの内容を設定します。\n\n今回はPageクラスを編集していきますが、\n縁があってEC-CUBEのカスタマイズを\nするようなことがあればPage拡張クラスを\n編集してください。\n\nlfInitParamで入力値の宣言をします。\n氏名などが宣言されているので、\n\n今回は「電話番号」をコピーして\n「携帯番号」を作成します。\n\n表示名が\n「携帯番号1はxx文字以内で入力してください」\nなどの表示に使われるもので\n\n項目名が<input>のname属性で\n指定された項目名になります。\n\nTEL_ITEM_LENは\nECCUBEに設定されているパラメータで6\n文字数チェックをする場合\n6文字以下かをチェックします\n\nnがPHPのmb_convert_kana()で使用されるオプションで\nnの場合は全角数字を半角数字に変換します。\n\nほかにも半角カナの扱いなど必要になってくるものも\nあるので必要なときにmtb_conver_kana()で検索してください。\n\n最後の配列が入力チェックの内容で\nSPTAB_CHECKが\nスペース・タブの判定\nスペースとタブのみの入力を許可しない\n\nNUM_CHECKが\n数値型チェック\n\nMAX_LENGTH_CHECKが\n最大文字数チェック\n
  • 携帯番号の1つ1つのチェックが\n終わって次は\n\n3つ合わせての入力チェックも追加します。\nどれか未入力があった場合に\n「携帯番号はすべての項目を入力してください」\nとエラーが表示されます。\n
  • 変更はこれが最後、\n\n入力確認画面に入力画面で追加した\n「携帯番号」を表示する領域を作成します。\n\n「電話番号」をコピーして「携帯番号」を作成します。\n
  • 以上で編集が終わって、\n\n実際に会員登録すると\n「携帯番号」の入力ボックスが追加され\nそのまま会員登録するとDBに番号が\n保持されているはずです。\n\n確認はMYページの会員情報変更ページで\n会員登録の際に登録した番号がセットされているかで\n確認できます。\n\nこのあとプラグインの説明に入って、\nプラグインでも同じ処理でカスタマイズをしてもらいます。\n
  • 前振りが長かったですが、\nプラグインの説明をしていきます。\n
  • 先に事前に配布している2つのプラグインの説明です。\n\nSamplePluginが\n今回実習で作成してもらうプラグインの雛形です。\nライセンスもフリーで作成しているので\nこの先のプラグイン開発でも\n好きに編集していってください。\n\nもう1つのプラグインが\n今回実習で作ってもらうプラグインの\nサンプルです。\n\n
  • プラグインが実際どんな構成になっているか\n\ntar.gzでアーカイブされている\nプラグインを展開すると、\nプラグインの名前のついた\nディレクトリの中にファイルが\nいくつか存在します。\n\nこと後で詳しく説明していきますが、\nplugin_info.phpがプラグインの名前や説明書きなど\nを設定してあるファイル\n\nSamplePlugin.php\nこのプラグインの名前をしたファイルが\nプラグインのメインクラス\n一応名前を合わせなくても使えます。\n\nplugin_update.phpが\nプラグインが更新された時に実行されるクラス\n\nconfig.phpが\n管理画面のプラグイン設定画面で使う\nアクセスページ\n\nLC_Page_Plugin_Config.php\nconfig.phpのPageクラス\n\nlogo.pngが\nインストール済みプラグインの一覧で\n表示されているロゴ画像です。\n
  • はじめに\nplugin_info.phpから説明していきます。\n
  • あどりぶ\n\n\n
  • つぎにプラグインのメインクラス\n
  • \n
  • 各ページのaction()の前後に\n処理を介入するフックポイントを\n指定できます。\n
  • スーパーフックポイントは\nすべてのページに対して処理を介入することができます。\n
  • SmartyにPageクラスから値が渡さると\nまずコンパイルファイルが既に存在するか\n確認します。\n\nコンパイルファイルが存在しなかった場合、\nテンプレートを参照し、\nプラグインのprefilterが実行されます。\n\nその後コンパイルファイルが作成されるので\nコンパイルファイルを削除しない限り\n2度目以降はコンパイルファイルが参照されます。\n\n\n
  • 同じもののほうが理解しやすいかと思うので、\n\nさっきEC-CUBEのカスタマイズで\nしてもらったのと同じように\n\n今度はプラグインを使って\n「携帯番号」の入力ボックスをもう1つ作ってもらいます。\n\nAddMobileNumberのプラグインが同じ内容なので\nこっちを参考にしながら作っていってください。\n\n最悪コピペで動きます。\n
  • 今回はインストール時の処理だけ先に書いて、\n\nその後インストール状態にある\nプラグインを編集していこうと思います。\n\n最終的に完成した段階で\nインストール状態にあるプラグインを\nアーカイブすると\nインストールできる形式のプラグインが完成します。\n\n\n
  • 必要に応じてplugin_info.phpの情報を\n変更します。\n\n今回の実習では\nSamplePluginってコードとクラス名は\nそのままにしておいてください。\n
  • メインクラスのinstall()関数は\nインストール時しか実行しないので\n先に作成しておきます。\n\n後からinstall()を修正した場合は\nプラグインをインストールしなおさないと\n確認できません。\n
  • インストールを何度もするのも手間なので\n\n今回はインストール前に予め\nDBのテーブルにフィールドを作成する\n処理を書いておきます。\n\nサンプルのプラグインを確認しながら\nDBのALTER文を3つ挿入してください。\n
  • プラグインをアーカイブして\nインストールできる形式にします。\n\nプラグインのディレクトリを開いてファイルを\nすべて選択した状態でコンテキストメニューから\n.tar.gzを選択してください。\n
  • アーカイブが終わったら\nEC-CUBEの管理画面からプラグインをインストールしてください。\n
  • インストール状態にあるプラグインを\n編集していきます。\n\nメインクラスのregister()関数のなかで\nSC_FormParam()にフックポイントを設定します。\n\nSC_FormParam()にフックした際に\nメインクラス内のaddParam()を実行します。\n\naddParamの中のif()でLC_Page_Entry\n会員登録の場合のみその処理を実行します。\n\nサンプルのプラグインを参考に\naddParam()を同じように作ってください。\n
  • サンプルのプラグインを参考に\nテンプレートの2箇所を書き換える処理を追加します。\n\nif()で書き換えたいテンプレートファイルを指定して\nこの場合はtableのtrの5番目の直後に\nプラグインで用意したテンプレートを挿入する。\n
  • \n
  • 実際に会員登録すると\n「携帯番号」の入力ボックスが追加され\nそのまま会員登録するとDBに番号が\n保持されているはずです。\n\n確認はMYページの会員情報変更ページで\n会員登録の際に登録した番号がセットされているかで\n確認できます。\n
  • \n
  • EC-CUBEプラグイン講義

    1. 1. EC-CUBE プラグイン開発2012年10月19日株式会社サイバーウィル 坂本篤史 2011年度 WEB開発学科卒業 1
    2. 2. 環境• EC-CUBE 2.12.2• Windows OS• xampp 1.6.8• http://eccube-2122.local 2
    3. 3. 目次• プラグインとは• EC-CUBEの仕組み• プラグインの作り方 3
    4. 4. MVC ModelRequest Controller View Response Model DB 4
    5. 5. プラグインとは?Request Controller View Response 処理の介入 Model DB 5
    6. 6. プラグインとは?• EC-CUBEの処理の前後に処理に介入すること で、機能を拡張する。• 既存のページを拡張するほかにも、ページを追 加するようなプラグインを作れば新規ページを 作成できる。 6
    7. 7. 処理の介入 EC-CUBEフックポイント プラグイン ・フックポイント(介入箇所) と、フックポイント通 過時に実行する関数をプラグインに宣言する事で 本体処理のフックポイント通過時、宣言した関数が 実行される。 表示 7
    8. 8. テンプレートの変更 EC-CUBE EC-CUBE本体が出力したものを、プラグインから 変更をかけることが出来る。フィルター プラグイン 表示 8
    9. 9. EC-CUBEの仕組み 9
    10. 10. ディレクトリ構成/eccube-2.12.2 ... ルートディレクトリ /data ... 非公開ディレクトリ /class ... /pages ... LC_Page_Index.php ... TOPページ Pageクラス /hoge LC_Page_Hoge.php SC_Hoge.php ... SCクラス /Smarty /templates ... テンプレートディレクトリ /default ... PC用 index.tpl ... TOPページテンプレート /hoge 10 index.tpl
    11. 11. パラメータの設定EC-CUBE上で使われるパラメータは以下の2つのファイルで定数に設定されている・/data/config/config.php・/data/mtb_constants_init.php DB (mtb_constants) (キャッシュ:/data/cache/mtb_constants.php)管理画面(パラメータ設定) 手動編集 mtb_constants_init.php 11
    12. 12. 処理の流れRequest/html/hoge/index.php アクセスページ/data/class/pages/hoge/LC_Page_Hoge.php Controller /data/class/SC_FormParam.php Model /data/class/SC_CheckError.php /data/class/SC_Query.php ...etc/data/Smarty/template/default/hoge/index.tpl ViewResponse 12
    13. 13. 処理の流れRequest/html/hoge/index.php アクセスページ/data/class/pages/hoge/LC_Page_Hoge.php Controller /data/class/SC_FormParam.php Model /data/class/SC_CheckError.php /data/class/SC_Query.php ...etc/data/Smarty/template/default/hoge/index.tpl ViewResponse 13
    14. 14. html/<?php Page拡張クラスrequire_once ../require.php;require_once CLASS_EX_REALDIR . page_extends/hoge/LC_Page_Hoge_Ex.php;$objPage = new LC_Page_Hoge_Ex();register_shutdown_function(array($objPage, destroy));$objPage->init();$objPage->process(); 14
    15. 15. 処理の流れRequest/html/hoge/index.php アクセスページ/data/class/pages/hoge/LC_Page_Hoge.php Controller /data/class/SC_FormParam.php Model /data/class/SC_CheckError.php /data/class/SC_Query.php ...etc/data/Smarty/template/default/hoge/index.tpl ViewResponse 15
    16. 16. Pageクラスの継承Pageクラス (data/class/pages/hoge/LC_Page_Hoge.php) require_once CLASS_EX_REALDIR . page_extends/LC_Page_Ex.php; class LC_Page_Hoge extends LC_Page_Ex { function init() { parent::init(); /* 処理 */ } ~ 継承Page拡張クラ (data/class_extends/page_extends/hoge/LC_Page_Hoge_Ex.php)ス require_once CLASS_REALDIR . pages/hoge/LC_Page_Hoge.php; class LC_Page_Hoge_Ex extends LC_Page_Hoge { function init() { parent::init(); /* 拡張処理 */ } ~ 16
    17. 17. 処理の流れRequest/html/hoge/index.php アクセスページ/data/class/pages/hoge/LC_Page_Hoge.php Controller /data/class/SC_FormParam.php Model /data/class/SC_CheckError.php /data/class/SC_Query.php ...etc/data/Smarty/template/default/hoge/index.tpl ViewResponse 17
    18. 18. Smartyの扱い変数の受け渡し Pageクラス $this->hoge = 10; Smarty <!--{$hoge}--> 表示 10配列の受け渡し Pageクラス $this->hoge = array(10, 20, 30); Smarty <!--{$hoge[0]}--> 表示 10連想配列の受け渡し Pageクラス $this->hoge = array(aaa=>10, bbb=>20 ,ccc=>30); Smarty <!--{$hoge.aaa}--> 表示 10変数の内容を確認 Smarty <!--{$hoge|@debug_print_var}--> 18
    19. 19. テンプレートの構成data/Smarty/templates/default/site_frame.tpl <html>タグ,<head>タグ data/Smarty/templates/default/site_main.tpl header,footer,sidebar などを定義 data/Smarty/templates/default/hoge/index.tpl 各ページのテンプレート data/Smarty/templates/default/frontparts/bloc/ hoge.tpl 19
    20. 20. 実習:項目を追加する会員登録時の入力項目に「携帯番号」を追加する。 20
    21. 21. DBにフィールドを追加dtb_customerテーブルに携帯番号のフィールドを追加。ALTER TABLE dtb_customer ADD COLUMN mobile01 text;ALTER TABLE dtb_customer ADD COLUMN mobile02 text;ALTER TABLE dtb_customer ADD COLUMN mobile03 text; tel01 tel02 tel03 mobile01 mobile02 mobile03 21
    22. 22. 入力画面に項目設置編集するファイル/data/Smarty/templates/default/frontparts/form_personal_input.tpl・90行目辺りにある電話番号を<tr>∼</tr>までコピー・tel01∼tel03 を mobile01∼mobile03に修正・今回は必須項目にしないので※を消す*tel01∼tel03、mobile01∼mobile03はDBのフィールド名。 22
    23. 23. 入力チェックの追加①編集するファイル/data/class/helper/SC_Helper_Customer.php・370行目辺りsfCustomerCommonParam()のtel01∼tel03をコピー・tel01∼tel03 を mobile01∼mobile03に修正・チェック内容は必須にしない場合はEXIST_CHECKを外し、 SPTAB_CHECK, NUM_CHECK, MAX_LENGTH_CHECK とする。$objFormParam->addParam( 携帯番号1, // 表示名 23
    24. 24. 入力チェックの追加②編集するファイル/data/class/helper/SC_Helper_Customer.php・489行目辺りsfCustomerCommonErrorCheck()の 電話番号のチェックをコピーして携帯番号のチェックを作成mobile01∼mobile03で電話番号チェックを行う。$objErr->doFunc( array(携帯番号, mobile01, mobile02, mobile03), array(TEL_CHECK)); 24
    25. 25. 確認画面に項目追加編集するファイル/data/Smarty/templates/default/entry/confirm.tpl・65行目辺りにある電話番号を<tr>∼</tr>までコピー・tel01∼tel03 を mobile01∼mobile03に修正・今回は必須項目にしないので※を消す 25
    26. 26. 動作確認会員登録↓MYページ 会員情報変更携帯番号が保持されているのを確認 26
    27. 27. プラグインの作り方 27
    28. 28. 配布したプラグインSamplePlugin.tar.gz プラグインの基本的な雛形ディレクトリ構成と処理が空の関数を用意。AddMobileNumber.tar.gz 会員登録の項目に携帯番号を追加するプラグインこの後の実習の参考用。 28
    29. 29. ディレクトリ構成 SamplePlugin.tar.gz 展開/SamplePlugin plugin_info.php ... プラグイン情報 SamplePlugin.php ... メインクラス plugin_update.php ... アップデートクラス config.php ... 設定画面アクセスページ LC_Page_Plugin_Config.php ... 設定画面のPageクラス logo.png ... プラグインのロゴ画像 29
    30. 30. ディレクトリ構成SamplePlugin.tar.gz plugin_info.php ... プラグイン情報 SamplePlugin.php ... メインクラス plugin_update.php ... アップデートクラス config.php ... 設定画面ページクラス logo.png ... プラグインのロゴ画像 30
    31. 31. プラグイン情報/data/downloads/plugin/SamplePlugin/plugin_info.phpclass plugin_info { static $PLUGIN_CODE = SamplePlugin; // ※1 static $PLUGIN_NAME = サンプルプラグイン; // 表示名 static $CLASS_NAME = SamplePlugin; // ※2 static $PLUGIN_VERSION = 1.0; // プラグインのバージョン static $COMPLIANT_VERSION = 2.12.2; // 対象EC-CUBEのバージョン static $AUTHOR = CyberWill; // 製作者名 static $DESCRIPTION = サンプルプラグインです。; //説明文 static $PLUGIN_SITE_URL = http://www.cyber-will.co.jp; // URL static $AUTHOR_SITE_URL = http://www.cyber-will.co.jp; // URL static $LICENSE = LGPL; // ライセンス表記} 31※1 プラグイン毎ユニークなコード
    32. 32. ディレクトリ構成SamplePlugin.tar.gz plugin_info.php ... プラグイン情報 SamplePlugin.php ... メインクラス plugin_update.php ... アップデートクラス config.php ... 設定画面ページクラス logo.png ... プラグインのロゴ画像 32
    33. 33. メインクラス/data/downloads/plugin/SamplePlugin/SamplePlugin.phpメインクラス宣言関数一覧install() (必須) ... インストール時に実行uninstall() (必須) ... アンインストール時に実行enable() ... 有効にした時に実行disable() ... 無効にした時に実行register() ... フックポイントの設定preProcess() ... スーパーフックポイント 33
    34. 34. ローカルフックポイントLC_Page_Hoge.php フックポイント プラグイン action() 特定のページの action() の前後に フックポイントが指定出来る。 フックポイントを指定したところで処理を フックポイント 介入する。 表示 34
    35. 35. スーパーフックポイントLC_Page.phpスーパーフックポイント プラグイン フックポイント action() すべてのページの処理に介入する。 preProcess() ...ページの処理前に介入 フックポイント process() ...ページの処理後に介入スーパーフックポイント 表示 35
    36. 36. Smartyのフック prefilter/data/Smarty/template_c prefilterTransform()存在チェック コンパイル時に実行 コンパイルファイル true false outputfilter outputfilter テンプレート outputfilterTransform() 出力時に実行 出力 prefilter 表示 36
    37. 37. 実習2:項目を追加するプラグインを使って、会員登録時の入力項目に「携帯番号(プラグイン)」を追加する。 37
    38. 38. 作成手順①plugin_info.phpの設定②メインクラスのinstall()を作成③アーカイブ④アーカイブしたものをインストール⑤インストール済みのプラグインを編集⑥編集したプラグインを再度アーカイブ⑦完成 38
    39. 39. プラグイン情報の設定/data/downloads/plugin/SamplePlugin/plugin_info.phpclass plugin_info { static $PLUGIN_CODE = SamplePlugin; // ※1 static $PLUGIN_NAME = サンプルプラグイン; // 表示名 static $CLASS_NAME = SamplePlugin; // ※2 static $PLUGIN_VERSION = 1.0; // プラグインのバージョン static $COMPLIANT_VERSION = 2.12.2; // 対象EC-CUBEのバージョン static $AUTHOR = CyberWill; // 製作者名 static $DESCRIPTION = サンプルプラグインです。; //説明文 static $PLUGIN_SITE_URL = http://www.cyber-will.co.jp; // URL static $AUTHOR_SITE_URL = http://www.cyber-will.co.jp; // URL static $LICENSE = LGPL; // ライセンス表記} 39※1 プラグイン毎ユニークなコード
    40. 40. メインクラス install()/data/downloads/plugin/SamplePlugin/SamplePlugin.php EC-CUBE インストール プラグイン メインクラスの install() が実行される。install()ロゴ画像や設定ページのファイルなどを配置する。if(copy( PLUGIN_UPLOAD_REALDIR . "SamplePlugin/logo.png", PLUGIN_HTML_REALDIR . "SamplePlugin/logo.png") === false); 40
    41. 41. メインクラス install()/data/downloads/plugin/SamplePlugin/SamplePlugin.phpdtb_customerに、新しくmobile01_p∼mobile03_pを追加 mobile01 mobile02 mobile03 mobile01_p mobile02_p mobile03_p// フィールドの追加$objQuery =& SC_Query_Ex::getSingletonInstance();$alter = <<< __EOS__ ALTER TABLE dtb_customer ADD COLUMN mobile01_ptext;__EOS__;$objQuery->query($alter); 41
    42. 42. アーカイブ作成したプラグインをアーカイブしてEC-CUBEにインストール出来る形式にする。Lhaplus1.58 42
    43. 43. インストール作成したプラグインを管理画面からインストール 43
    44. 44. フックポイント/data/downloads/plugin/SamplePlugin/SamplePlugin.phpregister()に以下を追加 // SC_FormParamのフックポイント $objHelperPlugin->addAction( SC_FormParam_construct, array($this, addParam) );function addParam($calss_name, $param) { if (strpos($class_name, LC_Page_Entry) !== false) { // LC_Page_Entryの場合 44
    45. 45. Smartyフック/data/downloads/plugin/SamplePlugin/SamplePlugin.phpprefiltertransform()にSmartyフックポイントを追加case DEVICE_TYPE_PC: // frontparts/form_personal_input.tpl 略 if (strpos($filename, entry/confirm.tpl) !== false) { $objTransform->select(tr,5)->insertAfter( file_get_contents( $template_dir . entry/confirm.tpl ) ); 45 }
    46. 46. Smartyフックプラグインの/templates以下にテンプレートを2つ追加する。EC-CUBEに本来の<table>に追加する<tr>∼</tr>・入力画面に追加するテンプレート/AddMobileNumber/templates/frontparts/form_presonal_input.tpl↓/SamplePlugin/templates/frontparts/form_presonal_input.tpl・確認画面に追加するテンプレート/AddMobileNumber/templates/entry/confirm.tpl↓/SamplePlugin/templates/entry/confirm.tpl 46
    47. 47. 動作確認会員登録↓MYページ 会員情報変更携帯番号が保持されているのを確認 47
    48. 48. まとめ今回の講義ではプラグインから・入力値の追加・テンプレートファイルの変更の2つを実習しました。ほかにも作り方次第で幅広いプラグインが作成できるので、是非多くにサイトに導入されようなプラグインを作成してください。 48

    ×