EC-CUBE4でタイトルタグの内容を書き換える

EC-CUBE4でタイトルタグの内容を書き換える方法です。

まずCusotomizeディレクトリ内にEventListenerディレクトリを設置してください。

次に以下のようにTitleListner.phpを作成してEventListener内に設置してください。

<?php

namespace Customize\EventListener;

use Symfony\Component\EventDispatcher\EventSubscriberInterface;
use Symfony\Component\HttpKernel\KernelEvents;
use Symfony\Component\HttpKernel\Event\FilterResponseEvent;
use Eccube\Request\Context;

/**
 * Description of TitleListner
 *
 * @author Akira Kurozumi <info@a-zumi.net>
 */
class TitleListner implements EventSubscriberInterface {
    
    public function __construct(
            Context $requestContext
    )
    {
        $this->requestContext = $requestContext;
    }

    public static function getSubscribedEvents(): array
    {
        return [
            KernelEvents::RESPONSE => [['onKernelResponse', 100000000]],
        ];
    }
    
    public function onKernelResponse(FilterResponseEvent $event)
    {
        // フロントページでない場合はスルー
        if (!$this->requestContext->isFront()) {
            return;
        }
        
        $response = $event->getResponse();
        $content = $response->getContent();
        
        $response->setContent(preg_replace("/<title>(.*)<\/title>/", "<title>タイトル変更</title>", $content));
        $event->setResponse($response);
    }

}

以上で完成です。

これによりフロントのすべてのページのタイトルが「タイトル変更」に書き換わります。

特定のページのみ書き換えたい場合は、ルーティング名を取得して条件分岐すれば対応できると思います。

お気軽にコメントをどうぞ

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください