EC-CUBE4|URLに user_dataが付かないページを追加する

更新日
2022年11月22日
作成日
2021年9月6日
当記事はEC-CUBE 4.0.6-p1 を使用して検証しています。参考にしたサイトも合わせて備忘録として記載します。

EC-CUBE4で新規ページを作成する場合、管理画面にログイン後にコンテンツ管理 > ページ管理 > 新規作成ボタンを押すことで新しいページを追加することができます。

上記の方法でページを追加すると、EC-CUBEインストールディレクトリ(URL)/user_data/faqというURLとなります。/user_data/が付与されても良いという場合はこのまま新規追加を行うとよいのですが、EC-CUBEインストールディレクトリ(URL)/faq とシンプルなURLにしたいという要望も多いのではないでしょうか。私もそのようにしたいと思った1人です。

そこで新規に/user_data/が付与されない(user_dataを削除した)新規ページの追加方法を調べてみました。

以下のソースコードを参考に編集する場合は必ずバックアップを行ってください。問題が発生した場合はご自身で解決するようお願い申し上げます。

Controllerのカスタマイズ

EC-CUBE 4.0 開発者向けドキュメントサイトを閲覧すると、Controllerのカスタマイズというページがありますが、このページでページを追加する方法が掲載されています。

上記のページではsampleというURL(EC-CUBEインストールディレクトリ(URL)/sample)を作成する例ですが、本記事ではfaqに変更していきます。

./app/Customize/Controller/ディレクトリにfaqPageController.phpというファイルを作成します。

./app/Customize/Controller/faqPageController.php の内容は下記となります。

<?php

namespace Customize\Controller;

use Eccube\Controller\AbstractController;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Method;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Template;
use Symfony\Component\HttpFoundation\Response;

class faqPageController extends AbstractController
{
    /**
     * @Method("GET")
     * @Route("/faq", name="help_faq")
     * @Template("Help/faq.twig")
     */
    public function testMethod()
    {
        return;
    }
}

追加したルーティングへのリンクをする
@Routeアノテーションに name パラメータを追加することで、テンプレートから{{ url(‘help_faq’) }}という形式でURLを取得することが可能となります。

テンプレートファイルの利用

次に@Template(“Help/faq.twig”)を記述した部分についての対応としてTwigテンプレートファイルを作成します。

設置場所は/app/template/現在有効化しているテンプレート/Help/faq.twigとなります。

今回設置する同ディレクトリに存在するHelp/guide.twigなどを参考にTwigファイルを準備します。以下はシンプルな内容として記述します。

{% extends 'default_frame.twig' %}

{% block main %}
    FAQの内容を追加
{% endblock %}

※AbstractControllerを継承していますが、今回は特別な処理はしていません。

Controllerのカスタマイズ、テンプレートファイルの利用が完了し、それぞれのファイルをアップロードします。

コンテンツ管理 > キャッシュ管理 > キャッシュ削除を行い、EC-CUBEインストールディレクトリ(URL)/faqとアクセスすると、FAQの内容を追加のページが表示されます。

コンテンツ管理 > ページ管理から編集できるようにする

これまでの内容でページは表示されますが、コンテンツ管理 > ページ管理 の一覧には表示されておらず、編集することができません。ここからはphpMyAdminなどを利用してテーブルに値を追加します。

データベースのテーブル追加は慎重に行ってください。

dtb_pageテーブルに追加

以下の通りテーブルを追加します。

keyvalue
id
master_page_idNULL
page_nameFAQ
urlhelp_faq
file_nameHelp/faq
edit_type2
authorNULL
descriptionNULL
keywordNULL
create_date登録日(YYYY-MM-DD H:i:s形式)
update_date更新日(YYYY-MM-DD H:i:s形式)
meta_robotsNULL
meta_tagsNULL
discriminator_typepage

dtb_page_layoutテーブルに追加

keyvalue
page_id上記で追加したFAQページのIDを入力
layout_id1,2などのレイアウトパターンを追加
sort_no他のテーブルを参考整数を指定
discriminator_typepagelayout

以上までの作業が完了すると、コンテンツ管理 > ページ管理 の一覧には表示され、編集することが可能となります。