EC-CUBE4で新規ページを作成する場合、管理画面にログイン後にコンテンツ管理 > ページ管理 > 新規作成ボタンを押すことで新しいページを追加することができます。
上記の方法でページを追加すると、EC-CUBEインストールディレクトリ(URL)/user_data/faqというURLとなります。/user_data/が付与されても良いという場合はこのまま新規追加を行うとよいのですが、EC-CUBEインストールディレクトリ(URL)/faq とシンプルなURLにしたいという要望も多いのではないでしょうか。私もそのようにしたいと思った1人です。
そこで新規に/user_data/が付与されない(user_dataを削除した)新規ページの追加方法を調べてみました。
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などを利用してテーブルに値を追加します。
以下の通りテーブルを追加します。
key | value |
---|---|
id | 空 |
master_page_id | NULL |
page_name | FAQ |
url | help_faq |
file_name | Help/faq |
edit_type | 2 |
author | NULL |
description | NULL |
keyword | NULL |
create_date | 登録日(YYYY-MM-DD H:i:s形式) |
update_date | 更新日(YYYY-MM-DD H:i:s形式) |
meta_robots | NULL |
meta_tags | NULL |
discriminator_type | page |
key | value |
---|---|
page_id | 上記で追加したFAQページのIDを入力 |
layout_id | 1,2などのレイアウトパターンを追加 |
sort_no | 他のテーブルを参考整数を指定 |
discriminator_type | pagelayout |
以上までの作業が完了すると、コンテンツ管理 > ページ管理 の一覧には表示され、編集することが可能となります。