【ECCUBE3プラグイン開発】イベントフックについて

こちら『EC-CUBEのプラグインを作る(3.0.9向け)』を参考に記載していきます。イベントフックはconfig.ymlでイベントクラスを定義し、event.ymlでフックとなるイベント名と関数名を登録したら、関数定義を行います。

config.yml

name: カテゴリコンテンツプラグイン
code: CategoryContent
version: 1.0.0
event: CategoryContentEvent 
event: xxxx という記載で、イベントフックされた先のクラスを指定しています。
event.yml
admin.product.category.index.initialize: 
 - [onAdminProductCategoryInit, NORMAL] 

この定義では、function onAdminProductCategoryInit(EventArgs $event) を定義する事となります。
イベントフックは引数として、『EventArgs $event』を持ちます。
この引数の中身は、dispatchコールされる直前で設定して決めているようです。
/src/Controller/各コントローラ.php の ソース内では、$app[‘eccube.event.dispatcher’]->dispatch(イベント名定義, $event) となっています。
どのようなパラメータが来るのかは、ECCUBEオリジナルの dump() を利用して実行させてパラメータ内部を表示させるか、上記dispatchコール直前の変数を確認する方法があります。

パラメータを取得する

dispatchコール直前の$event 設定部分を見ると、パラメータがkey – value 形式で格納されていることが分かります。以下の様に、keyを指定することでパラメータを取得することができます。

$parameter = $event->getArgument(‘Order’);

また、処理中に追加したいパラメータがあれば setArgument($parameter) でセットしなおしてあげます。

 

【ECCUBE3プラグイン開発】フック一覧について

2.フック一覧について

WordPressのアクションフッのようなフック機能があるそうです。実装していて思ったのがこのフック一覧がほしいと言う事。私の方で一覧を見つけたので整理してみます。ECCUBE3の内部で処理中に割り込みの為のフックを入れるには以下のようなタイミングがあるようです。どの処理のどのタイミングにフックが可能かというのは、src/Controller/各Controller のソースに記載されており、例えばCartController.phpのindex()には、FRONT_CART_INDEX_INITIALIZEとFRONT_CART_INDEX_COMPLETEが定義されています。これらの定義元がsrc/Event/EccubeEvents.phpに定義されているので、参照すると以下のようなイベント記載が可能となります。Yaml形式で定義を書きますので、スペースやインデントに注意して記載していってください。

続きを読む

【ECCUBE3プラグイン開発】開発時の備忘録

去年リリースされたらしいECCUBE3のプラグインを開発していたのでいろいろなポイントを記載しておきたく思います。

  1. プラグイン開発前に
  2. フック一覧について
  3. イベントフックについて
    1. getArguments
  4. テンプレートのフックについて
    1. getParameters
  5. ルーティングについて
  6. 画面エラーメッセージの変更や表示の仕方
  7. ページを追加する方法
  8. ルーティング・Controller・twig追加後、DBレコード追加
  9. サーバ側制御(Controller)を追加する
    1. redirect
  10. ユーザ認証判定
  11. テンプレート読み込み(renderView)
  12. Ajaxを実装する
  13. テンプレート(twig)の記載方法について
    1. ifによる分岐
    2. forによるループ
    3. コメント
    4. URLリンク
  14. カートの中身を制御する(購入品目数・個数制御)
  15. ブラック会員
  16. プラグインインストール時
    1. データベース/テーブルの作成方法
  17. プラグインリリース時のzip圧縮の方法
  18. プラグイン削除時(初期化)
  19. メールテンプレート反映
  20. メール送信方法
  21. 主なENTITY
    1. Order, Customer, app->user, Shipping

1.プラグイン開発前に

先に、参考にさせて頂いたサイトを記載しておきます。

  1. EC-CUBEのプラグインを作る(3.0.9向け)
  2. [Done]EC-CUBE3のプラグインを2日でつくる – 1日目
  3. 【ECCUBE3】3.0.9で新しくなったプラグインのフックポイント
  4. 【EC-CUBE3】プラグインを有効化した時にブロックを生成するプラグインの作り方

「1.EC-CUBEのプラグインを作る(3.0.9向け)」が一番基本的で参考になりましたが、これをそのまま実装しても動きません。リンク先記事のコメントに記載されているようにメソッドの名前を修正してあげてください。

「onFormInitializeAdminProductCategory」→「onAdminProductCategoryInit」

DB・それのDIとしてのEntity定義や、プラグインのインストール・アンインストール時のDB制御の挙動を記載できます。

event.ymlと言うファイルでWordPressのアクションフック・フィルターフックのような定義をする個所のようです。

また、CategoryContentServiceProvider.php では、参考サイトではEntityの登録しかしていませんが、URIからのルーティングコントロールをユーザ定義できるようになっているようです。

 

平成相聞歌・ペア向けに500枚限定特典付きの『UTA・PASS』カード発行

平成相聞歌の10回目記念の事業として、「UTA・PASSカード」というものが500枚限定で発行されました。宇多津町周辺の飲食店やウェディング式場・レストランなどの特典がついてくるカードです。

utapass

デザインも可愛らしく、女性向けでしょうか。カード取得の概要については、「恋人たちの歌碑巡り~幸せへのパスポート~」をご覧ください。「UTA」は宇多津の「うた」と相聞歌の「うた」を掛け合せたものだそうです。

続きを読む

WordPress4.7系のREST-API脆弱性による一部誤解について

長くなりますが、ブログ投稿が妥当そうですので。
世界的シェアをもつWordPressの今回のニュースは、国内の中小零細・大企業・官公庁サイトで何万件もの改ざん攻撃の指摘を受けています。
大きく影響を受けるのはREST APIが標準搭載されたver4.7.0/ver4.7.1です。
【ITmedia】
ITmediaさんを特定するわけではないのですが、社会的な影響度が大きいからニュースになったのでしょうが、タイトル見ると『WordPress≒セキュリティ弱い』と誤解されそうです。
『WordPress≒逆にセキュリティ対策が早い。但しシェアが大きい為社会影響が大きい。』と思ってもらった方がいいなぁ。
初版4.7.0をリリース後48hour以内に既に脆弱性をつかれ、4.7.1で対処しさらに4.7.2というところでしょうか。(リリースノート確認してません)

続きを読む

VAIOノートFit13A(SVF13N1A1J)のファンから異音を修復

半年程前にVAIO Fit13Aから異音がするようになりました。それも我慢できないくらい酷い!

症状としては、起動後『カラ…カラカラ…カラ…』という具合なのですが、ちょっとした振動やキーボードを打っている途中で

『カラ…カラカラ…ガラ!!…ガラガラガラガラガラガラ!!!!!ガガガガガガGAGAGAGAGA

と言う状態。

分解して、中を明けてみるとどうやらファンの音でした。分解は自責でお願いします。

参考までに他に分解されている方のサイトをリンクしておきます。

結局ファンを中国から買って交換をしたのですが、以下に箇条書きで作業内容記載しておきます。

用意するもの

  • 代わりのVAIO Fit13a用のファン
  • グリス
  • ドライバー
  • VAIOを開ける

Fit13aを開けます。ひっくり返して、すぐ見えるネジとそのほかに、滑り止めとなっているラバーが粘着テープで付いているので、これを外すと隠れたネジが見えてきます。

これらを外したのち、マイナスドライバーなどを使って丁寧に裏カバーを外します。

ファンを外す

次にファンのネジを外していきます。ファンからCPUにかけて(CPUの熱を逃がす為)に金属部品がついています。これも一緒に外します。

新しいファンを付ける前にCPU部分にグリスを塗り直し、ファンを取り付けて、裏カバーをはめれば対処終わりです。

img00396

 

 

 

 

 

高知県の秘境…本山町にあるITサテライトオフィス

高知県が『高知家』としての一環で企業誘致の場所として廃校になった施設を改装してサテライトオフィスとしているそうです。

特に本山町は、山陽線の岡山から高知に入って最初の大豊ICから車で10分程度にあるサテライトオフィスとなります。

改装されたばかりのせいもあり、木の香りがしみわたって快適そうな場所です。ただし夜は真っ暗&野生の鳥獣がいますので一人では心細くなりそうです。
公式HPの住所ですと、川沿いでなく少し山に入ったところとなっていますが、実際は川沿いにあります。
位置情報がずれるので以下にGoogleMapで場所を以下に記します。

オフィスには、都市部で活躍しているIT企業が入居していたりします。

Excel関数を使って、和暦年月日をシリアル値変換

久しぶりにExcel関数を使用しました。日付の和暦⇒西暦変換には『昭和xx』『平成xx』などからの変換はよく記事を見ましたが、今回は『H20』『S45』などの和暦頭文字で表記されている場合の日付の妥当性について関数を作成したので記載します。

和暦文字列⇒年月日へ変換する
I2,J2,K2のセルがそれぞれ以下のように和暦年、月、日で入力されており、これらの年月日の妥当性をチェックしたい場合。
H20|02|11

=IF(I2&J2&K2=””,0,DATEVALUE(IFERROR(CHOOSE(CODE(ASC(MID(I2,1,1)))-82,”昭和”,”大正”),”平成”) & MID(I2,2,2) &”年”&J2&”月”&K2&”日”))

  • IF() 初めに空文字チェック
  • DATEVALUE() 日付をシリアル値に変換する。できない場合は#VALUEが表示される。

頭文字1文字(T,S,H)で和暦判断だけする関数

=IFERROR(CHOOSE(CODE(ASC(MID(L2,1,1)))-82,”昭和”,”大正”),”平成”)

  • ASC(MID(L2,1,1)) 1文字取得し、ASCII文字に変換(全角アルファベットを半角に)
  • CODE(),IFERROR() ASCIIの値、S(83),T(84)からインデックスを求め、和暦判断させる。当てはまらない場合(つまり’H’の時)はIFERRORにて判断しERRORの”平成”を表示させる。