Labo

EC-CUBE3 分室

【3.0.12-p1】固定ページ新規追加プラグイン

2016年12月04日 / 投稿者名:chiharu


今回は固定ページを新規追加するプラグインです。
 
前回は管理画面から追加した固定ページのURLを調整するプラグインでした。
今回は新規で固定ページを作成するプラグインです。
 ※
 EC-CUBEのカスタマイズの場合、「既存機能」の改造か「新規機能」の追加になります。
 「既存機能」の改造がメインの場合あまり意味は無いかもしれませんね・・・
 
静的な固定ページを追加するだけでは特に重要ではありませんが、実際に新規機能のベースになる場合も多いかと思います。
それでは進めて行きたいと思います。
 
 ・
 ・
 ・
 
出来ました。
とりあえずは以下の様なものかと思います。
それにしてもファイル数が増えてきましたね・・・
ファイル数が多い時はいくつか省略しないといけませんね(笑)
 
■プラグインファイル
 config.yml
 PluginManager.php
 ServiceProvider/NakwebTest004ServiceProvider.php
 Controller/NakwebTest004Controller.php
 Resource/template/newpage.twig
 
 ▼config.yml
 ▼PluginManager.php
※今までとほぼ変わらないため省略します(笑)
 
 ▼ServiceProvider/NakwebTest004ServiceProvider.php
 ※ServiceProviderフォルダに保存しています。

<?php
/**
 * This file is part of EC-CUBE
 */

namespace Plugin\NakwebTest004\ServiceProvider;

use Eccube\Application;
use Silex\Application as BaseApplication;
use Silex\ServiceProviderInterface;

class NakwebTest004ServiceProvider implements ServiceProviderInterface
{
    public function register(BaseApplication $app)
    {
        // コントローラ:新規ページ
        $app->match('/newpage', 'Plugin\NakwebTest004\Controller\NakwebTest004Controller::display')->bind('nakwebtest004_newpage');
    }

    public function boot(BaseApplication $app)
    {
    }
}

 コントローラーを設定しています。
 今回は表示だけの為、非常にシンプルです。
 なお、ページレイアウトの設定の際に bind 名称を定義する必要があります。
 他と被らない名称を心掛ける必要がありそうです。
 
 ▼Controller/NakwebTest004Controller.php
 ※Controllerフォルダに保存しています。

<?php
/**
 * This file is part of EC-CUBE
 */

namespace Plugin\NakwebTest004\Controller;

use Eccube\Application;
use Symfony\Component\HttpFoundation\Request;

class NakwebTest004Controller
{
    public function display(Application $app, Request $request)
    {
        // 新規ページ用 twig ファイルの指定
        return $app->render('NakwebTest004/Resource/template/newpage.twig', array());
    }
}

 表示ページの内容を設定しています。
 今後のことも考え、twigファイルの指定をしています。
 しかし、非常にシンプルな出力の場合 return させている部分を以下の様に設定しても表示できるようです。

        return 'ここに表示内容を記述';

 
 ▼Resource/template/newpage.twig
 ※Resource/templateフォルダに保存しています。

{% extends 'default_frame.twig' %}

{% set body_class = 'new_page' %}

{% block main %}
    <div class="row">
        <div class="col-md-12">
            <h1 class="">新規ページ</h1>
            <p class="">新規ページ表示内容</p>
        </div>
    </div>
{% endblock %}

 表示内容は twig の記載内容になりますが、正式に登録する場合は dtb_page_layout テーブルにレコードを追加する必要があります。
 本当は、有効・無効で以下のレコードを追加・削除する必要があると思いますが今回は直接 SQL を発行してレコードを作成しています。
  ※
  MySQL と Postgress では発行する内容に差異があるようですが基本的に以下の内容です。
  page_id は適切な数値を当てて下さい(笑)

INSERT INTO dtb_page_layout(
device_type_id,
page_name,
url,
edit_flg,
create_date,
update_date
) VALUES (
10,
'新規固定ページ',
'nakwebtest004_newpage',
2,
CURRENT_TIMESTAMP,
CURRENT_TIMESTAMP
);

 
上記の URL に関して注意する部分は「edit_flg」と「url」「file_name」かと思います。
 
 「edit_flg」
  作成者を示す項目になります。
  プラグイン作成の場合「2」に変更しておくことが無難です。
  「0」になっていると管理画面で作成した場合と同様となる為、注意が必要です。
 
 「url」
  ServiceProvider にて指定した bind の値を設定する必要があります。
 
 「file_name」
  twig ファイルはプラグインで設定するため「faile_name」は入力しなくても大丈夫の様です?
  実際に正式なプラグインとする場合、管理画面との整合性をとる必要があります。
  その場合、プラグイン内の twig ファイルを「app/template/<使用テンプレート>/」以下にコピーする必要があります。
  その場合は「app/template/<使用テンプレート>/」以下にファイルを置く想定でファイル名を保存しないといけません。
 
 
う~ん、やってみると色々と立ち止まる部分はありそうですが、取り急ぎ固定ページの追加は完了です。
今後もブロックの追加や既存処理のカスタマイズなど覚える内容は尽きません。
・・・地道に頑張っていこうと思います(笑)

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

* Copy This Password *

* Type Or Paste Password Here *

*

コメント欄にコードを挿入したい場合は、[php][/php] を使ってください。