EC-CUBE3.013の同階層にWordpressをインストールして、その新着情報をショップのトップページに表示してみようかな、と
EC-CUBE2系ではPHPタグが普通に使えたので、「require (‘wp-load.php’);」でwordpressのタグを埋め込んで、うにゃうにゃと表示させていたのだけれど…
Symfony…苦手
でも↓こういうのを見つけた
TwigPHPExtension.php
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 : <b>php_' . $function . "</b> ";
trigger_error($errMsg, E_USER_NOTICE);
return NULL;
}
3.サーバー内のどこでもいいので、以下のような内容の「news.php」ファイルを作成
※「wp-load.php」のパスを間違えないように
<?php
$webroot = $_SERVER['DOCUMENT_ROOT'];
require ($webroot.'/wp-load.php'); ?>
<style type="text/css">
#top_info {
padding:0 10px 15px 18px;
width:100%;
}
#top_info span {
padding-right:15px;
}
#top_info li {
line-height:2;
}
#top_info li a {
text-decoration:none;
color:#666;
display:block;
}
#top_info li a:hover {
color:#333;
}
</style>
<ul id="top_info">
<?php
$newslist = get_posts( array(
'category_name' => 'information',
'posts_per_page' => 5
));
foreach( $newslist as $post ):
setup_postdata( $post );
?>
<li><a href="<?php the_permalink(); ?>" target="_blank"><span><?php the_time('Y.n.d'); ?></span>
<?php the_title(); ?></a></li>
<?php
endforeach;
wp_reset_postdata();
?>
</ul>
4.EC-CUBE内の新着情報を表示するブロック「app/template/default/Block/news.twig」を以下に書き換え
<div class="col-sm-9 news_contents">
<div id="news_area">
<h2 class="heading01">新着情報</h2>
<div class="accordion">
<div class="newslist">
{{ php_file_get_contents('http://ドメイン名/news.php') }}
</div>
</div>
</div>
</div>
いつかSymfonyを好きになれる日が来るのかな…