<?php
/*
* Plugin Name: JoolenCategoryIcon4
*
* Copyright(c) joolen inc. All Rights Reserved.
*
* https://www.joolen.co.jp/
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace Plugin\JoolenCategoryIcon4;
use Plugin\JoolenCategoryIcon4\Repository\ConfigRepository;
use Plugin\JoolenCategoryIcon4\Repository\CategoryImageRepository;
class Event implements \Symfony\Component\EventDispatcher\EventSubscriberInterface
{
private $pluginName = 'JoolenCategoryIcon4';
private $ConfigRepository = null;
private $CategoryImageRepository = null;
private $Config = null;
/**
* Event constructor.
*/
public function __construct(
ConfigRepository $ConfigRepository,
CategoryImageRepository $CategoryImageRepository
) {
$this->ConfigRepository = $ConfigRepository;
$this->CategoryImageRepository = $CategoryImageRepository;
$this->Config = $this->ConfigRepository->getConfig();
}
/**
* フックポイント一覧
*
* @return array
*/
public static function getSubscribedEvents()
{
return [
// フロント画面
// ・PC画面のカテゴリーメニューに画像を差し込む
'JoolenCategoryIcon4/Resource/template/default/category_icon_pc.twig' => 'changeImageToNaviPc',
// ・SP画面のカテゴリーメニューに画像を差し込む
'JoolenCategoryIcon4/Resource/template/default/category_icon_sp.twig' => 'changeImageToNaviSp',
];
}
/**
* PC画面のカテゴリーメニューに画像を差し込む
*
* スニペット差し込み
* 対象:ブロック管理の「カテゴリナビ(PC)」ブロック
*
* (1)カテゴリ名の表示部分を書き換え
* <書き換え前>
* <a href="{{ url('product_list') }}?category_id={{ Category.id }}">
* {{ Category.name }}
* </a>
* <書き換え後>
* <a href="{{ url('product_list') }}?category_id={{ Category.id }}" class="l-categorynav_list_pc">
* <span id="category_icon_pc_{{ Category.id }}" class="l-categorynav_title">{{ Category.name }}</span>
* </a>
*
* (2)最終行に下記を追記
* {{ include('JoolenCategoryIcon4/Resource/template/default/category_icon_pc.twig', ignore_missing = true) }}
*
*/
public function changeImageToNaviPc(\Eccube\Event\TemplateEvent $event)
{
// PC画面で表示しない場合は終了
if (!$this->Config->isDispPc()) {
return ;
}
log_info($this->pluginName . ' changeImageToNaviPc start');
$parameters = $event->getParameters();
// カテゴリー画像のデータをtwigへ渡す
$categoryImageFileNames = [];
foreach ($this->CategoryImageRepository->findAll() as $CategoryImage) {
$categoryImageFileNames[$CategoryImage->getCategoryId()] = $CategoryImage->getFileName();
}
$parameters['categoryImages'] = $categoryImageFileNames;
$event->setParameters($parameters);
log_info($this->pluginName . ' changeImageToNaviPc finish');
}
/**
* SP画面のカテゴリーメニューに画像を差し込む
*
* スニペット差し込み
* 対象:ブロック管理の「カテゴリナビ(SP)」ブロック
*
* (1)カテゴリ名の表示部分を書き換え
* <書き換え前>
* <a href="{{ url('product_list') }}?category_id={{ Category.id }}">
* {{ Category.name }}
* </a>
* <書き換え後>
* <a href="{{ url('product_list') }}?category_id={{ Category.id }}" class="l-categorynav_list_sp">
* <span id="category_icon_sp_{{ Category.id }}" class="l-categorynav_title">{{ Category.name }}</span>
* </a>
*
* (2)最終行に下記を追記
* {{ include('JoolenCategoryIcon4/Resource/template/default/category_icon_sp.twig', ignore_missing = true) }}
*
*/
public function changeImageToNaviSp(\Eccube\Event\TemplateEvent $event)
{
// Sp画面で表示しない場合は終了
if (!$this->Config->isDispSp()) {
return ;
}
log_info($this->pluginName . ' changeImageToNaviSp start');
$parameters = $event->getParameters();
// カテゴリー画像のデータをtwigへ渡す
$categoryImageFileNames = [];
foreach ($this->CategoryImageRepository->findAll() as $CategoryImage) {
$categoryImageFileNames[$CategoryImage->getCategoryId()] = $CategoryImage->getFileName();
}
$parameters['categoryImages'] = $categoryImageFileNames;
$event->setParameters($parameters);
log_info($this->pluginName . ' changeImageToNaviSp finish');
}
}