【EC-CUBE 4】CSSの簡単設定と反映方法

EC-CUBE 4でCSSをカスタマイズする方法は3つあり、どこに書くかで反映される範囲が変わります。3つの違いと使い分け、そして「書いたのに反映されない」ときの原因をまとめました。

EC-CUBEでCSSを効かせるには?

反映させたい範囲によって書く場所を選びます。

  • 全ページに効かせる → 管理画面の「CSS管理」に書く
  • 1ページだけに効かせる → そのTwigテンプレートに {% block stylesheet %} で書く
  • 複数の特定ページに効かせる → CSSファイルを作り、必要なTwigテンプレートから読み込む

反映されないときは、まずキャッシュの削除を試してください。次に多いのが詳細度の高い既存CSSに負けているケースです。

方法書く場所反映範囲向いている場面
1管理画面の「CSS管理」(customize.css全ページサイト全体に効かせたい。とにかく手軽に試したい
2Twigテンプレートに直接そのページのみコード量が少ない。そのページ限りの調整
3CSSファイルを作って読み込む読み込んだページ本格的にカスタマイズするならこれ

【動作環境】EC-CUBEのバージョン:4.3.0 / サーバー:XServer

JavaScriptのカスタマイズについては こちらの記事 にまとめています。

目次

CSSをカスタマイズする3つの方法

それぞれに長所と短所があります。以下では、管理画面から作った次のページを使って実際に試していきます。

項目
URL(ドメイン名)/user_data/test
Twigapp/template/user_data/test.twig
{% extends 'default_frame.twig' %}

{% block main %}

  <h1>カスタムCSSとJavascriptのテストページです</h1>
  <p id="greeting">こんにちは!</p>
  <button id="custom-btn">テキストを変える</button>

{% endblock %}
CSSをカスタマイズする前の初期ページ。見出しとあいさつ文とボタンだけが素の状態で表示されている

初期ページ(CSSを当てる前)

ボタンは 別記事 のJavaScriptカスタマイズで使うために置いてあります。本記事の内容だけでは、押しても何も起きません。

デフォルトのCSSファイル(html/template/default/assets/css)を直接書き換える方法もありますが、元に戻せなくなったり意図しない不具合が出たりするため基本的におすすめしません。

方法1:CSS管理に書く(全ページに反映)

『管理画面 > コンテンツ管理 > CSS管理』に表示されるコード欄に書く方法です。ここに書いたCSSはすべてのページに反映されます。特別な操作が要らず、もっとも手軽です。

#greeting,
#custom-btn {
    font-size: 20px;
}

#custom-btn {
    margin: 30px 0;
}

文字サイズを20pxにし、ボタンの上下に30pxの余白を付けました。

CSS管理にコードを書いて反映させたあとのページ。文字が大きくなりボタンの上下に余白が付いている

方法1を適用した結果(文字が大きくなり、ボタンに余白が付いた)

ここで書いたCSSは html/user_data/assets/css の下に保存されています。

ファイル管理画面でhtml/user_data/assets/css配下にcustomize.cssが保存されている様子

customize.css の保管場所

手軽な反面、この方法だけで進めると customize.css がどんどん長くなり、どのCSSがどのページに効いているのか分からなくなります。意図しないページにまで反映されてしまうのも困りものです。

方法2:Twigテンプレートに直接書く(そのページのみ)

CSSを反映させたいページのTwigテンプレートに直接書く方法です。利点は2つあります。

  • そのページにだけ反映される
  • HTMLとスタイルが同じファイルにあるので、変更と確認が速い

書き方は、{% block main %} より上に次のブロックを追加するだけです。

{% block stylesheet %}
<style>
/* ここにCSSコードを書く */
</style>
{% endblock %}

方法1の内容に加えて、文字色を赤に、ボタンを黒背景・白文字にしてみます。

{% extends 'default_frame.twig' %}

{% block stylesheet %}
  <style>
      #greeting,
      #custom-btn {
          font-size: 20px;
          color: red;
      }

      #custom-btn {
          margin: 30px 0;
          background-color: black;
          color: white;
      }
  </style>
{% endblock %}

{% block main %}

  <h1>カスタムCSSとJavascriptのテストページです</h1>
  <p id="greeting">こんにちは!</p>
  <button id="custom-btn">テキストを変える</button>

{% endblock %}
Twigテンプレートに直接CSSを書いて反映させたあとのページ。文字が赤くなりボタンが黒背景に白文字になっている

方法2を適用した結果(文字が赤に、ボタンが黒背景・白文字に)

{% block %}{% endblock %} というTwig特有の記法については Twig まとめ(1) で解説しています。

Twigに直接書くことのデメリット

問題内容
再利用しにくいスタイルがそのテンプレートに固定されるため、他のページで使い回せない。サイト全体で見た目を揃えたい場合には不向き
保守しにくいスタイルがページごとに散らばるため、全体をまとめて変えるのが難しい。同じ指定の重複も起きやすい

コード量が少ないうちはよいのですが、後々のメンテナンスを考えると手放しではおすすめできません。そこで3つ目の方法です。

方法3:CSSファイルを作って読み込む(本格派向け)

CSSファイルを用意しておき、必要なページのTwigテンプレートから読み込む方法です。TwigとCSSを分けられるので可読性と保守性が上がり、別のページでも同じファイルを読み込むだけで済みます。

  1. 1エディターでCSSファイルを作る
  2. 2『管理画面 > コンテンツ管理 > ファイル管理 > assets > css』へアップロードする(またはファイルサーバーから html/user_data/assets/css へ)
  3. 3Twigテンプレートから読み込む
{% block stylesheet %}
<link rel="stylesheet" href="{{ asset('assets/css/(適用したいCSSファイル名)', 'user_data') }}">
{% endblock %}

<style> の中に <link> を書かないこと。方法2で <style> を使ったため混同しやすいのですが、外部ファイルを読み込むときは <link> だけを書きます。

方法2の内容に加えて、文字を太字に、ボタンの文字を大きく・角丸にしてみます。以下を test.css として作成し、アップロードします。

#greeting,
#custom-btn {
    font-size: 20px;
    color: red;
    font-weight: bold;
}

#custom-btn {
    margin: 30px 0;
    background-color: black;
    color: white;
    font-size: 20px;
    border-radius: 4px;
}

Twigテンプレートは次のようになります。

{% extends 'default_frame.twig' %}

{% block stylesheet %}
    <link rel="stylesheet" href="{{ asset('assets/css/test.css', 'user_data') }}">
{% endblock %}

{% block main %}

  <h1>カスタムCSSとJavascriptのテストページです</h1>
  <p id="greeting">こんにちは!</p>
  <button id="custom-btn">テキストを変える</button>

{% endblock %}
CSSファイルを作ってTwigから読み込んだあとのページ。文字が太字になりボタンの文字が大きく角丸になっている

方法3を適用した結果(文字が太字に、ボタンの文字が大きく角丸に)

3つの方法は積み上げで試しています。方法1で文字サイズと余白、方法2で色、方法3で太字と角丸を足しました。上の4枚を順に見比べると、どの指定がどの見た目に対応しているか分かります。

CSSが反映されないときの対処法

書いたのにCSSが効かない。よくある原因を、確認する順に並べました。

確認順原因見分け方
1キャッシュが残っている何度リロードしても表示が変わらない
2詳細度の高い他のCSSに負けている検証ツールで自分のCSSに取り消し線が入っている
3Bootstrapのバージョン違い他所から持ってきたクラス名が効かない
4単純な記述ミス検証ツールに自分のCSSがそもそも出てこない

1. キャッシュが残っている

見落としがちで、気づかないと何時間も溶かす代表格です。キャッシュ が残っていると、いくらリロードしても表示は変わりません。

削除する場所は2か所あります。両方試してください。

  • EC-CUBE側:『管理画面 > コンテンツ管理 > キャッシュ管理』から削除
  • ブラウザ側:設定画面から削除、またはスーパーリロード(キャッシュを無視した再読み込み)

CSSに限らず、何かカスタマイズしたらキャッシュを削除する習慣を付けておくと事故が減ります。

スーパーリロードのやり方は こちらの記事 が分かりやすいです。

2. 詳細度の高い別のCSSが効いている

キャッシュを消しても変わらない場合に多いのがこれです。EC-CUBEは既定でさまざまなCSSを読み込んでいるため、そちらが優先されていることがあります。

表示ページ上で右クリック →「検証」を開き、変更したい要素のスタイルを見てください。自分の書いたCSSに取り消し線が入っていれば、他のCSSに負けています。

3. Bootstrapのバージョンが違う

EC-CUBEは Bootstrap というCSSフレームワークを採用しています。EC-CUBEのバージョンによって、読み込んでいるBootstrapのバージョンが違います。

EC-CUBEBootstrap
4.0 / 4.14系
4.25系
4.35系

4.1 と 4.2 の間に、Bootstrap 4 → 5 というメジャーバージョンの変更があります。ここをまたぐとクラス名がかなり変わるため(ml-2ms-2 になる、など)、新しいEC-CUBE向けに書かれたコードを古い環境へ貼っても効きません。逆も同様です。

ネットで見つけたコードが効かないときは、それがどのバージョン向けかを疑ってください。

4. 単純な記述ミス

上の3つで解決しない場合は、たいてい書き間違いです。検証画面に自分のCSSがそもそも表示されていなければ、読み込めていません。

  • 違うTwigテンプレートに書いている
  • CSSファイルを読み込むパスが間違っている
  • セレクタの指定が間違っている
  • 記号の書き間違い(. # : ; の付け忘れ・取り違え)

まとめ

  • CSSの書き場所は3つ。反映させたい範囲で選ぶ
  • 手軽なのは方法1(CSS管理)。ただし全ページに効くので、増えると管理しきれなくなる
  • 方法2(Twigに直接)は速いが、再利用と保守に弱い
  • 本格的にカスタマイズするなら方法3(CSSファイルを分けて読み込む)
  • 反映されないときはキャッシュ → 詳細度 → Bootstrapのバージョン → 記述ミスの順に確認する

EC-CUBEのカスタマイズに関する記事

この記事に出てきた用語

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次