1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

EC-CUBE4.x フロントのカスタム機能いろいろ

Last updated at Posted at 2021-08-26

概要

EC-CUBE4.xで実装できる機能の検証としてまとめ

実装したい機能

  • デザインテーマをダウンロードして、新たなテーマに変更して反映
  • プラグインを入れてフック
  • ページの新規追加 (/user_data/)
  • ページの新規追加 (/任意のページ名/)
  • SCSSの編集

実装環境

  • localhost + Git + docker-compose
  • ソース管理はGit、scssを使用

■プロジェクトディレクトリ構成
 →今回使うもののみ抜粋

[GitProject]
├─ ec-cube
 ├─ app
  └─ Customize/Controller
  └─ template
     └─ user_data
     └─ [カスタムテーマ]
 ├─ html
 └─ src

実装手順

1. デザインテーマをダウンロードして、新たなテーマに変更して反映

eccubeストア: デザインテンプレートで購入もできるが、今回無料のテンプレートを使う際にver2.x以前のものしかなかったため、管理画面からデフォルトテーマをコピペが確実
スクリーンショット 2021-08-26 15.46.40.png

デフォルトテーマをダウンロードして default.tar.gz を任意のファイル名に変え、
スクリーンショット 2021-08-26 15.48.01.png
そのままアップロードします。

・テンプレートコード:ソース上のディレクトリ名など、半角英数字
・テンプレート名:管理画面上の表示名、日本語名OK
のようです。

「登録」時に必要なテンプレートディレクトリ、ファイルが生成されます。

2. プラグインを入れてフック

eccubeストア: 機能カスタマイズから任意のプラグインを検索し、インストール。
eccube管理画面で「オーナーズストア>プラグイン一覧」を参照して対象のプラグインを有効化します。

スクリーンショット 2021-08-26 15.49.30.png

例)おすすめ商品管理プラグイン

スクリーンショット 2021-08-26 15.50.16.png
「コンテンツ管理>おすすめ管理」の項目が追加され、編集可能になる。

スクリーンショット 2021-08-26 15.50.47.png
編集したコンテンツは「コンテンツ管理>レイアウト管理」で未使用ブロックとして追加されるので、任意の場所にドラッグして登録が可能になります。

3. ページの新規追加 (/user_data/)

スクリーンショット 2021-08-26 15.51.47.png

「コンテンツ管理>ページ管理」から新規追加を選択し、項目に沿って作成します。
ここで作られたページは

eccube/app/template/user_data/sample.twig

のような形で template/user_data/ 配下にテンプレートファイルが作成されるため、以降はソースでの編集も可能になります。

またこの方法で作成されたページへのリンクは

<a href="{{ url(eccube_config.eccube_user_data_route, {"route": "[ページ名]"}) }}">

のような記述や相対パス等で実装できます。

4. ページの新規追加 (/任意のページ名/)

管理画面ベースでページを作成する際は上記で問題ないんですが、 user_data/ 配下のディレクトリしか実装ができないため、それ以外の任意ディレクトリで新規ページを作る際の方法です。

こちらを参考に、下記構造でファイルを作成しました。
※「SamplePageController.php」は任意の名前で行けると思うのですが、正常な挙動確認ができなかったため一旦そのまま適用しています。

[GitProject]
├─ ec-cube
 ├─ app
  └─ Customize/Controller/SamplePageController.php
  └─ template
     └─ user_data
     └─ [カスタムテーマ]
        └─ Test
          └─ index.twig
          └─ index2.twig
 ├─ html
 └─ src

  • Controller
eccube/app/Customize/Controller/SamplePageController.php
<?php

namespace Customize\Controller;

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

class SamplePageController
{
    /**
     * @Method("GET")
     * @Route("/test", name="test")
     * @Template("Test/index.twig")
     */
    public function testMethod()
    {
        // とりあえずnameにEC-CUBEという文字列を入れておく
        return ['name' => 'EC-CUBE'];
    }

    /**
     * @Method("GET")
     * @Route("/test/index2", name="test/index2")
     * @Template("Test/index2.twig")
     */
    public function testMethod2()
    {
        // とりあえずnameにEC-CUBEという文字列を入れておく
        return ['name' => 'EC-CUBE 4.x'];
    }
}

新規ページ数と対になるよう、任意のfunctionを作ります。
肝になるのは @Route @Templateの部分で、
@Route:ルートパス
@Template:テーマ配下のテンプレートパス
を正しく指定しないと管理画面やプレビュー表示でエラーの原因になります。

  • Twigテンプレート
eccube/app/template/customtest/Test/index.twig
{% extends 'default_frame.twig' %}

{% block main %}

<h3>SamplePage!!</h3>

<div>{{name}}</div>

{% endblock %}
eccube/app/template/customtest/Test/index2.twig
{% extends 'default_frame.twig' %}

{% block main %}

<h3>SamplePage!!</h3>

<div>{{name}} hogehoge</div>

{% endblock %}

index.twig index2.twig の内容はほぼ変わりません。
一つ、 {{name}}の値を各functionで異なるものを入れているのですが、プレビューでその反映の違いを確認することができます。

phpmyadminの dtb_page で新規追加すると、管理画面での閲覧、編集が行えるようになりました。
スクリーンショット 2021-08-26 15.54.09.png
スクリーンショット 2021-08-26 15.54.30.png
スクリーンショット 2021-08-26 15.54.53.png

5. SCSSの編集

カスタムテンプレートのディレクトリが生成された状態で、 [Gitプロジェクト]/eccubeで下記を実行すると、ファイル編集・保存時に自動でcssがビルドされるようになります。

npm run start

※初回のみ、ファイル生成のため下記を実行

npm install

例)ヘッダー部分scss
eccube/html/template/customtest/assets/scss/project/_11.2.header.scss

参考文献

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?