既存のページの挙動を変えるにはコントローラーのコードを修正する必要があります。例えばトップページの挙動を変えることを考えてみます。
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アノテーションを揃えて新規コントローラを設定して下さい。
EC-CUBEに関するお問い合わせ
[重要]現在公式にセキュリティサポートが切れていないPHPは8.1以上、MySQLは8.0以上で、対応しているEC-CUBEバージョンは4.2以上です。古いEC-CUBEを使っている方は適切なタイミングでバージョンアップをご検討ください。