PrestaShop 1.7.x テーマ(テンプレート)のカスタマイズ(Webpack)

イーコマースCMSであるPrestaShopをストアサイトに採用しました。従来のMagentoによるストアサイトは、構成ファイルの階層の深さによるカスタマイズの煩雑さや、バージョンアップ毎の不具合頻度の多さから採用を取りやめました。

PrestaShopのテーマのカスタマイズにはWebpackによる開発環境が必要です。Webpackについては以下のサイトを参照して下さい。インストール先サーバはUbuntu16.04です。

Node.jsのインストール

以下サイトを参照しNode.jsの最新バージョンをインストールします。

$ curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -

$ sudo apt-get install -y nodejs

Node.jsのパッケージマネージャnpmも同時にインストールされます。

Webpackのインストール

Node.jsのWebpackパッケージをグローバル環境にインストールします。

$ sudo npm i -g webpack

PrestaShop Classicテーマのダウンロード

以下Githubのサイトからdevelopのブランチをダウンロードします。ここから /themes/classic/_dev を展開してサーバ側の該当フォルダと入れ換えます。

Node関連パッケージのインストール

_dev内のpackage.jsonに記述されているパッケージをインストールします。

$ cd /your_store_site/themes/classic/_dev

$ npm install

Webpackによるコンパイル

以下コマンドで_dev内の関連ファイルをコンパイル、assetsフォルダにサイトを構成するcss、jsファイルを出力します。Webpack設定ファイルは_dev内のwebpack.config.jsです。

$ npm run build

または

$ webpack

cssの変更は_dev内のscssファイルを編集、コンパイルすることでサイトに反映されます。Node.jsによるAPIは下記サイトを参照願います。

npmは/usr/bin/npmにインストールされるため、

$ which npm
/usr/bin/npm

以下リンクを作成します。

$ sudo ln -s /usr/bin/npm /usr/local/bin/npm

How to Prevent Permissions Errors

https://docs.npmjs.com/getting-started/fixing-npm-permissions

ホームホルダー内で

$ mkdir ~/.npm-global
$ npm config set prefix ‘~/.npm-global’
$ export PATH=~/.npm-global/bin:$PATH
$ source ~/.profile

npxパッケージを利用する代替案もあります。(npmバージョン5.2以上)

まとめ

パッケージの依存関係が複雑で問題が必ず発生します。Nodejsは安定版を利用すること。

Nodeの最新安定版をインストール

インストールは上記本家から直接ダウンロードして該当フォルダにコピーするか、記事の手順

に従います。

webpackのインストール

上記の説明ではグローバル環境にインストールすることになっていましたが、本家サイトでは利用するローカルフォルダにインストールすることを推奨しています。

webpackの実行は、

$ sudo node_modules/webpack/bin/webpack.js

テーマの変更・追加

数箇所の変更であれば、直接テーマのcssファイルを変更して下さい。
変更後管理画面の 拡張パラメータ ---> パフォーマンス からキャッシュをクリアします。

/themes/classic/assets/css/theme.css

.carousel .carousel-item .caption .display-1 {
    font-size: 3rem;
    font-weight: 700;
    color: lightgreen;
}

メールテンプレートの編集

チェックによる支払いフォーマットをWISEへ変更

商品説明タグの移動

themes/classic/templates/catalog/product.tpl

右半分の領域で表示されていた商品説明タグを独立させて横幅全体に表示。

右側のブロックを追加

左側で表示された</div>を削除

フッターリンクの変更

themes/classic/templates/_partials/footer.tpl

<div class="footer-container">
  <div class="container">
    <div class="row">
      {block name='hook_footer'}
        {hook h='displayFooter'}
      {/block}
    </div>
    <div class="row">
      {block name='hook_footer_after'}
        {hook h='displayFooterAfter'}
      {/block}
    </div>
    <div class="row">
      <div class="col-md-12">
        <p class="text-sm-center">
          {block name='copyright_link'}
            <a href="https://ficus.myvnc.com" target="_blank" rel="noopener noreferrer nofollow">
              {l s='%copyright% %year% - FICUSONLINE F9E STORE by %ficusonline%' sprintf=['%ficusonline%' => 'FICUSONLINE™', '%year%' => 'Y'|date, '%copyright%' => '©'] d='Shop.Theme.Global'}
            </a>
          {/block}
        </p>
      </div>
    </div>
  </div>
</div>