【EC-CUBE3】EC-CUBE3にwordpressのブログ記事一覧を表示する方法
こんにちは。
デザイナーの野尻です。
今回はEC-CUBE3にwordpressの記事一覧を表示するやりかたについて、備忘録も兼ねて紹介したいと思います。
意外と大変でした。
【参考にしたページ】
①ECサイトにブログ追加(EC-CUBE3とWordPressの連携)
https://b-risk.jp/blog/2019/09/eccube3_wordpress/
②EC-CUBE3.013 WordPressの新着情報をトップページに表示
https://goweb.jp/stblog4/2017/01/55/
EC-CUBEのhtaccessに「フォルダ以下をEC-CUBEの直接管理下から外す」記述を追加
まず参考サイト①から引用となります。
サーバ上にEC-CUBEとwordpressをそれぞれインストールしていることが前提となります。
EC-CUBEのフレームワークが割と強めなため、普通に「wordpress」というフォルダを作ってそこにWordPressを置いても動きません。
共存のために、EC-CUBE側の「.htaccess」で「wordpress」フォルダ以下をEC-CUBEの直接管理下から外す作業が必要です。
以下のように変更します。
...
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !^(.*)\.(gif|png|jpe?g|css|ico|js|svg)$ [NC]
RewriteRule ^(.*)$ index.php [QSA,L]
...
↓
...
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !^(.*)\.(gif|png|jpe?g|css|ico|js|svg)$ [NC]
RewriteCond $1 !^(wordpress/)
RewriteRule ^(.*)$ index.php [QSA,L]
この下準備が必要です
twigの中で強引にPHPの関数を頭に「php_」を入れることで使えるように
以下参考サイト②から引用(一部調整)しています
1.「src/Eccube/Twig/Extension/EccubeExtension.php」の「public function getFunctions()」に以下を追記
new \Twig_SimpleFunction('php_*', array($this,'phpFunctions'),array('is_safe' => array('html'))),
2.続いて「class EccubeExtension extends \Twig_Extension」内に以下を追記
public function phpFunctions()
{
$arg_list = func_get_args();
$function = array_shift($arg_list);
if(is_callable($function)){
return call_user_func_array($function, $arg_list);
}
$errMsg = 'Called to an undefined function : php_' . $function . " ";
trigger_error($errMsg, E_USER_NOTICE);
return NULL;
}
3.「wordpress」フォルダの直下に、以下のような内容の「news.php」ファイルを作成
4.EC-CUBE内で新着情報一覧を掲載したい任意の箇所に下記のようなソースを追加
{{ php_file_get_contents('http://ドメイン名/wordpress/news.php') }}
これでEC-CUBEのテンプレ上にwordpressの記事一覧を表示することができるようになる(はず)
EC-CUBEだけだと、お知らせ周りの周知が意外と不便だったりします。
wordpressと連携させることで、CMSとしてより使いやすくなるかと思います。