既存のページの挙動を変えるにはコントローラーのコードを修正する必要があります。例えばトップページの挙動を変えることを考えてみます。

EC-CUBE4ではURLの設定(ルーティング)をアノテーション「@Route」によって指定しています。@Routeのnameを揃えることでURL設定の上書きが可能です。
トップページのコントローラー、TopControllerは次のようになっています。

<?php

/*
 * This file is part of EC-CUBE
 *
 * Copyright(c) LOCKON CO.,LTD. All Rights Reserved.
 *
 * http://www.lockon.co.jp/
 *
 * For the full copyright and license information, please view the LICENSE
 * file that was distributed with this source code.
 */

namespace Eccube\Controller;

use Sensio\Bundle\FrameworkExtraBundle\Configuration\Template;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\Routing\Annotation\Route;

class TopController extends AbstractController
{
    /**
     * @Route("/", name="homepage")
     * @Template("index.twig")
     */
    public function index(Request $request)
    {
        return [];
    }
}

この@Routeアノテーションの意味は、”/”というURLにhomepageという名前をつけて、アクセスがあったときにはこのコントローラのindexというメソッドを使用するという意味です。
トップページをCustomizeディレクトリを使って挙動を変えることを考えて見ます。

CustomizeディレクトリにControllerを作成する場合

TopControllerと全く同じRouteアノテーションでコントローラーを作成します。
Routeアノテーションを揃えることでCustomTopControllerが選択されるようになりますので、こちらを修正して挙動を変えて下さい。
src/Eccube/Resource/template/default/index.twigをコピーしてapp/template/default/custom.twigを作成すればテンプレートを変えることができます。

<?php

namespace Customize\Controller;

use Eccube\Controller\AbstractController;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Template;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\Routing\Annotation\Route;

class CustomTopController extends AbstractController
{
    /**
     * @Route("/", name="homepage")
     * @Template("custom.twig")
     */
    public function index(Request $request)
    {
        return [];
    }
}

プラグインにControllerを作成する場合

Customizeディレクトリを利用する場合と同じです。
プラグインのControllerディレクトリ内に、Routeアノテーションを揃えて新規コントローラを設定して下さい。

ECCUBE制作トップへ

EC-CUBEカスタマイズに関するお問い合わせはこちら


    [重要]現在公式にセキュリティサポートが切れていないPHPは8.1以上、MySQLは8.0以上で、対応しているEC-CUBEバージョンは4.2以上です。古いEC-CUBEを使っている方は適切なタイミングでバージョンアップをご検討ください。

    EC-CUBEバージョンアップ