<?php
namespace Customize\Event;
use Eccube\Event\TemplateEvent;
use Eccube\Repository\NewsRepository;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
class TemplateEventSubscriber implements EventSubscriberInterface
{
private $newsRepository;
public function __construct(NewsRepository $newsRepository)
{
$this->newsRepository = $newsRepository;
}
public static function getSubscribedEvents()
{
return [
'Block/newsSlider.twig' => 'onNewsSliderRender',
];
}
public function onNewsSliderRender(TemplateEvent $event)
{
$newsList = $this->newsRepository->findBy([], ['create_date' => 'DESC'], 3);
// 画像URLをnews->commentから抽出
foreach ($newsList as $news) {
if (preg_match('/<img.+src=[\'"](?P<src>.+?)[\'"].*>/i', $news->getComment(), $image)) {
$news->image_url = $image['src'];
} else {
$news->image_url = null;
}
}
$event->setParameter('NewsList', $newsList);
}
}