EC-CUBE3の ブロックのtwigテンプレートでphp関数を使えるようにする方法 

EC-CUBE2系ではテンプレートにsmartyが使われていたので
{php}タグで phpを書くことができました
EC-CUBE3のテンプレートはtwigになって、そのままではphpコードは書くことができません。
しかし、簡単なブロックを作成して埋め込みたいとき わざわざプラグインを作るのもめんどうです。
こんかい、RSSフィードを出力するブロックを実現してみました。
javascriptでやればできるんですが、HTMLとして出力したいというのがあって、phpでやってみました

EC-CUBE3 コンテンツ管理、ブロック作成で php関数 file_get_contentsを使えるようにする

/var/www/html/eccube/src/Eccube/Twig/Extension/EccubeExtension.php

に以下 14行目

new \Twig_SimpleFunction(‘php_*’, array($this,’phpFunctions’),array(‘is_safe’ => array(‘html’))),


public function phpFunctions()
を追加します

プログラムの修正はこれだけです。

実際の使い方

てきとうな場所に素のphpプログラムを作ります

RSSフィードをphpで出力する phpスクリプト

wp/my_php/rss_php.php

EC-CUBE コンテンツ管理のブロック中で

ブログ新着情報

などのように php関数の前に php_をつけてfile_get_contentsを呼び出します

すべての関数が使えるのもよくないので

のように使える関数をリスト化しています。