EC-CUBE3系での変数確認

 

デジタルドリームワークスからHigaです。
以前にも投稿したと思いますが、EC-CUBE3ではPHPフレームワーク SymfonyベースのSilexを利用しています。
EC-CUBE2系とは全くの別物で、Silexの知識もある程度理解していないとなかなか作業が難しくなっています。

自分はシステムの修正やカスタマイズを行う場合、変数に格納されている値を確認しながら作業を進めていくことが多いです。
PHPの場合は「print_r()」や「var_dump ()」の関数を利用して変数を確認します。
変数を確認することでページ間でどのような値が引き渡しされているのか、また引き渡しデータが正しいか、など順を追って作業することが出来ます。
しかしEC-CUBEでそれらの関数を利用するとずらずらと長いコード返ってきます。
多分 無限ループのような感じです。注意しましょう!

ではどのように変数を確認するのか…

EC-CUBE3.0.8以降では「dump」という関数が使える仕様になりました。
以下のように利用します。

—————

□ Controllerで利用する場合
dump($app)

□ Twigで利用する場合
{{ dump(app) }}

—————

PHP関数の「var_」を付けないなど若干の違いです。
しかしこれを分かっていないと先ほども記載した通り大変な事になります。
また正確に情報を確認出来ません。

というわけでEC-CUBE3系のdumpについてメモでした。
EC-CUBE3系は機能拡張やカスタマイズをプラグインという形で追加していきます。
かなりハードルが上がっていますが

EC-CUBE3 オススメプラグイン

EC-CUBE

EC-CUBE3 おすすめプラグインの紹介

スクリーンショット 2016-06-22 17.55.29

株式会社ロックオン さんが作ったおすすめ商品管理プラグインが便利です!

簡単操作で自分のオススメしたい商品を簡単に紹介する事が出来ます。
プラグインの使い方はすごーーーーーーく簡単です!!!!

インストールするだけで、管理画面の左項目のキャッシュ管理の下におすすめ管理って項目がでてくるので
そこの中に入ります。
スクリーンショット 2016-07-06 18.34.00

スクリーンショット 2016-07-06 18.15.49

 

中に入るとオススメ商品を新規登録というボタンが出てくるのでそこから

スクリーンショット 2016-07-06 18.16.08

スクリーンショット 2016-07-06 18.16.19

商品の登録でおすすめに表示したい商品をいれて行くだけです。
これだけで簡単にページに表示する事が出来ます。

あと、ブロックが勝手に生成されるのでそれをレイアウト編集で入れるのを忘れないでくださいね!

 

EC-CUBE3系 on Plesk! Plesk搭載サーバーでEC-CUBE3系を動かしてみる!

20160628-pict01

デジタルドリームワークスから比嘉です。
今回はPleskが搭載されているサーバーへのEC-CUBEのインストールを行ってみました。
composerを利用したインストールもあるようですが、まだ深く理解出来ていないので今回はファイルをアップしてインストールを行いました。

さて、本題です。
Pleskは標準で搭載されているPHPのバージョンが低いため色々と大変です。
こちらの環境では以下のような作業を踏んでとりあえずインストールまでこぎつけました。

1. Pleskへ新しいバージョンのPHPをインストール
2. FastCGIによるセッションパスの変更
3. PDOモジュールを利用可能に設定
4. PHP タイムゾーンの修正

1. Pleskへ新しいバージョンのPHPをインストール

Plesk搭載サーバーはサーバー管理がとても便利でサイト運営しやすいのですが、その分自由度が落ちる部分もあります。
とくにネックとなるのがPHPのバージョンです。
標準のPHPバージョンが低いため動かないシステムもあります。
自力でPHPをバージョンアップするとPleskがエラーを起こすなど難しい部分がありました。
しかしPleskのバージョンも上がり、環境によってはPHPの高いバージョンがインストール出来たり、複数のPHPバージョンを入れることが出来る様になっているみたいです。
今回試してみた環境は、後者の複数のPHPバージョンのインストールが提供されていました。
Pleskバージョンにより違いはあると思いますが、以下の方法でEC-CUBEが動作するバージョンをインストール。

※ 参照 https://kb.plesk.com/jp/125146

色々と記述されていますが、やったことは
サーバー管理「ツールと設定」->Plesk項目「アップデートおよびアップグレード」->「コンポーネントを追加/削除」->「ウェブホスティング機能」よりEC-CUBEの動くバージョンのPHPをインストールするだけです。

これでホスティング設定よりPHPのバージョンを選択出来る様になります。
ただしインストールしたPHPはFastCGIでしか動作しません。
ここからが試行錯誤の始まりでした。

2. FastCGIによるセッションパスの変更

PHPのバージョンもクリアしたので早速EC-CUBE3系をサーバーへアップ、アクセス権を変更してインストール画面にアクセスします。
するとセッションディレクトリが書き込み&読み込み出来ませんとエラーが出ます。

RuntimeException in NativeFileSessionHandler.php line 52:
Session Storage was not able to create directory “/var/lib/php/session”

これはPHPをFastCGIで実行しているため、実行権限がFTPユーザーになるのが理由のようです。
そこでセッションのパス(session.save_path)を変更します。

まずセッションのディレクトリを作成

mkdir /var/www/vhost/domain.tld/private/php_sess
chown [ftpuser]:psacln /var/www/vhost/domain.tld/private/php_sess
chmod 0700 /var/www/vhost/domain.tld/private/php_sess

※ 参照 https://kb.plesk.com/jp/7056

次にセッションパスの変更

通常はphp.iniを修正しても良いのですが、複数ドメイン管理しているので、Plesk上のPHP設定から「session.save_path」を変更します。
apacheを再起動します。

3. PDOモジュールを利用可能に設定

さてセッションの問題もどうにか解決し、インストールステップを踏めるようになりました。
早速ステップを進めていきます。ところがSTEP3でストップ orz.
エラーの文章を読む感じではPDO部分でエラーが発生している様子でした。
そこでphp.iniを確認し、PDOモジュールを読み込み出来る様に設定します。
こちらもPlesk上で行えそうでしたが、他のドメインでも拡張しても問題ないと判断しphp.iniを修正

;extension=php_pdo.dll

extension=php_pdo.dll

apacheを再起動して再度アクセスすると、すぐにSTEP3が表示されてステップが進めません。
どうもインストール時のキャッシュがどこかで保存されている模様です。
これがどうもよく分からず、今回は再度ファイルをアップし直して、最初からインストール手順を進めました。

4 PHP タイムゾーンの修正

さー、これで大丈夫かと思ったのですが、どうも最後のステップ5で動作が強制的に終了して真っ白な画面になります。
エラーログを見る感じ、FastCGIのリクエストが多いことが原因と思いましたが…
最終的には根本的な問題、タイムゾーンを修正していんトール完了!

date.timezone = Asia/Tokyo

20160628-pict02

さてー、記述してしまえばそこまで長い道のりではないですが試行錯誤をしたため数日を要しました。
管理画面へのログインやフロントページ等、特に問題は無さそうですがここまでの道のりを見ると、本番環境で利用するにはもう少し様子を見た方が良さそうです。
間違えている情報やこんなやると簡単など、情報があればぜひコメントをいただけると幸いです。
よろしくお願い致します。

またサーバーの環境により同じやり方でも上手くいかなかったり、設定変更によりサーバー全体に影響を及ぼしたりします。
みなさんバックアップ等、もしくは設定を元に戻せる状態の準備をして、自己責任で慎重に作業を行いましょう。
EC-CUBE3の情報がまだまだ少ないですが、問題解決の糸口になれば…

EC-CUBE2からEC-CUBE3で変わった事

EC-CUBE

今回は、EC-CUBE2からEC-CUBE3になって変わった事を紹介します。
皆さんもご存知の通りだと思うのですが、EC-CUBE2からEC-CUBE3に大幅アップデートがきましたね。

そこで思った事は、、、、、、

やっぱり最初に気になるのは
EC-CUBE2のSmartyではPHPの直書きが出来てたのがEC-CUBE3ではtwigではPHPが直書きが出来ないので
EC-CUBE2になれてた人はEC−CUBE3になれるのに時間がかかるのでは無いでしょうか。

標準のテーマがレスポンシブ化されている!!

EC-CUBE2ではスマホ用とPC用などディスプレイによって別々に
しなきゃ行けなかったのが一つで対応することができる。
スマートフォンにも対応していて簡易化しているのでスマートフォンから受注の管理などが簡単にできる!!!
ただ、半年たったが現在ダウンロード出来るテーマが少ない!!!テーマが少なすぎる!!(現在2016年6月)
公式から少ないテーマを買って使うか、標準テーマをそのまま使うか、標準テーマをカスタマイズして使うか、1からテーマを作成する
しか使う方法がない!!!
まだ出たばかりなのもあり、もう完成されていてダウンロードできる物が少ないです。カスタマイズしようにも知識が無ければ出来ない事も多く、
全然知識が無い人にはテーマをそのまま使うか選択肢があんまりないテーマをダウンロードして使うしかできないかと思います。

3、プラグインのアップデート

EC-CUBE2では出来なかったプラグインやバージョンのアップグレードがボタン一つ押すだけでアップデート出来るようになった!

 

まだ出たばかりとあってまだまだプラグインも少ないけどこれからどんどん増えてくると思います!
プラグインもEC-CUBE2の中身をちょっとだけ変えただけのものなのかわかりませんがいくつか上手く機能しないものもあり大変だった事もありましたが、
今は無事に使えているので安心してるプラグインもあります(笑)

全然使った事の無いプラグインを使うときはテスト環境でチェックしてから使う事をお勧めします!

私も全然使いこなせて居ないので精進します!

 

 

EC-CUBE3 プラグイン入れ方

eccube

今回はEC-CUBE プラグインの入れ方 自分用メモ、、、、

EC-CUBE公式サイトのトップに飛んで→オーナーズストアの機能カスタマイズ
にいくとプラグインがずらーーーーーっっって並びます。

スクリーンショット 2016-06-22 18.17.25

このように公式プラグインが並びます。
次に入れたいプラグインをクリックして購入するを押すと
スクリーンショット-2016-06-22-18.20.42そして利用するサイトをチェックして購入してください。
その後に自分のEC-CUBEサイトの管理に行って、

サイドバーのオーナーズストア→プラグイン→購入済みプラグインに行くと自分が買ったプラグインがあるのでインストールします。

そうするとブロックを作るプラグインもあれば登録する際に詳細が細かく設定できるプラグインもあるようです。!

 

EC-CUBEでループカウント

eccube

EC-CUBE の自分用メモです。

wordpressなどPHPを触る時に3個の記事ごとにこのコードを記述するなどif文で書く事が良くありますよね?
EC-CUBEでも同じ感じで使う事が出来ます。

<div id=”item_list”>
<div class=”row no-padding”>
{% for Product in pagination %}
<div id=”result_list_box–{{ Product.id }}” class=”col-sm-3 col-xs-6″>
<div id=”result_list__item–{{ Product.id }}” class=”product_item”>
<a href=”{{ url(‘product_detail’, {‘id’: Product.id}) }}“>
<div id=”result_list__image–{{ Product.id }}” class=”item_photo”>
<img src=”{{ app.config.image_save_urlpath }}/{{ Product.main_list_image|no_image_product }}“>
</div>
<dl id=”result_list__detail–{{ Product.id }}“>
<dt id=”result_list__name–{{ Product.id }}” class=”item_name”>{{ Product.name }}</dt>
{% if Product.description_list %}
<dd id=”result_list__description_list–{{ Product.id }}” class=”item_comment”>{{ Product.description_list|raw|nl2br }}</dd>
{% endif %}
{% if Product.hasProductClass %}
{% if Product.getPrice02Min == Product.getPrice02Max %}
<dd id=”result_list__price02_inc_tax–{{ Product.id }}” class=”item_price”>
{{ Product.getPrice02IncTaxMin|price }}
</dd>
{% else %}
<dd id=”result_list__price02_inc_tax–{{ Product.id }}” class=”item_price”>
{{ Product.getPrice02IncTaxMin|price }} ~ {{ Product.getPrice02IncTaxMax|price }}
</dd>
 {% endif %}
{% else %}
<dd id=”result_list__price02_inc_tax–{{ Product.id }}” class=”item_price”>{{ Product.getPrice02IncTaxMin|price }}</dd>
{% endif %}
</dl>
</a>
</div>
</div>
{% endfor %}
</div>

</div>

(これはデフォルトのlist.twig から抜粋してます。)

これだけの記述だとそれぞれの高さが違ったり3カラムで記事を並べる際に4個目がくると上に詰めますよね?

そういう時に3個並んで4個目にはclear:both を挟んだりしたい場合に結構やくにたちます。

{% if loop.index %2==0 %}
表示させたいコード
{% endif %}

このコードをループの一番下に記述してください。

{% endfor %}のすぐ上に追加です。

%2と記述されてる所に何番目になので2の数字を変える事で4番目、5番目と変える事が出来ます。

 

EC-CUBE 商品を個別にデザインを変える方法

eccubeEC-CUBE 自分用メモ

EC-CUBEの商品を個別にデザインしたいときありますよね?
その時に簡単に個別でできる方法を記載します。ほとんど何も触る必要は無いです。

商品管理→商品追加から追加ページを開いて、

スクリーンショット-2016-05-25-18.18.15

このフリーエリアをクリックすると開くので

スクリーンショット-2016-05-25-18.18.35

この中にhtmlで画像も全部表示することが出来ます。
ただdetile.twigファイルの中に

{% if Product.freearea %}

{{ include(template_from_string(Product.freearea)) }}

{% endif %}

この表記が無いとフリーエリアが表示されないので注意しましょう!!

EC-CUBE プロダクトページコード

eccube

プロダクトページで使うコードメモ

{{ Product.name }} 商品名を表示
{% for ProductCategory in Product.ProductCategories %}

{% for Category in ProductCategory.Category.path %}
<a id=”relative_category_box__relative_category–{{ ProductCategory.product_id }}_{{ loop.parent.loop.index }}_{{ Category.id }}” href=”{{ url(‘product_list’) }}?category_id={{ Category.id }}”>{{ Category.name }}</a>
{% endfor %}

{% endfor %}

上記のコードでループでカテゴリー表示です。

{% for ProductCategory in Product.ProductCategories %}

{% endfor %}

カテゴリーのループです。

{% for Category in ProductCategory.Category.path %}
<a id=”relative_category_box__relative_category–{{ ProductCategory.product_id }}_{{ loop.parent.loop.index }}_{{ Category.id }}” href=”{{ url(‘product_list’) }}?category_id={{ Category.id }}”>{{ Category.name }}</a>
{% endfor %}

カテゴリー設定したカテゴリーがある分全表示(リンク付き) WPのループでカテゴリ追加と一緒なのですが、書き方が少しかわってきます。

{{ Product.code_min }}
{% if Product.code_min != Product.code_max %} ~ {{ Product.code_max }}
{% endif %}

商品登録画面で設定した 商品コードの表示 複数登録したやつも最初に登録した順から表示されます。

{% if Product.hasProductClass -%}
{% if Product.getPrice01Min is not null and Product.getPrice01Min == Product.getPrice01Max %}
通常価格:{{ Product.getPrice01IncTaxMin|number_format }}円(税込)
{% elseif Product.getPrice01Min is not null and Product.getPrice01Max is not null %}
通常価格:{{ Product.getPrice01IncTaxMin|number_format }} ~ {{ Product.getPrice01IncTaxMax|number_format }}円(税込)
{% endif %}
{% else -%}

↓消費税

{% if Product.getPrice01Max is not null %}
通常価格:{{ Product.getPrice01IncTaxMin|number_format }}円(税込)
{% endif %}
{% endif -%}

値段表示のコードです。標準のままだとnumber_formatでは無くpriceになってます。

price は値段表示 自動で¥が入ります。

number_format 数字表示 後ろに単位を設定できる。 ※¥が表示されません。

 

自分もec-cube初心者ですが、みなさんの役にたってもらえると嬉しいです!

 

EC-CUBE 値段表記メモ

eccube

EC-CUBEの初期の値段表示タグは {{ Product.getPrice02IncTaxMin|price }}となっていて、

この初期の状態だと値段は出るが¥1000(値段が1000円だとして)という表記になっている。

このタグは税金の%を管理画面の方で設定していたら税込みで表示されます。

ただ{{ Product.getPrice02IncTaxMin|price }}状態だと表記が¥1000で表記されるため人によっては、

見やすい1000円の表記に変えたいですよね!?

{{ Product.getPrice02IncTaxMin|price }}このタグの{{ Product.getPrice02IncTaxMin|price }}このpriceとかかれた部分が

値段の表示設定になっていてpriceは値段表示という設定になっています。このpriceの部分を

number_formatに書き換える事で数字表示に切り替える事が出来ます。

{{ Product.getPrice02IncTaxMin|number_format }}円 と記述することによって 1000円という表示に切り替える事ができます。

 

EC-CUBE フレーム#2

eccube

EC-CUBE フレームメモ #2

スクリーンショット 2016-03-09 18.26.59

ここに書かれてる{% if —— %}〜{% endif %} この区切りがEC-CUBE内の

 

コンテンツ管理->ページ管理->レイアウト編集 の中身に連動していてこの中にblockをはめてページのレイアウトを作って行きます。

 

スクリーンショット 2016-03-16 18.49.06ここで自分の作ったブロックをドラッグして入れて行きます。

このMainと書かれた部分だけは同じディレクトリにあるindex.twig のデータが来るようになっていて注意が必要です!

この枠にはめて行く作業は大変ですが Blockって形でどのページにも同じブロックを入れて行けるので結構便利です!