カートのカスタマイズ カートの仕様
カートのカスタマイズをしたいという要望がちらほらと出てきましたので
SOY Shop 1.13.3現在のカートの仕様を解説します。
マニュアルに記載されているカートの仕様は、
/CMSインストールディレクトリ/soyshop/webapp/src/cart/以下の各カートディレクトリに
テンプレート(htmlファイル)とスクリプト(phpファイル)が同梱されていましたが、
カスタマイズ専用カートを用意する | SOY Shopマニュアル
現在のバージョンでは、
_commonディレクトリにスクリプト、bryonディレクトリにテンプレートと、
スクリプトとテンプレートの切り分けを行いました。
背景はスマホ用のカートを用意する際に、
スクリプトを共通管理をしたかったからです。
切り分けを行ったということで、
bryonと_commonを紐づける処理が当然あるわけで、
今回はbryonカートを読み込む時に
どのように_commonのスクリプトを読み込んでいるか?を説明します。
各カートの構成は、
ページの表示に関するファイルを格納するpagesディレクトリと
cart.php
class.php
page.php
で構成されています。
pagesディレクトリに関しては、SOY Appの管理画面のページの追加の方法がベースになっていますので、
はじめに下記の記事を読んでください。
一旦、htmlファイルとphpファイルが別ディレクトリに格納されている件はおいといて、
読み込むファイルの順番を記載します。
公開側にカートの設置を行う場合、
<!-- shop:module="common.cart_application" /-->
カートページのテンプレートに上記のコードを記述します。
カートページが読み込まれ表示される際に
はじめに
/CMSインストールディレクトリ/soyshop/webapp/src/module/site/common/cart_application.phpが読み込まれ
<?php function soyshop_cart_application($html, $htmlObj){ $cartId = $htmlObj->getCartId(); ob_start(); include(SOY2::RootDir() . "cart/${cartId}/page.php"); $html = ob_get_contents(); ob_end_clean(); echo $html; } ?>
管理画面で指定したカートIDにあるpage.phpを読みに行きます。
ディフォルトでは、bryonカートを指定しているので、
このファイルを読みに行きます。
page.phpを開いてみると
<?php //共通ロジックを使う include_once(dirname(dirname(__FILE__)) . "/_common/page.php"); ?>
いきなり、
/CMSインストールディレクトリ/soyshop/webapp/src/cart/_commonディレクトリのpage.phpを読んでいます。
次に、_commonディレクトリ内のpage.phpを見てみると
初めに同階層にあるclasses.phpを読み込んで、
WebPageクラスを継承したMainCartPageBaseクラスを読み込みます。
pagesディレクトリ以下にあるCart0XPage.class.phpはMainCartPageBaseクラスを継承したクラスとなっており、
getTemplateFilePath関数でpages以下のphpファイルと対になるhtmlファイルの箇所を指定しています。
標準では、bryon/pages/以下のhtmlファイルを読み込むようになっています。
次の記事で、
本使用でのカートのカスタマイズ方法を記載します。
追記
cart.phpは商品をカートに入れた時に
カートのページ番号の初期化のために読み込まれます。