<?php/* * Plugin Name: JoolenCategoryIcon42 * * 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\JoolenCategoryIcon42;use Plugin\JoolenCategoryIcon42\Repository\ConfigRepository;use Plugin\JoolenCategoryIcon42\Repository\CategoryImageRepository;class Event implements \Symfony\Component\EventDispatcher\EventSubscriberInterface{ private $pluginName = 'JoolenCategoryIcon42'; 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画面のカテゴリーメニューに画像を差し込む 'JoolenCategoryIcon42/Resource/template/default/category_icon_pc.twig' => 'changeImageToNaviPc', // ・SP画面のカテゴリーメニューに画像を差し込む 'JoolenCategoryIcon42/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('JoolenCategoryIcon42/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('JoolenCategoryIcon42/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'); }}