カートページを表示する2
前回はページコントローラでカートを表示するところを説明しましたが、
肝心なカートのフォームの出力に関しては触れていません。
今回は各カートの表示についてを説明します。
(各カート→bryonやsmartといった管理画面で設定するカートのこと)
前回の続きでSOYShopSiteController.phpのcommon_execute()を見ていきます。
common_executeは
/soyshop/webapp/src/base/site/SOYShopPageBase.phpにある関数で、
<head>内のmetaの置換を行う他、
パーツモジュール(shop:module)の実行も行います。
($this->buildModules()内で実行しています)
カートはカートのテンプレートに
<!-- shop:module="common.cart_applicatoin" /-->と記述することでフォームの箇所が表示されます。
このパーツモジュールのファイルである
/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;
}
?>
上記のコードにあるように、
/soyshop/webapp/src/cart/bryon/page.phpを読みに行きます。
(SOY2RootDir()では、/soyshop/webapp/srcを出力し、説明はディフォルト設定のbryonカートで進めます。)
bryonカートのpage.phpを見ると
<?php //共通ロジックを使う include_once(dirname(dirname(__FILE__)) . "/_common/page.php"); ?>
_commonのpage.phpを読みに行きます。
(/soyshop/webapp/src/cart/_common/page.php)
要点をまとめると
include_once(dirname(__FILE__) . "/classes.php"); SOY2HTMLConfig::PageDir(dirname(__FILE__) . "/pages/");
これでカートの各スクリプトは/_common/pages/以下のファイルから取得し、
$templateDir = SOYSHOP_SITE_DIRECTORY . ".template/cart/" . SOYSHOP_CURRENT_CART_ID . "/";
define("SOYSHOP_DEFAULT_CART_TEMPLATE_DIR",soy2_realpath(dirname(dirname(__FILE__))."/".SOYSHOP_CURRENT_CART_ID) . "pages/");
if(file_exists($templateDir)){
define("SOYSHOP_MAIN_CART_TEMPLATE_DIR", $templateDir);
}else{
define("SOYSHOP_MAIN_CART_TEMPLATE_DIR", SOYSHOP_DEFAULT_CART_TEMPLATE_DIR);
}
HTMLファイルは/bryon/pages/以下のファイルから取得する。
$pageId = $cart->getAttribute("page");
if(is_null($pageId)) $pageId = "Cart01";
今開いているカートが何ページ目か?を調べ
(顧客情報はCart02、支払方法の選択がCart03)
try{
$page = SOY2HTMLFactory::createInstance($pageId . "Page");
$page->display();
}catch(Exception $e){
$cart->clearAttribute("page");
$page = SOY2HTMLFactory::createInstance("ErrorPage");
$page->display();
}
フォームのページを指定して/_common/pages/以下から該当するページのPHPファイルを取得、
/bryon/pages/以下からHTMLファイルを取得して表示します。
2014.03.29 | Comments(0) | Trackback(0)
トラックバック -