【開発コミュニティの人気Tipsをご紹介①】「すぐに購入する」ボタンを追加してみる
こんにちは、EC-CUBEエバンジェリスト 足立智広です。
EC-CUBEでは、ご利用者同士が問題解決方法を投稿・共有できる「開発コミュニティ」を開設し、多くの方にお使いいただいています。
(2017年2月時点で、総メンバー数は19,016名・総投稿数は79,323件です)
この連載では、そんな開発コミュニティで話題となっているカスタマイズをピックアップして、ご紹介していきたいと思います。
EC-CUBE 3.0系に、「すぐに購入する」ボタンを追加するカスタマイズ
今回は、Amazon(アプリ版)のように、「すぐに購入する」ボタンを追加するカスタマイズをご紹介します。
こんな感じの仕様です。
- 商品詳細画面に、「すぐに購入する」ボタンを追加する
- 「すぐに購入する」ボタンを押すと、カート画面ではなく購入確認画面に遷移する
※前提として、EC-CUBE のバージョンは3.0.13です。また、プラグインではなく、本体のコードを直接変更しています。
「システムに業務を合わせる」妥協は終わりにしませんか。複雑な要件も100%叶える、ベンダー依存のない自社専用EC基盤を。
自社要件を相談する
ボタンを追加するためのソースコード
商品詳細画面のテンプレート(twigファイル)に、ボタンのhtmlを記述します。
テンプレートファイルは、src/Eccube/Resource/template/Product/detail.twig にあります。
【POINT】テンプレートの場所は、だいたいURLと同じパスになっているので、URLをヒントに探すとよいでしょう。
detail.twigの244行目付近を以下のように修正します。
お気に入りボタンの下に、「すぐに購入する」ボタンを配置しました。
<li class="col-xs-12 col-sm-8"><button type="submit" id="favorite" class="btn btn-info btn-block" disabled="disabled">お気に入りに追加済みです</button></li>
{% endif %}
</ul>
{% endif %}
<ul class="row">
<li class="col-xs-12 col-sm-8"><button type="submit" id="skip-cart" class="btn btn-default btn-block prevention-btn prevention-mask">すぐに購入する</button></li>
</ul>
</div>
次に、このボタンが押されたときのmode変数を設定するjavaScriptを記述します。
detail.twigの82行目付近を以下のように修正します。
$('#skip-cart').click(function() {
$('#mode').val('skip_cart');
});
以上でtwigファイルの修正は完了です。
「すぐに購入する」ボタンを追加した時のロジックを作成する
カートへの追加や、お気に入りへの追加処理は、ProductControllerで制御されています。
ファイルの場所は、src/Eccube/Controller/ProductController.phpです。
296行目付近を以下のように修正します。
}
return $app->redirect($app->url('cart'));
// mode=shoppingの際は, カート画面をスキップして購入確認画面へリダイレクトする
} elseif ($addCartData['mode'] === 'skip_cart') {
try {
// カートをクリアする.
$app['eccube.service.cart']->clear();
// カートへ商品を追加する.
$app['eccube.service.cart']->addProduct($addCartData['product_class_id'], $addCartData['quantity']);
// カートをロック状態に設定.
$app['eccube.service.cart']->lock();
// カートを保存.
$app['eccube.service.cart']->save();
} catch (CartException $e) {
// エラーが発生した場合は, カート画面で表示させる
$app->addRequestError($e->getMessage());
return $app->redirect($app->url('cart'));
}
// 購入確認画面へリダイレクト.
return $app->redirect($app->url('shopping'));
}
行っている処理を解説すると、
- mode=slip_cartの場合に処理する
- カートをクリアして、商品を追加
- カートをロックして、保存
- 購入確認画面へリダイレクト
ということをやっています。
以上でカスタマイズは完了です。
動作確認をして、購入確認画面へ遷移するか試してみましょう。尚、作成したソースコードの差分は以下でもご覧いただけます。
最後に
いかがでしたでしょうか?
開発コミュニティでは、「EC-CUBE」 をより快適で便利なものにしていくために、エンジニアの方はもちろんのこと、ショップ運営者の方、デザイナーの方など、 EC構築・運営に関わる多くの方々のご参加をお待ちしています。
「どうか教えてください!」「バグ見つけましたよ」「こんな機能あったらなぁ」といったテーマごとにスレッドが分かれていますので、気になるキーワードがあれば一度、開発コミュニティへ訪れてみてください。
他の記事もご覧ください
-
「ECサイトとは?」「ECってどんな意味?」今さら聞けない素朴な疑問を分かりやすく説明!サイト制作や運営のポイントも詳しく解説します
ネット通販は私たちの暮らしにすっかり身近な存在となっていますが、皆さんは「ECサイト」というものについてどのくらい知っていますか?本稿ではECサイトの基本知識から成功するための実践的なポイント、おすすめのEC構築方法などを幅広く解説します。
-
ECサイト運営とは:成功するための実務フロー・必要スキル・よくある課題・改善策を徹底解説!EC-CUBEの活用ポイントも
「これからECサイトを構築することになったが、何から手をつけたらよいかわからない」「ECサイトをリニューアルすることになったが、どのパッケージを使えばベストなのかわからない」「ASPカート、パッケージ、オープンソース、フルスクラッチの違いや特徴がいまいち理解できていない」とお悩みのご担当者は多いのではないでしょうか?この記事ではECサイト制作・構築のステップ、よくある困りごとと対策などを解説していきます。ECサイトをこれから立ち上げる予定の方、リニューアルを検討している方にとって何かひとつでもお役に立てば幸いです。
-
ECサイトの作り方ガイド【初心者向け】無料で始めるECサイト作成の全手順
「ECサイトを作りたいけど、何から始めればいいのか分からない…」というあなた、ご安心ください!ECサイトを立ち上げるまでの流れや準備すること、注意点などを詳しく解説します。無料でサイトを作れる便利なサービスもご紹介していますのでぜひご覧ください。
