バージョン選択

フォーラム

メニュー

オンライン状況

41 人のユーザが現在オンラインです。 (20 人のユーザが フォーラム を参照しています。)
登録ユーザ: 0
ゲスト: 41
もっと...

サイト内検索

機能要望 > フロント機能 > 規格で分けられた商品の価格表示

フロント機能

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
duckei
投稿日時: 2008/4/3 8:38
対応状況: −−−
半人前
登録日: 2008/3/19
居住地:
投稿: 23
Re: 規格で分けられた商品の価格表示
CAT様
私の環境が2.01のため1.45での動作確認ができないのと細かくコードを拝見してないので、ハッキリとしたことは言えないのですが

139行目

list($classcategory_id1, $classcategory_id2) = explode("-", $_POST[$classcategory_id. '_mixed']);


のあとに

 gfPrintLog("[D]統合版セレクトボックスのパース:規格1 = " . $classcategory_id1);
 gfPrintLog("[D]統合版セレクトボックスのパース:規格2 = " . $classcategory_id2); 


がなかったりと羽生様に提示していただいたコードとは、少し違うように感じます。まずはその辺を書き直してみてはいかがでしょうか。
CAT
投稿日時: 2008/4/3 17:39
対応状況: −−−
半人前
登録日: 2007/11/29
居住地:
投稿: 17
解決しました(^^;
自己レスです。
皆様のアドバイスに従ってもう一度内容を確認してみました。
規格毎の価格を取得するコードを追加していなかった為発生した模様です。

412行目の

引用:

$col = "product_class_id, classcategory_id1, classcategory_id2, class_id1, class_id2, stock, stock_unlimited";




引用:

$col = "product_class_id, classcategory_id1, classcategory_id2, class_id1, class_id2, stock, stock_unlimited, price02";


の様に修正したら価格も表示されるようになりました。

アドバイスしていただいた皆様ありがとうございます。
gunpowder
投稿日時: 2009/6/26 0:50
対応状況: −−−
半人前
登録日: 2009/6/21
居住地:
投稿: 17
Re: 規格で分けられた商品の価格表示 パンくずナビが...
これはすばらしいものをありがとうございました。

早速適用してうまくいきましたが、パンくずナビ? 関連カテゴリ: 食品>おなべ   などの表記が消えてしまいます。

そこら辺のタグはさわってなくてLC_Page_Products_Detail.php
置き換え直後に発生するようです。

解決方法があれば教えてください。

バージョンは2.4.0です。
mituki
投稿日時: 2009/7/27 19:03
対応状況: −−−
新米
登録日: 2009/7/8
居住地:
投稿: 6
Re: 規格で分けられた商品の価格表示 パンくずナビが...
Version 2.4.1にて、
丸々コピペだと予想通り動作しない部分があったので差分取りつつ修正してみました。
パスは適当に読み替えてください。

規格のあるなしの判断部分
<!--{if $tpl_classcat_find1 && tpl_classcat_find2}-->
がちょっと心配です。

<!--{if $tpl_classcat_find1 || tpl_classcat_find2}-->
かと思うのですが何故か↑でちゃんと動作するようになります。

以下引用。

/var/www/html/user_data/packages/default/detail.tpl
引用:

<!--{*
* This file is part of EC-CUBE
* Copyright(c) 2000-2007 LOCKON CO.,LTD. All Rights Reserved.
*}-->
<script type="text/javascript">//<![CDATA[
// セレクトボックスに項目を割り当てる。
function lnSetSelect(form, name1, name2, val) {

sele11 = document[form][name1];
sele12 = document[form][name2];

if(sele11 && sele12) {
index = sele11.selectedIndex;

// セレクトボックスのクリア
count = sele12.options.length;
for(i = count; i >= 0; i--) {
sele12.options[i] = null;
}

// セレクトボックスに値を割り当てる
len = lists[index].length;
for(i = 0; i < len; i++) {
sele12.options[i] = new Option(lists[index][i], vals[index][i]);
if(val != "" && vals[index][i] == val) {
sele12.options[i].selected = true;
}
}
}
}
//]]>
</script>

<!--▼CONTENTS-->
<div id="undercolumn">
<div id="detailtitle"><h2><!--★タイトル★--><!--{$tpl_subtitle|escape}--></h2></div>
<p><!--★詳細メインコメント★--><!--{$arrProduct.main_comment|nl2br}--></p>

<div id="detailarea">
<div id="detailphotoblock">

<!--{assign var=key value="main_image"}-->
<!--{if $arrProduct.main_large_image != ""}-->
<!--★画像★-->
<a href="java script:void(win01('./detail_image.php?product_id=<!--{$arrProduct.product_id}-->&image=main_large_image<!--{if $smarty.get.admin == 'on'}-->&admin=on<!--{/if}-->','detail_image','<!--{$arrFile.main_large_image.width+60}-->', '<!--{$arrFile.main_large_image.height+80}-->'))">
<img src="<!--{$arrFile[$key].filepath}-->" width="<!--{$arrFile[$key].width}-->" height="<!--{$arrFile[$key].height}-->" alt="<!--{$arrProduct.name|escape}-->" class="picture" />
</a>
<p>
<!--★拡大する★-->
<a href="java script:void(win01('./detail_image.php?product_id=<!--{$arrProduct.product_id}-->&image=main_large_image<!--{if $smarty.get.admin == 'on'}-->&admin=on<!--{/if}-->','detail_image','<!--{$arrFile.main_large_image.width+60}-->', '<!--{$arrFile.main_large_image.height+80}-->'))" onmouseover="chgImg('<!--{$TPL_DIR}-->img/products/b_expansion_on.gif','expansion01');" onMouseOut="chgImg('<!--{$TPL_DIR}-->img/products/b_expansion.gif','expansion01');">
<img src="<!--{$TPL_DIR}-->img/products/b_expansion.gif" width="85" height="13" alt="画像を拡大する" name="expansion01" id="expansion01" />
</a>
</p>
<!--{else}-->
<img src="<!--{$arrFile[$key].filepath}-->" width="<!--{$arrFile[$key].width}-->" height="<!--{$arrFile[$key].height}-->" alt="<!--{$arrProduct.name|escape}-->" class="picture" />
<!--{/if}-->
</div>

<div id="detailrightblock">
<!--アイコン-->
<!--{if count($arrProduct.product_flag) > 0}-->
<ul class="status_icon">
<!--{section name=flg loop=$arrProduct.product_flag|count_characters}-->
<!--{if $arrProduct.product_flag[flg] == "1"}-->
<li>
<!--{assign var=key value="`$smarty.section.flg.iteration`"}-->
<img src="<!--{$TPL_DIR}--><!--{$arrSTATUS_IMAGE[$key]}-->" width="65" height="17" alt="<!--{$arrSTATUS[$key]}-->" id="icon<!--{$key}-->" />
</li>
<!--{/if}-->
<!--{/section}-->
</ul>
<!--{/if}-->

<!--★商品コード★-->
<!--{assign var=codecnt value=$arrProductCode|@count}-->
<!--{assign var=codemax value=`$codecnt-1`}-->
<div>商品コード:
<!--{if $codecnt > 1}-->
<!--{$arrProductCode.0}-->〜<!--{$arrProductCode[$codemax]}-->
<!--{else}-->
<!--{$arrProductCode.0}-->
<!--{/if}-->
</div>
<h2><!--★商品名★--><!--{$arrProduct.name|escape}--></h2>
<!--★価格★-->
<div><!--{$smarty.const.SALE_PRICE_TITLE}--><span class="mini">(税込)</span>:
<span class="price">
<!--{if $arrProduct.price02_min == $arrProduct.price02_max}-->
<!--{$arrProduct.price02_min|sfPreTax:$arrSiteInfo.tax:$arrSiteInfo.tax_rule|number_format}-->
<!--{else}-->
<!--{$arrProduct.price02_min|sfPreTax:$arrSiteInfo.tax:$arrSiteInfo.tax_rule|number_format}-->〜<!--{$arrProduct.price02_max|sfPreTax:$arrSiteInfo.tax:$arrSiteInfo.tax_rule|number_format}-->
<!--{/if}-->円</span></div>
<div>
<!--{if $arrProduct.price01_max > 0}-->
<span class="price"><!--{$smarty.const.NORMAL_PRICE_TITLE}-->:
<!--{if $arrProduct.price01_min == $arrProduct.price01_max}-->
<!--{$arrProduct.price01_min|number_format}-->
<!--{else}-->
<!--{$arrProduct.price01_min|number_format}-->〜<!--{$arrProduct.price01_max|number_format}-->
<!--{/if}-->円</span>
<!--{/if}-->
</div>

<!--★ポイント★-->
<!--{if $smarty.const.USE_POINT === true}-->
<div><span class="price">ポイント:
<!--{if $arrProduct.price02_min == $arrProduct.price02_max}-->
<!--{$arrProduct.price02_min|sfPrePoint:$arrProduct.point_rate:$smarty.const.POINT_RULE:$arrProduct.product_id}-->
<!--{else}-->
<!--{if $arrProduct.price02_min|sfPrePoint:$arrProduct.point_rate:$smarty.const.POINT_RULE:$arrProduct.product_id == $arrProduct.price02_max|sfPrePoint:$arrProduct.point_rate:$smarty.const.POINT_RULE:$arrProduct.product_id}-->
<!--{$arrProduct.price02_min|sfPrePoint:$arrProduct.point_rate:$smarty.const.POINT_RULE:$arrProduct.product_id}-->
<!--{else}-->
<!--{$arrProduct.price02_min|sfPrePoint:$arrProduct.point_rate:$smarty.const.POINT_RULE:$arrProduct.product_id}-->〜<!--{$arrProduct.price02_max|sfPrePoint:$arrProduct.point_rate:$smarty.const.POINT_RULE:$arrProduct.product_id}-->
<!--{/if}-->
<!--{/if}-->Pt</span></div>
<!--{/if}-->

<!--{* 関連カテゴリ *}-->
<div>関連カテゴリ:
<!--{section name=r loop=$arrRelativeCat}-->
<p>
<!--{section name=s loop=$arrRelativeCat[r]}-->
<a href="<!--{$smarty.const.URL_DIR}-->products/list.php?category_id=<!--{$arrRelativeCat[r][s].category_id}-->"><!--{$arrRelativeCat[r][s].category_name}--></a>
<!--{if !$smarty.section.s.last}--><!--{$smarty.const.SEPA_CATNAVI}--><!--{/if}-->
<!--{/section}-->
</p>
<!--{/section}-->
</div>


<form name="form1" id="form1" method="post" action="<!--{$smarty.server.REQUEST_URI|escape}-->">
<input type="hidden" name="mode" value="cart" />
<input type="hidden" name="product_id" value="<!--{$tpl_product_id}-->" />
<input type="hidden" name="favorite_product_id" value="" />

<!--{if $tpl_stock_find}-->

<!--{if $tpl_classcat_find1 && tpl_classcat_find2}-->
<dl>
<dt>
<!--{$tpl_class_name1}--> <!--{$tpl_class_name2}-->
</dt>
<dd>
<select name="classcategory_id_mixed">
<!--{html_options options=$arrClassCat1_2}-->
</select>
</dd>
</dl>
<!--{/if}-->

<dl>
<dt>個&nbsp;&nbsp;数</dt>
<dd><input type="text" name="quantity" class="box54" value="<!--{$arrForm.quantity.value|default:1}-->" maxlength="<!--{$smarty.const.INT_LEN}-->" style="<!--{$arrErr.quantity|sfGetErrorColor}-->" />
<!--{if $arrErr.quantity != ""}-->
<br /><span class="attention"><!--{$arrErr.quantity}--></span>
<!--{/if}-->
</dd>
</dl>

<p class="btn">

<!--{if $smarty.const.OPTION_FAVOFITE_PRODUCT == 1 && $tpl_login === true}-->
<!--{assign var=add_favorite value="add_favorite`$product_id`"}-->
<!--{if $arrErr[$add_favorite]}--><div class="attention"><!--{$arrErr[$add_favorite]}--></div><!--{/if}-->
<!--{if !$arrProduct.favorite_count}-->
<a href="java script:fnModeSubmit('add_favorite','favorite_product_id','<!--{$arrProduct.product_id|escape}-->');" onmouseover="chgImg('<!--{$TPL_DIR}-->img/products/add_favolite_product_on.gif','add_favolite_product');" onmouseout="chgImg('<!--{$TPL_DIR}-->img/products/add_favolite_product.gif','add_favolite_product');">
<img src="<!--{$TPL_DIR}-->img/products/add_favolite_product.gif" width="115" height="20" alt="お気に入りに追加" name="add_favolite_product" id="add_favolite_product" />
</a>
<!--{/if}-->
<!--{/if}-->
<!--★カゴに入れる★-->
<a href="java script:void(document.form1.submit())" onmouseover="chgImg('<!--{$TPL_DIR}-->img/products/b_cartin_on.gif','cart');" onmouseout="chgImg('<!--{$TPL_DIR}-->img/products/b_cartin.gif','cart');">
<img src="<!--{$TPL_DIR}-->img/products/b_cartin.gif" width="115" height="25" alt="カゴに入れる" name="cart" id="cart" />
</a>
</p>
<!--{if 'sfGMODetailDisplay'|function_exists}--><!--{* GMOワンクリック *}-->
<!--{'sfGMODetailDisplay'|call_user_func}-->
<!--{/if}-->
<!--{else}-->
<div class="attention">申し訳ございませんが、只今品切れ中です。</div>
<!--{/if}-->
</form>

</div>
</div>
<!--{* オペビルダー用 *}-->
<!--{if "sfViewDetailOpe"|function_exists === TRUE}-->
<!--{include file=`$smarty.const.MODULE_PATH`mdl_opebuilder/detail_ope_view.tpl}-->
<!--{/if}-->
<!--詳細ここまで-->

<!--▼サブコメントここから-->
<!--{section name=cnt loop=$smarty.const.PRODUCTSUB_MAX}-->
<!--{assign var=key value="sub_title`$smarty.section.cnt.index+1`"}-->
<!--{if $arrProduct[$key] != ""}-->
<div class="subarea">
<h3><!--★サブタイトル★--><!--{$arrProduct[$key]|escape}--></h3>
<!--{assign var=ckey value="sub_comment`$smarty.section.cnt.index+1`"}-->

<!--拡大写真がある場合ここから-->
<!--{assign var=key value="sub_image`$smarty.section.cnt.index+1`"}-->
<!--{assign var=lkey value="sub_large_image`$smarty.section.cnt.index+1`"}-->
<!--{if $arrFile[$key].filepath != ""}-->
<div class="subtext"><!--★サブテキスト★--><!--{$arrProduct[$ckey]|nl2br}--></div>
<div class="subphotoimg">
<!--{if $arrFile[$lkey].filepath != ""}-->
<a href="<!--{$smarty.server.PHP_SELF|escape}-->" onclick="win01('./detail_image.php?product_id=<!--{$arrProduct.product_id}-->&image=<!--{$lkey}--><!--{if $smarty.get.admin == 'on'}-->&admin=on<!--{/if}-->','detail_image','<!--{$arrFile[$lkey].width+60}-->','<!--{$arrFile[$lkey].height+80}-->'); return false;" target="_blank">
<!--{/if}-->
<!--サブ画像-->
<img src="<!--{$arrFile[$key].filepath}-->" alt="<!--{$arrProduct.name|escape}-->" width="<!--{$smarty.const.NORMAL_SUBIMAGE_WIDTH}-->" height="<!--{$smarty.const.NORMAL_SUBIMAGE_WIDTH}-->" />
<!--{if $arrFile[$lkey].filepath != ""}-->
</a>
<p>
<a href="<!--{$smarty.server.PHP_SELF|escape}-->"
onclick="win01('./detail_image.php?product_id=<!--{$arrProduct.product_id}-->&image=<!--{$lkey}--><!--{if $smarty.get.admin == 'on'}-->&admin=on<!--{/if}-->','detail_image','<!--{$arrFile[$lkey].width+60}-->','<!--{$arrFile[$lkey].height+80}-->'); return false;"
onmouseover="chgImg('<!--{$TPL_DIR}-->img/products/b_expansion_on.gif','expansion02');"
onmouseout="chgImg('<!--{$TPL_DIR}-->img/products/b_expansion.gif','expansion02');" target="_blank">
<img src="<!--{$TPL_DIR}-->img/products/b_expansion.gif" width="85" height="13" alt="画像を拡大する" />
</a>
</p>
<!--{/if}-->
</div>
<!--拡大写真がある場合ここまで-->
<!--{else}-->
<p><!--★サブテキスト★--><!--{$arrProduct[$ckey]|nl2br}--></p>
<!--{/if}-->
</div>
<!--{/if}-->
<!--{/section}-->
<!--▲サブコメントここまで-->


<!--この商品に対するお客様の声-->
<div id="customervoicearea">
<h2><img src="<!--{$TPL_DIR}-->img/products/title_voice.jpg" width="580" height="30" alt="この商品に対するお客様の声" /></h2>

<!--{if count($arrReview) < $smarty.const.REVIEW_REGIST_MAX}-->
<!--★新規コメントを書き込む★-->
<a href="./review.php"
onclick="win02('./review.php?product_id=<!--{$arrProduct.product_id}-->','review','580','580'); return false;"
onmouseover="chgImg('<!--{$TPL_DIR}-->img/products/b_comment_on.gif','review');"
onmouseout="chgImg('<!--{$TPL_DIR}-->img/products/b_comment.gif','review');" target="_blank">
<img src="<!--{$TPL_DIR}-->img/products/b_comment.gif" width="150" height="22" alt="新規コメントを書き込む" name="review" id="review" />
</a>
<!--{/if}-->

<!--{if count($arrReview) > 0}-->
<ul>
<!--{section name=cnt loop=$arrReview}-->
<li>
<p class="voicedate"><!--{$arrReview[cnt].create_date|sfDispDBDate:false}--> 投稿者:<!--{if $arrReview[cnt].reviewer_url}--><a href="<!--{$arrReview[cnt].reviewer_url}-->" target="_blank"><!--{$arrReview[cnt].reviewer_name|escape}--></a><!--{else}--><!--{$arrReview[cnt].reviewer_name|escape}--><!--{/if}--> おすすめレベル:<span class="price"><!--{assign var=level value=$arrReview[cnt].recommend_level}--><!--{$arrRECOMMEND[$level]|escape}--></span></p>
<p class="voicetitle"><!--{$arrReview[cnt].title|escape}--></p>
<p class="voicecomment"><!--{$arrReview[cnt].comment|escape|nl2br}--></p>
</li>
<!--{/section}-->
</ul>
<!--{/if}-->
</div>
<!--お客様の声ここまで-->


<!--{if $arrTrackbackView == "ON"}-->
<!--▼トラックバックここから-->
<div id="trackbackarea">
<h2><img src="<!--{$TPL_DIR}-->img/products/title_tb.jpg" width="580" height="30" alt="この商品に対するトラックバック" /></h2>
<h3>この商品のトラックバック先URL</h3>
<input type="text" name="trackback" value="<!--{$trackback_url}-->" size="100" class="box500" />

<!--{if $arrTrackback}-->
<ul>
<!--{section name=cnt loop=$arrTrackback}-->
<li><strong><!--{$arrTrackback[cnt].create_date|sfDispDBDate:false}--> <a href="<!--{$arrTrackback[cnt].url}-->" target="_blank"><!--{$arrTrackback[cnt].title|escape}--></a> from <!--{$arrTrackback[cnt].blog_name|escape}--></strong>
<p><!--{$arrTrackback[cnt].excerpt|escape|mb_strimwidth:0:200:"..."}--></p></li>
<!--{/section}-->
</ul>
<!--{/if}-->
<!--▲トラックバックここまで-->
</div>
<!--{/if}-->


<!--▼オススメ商品ここから-->
<!--{if $arrRecommend}-->
<div id="whoboughtarea">
<h2><img src="<!--{$TPL_DIR}-->img/products/title_recommend.jpg" width="580" height="30" alt="オススメ商品" /></h2>
<div class="whoboughtblock">

<!--{section name=cnt loop=$arrRecommend}-->
<!--{if ($smarty.section.cnt.index % 2) == 0}-->
<!--{if $arrRecommend[cnt].product_id}-->
<!-- 左列 -->
<div class="whoboughtleft">
<!--{if $arrRecommend[cnt].main_list_image != ""}-->
<!--{assign var=image_path value="`$arrRecommend[cnt].main_list_image`"}-->
<!--{else}-->
<!--{assign var=image_path value="`$smarty.const.NO_IMAGE_DIR`"}-->
<!--{/if}-->

<a href="<!--{$smarty.const.DETAIL_P_HTML}--><!--{$arrRecommend[cnt].product_id}-->">
<img src="<!--{$smarty.const.SITE_URL}-->resize_image.php?image=<!--{$image_path|sfRmDupSlash}-->&width=65&height=65" alt="<!--{$arrRecommend[cnt].name|escape}-->" />
</a>

<!--{assign var=price02_min value=`$arrRecommend[cnt].price02_min`}-->
<!--{assign var=price02_max value=`$arrRecommend[cnt].price02_max`}-->
<h3><a href="<!--{$smarty.const.DETAIL_P_HTML}--><!--{$arrRecommend[cnt].product_id}-->"><!--{$arrRecommend[cnt].name|escape}--></a></h3>

<p>価格<span class="mini">(税込)</span>:<span class="price">
<!--{if $price02_min == $price02_max}-->
<!--{$price02_min|sfPreTax:$arrSiteInfo.tax:$arrSiteInfo.tax_rule|number_format}-->
<!--{else}-->
<!--{$price02_min|sfPreTax:$arrSiteInfo.tax:$arrSiteInfo.tax_rule|number_format}-->〜<!--{$price02_max|sfPreTax:$arrSiteInfo.tax:$arrSiteInfo.tax_rule|number_format}-->
<!--{/if}-->円</span></p>
<p class="mini"><!--{$arrRecommend[cnt].comment|escape|nl2br}--></p>
</div>
<!-- 左列 -->
<!--{/if}-->
<!--{/if}-->

<!--{if ($smarty.section.cnt.index % 2) != 0}-->
<!--{* assign var=nextCnt value=$smarty.section.cnt.index+1 *}-->
<!--{if $arrRecommend[cnt].product_id}-->
<!-- 右列 -->
<div class="whoboughtright">
<!--{if $arrRecommend[cnt].main_list_image != ""}-->
<!--{assign var=image_path value="`$arrRecommend[cnt].main_list_image`"}-->
<!--{else}-->
<!--{assign var=image_path value="`$smarty.const.NO_IMAGE_DIR`"}-->
<!--{/if}-->
<a href="<!--{$smarty.const.DETAIL_P_HTML}--><!--{$arrRecommend[cnt].product_id}-->">
<img src="<!--{$smarty.const.SITE_URL}-->resize_image.php?image=<!--{$image_path|sfRmDupSlash}-->&width=65&height=65" alt="<!--{$arrRecommend[cnt].name|escape}-->" />
</a>

<!--{assign var=price02_min value=`$arrRecommend[cnt].price02_min`}-->
<!--{assign var=price02_max value=`$arrRecommend[cnt].price02_max`}-->
<h3><a href="<!--{$smarty.const.DETAIL_P_HTML}--><!--{$arrRecommend[cnt].product_id}-->"><!--{$arrRecommend[cnt].name|escape}--></a></h3>

<p>価格<span class="mini">(税込)</span>:<span class="price">

<!--{if $price02_min == $price02_max}-->
<!--{$price02_min|sfPreTax:$arrSiteInfo.tax:$arrSiteInfo.tax_rule|number_format}-->
<!--{else}-->
<!--{$price02_min|sfPreTax:$arrSiteInfo.tax:$arrSiteInfo.tax_rule|number_format}-->〜<!--{$price02_max|sfPreTax:$arrSiteInfo.tax:$arrSiteInfo.tax_rule|number_format}-->
<!--{/if}-->円</span></p>
<p class="mini"><!--{$arrRecommend[cnt].comment|escape|nl2br}--></p>
</div>
<!-- 右列 -->
<!--{/if}-->
<!--{/if}-->

<!--{if $smarty.section.cnt.last}-->
</div>
<!--{/if}-->
<!--{/section}-->
</div>
<!--{/if}-->
</div>
<!--▲CONTENTS-->


/var/www/data/class/pages/products/LC_Page_Products_Detail.php
引用:

<?php
/*
* This file is part of EC-CUBE
* Copyright(c) 2000-2007 LOCKON CO.,LTD. All Rights Reserved.
* http://www.lockon.co.jp/
*/

// {{{ requires
require_once(CLASS_PATH . "pages/LC_Page.php");

if (file_exists(MODULE_PATH . "mdl_gmopg/inc/function.php")) {
require_once(MODULE_PATH . "mdl_gmopg/inc/function.php");
}
/**
* 商品詳細 のページクラス.
*
* @package Page
* @author LOCKON CO.,LTD.
* @version $Id:LC_Page_Products_Detail.php 15532 2007-08-31 14:39:46Z nanasess $
*/
class LC_Page_Products_Detail extends LC_Page {

/** ステータス */
var $arrSTATUS;

/** ステータス画像 */
var $arrSTATUS_IMAGE;

/** 発送予定日 */
var $arrDELIVERYDATE;

/** おすすめレベル */
var $arrRECOMMEND;

/** フォームパラメータ */
var $objFormParam;

/** アップロードファイル */
var $objUpFile;

// }}}
// {{{ functions

/**
* Page を初期化する.
*
* @return void
*/
function init() {
parent::init();
$masterData = new SC_DB_MasterData_Ex();
$this->arrSTATUS = $masterData->getMasterData("mtb_status");
$this->arrSTATUS_IMAGE = $masterData->getMasterData("mtb_status_image");
$this->arrDELIVERYDATE = $masterData->getMasterData("mtb_delivery_date");
$this->arrRECOMMEND = $masterData->getMasterData("mtb_recommend");
}

/**
* Page のプロセス.
*
* @return void
*/
function process() {
$objView = new SC_SiteView();
$objCustomer = new SC_Customer();
$objQuery = new SC_Query();
$objDb = new SC_Helper_DB_Ex();

// レイアウトデザインを取得
$helper = new SC_Helper_PageLayout_Ex();
$helper->sfGetPageLayout($this, false, "products/detail.php");

// ログイン中のユーザが商品をお気に入りにいれる処理
if( $objCustomer->isLoginSuccess() === true && strlen($_POST['mode']) > 0 && $_POST['mode'] == "add_favorite" && strlen($_POST['favorite_product_id']) > 0 ) {
// 値の正当性チェック
if(!SC_Utils_Ex::sfIsInt($_POST['favorite_product_id']) || !$objDb->sfIsRecord("dtb_products", "product_id", $_POST['favorite_product_id'], "del_flg = 0 AND status = 1")) {
SC_Utils_Ex::sfDispSiteError(PRODUCT_NOT_FOUND);
exit;
} else {
$this->arrErr = $this->lfCheckError();
if(count($this->arrErr) == 0) {
$customer_id = $objCustomer->getValue('customer_id');
$this->lfRegistFavoriteProduct($customer_id, $_POST['favorite_product_id']);
}
}
}

// パラメータ管理クラス
$this->objFormParam = new SC_FormParam();
// パラメータ情報の初期化
$this->lfInitParam();
// POST値の取得
$this->objFormParam->setParam($_POST);

// ファイル管理クラス
$this->objUpFile = new SC_UploadFile(IMAGE_TEMP_DIR, IMAGE_SAVE_DIR);
// ファイル情報の初期化
$this->lfInitFile();

// 管理ページからの確認の場合は、非公開の商品も表示する。
if(isset($_GET['admin']) && $_GET['admin'] == 'on') {
SC_Utils_Ex::sfIsSuccess(new SC_Session());
$status = true;
$where = "del_flg = 0";
} else {
$status = false;
$where = "del_flg = 0 AND status = 1";
}

if(isset($_POST['mode']) && $_POST['mode'] != "") {
$tmp_id = $_POST['product_id'];
} else {
$tmp_id = $_GET['product_id'];
}

// 値の正当性チェック
if(!SC_Utils_Ex::sfIsInt($_GET['product_id'])
|| !$objDb->sfIsRecord("dtb_products", "product_id", $tmp_id, $where)) {
SC_Utils_Ex::sfDispSiteError(PRODUCT_NOT_FOUND);
}
// ログイン判定
if($objCustomer->isLoginSuccess() === true) {
//お気に入りボタン表示
$this->tpl_login = true;

/* 閲覧ログ機能は現在未使用

$table = "dtb_customer_reading";
$where = "customer_id = ? ";
$arrval[] = $objCustomer->getValue('customer_id');
//顧客の閲覧商品数
$rpcnt = $objQuery->count($table, $where, $arrval);

//閲覧数が設定数以下
if ($rpcnt < CUSTOMER_READING_MAX){
//閲覧履歴に新規追加
lfRegistReadingData($tmp_id, $objCustomer->getValue('customer_id'));
} else {
//閲覧履歴の中で一番古いものを削除して新規追加
$oldsql = "SELECT MIN(update_date) FROM ".$table." WHERE customer_id = ?";
$old = $objQuery->getone($oldsql, array($objCustomer->getValue("customer_id")));
$where = "customer_id = ? AND update_date = ? ";
$arrval = array($objCustomer->getValue("customer_id"), $old);
//削除
$objQuery->delete($table, $where, $arrval);
//追加
lfRegistReadingData($tmp_id, $objCustomer->getValue('customer_id'));
}
*/
}


// 規格選択セレクトボックスの作成
$this->lfMakeSelect($tmp_id);

// 商品IDをFORM内に保持する。
$this->tpl_product_id = $tmp_id;

if (!isset($_POST['mode'])) $_POST['mode'] = "";

switch($_POST['mode']) {
case 'cart':
// 入力値の変換
$this->objFormParam->convParam();
$this->arrErr = $this->lfCheckError();
if(count($this->arrErr) == 0) {
$objCartSess = new SC_CartSession();
//$classcategory_id1 = $_POST['classcategory_id1'];
//$classcategory_id2 = $_POST['classcategory_id2'];
list($classcategory_id1, $classcategory_id2) = explode("-", $_POST['classcategory_id_mixed']);
GC_Utils::gfPrintLog("[D]統合版セレクトボックスのパース:規格1 = " . $classcategory_id1);
GC_Utils::gfPrintLog("[D]統合版セレクトボックスのパース:規格2 = " . $classcategory_id2);

if (!empty($_POST['gmo_oneclick'])) {
$objCartSess->delAllProducts();
}

// 規格1が設定されていない場合
if(!$this->tpl_classcat_find1) {
$classcategory_id1 = '0';
}

// 規格2が設定されていない場合
if(!$this->tpl_classcat_find2) {
$classcategory_id2 = '0';
}

$objCartSess->setPrevURL($_SERVER['REQUEST_URI']);
$objCartSess->addProduct(array($_POST['product_id'], $classcategory_id1, $classcategory_id2), $this->objFormParam->getValue('quantity'));

if (!empty($_POST['gmo_oneclick'])) {
$objSiteSess = new SC_SiteSession;
$objSiteSess->setRegistFlag();
$objCartSess->saveCurrentCart($objSiteSess->getUniqId());

$this->sendRedirect($this->getLocation(
URL_DIR . 'user_data/gmopg_oneclick_confirm.php', array(), true));
exit;
}

$this->sendRedirect($this->getLocation(URL_CART_TOP));
exit;
}
break;

default:
break;
}

$objQuery = new SC_Query();
// DBから商品情報を取得する。
$arrRet = $objQuery->select("*, (SELECT count(*) FROM dtb_customer_favorite_products WHERE product_id = alldtl.product_id AND customer_id = ?) AS favorite_count", "vw_products_allclass_detail AS alldtl", "product_id = ?", array($objCustomer->getValue('customer_id'), $tmp_id));
$this->arrProduct = $arrRet[0];

// 商品コードの取得
$code_sql = "SELECT product_code FROM dtb_products_class AS prdcls WHERE prdcls.product_id = ? GROUP BY product_code ORDER BY product_code";
$arrProductCode = $objQuery->getall($code_sql, array($tmp_id));
$arrProductCode = SC_Utils_Ex::sfswaparray($arrProductCode);
$this->arrProductCode = $arrProductCode["product_code"];

// 購入制限数を取得
if($this->arrProduct['sale_unlimited'] == 1 || $this->arrProduct['sale_limit'] > SALE_LIMIT_MAX) {
$this->tpl_sale_limit = SALE_LIMIT_MAX;
} else {
$this->tpl_sale_limit = $this->arrProduct['sale_limit'];
}
// サブタイトルを取得
$arrCategory_id = $objDb->sfGetCategoryId($arrRet[0]['product_id'],'',$status);
$arrFirstCat = $objDb->sfGetFirstCat($arrCategory_id[0]);
$this->tpl_subtitle = $arrFirstCat['name'];

// 関連カテゴリを取得
$this->arrRelativeCat = $objDb->sfGetMultiCatTree($tmp_id);

// DBからのデータを引き継ぐ
$this->objUpFile->setDBFileList($this->arrProduct);
// ファイル表示用配列を渡す
$this->arrFile = $this->objUpFile->getFormFileList(IMAGE_TEMP_URL, IMAGE_SAVE_URL, true);
// 支払方法の取得
$this->arrPayment = $this->lfGetPayment();
// 入力情報を渡す
$this->arrForm = $this->objFormParam->getFormParamList();
//レビュー情報の取得
$this->arrReview = $this->lfGetReviewData($tmp_id);
// トラックバック情報の取得

// トラックバック機能の稼働状況チェック
if (SC_Utils_Ex::sfGetSiteControlFlg(SITE_CONTROL_TRACKBACK) != 1) {
$this->arrTrackbackView = "OFF";
} else {
$this->arrTrackbackView = "ON";
$this->arrTrackback = $this->lfGetTrackbackData($tmp_id);
}
$this->trackback_url = TRACKBACK_TO_URL . $tmp_id;
// タイトルに商品名を入れる
$this->tpl_title = "商品詳細 ". $this->arrProduct["name"];
//オススメ商品情報表示
$this->arrRecommend = $this->lfPreGetRecommendProducts($tmp_id);
//この商品を買った人はこんな商品も買っています
$this->arrRelateProducts = $this->lfGetRelateProducts($tmp_id);

$this->lfConvertParam();

$objView->assignobj($this);
$objView->display(SITE_FRAME);
}

/**
* デストラクタ.
*
* @return void
*/
function destroy() {
parent::destroy();
}

/**
* モバイルページを初期化する.
*
* @return void
*/
function mobileInit() {
$this->init();
$this->tpl_mainpage = "products/detail.tpl";
}

/**
* Page のプロセス(モバイル).
*
* FIXME 要リファクタリング
*
* @return void
*/
function mobileProcess() {
$objView = new SC_MobileView();
$objCustomer = new SC_Customer();
$objQuery = new SC_Query();
$objDb = new SC_Helper_DB_Ex();

// パラメータ管理クラス
$this->objFormParam = new SC_FormParam();
// パラメータ情報の初期化
$this->lfInitParam();
// POST値の取得
$this->objFormParam->setParam($_POST);

// ファイル管理クラス
$this->objUpFile = new SC_UploadFile(IMAGE_TEMP_DIR, IMAGE_SAVE_DIR);
// ファイル情報の初期化
$this->lfInitFile();

if (!isset($_POST['mode'])) $_POST['mode'] = "";

if(!empty($_POST['mode'])) {
$tmp_id = $_POST['product_id'];
} else {
$tmp_id = $_GET['product_id'];
}

// 値の正当性チェック
if(!SC_Utils_Ex::sfIsInt($tmp_id)
|| !$objDb->sfIsRecord("dtb_products", "product_id", $tmp_id, 'del_flg = 0 AND status = 1')) {
SC_Utils_Ex::sfDispSiteError(PRODUCT_NOT_FOUND);
}

// ログイン判定
if($objCustomer->isLoginSuccess(true)) {
//お気に入りボタン表示
$this->tpl_login = true;

/* 閲覧ログ機能は現在未使用

$table = "dtb_customer_reading";
$where = "customer_id = ? ";
$arrval[] = $objCustomer->getValue('customer_id');
//顧客の閲覧商品数
$rpcnt = $objQuery->count($table, $where, $arrval);

//閲覧数が設定数以下
if ($rpcnt < CUSTOMER_READING_MAX){
//閲覧履歴に新規追加
lfRegistReadingData($tmp_id, $objCustomer->getValue('customer_id'));
} else {
//閲覧履歴の中で一番古いものを削除して新規追加
$oldsql = "SELECT MIN(update_date) FROM ".$table." WHERE customer_id = ?";
$old = $objQuery->getone($oldsql, array($objCustomer->getValue("customer_id")));
$where = "customer_id = ? AND update_date = ? ";
$arrval = array($objCustomer->getValue("customer_id"), $old);
//削除
$objQuery->delete($table, $where, $arrval);
//追加
lfRegistReadingData($tmp_id, $objCustomer->getValue('customer_id'));
}
*/
}


// 規格選択セレクトボックスの作成
$this->lfMakeSelectMobile($this, $tmp_id);

// 商品IDをFORM内に保持する。
$this->tpl_product_id = $tmp_id;

switch($_POST['mode']) {
case 'select':
// 規格1が設定されている場合
if($this->tpl_classcat_find1) {
// templateの変更
$this->tpl_mainpage = "products/select_find1.tpl";
break;
}

case 'select2':
$this->arrErr = $this->lfCheckError();

// 規格1が設定されている場合
if($this->tpl_classcat_find1 and $this->arrErr['classcategory_id1']) {
// templateの変更
$this->tpl_mainpage = "products/select_find1.tpl";
break;
}

// 規格2が設定されている場合
if($this->tpl_classcat_find2) {
$this->arrErr = array();

$this->tpl_mainpage = "products/select_find2.tpl";
break;
}

case 'selectItem':
$this->arrErr = $this->lfCheckError();

// 規格1が設定されている場合
if($this->tpl_classcat_find2 and $this->arrErr['classcategory_id2']) {
// templateの変更
$this->tpl_mainpage = "products/select_find2.tpl";
break;
}
// 商品数の選択を行う
$this->tpl_mainpage = "products/select_item.tpl";
break;

case 'cart':
// 入力値の変換
$this->objFormParam->convParam();
$this->arrErr = $this->lfCheckError();
if(count($this->arrErr) == 0) {
$objCartSess = new SC_CartSession();
$classcategory_id1 = $_POST['classcategory_id1'];
$classcategory_id2 = $_POST['classcategory_id2'];

// 規格1が設定されていない場合
if(!$this->tpl_classcat_find1) {
$classcategory_id1 = '0';
}

// 規格2が設定されていない場合
if(!$this->tpl_classcat_find2) {
$classcategory_id2 = '0';
}

$objCartSess->setPrevURL($_SERVER['REQUEST_URI']);
$objCartSess->addProduct(array($_POST['product_id'], $classcategory_id1, $classcategory_id2), $this->objFormParam->getValue('quantity'));
$this->sendRedirect($this->getLocation(MOBILE_URL_CART_TOP), true);
exit;
}
break;

default:
break;
}

$objQuery = new SC_Query();
// DBから商品情報を取得する。
$arrRet = $objQuery->select("*", "vw_products_allclass_detail AS alldtl", "product_id = ?", array($tmp_id));
$this->arrProduct = $arrRet[0];

// 商品コードの取得
$code_sql = "SELECT product_code FROM dtb_products_class AS prdcls WHERE prdcls.product_id = ? GROUP BY product_code ORDER BY product_code";
$arrProductCode = $objQuery->getall($code_sql, array($tmp_id));
$arrProductCode = SC_Utils_Ex::sfswaparray($arrProductCode);
$this->arrProductCode = $arrProductCode["product_code"];

// 購入制限数を取得
if($this->arrProduct['sale_unlimited'] == 1 || $this->arrProduct['sale_limit'] > SALE_LIMIT_MAX) {
$this->tpl_sale_limit = SALE_LIMIT_MAX;
} else {
$this->tpl_sale_limit = $this->arrProduct['sale_limit'];
}

// サブタイトルを取得
$arrFirstCat = $objDb->sfGetFirstCat($arrRet[0]['category_id']);
$tpl_subtitle = $arrFirstCat['name'];
$this->tpl_subtitle = $tpl_subtitle;

// DBからのデータを引き継ぐ
$this->objUpFile->setDBFileList($this->arrProduct);
// ファイル表示用配列を渡す
$this->arrFile = $this->objUpFile->getFormFileList(IMAGE_TEMP_URL, IMAGE_SAVE_URL, true);
// 支払方法の取得
$this->arrPayment = $this->lfGetPayment();
// 入力情報を渡す
$this->arrForm = $this->objFormParam->getFormParamList();
//レビュー情報の取得
$this->arrReview = $this->lfGetReviewData($tmp_id);
// タイトルに商品名を入れる
$this->tpl_title = "商品詳細 ". $this->arrProduct["name"];
//オススメ商品情報表示
$this->arrRecommend = $this->lfPreGetRecommendProducts($tmp_id);
//この商品を買った人はこんな商品も買っています
$this->arrRelateProducts = $this->lfGetRelateProducts($tmp_id);

$objView->assignobj($this);
$objView->display(SITE_FRAME);
}

/* ファイル情報の初期化 */
function lfInitFile() {
$this->objUpFile->addFile("一覧-メイン画像", 'main_list_image', array('jpg','gif'),IMAGE_SIZE, true, SMALL_IMAGE_WIDTH, SMALL_IMAGE_HEIGHT);
$this->objUpFile->addFile("詳細-メイン画像", 'main_image', array('jpg'), IMAGE_SIZE, true, NORMAL_IMAGE_WIDTH, NORMAL_IMAGE_HEIGHT);
$this->objUpFile->addFile("詳細-メイン拡大画像", 'main_large_image', array('jpg'), IMAGE_SIZE, false, LARGE_IMAGE_HEIGHT, LARGE_IMAGE_HEIGHT);
for ($cnt = 1; $cnt <= PRODUCTSUB_MAX; $cnt++) {
$this->objUpFile->addFile("詳細-サブ画像$cnt", "sub_image$cnt", array('jpg'), IMAGE_SIZE, false, NORMAL_SUBIMAGE_HEIGHT, NORMAL_SUBIMAGE_HEIGHT);
$this->objUpFile->addFile("詳細-サブ拡大画像$cnt", "sub_large_image$cnt", array('jpg'), IMAGE_SIZE, false, LARGE_SUBIMAGE_HEIGHT, LARGE_SUBIMAGE_HEIGHT);
}
$this->objUpFile->addFile("商品比較画像", 'file1', array('jpg'), IMAGE_SIZE, false, NORMAL_IMAGE_HEIGHT, NORMAL_IMAGE_HEIGHT);
$this->objUpFile->addFile("商品詳細ファイル", 'file2', array('pdf'), PDF_SIZE, false, 0, 0, false);
}

/* 規格選択セレクトボックスの作成 */
function lfMakeSelect($product_id) {

$objDb = new SC_Helper_DB_Ex();
$classcat_find1 = false;
$classcat_find2 = false;
// 在庫ありの商品の有無
$stock_find = false;

// 規格名一覧
$arrClassName = $objDb->sfGetIDValueList("dtb_class", "class_id", "name");
// 規格分類名一覧
$arrClassCatName = $objDb->sfGetIDValueList("dtb_classcategory", "classcategory_id", "name");
// 商品規格情報の取得
$arrProductsClass = $this->lfGetProductsClass($product_id);

// 規格1クラス名の取得
$this->tpl_class_name1 = isset($arrClassName[$arrProductsClass[0]['class_id1']])
? $arrClassName[$arrProductsClass[0]['class_id1']] : "";
// 規格2クラス名の取得
$this->tpl_class_name2 = isset($arrClassName[$arrProductsClass[0]['class_id2']])
? $arrClassName[$arrProductsClass[0]['class_id2']] : "";

// すべての組み合わせ数
$count = count($arrProductsClass);

$classcat_id1 = "";

$arrSele = array();
$arrList = array();
$arrPrice = array();
$arrName = array();
$arrPrice2 = array();
$arrPoint = array();

$list_id = 0;
$arrList[0] = "\tlist0 = new Array('選択してください'";
$arrVal[0] = "\tval0 = new Array(''";

for ($i = 0; $i < $count; $i++) {
// 在庫のチェック
if($arrProductsClass[$i]['stock'] <= 0 && $arrProductsClass[$i]['stock_unlimited'] != '1') {
continue;
}

$stock_find = true;
$objSiteInfo = new SC_SiteInfo;
// 店舗情報の取得
$arrInfo = $objSiteInfo->data;

$taxin_price = SC_Utils::sfPreTax($arrProductsClass[$i]['price02'], $arrInfo['tax'], $arrInfo['tax_rule']);

// 規格1のセレクトボックス用
if($classcat_id1 != $arrProductsClass[$i]['classcategory_id1']){
$arrList[$list_id].=");\n";
$arrVal[$list_id].=");\n";
$classcat_id1 = $arrProductsClass[$i]['classcategory_id1'];
$classcat_id2 = $arrProductsClass[$i]['classcategory_id2'];
$classcat_id1_2 = $classcat_id1 . "-" . $classcat_id2;
$arrSele[$classcat_id1] = $arrClassCatName[$classcat_id1];
$arrSele1_2[$classcat_id1_2] = $arrClassCatName[$classcat_id1] . " " . $arrClassCatName[$classcat_id2] . " " . number_format($taxin_price) . "円(税込) "; //←右端に全角スペースを付加したのは、コンボボックスを見易くするため
$list_id++;
}

// 規格2のセレクトボックス用
$classcat_id1 = $arrProductsClass[$i]['classcategory_id1'];
$classcat_id2 = $arrProductsClass[$i]['classcategory_id2'];
$classcat_id1_2 = $classcat_id1 . "-" . $classcat_id2;

// 規格別の価格と規格名を格納する処理
$arrPrice[$classcat_id1][$classcat_id2] = $arrProductsClass[$i]['price02'] ;
$arrPrice2[$classcat_id1][$classcat_id2] = $arrProductsClass[$i]['price01'] ;
$arrPoint[$classcat_id1][$classcat_id2] = $arrProductsClass[$i]['point_rate'] ;

if ($classcat_id2 == 0 )
{
// 規格2が設定されていない場合
$arrName[$classcat_id1][$classcat_id2] = $arrProductsClass[$i]['name'] ;
}
else
{
$arrName[$classcat_id1][$classcat_id2] = $arrProductsClass[$i]['name']."(".$arrProductsClass[$i]['name2'].")" ;
}

$arrSele1_2[$classcat_id1_2] = $arrClassCatName[$classcat_id1] . " " . $arrClassCatName[$classcat_id2] . " " . number_format($taxin_price) . "円(税込) "; //←右端に全角スペースを付加したのは、コンボボックスを見易くするため

// セレクトボックス表示値
if (!isset($arrList[$list_id])) $arrList[$list_id] = "";
if($arrList[$list_id] == "") {
$arrList[$list_id] = "\tlist".$list_id." = new Array('選択してください', '".$arrClassCatName[$classcat_id2]."'";
} else {
$arrList[$list_id].= ", '".$arrClassCatName[$classcat_id2]."'";
}

// セレクトボックスPOST値
if (!isset($arrVal[$list_id])) $arrVal[$list_id] = "";
if($arrVal[$list_id] == "") {
$arrVal[$list_id] = "\tval".$list_id." = new Array('', '".$classcat_id2."'";
} else {
$arrVal[$list_id].= ", '".$classcat_id2."'";
}
}

$arrList[$list_id].=");\n";
$arrVal[$list_id].=");\n";

// 規格1
$this->arrClassCat1 = $arrSele;
$this->arrClassCat1_2 = $arrSele1_2;
$this->arrClassPrice = $arrPrice;
$this->arrClassName = $arrName;
$this->arrClassPrice2 = $arrPrice2;
$this->arrClassPoint = $arrPoint;

$lists = "\tlists = new Array(";
$no = 0;

foreach($arrList as $val) {
$this->tpl_javascript.= $val;
if ($no != 0) {
$lists.= ",list".$no;
} else {
$lists.= "list".$no;
}
$no++;
}
$this->tpl_javascript.=$lists.");\n";

$vals = "\tvals = new Array(";
$no = 0;

foreach($arrVal as $val) {
$this->tpl_javascript.= $val;
if ($no != 0) {
$vals.= ",val".$no;
} else {
$vals.= "val".$no;
}
$no++;
}
$this->tpl_javascript.=$vals.");\n";

// 選択されている規格2ID
if (!isset($_POST['classcategory_id2'])) $_POST['classcategory_id2'] = "";
$this->tpl_onload = "lnSetSelect('form1', 'classcategory_id1', 'classcategory_id2', '" . htmlspecialchars($_POST['classcategory_id2'], ENT_QUOTES) . "');";

// 規格1が設定されている
if($arrProductsClass[0]['classcategory_id1'] != '0') {
$classcat_find1 = true;
}

// 規格2が設定されている
if($arrProductsClass[0]['classcategory_id2'] != '0') {
$classcat_find2 = true;
}

$this->tpl_classcat_find1 = $classcat_find1;
$this->tpl_classcat_find2 = $classcat_find2;
$this->tpl_stock_find = $stock_find;
}

/* 規格選択セレクトボックスの作成
* FIXME 要リファクタリング
*/
function lfMakeSelectMobile(&$objPage, $product_id) {

$objDb = new SC_Helper_DB_Ex();
$classcat_find1 = false;
$classcat_find2 = false;
// 在庫ありの商品の有無
$stock_find = false;

// 規格名一覧
$arrClassName = $objDb->sfGetIDValueList("dtb_class", "class_id", "name");
// 規格分類名一覧
$arrClassCatName = $objDb->sfGetIDValueList("dtb_classcategory", "classcategory_id", "name");
// 商品規格情報の取得
$arrProductsClass = $this->lfGetProductsClass($product_id);

// 規格1クラス名の取得
$objPage->tpl_class_name1 = $arrClassName[$arrProductsClass[0]['class_id1']];
// 規格2クラス名の取得
$objPage->tpl_class_name2 = $arrClassName[$arrProductsClass[0]['class_id2']];

// すべての組み合わせ数
$count = count($arrProductsClass);

$classcat_id1 = "";

$arrSele1 = array();
$arrSele2 = array();

for ($i = 0; $i < $count; $i++) {
// 在庫のチェック
if($arrProductsClass[$i]['stock'] <= 0 && $arrProductsClass[$i]['stock_unlimited'] != '1') {
continue;
}

$stock_find = true;

// 規格1のセレクトボックス用
if($classcat_id1 != $arrProductsClass[$i]['classcategory_id1']){
$classcat_id1 = $arrProductsClass[$i]['classcategory_id1'];
$arrSele1[$classcat_id1] = $arrClassCatName[$classcat_id1];
}

// 規格2のセレクトボックス用
if($arrProductsClass[$i]['classcategory_id1'] == $_POST['classcategory_id1'] and $classcat_id2 != $arrProductsClass[$i]['classcategory_id2']) {
$classcat_id2 = $arrProductsClass[$i]['classcategory_id2'];
$arrSele2[$classcat_id2] = $arrClassCatName[$classcat_id2];
}
}

// 規格1
$objPage->arrClassCat1 = $arrSele1;
$objPage->arrClassCat2 = $arrSele2;
$objPage->arrClassCat1_2 = $arrSele1_2;

// 規格1が設定されている
if($arrProductsClass[0]['classcategory_id1'] != '0') {
$classcat_find1 = true;
}

// 規格2が設定されている
if($arrProductsClass[0]['classcategory_id2'] != '0') {
$classcat_find2 = true;
}

$objPage->tpl_classcat_find1 = $classcat_find1;
$objPage->tpl_classcat_find2 = $classcat_find2;
$objPage->tpl_stock_find = $stock_find;
}

/* パラメータ情報の初期化 */
function lfInitParam() {
$this->objFormParam->addParam("規格1", "classcategory_id1", INT_LEN, "n", array("NUM_CHECK", "MAX_LENGTH_CHECK"));
$this->objFormParam->addParam("規格2", "classcategory_id2", INT_LEN, "n", array("NUM_CHECK", "MAX_LENGTH_CHECK"));
$this->objFormParam->addParam("個数", "quantity", INT_LEN, "n", array("EXIST_CHECK", "ZERO_CHECK", "NUM_CHECK", "MAX_LENGTH_CHECK"));
}

/* 商品規格情報の取得 */
function lfGetProductsClass($product_id) {
$arrRet = array();
if(SC_Utils_Ex::sfIsInt($product_id)) {
// 商品規格取得
$objQuery = new SC_Query();
$col = "price02 , dtb_classcategory.name , price01 , point_rate , aaa.name AS name2 , product_class_id, classcategory_id1, classcategory_id2, class_id1, class_id2, stock, stock_unlimited";
$table = "vw_product_class AS prdcls , dtb_classcategory , dtb_classcategory AS aaa";
$where = "classcategory_id1 = dtb_classcategory.classcategory_id and classcategory_id2 = aaa.classcategory_id and product_id = ?";
$objQuery->setorder("rank1 DESC, rank2 DESC");
$objQuery->setorder("rank1 DESC, rank2 DESC");
$arrRet = $objQuery->select($col, $table, $where, array($product_id));
}
return $arrRet;
}

/* 登録済みオススメ商品の読み込み */
function lfPreGetRecommendProducts($product_id) {
$arrRecommend = array();
$objQuery = new SC_Query();
$objQuery->setorder("rank DESC");
$arrRet = $objQuery->select("recommend_product_id, comment", "dtb_recommend_products", "product_id = ?", array($product_id));
$max = count($arrRet);
$no = 0;
$from = "vw_products_allclass AS T1 "
. " JOIN ("
. " SELECT max(T2.rank) AS product_rank, "
. " T2.product_id"
. " FROM dtb_product_categories T2 "
. " GROUP BY product_id) AS T3 USING (product_id)";
$objQuery->setorder("product_rank DESC");
for($i = 0; $i < $max; $i++) {
$where = "del_flg = 0 AND T3.product_id = ? AND status = 1";
$arrProductInfo = $objQuery->select("DISTINCT main_list_image, price02_min, price02_max, price01_min, price01_max, name, point_rate, product_rank", $from, $where, array($arrRet[$i]['recommend_product_id']));

if(count($arrProductInfo) > 0) {
$arrRecommend[$no] = $arrProductInfo[0];
$arrRecommend[$no]['product_id'] = $arrRet[$i]['recommend_product_id'];
$arrRecommend[$no]['comment'] = $arrRet[$i]['comment'];
$no++;
}
}
return $arrRecommend;
}

/* 入力内容のチェック */
function lfCheckError() {
if ($_POST['mode'] == "add_favorite") {
$objCustomer = new SC_Customer();
$objErr = new SC_CheckError();
$customer_id = $objCustomer->getValue('customer_id');
if (SC_Helper_DB_Ex::sfDataExists('dtb_customer_favorite_products', 'customer_id = ? AND product_id = ?', array($customer_id, $favorite_product_id))) {
$objErr->arrErr['add_favorite'.$favorite_product_id] = "※ この商品は既にお気に入りに追加されています。<br />";
}
} else {
// 入力データを渡す。
$arrRet = $this->objFormParam->getHashArray();
$objErr = new SC_CheckError($arrRet);
$objErr->arrErr = $this->objFormParam->checkError();

// 複数項目チェック
// if ($this->tpl_classcat_find1) {
// $objErr->doFunc(array("規格1", "classcategory_id1"), array("EXIST_CHECK"));
// }
// if ($this->tpl_classcat_find2) {
// $objErr->doFunc(array("規格2", "classcategory_id2"), array("EXIST_CHECK"));
// }
}

return $objErr->arrErr;
}

//閲覧履歴新規登録
function lfRegistReadingData($tmp_id, $customer_id){
$objQuery = new SC_Query;
$sqlval['customer_id'] = $customer_id;
$sqlval['reading_product_id'] = $tmp_id;
$sqlval['create_date'] = 'NOW()';
$sqlval['update_date'] = 'NOW()';
$objQuery->insert("dtb_customer_reading", $sqlval);
}

//この商品を買った人はこんな商品も買っています FIXME
function lfGetRelateProducts($tmp_id) {
$objQuery = new SC_Query;
//自動抽出
$objQuery->setorder("random()");
//表示件数の制限
$objQuery->setlimit(RELATED_PRODUCTS_MAX);
//検索条件
$col = "name, main_list_image, price01_min, price02_min, price01_max, price02_max, point_rate";
$from = "vw_products_allclass AS allcls ";
$where = "del_flg = 0 AND status = 1 AND (stock_max <> 0 OR stock_max IS NULL) AND product_id = ? ";
$arrval[] = $tmp_id;
//結果の取得
$arrProducts = $objQuery->select($col, $from, $where, $arrval);

return $arrProducts;
}

//商品ごとのレビュー情報を取得する
function lfGetReviewData($id) {
$objQuery = new SC_Query;
//商品ごとのレビュー情報を取得する
$col = "create_date, reviewer_url, reviewer_name, recommend_level, title, comment";
$from = "dtb_review";
$where = "del_flg = 0 AND status = 1 AND product_id = ? ORDER BY create_date DESC LIMIT " . REVIEW_REGIST_MAX;
$arrval[] = $id;
$arrReview = $objQuery->select($col, $from, $where, $arrval);
return $arrReview;
}

/*
* 商品ごとのトラックバック情報を取得する
*
* @param $product_id
* @return $arrTrackback
*/
function lfGetTrackbackData($product_id) {

$arrTrackback = array();

$objQuery = new SC_Query;
//商品ごとのトラックバック情報を取得する
$col = "blog_name, url, title, excerpt, title, create_date";
$from = "dtb_trackback";
$where = "del_flg = 0 AND status = 1 AND product_id = ? ORDER BY create_date DESC LIMIT " . TRACKBACK_VIEW_MAX;
$arrval[] = $product_id;
$arrTrackback = $objQuery->select($col, $from, $where, $arrval);
return $arrTrackback;
}

//支払方法の取得
//payment_id 1:クレジット 2:ショッピングローン
function lfGetPayment() {
$objQuery = new SC_Query;
$col = "payment_id, rule, payment_method";
$from = "dtb_payment";
$where = "del_flg = 0";
$order = "payment_id";
$objQuery->setorder($order);
$arrRet = $objQuery->select($col, $from, $where);
return $arrRet;
}

function lfConvertParam() {
if (!isset($this->arrForm['quantity']['value'])) $this->arrForm['quantity']['value'] = "";
$value = $this->arrForm['quantity']['value'];
$this->arrForm['quantity']['value'] = htmlspecialchars($value, ENT_QUOTES, CHAR_CODE);
}

/*
* お気に入り商品登録
*/
function lfRegistFavoriteProduct($customer_id, $product_id) {
$objQuery = new SC_Query();
$objConn = new SC_DbConn();
$count = $objConn->getOne("SELECT COUNT(*) FROM dtb_customer_favorite_products WHERE customer_id = ? AND product_id = ?", array($customer_id, $product_id));

if ($count == 0) {
$sqlval['customer_id'] = $customer_id;
$sqlval['product_id'] = $product_id;
$sqlval['update_date'] = "now()";
$sqlval['create_date'] = "now()";

$objQuery->begin();
$objQuery->insert('dtb_customer_favorite_products', $sqlval);
$objQuery->commit();
}
}
}

?>
miyu1219
投稿日時: 2010/3/4 16:24
対応状況: −−−
新米
登録日: 2009/12/26
居住地: 雪国
投稿: 6
Re: 規格で分けられた商品の価格表示 パンくずナビが...
このスレッドに感謝です!!

昨日から規格別価格表示に苦戦し、
検索してはテストの繰り返しをしており、
このスレッドを発見し解決できました!!

2.4.3でも動きました♪
Detail.tplは箇所箇所で引用しました。

<!--{* カゴに入れるボタン *}-->上部にある

----------------------------------------------------
<!--{/if}-->
<!--{if $tpl_stock_find}-->
----------------------------------------------------
の時は動かなかったので、↓
----------------------------------------------------
<!--{/if}-->
<!--{/if}-->
----------------------------------------------------
こうすると動きました!
ありがとうございました


開発環境*********************************************

EC-CUBE 2.4.3
DBサーバ MySQL 5.1
WEBサーバ Apache/1.3.41 (Unix) mod_ssl/2.8.31 penSSL/0.9.8e
PHP 5.2.11
PHPは無知です
sasami
投稿日時: 2010/5/29 15:00
対応状況: −−−
新米
登録日: 2010/5/29
居住地:
投稿: 6
Re: 規格で分けられた商品の価格表示 パンくずナビが...
正に探していた物がここにあり、感動です。
さっそく入れてみましたが、綺麗に「規格名」「価格」を並べられました。

そこまでは良かったのですが、購入に進めなくなり、
また関連商品を登録している商品詳細がエラーにより開けなくなってしまいました。

どなたか解決方法がお分かりになるでしょうか・・

EC-CUBE Ver2.4.3です。

購入に進んだ際には、以下の表示が出ます。
「※申し訳ございませんが、ご購入の直前で売り切れた商品があります。該当商品をカートから削除いたしました。
※ 現在カート内に商品はございません。」

関連商品が設定されている場合には、
「システムエラーが発生しました。
大変お手数ですが、サイト管理者までご連絡ください。」
と表示されます。


LC_Page_Products_Detail.phpは、
mitukiさんの書かれていたものをそのまま使用しています。

/user_data/packages/default/detail.tpl は、
以下のようになっています。
引用:

<script type="text/javascript">//<![CDATA[
// セレクトボックスに項目を割り当てる。
function lnSetSelect(form, name1, name2, val) {

sele11 = document[form][name1];
sele12 = document[form][name2];

if(sele11 && sele12) {
index = sele11.selectedIndex;

// セレクトボックスのクリア
count = sele12.options.length;
for(i = count; i >= 0; i--) {
sele12.options[i] = null;
}

// セレクトボックスに値を割り当てる
len = lists[index].length;
for(i = 0; i < len; i++) {
sele12.options[i] = new Option(lists[index][i], vals[index][i]);
if(val != "" && vals[index][i] == val) {
sele12.options[i].selected = true;
}
}
}
}
//]]>
</script>

<!--▼CONTENTS-->
<div id="undercolumn">
<div id="detailtitle"><h2><!--★タイトル★--><!--{$tpl_subtitle|escape}--></h2></div>


<div id="detailarea">
<div id="detailphotoblock">

<!--{assign var=key value="main_image"}-->
<!--{if $arrProduct.main_large_image != ""}-->
<!--★画像★-->
<a href="java script:void(win01('./detail_image.php?product_id=<!--{$arrProduct.product_id}-->&image=main_large_image<!--{if $smarty.get.admin == 'on'}-->&admin=on<!--{/if}-->','detail_image','<!--{$arrFile.main_large_image.width+60}-->', '<!--{$arrFile.main_large_image.height+80}-->'))"><img src="<!--{$arrFile[$key].filepath}-->" width="<!--{$arrFile[$key].width}-->" height="<!--{$arrFile[$key].height}-->" alt="<!--{$arrProduct.name|escape}-->" class="picture" /></a>
<p>
<!--★拡大する★-->
<a href="java script:void(win01('./detail_image.php?product_id=<!--{$arrProduct.product_id}-->&image=main_large_image<!--{if $smarty.get.admin == 'on'}-->&admin=on<!--{/if}-->','detail_image','<!--{$arrFile.main_large_image.width+60}-->', '<!--{$arrFile.main_large_image.height+80}-->'))" onMouseOver="chgImg('<!--{$TPL_DIR}-->img/products/b_expansion_on.gif','expansion01');" onMouseOut="chgImg('<!--{$TPL_DIR}-->img/products/b_expansion.gif','expansion01');">
<img src="<!--{$TPL_DIR}-->img/products/b_expansion.gif" width="85" height="13" alt="画像を拡大する" name="expansion01" id="expansion01" /></a>
</p>
<!--{else}-->
<img src="<!--{$arrFile[$key].filepath}-->" width="<!--{$arrFile[$key].width}-->" height="<!--{$arrFile[$key].height}-->" alt="<!--{$arrProduct.name|escape}-->" class="picture" />
<!--{/if}-->
</div>

<div id="detailrightblock">
<!--アイコン-->
<!--{if count($arrProduct.product_flag) > 0}-->
<ul class="status_icon">
<!--{section name=flg loop=$arrProduct.product_flag|count_characters}-->
<!--{if $arrProduct.product_flag[flg] == "1"}-->
<li>
<!--{assign var=key value="`$smarty.section.flg.iteration`"}-->
<img src="<!--{$TPL_DIR}--><!--{$arrSTATUS_IMAGE[$key]}-->" alt="<!--{$arrSTATUS[$key]}-->" id="icon<!--{$key}-->" />
</li>
<!--{/if}-->
<!--{/section}-->
</ul>
<!--{/if}-->

<!--★商品コード★-->
<!--{assign var=codecnt value=$arrProductCode|@count}-->
<!--{assign var=codemax value=`$codecnt-1`}-->

<h2><!--★商品名★--><!--{$arrProduct.name|escape}--></h2>
<div class="detail_come"><!--★詳細メインコメント★--><!--{$arrProduct.main_comment|nl2br}--></div>
<!--★価格★-->
<div>

<div id="price_area">
<!--{foreach from=$arrClassPrice key="key" item="datum" name="loop"}-->
<!--{foreach from=$datum key="key2" item="datum2" name="loop"}-->

<!--{$arrClassName[$key][$key2]}-->:単価 <span class="detail_price"><!--{$datum2|sfPreTax:$arrSiteInfo.tax:$arrSiteInfo.tax_rule|number_format}-->円</span> <span class="mini">(税込)</span><br />

<!--{/foreach}--><!--{/foreach}-->
</div>

<form name="form1" id="form1" method="post" action="<!--{$smarty.server.REQUEST_URI|escape}-->">
<input type="hidden" name="mode" value="cart" />
<input type="hidden" name="product_id" value="<!--{$tpl_product_id}-->" />
<input type="hidden" name="favorite_product_id" value="" />
<!--{if $tpl_classcat_find1}-->
<dl>
<dt>
<!--{$tpl_class_name1}-->
</dt>
<dd>
<select name="classcategory_id1"
style="<!--{$arrErr.classcategory_id1|sfGetErrorColor}-->"
onChange="lnSetSelect('form1', 'classcategory_id1', 'classcategory_id2', ''); ">
<option value="">選択してください</option>
<!--{html_options options=$arrClassCat1 selected=$arrForm.classcategory_id1.value}-->
</select>
<!--{if $arrErr.classcategory_id1 != ""}-->
<br />
<span class="attention">※ <!--{$tpl_class_name1}-->を入力して下さい。</span>
<!--{/if}-->
</dd>
</dl>
<!--{/if}-->

<!--{if $tpl_stock_find}-->
<!--{if $tpl_classcat_find2}-->
<dl>
<dt><!--{$tpl_class_name2}--></dt>
<dd>
<select name="classcategory_id2"
style="<!--{$arrErr.classcategory_id2|sfGetErrorColor}-->">
<option value="">選択してください</option>
</select>
<!--{if $arrErr.classcategory_id2 != ""}-->
<br /><span class="attention">※ <!--{$tpl_class_name2}-->を入力して下さい。</span>
<!--{/if}-->
</dd>
</dl>
<!--{/if}-->

<dl>
<dt></dt>
<dd>枚数:
<input type="text" name="quantity" class="box54" value="<!--{$arrForm.quantity.value|default:1}-->" maxlength="<!--{$smarty.const.INT_LEN}-->" style="<!--{$arrErr.quantity|sfGetErrorColor}-->" />
<!--{if $arrErr.quantity != ""}-->
<br />
<span class="attention"><!--{$arrErr.quantity}--></span>
<!--{/if}-->
</dd>
</dl>
<!--{/if}-->

<!--{if $tpl_stock_find}-->
<p class="btn">
<!--{* お気に入りに追加するボタンを表示させる *}-->
<!--{include file="./products/customer_favorite_products.tpl"}-->

<!--{* カゴに入れるボタン *}-->
<a href="java script:void(document.form1.submit());" onMouseOver="chgImg('<!--{$TPL_DIR}-->img/products/b_cartin_on.gif','cart');" onMouseOut="chgImg('<!--{$TPL_DIR}-->img/products/b_cartin.gif','cart');">
<img src="<!--{$TPL_DIR}-->img/products/b_cartin.gif" alt="カゴに入れる" name="cart" id="cart" /></a>
</p>
<!--{if 'sfGMODetailDisplay'|function_exists}--><!--{* GMOワンクリック *}-->
<!--{'sfGMODetailDisplay'|call_user_func}-->
<!--{/if}-->
<!--{else}-->
<div class="attention">申し訳ございませんが、只今品切れ中です。</div>
<!--{/if}-->
</form>

</div>
</div>
<!--{* オペビルダー用 *}-->
<!--{if "sfViewDetailOpe"|function_exists === TRUE}-->
<!--{include file=`$smarty.const.MODULE_PATH`mdl_opebuilder/detail_ope_view.tpl}-->
<!--{/if}-->
<!--詳細ここまで-->


<!--▼サブコメントここから-->
<!--{section name=cnt loop=$smarty.const.PRODUCTSUB_MAX}-->
<!--{assign var=key value="sub_title`$smarty.section.cnt.index+1`"}-->
<!--{if $arrProduct[$key] != ""}-->
<div id="whoboughtarea">


<div class="subtitle">
<img src="<!--{$TPL_DIR}-->img/products/sub_title.jpg" alt="商品情報" />
</div>

<div class="subarea">
<div class="subarea_in">
<h3><!--★サブタイトル★--><!--{$arrProduct[$key]|escape}--></h3>
<!--{assign var=ckey value="sub_comment`$smarty.section.cnt.index+1`"}-->

<!--拡大写真がある場合ここから-->
<!--{assign var=key value="sub_image`$smarty.section.cnt.index+1`"}-->
<!--{assign var=lkey value="sub_large_image`$smarty.section.cnt.index+1`"}-->
<!--{if $arrFile[$key].filepath != ""}-->
<div class="subtext"><!--★サブテキスト★--><!--{$arrProduct[$ckey]|nl2br}--></div>
<div class="subphotoimg">
<!--{if $arrFile[$lkey].filepath != ""}-->
<a href="<!--{$smarty.server.PHP_SELF|escape}-->" onClick="win01('./detail_image.php?product_id=<!--{$arrProduct.product_id}-->&image=<!--{$lkey}--><!--{if $smarty.get.admin == 'on'}-->&admin=on<!--{/if}-->','detail_image','<!--{$arrFile[$lkey].width+60}-->','<!--{$arrFile[$lkey].height+80}-->'); return false;" target="_blank">
<!--{else}-->
<a>
<!--{/if}-->
<!--サブ画像-->
<img src="<!--{$arrFile[$key].filepath}-->" alt="<!--{$arrProduct.name|escape}-->" width="<!--{$smarty.const.NORMAL_SUBIMAGE_WIDTH}-->" height="<!--{$smarty.const.NORMAL_SUBIMAGE_WIDTH}-->" /></a>
<!--{if $arrFile[$lkey].filepath != ""}-->
<p>
<a href="<!--{$smarty.server.PHP_SELF|escape}-->"
onclick="win01('./detail_image.php?product_id=<!--{$arrProduct.product_id}-->&image=<!--{$lkey}--><!--{if $smarty.get.admin == 'on'}-->&admin=on<!--{/if}-->','detail_image','<!--{$arrFile[$lkey].width+60}-->','<!--{$arrFile[$lkey].height+80}-->'); return false;"
onmouseover="chgImg('<!--{$TPL_DIR}-->img/products/b_expansion_on.gif','expansion02');"
onmouseout="chgImg('<!--{$TPL_DIR}-->img/products/b_expansion.gif','expansion02');" target="_blank">
<img src="<!--{$TPL_DIR}-->img/products/b_expansion.gif" width="85" height="13" alt="画像を拡大する" />
</p></a>

<!--{/if}-->
</div>
<!--拡大写真がある場合ここまで-->
<!--{else}-->
<p><!--★サブテキスト★--><!--{$arrProduct[$ckey]|nl2br}--></p>
</div>
<!--{/if}-->
</div>
</div>
<!--{/if}-->
<!--{/section}-->
<!--▲サブコメントここまで-->


<!--▼オススメ商品ここから-->
<!--{if $arrRecommend}-->
<div id="whoboughtarea">
<h2><img src="<!--{$TPL_DIR}-->img/products/title_recommend.jpg" width="580" height="30" alt="オススメ商品" /></h2>
<div class="whoboughtblock">

<!--{section name=cnt loop=$arrRecommend}-->
<!--{if ($smarty.section.cnt.index % 2) == 0}-->
<!--{if $arrRecommend[cnt].product_id}-->
<!-- 左列 -->
<div class="whoboughtleft">
<!--{if $arrRecommend[cnt].main_list_image != ""}-->
<!--{assign var=image_path value="`$arrRecommend[cnt].main_list_image`"}-->
<!--{else}-->
<!--{assign var=image_path value="`$smarty.const.NO_IMAGE_DIR`"}-->
<!--{/if}-->

<a href="<!--{$smarty.const.DETAIL_P_HTML}--><!--{$arrRecommend[cnt].product_id}-->">
<img src="<!--{$smarty.const.SITE_URL}-->resize_image.php?image=<!--{$image_path|sfRmDupSlash}-->&width=65&height=65" alt="<!--{$arrRecommend[cnt].name|escape}-->" /></a>

<!--{assign var=price02_min value=`$arrRecommend[cnt].price02_min`}-->
<!--{assign var=price02_max value=`$arrRecommend[cnt].price02_max`}-->
<h3><a href="<!--{$smarty.const.DETAIL_P_HTML}--><!--{$arrRecommend[cnt].product_id}-->"><!--{$arrRecommend[cnt].name|escape}--></a></h3>

<p>価格<span class="mini">(税込)</span>:<span class="price">
<!--{if $price02_min == $price02_max}-->
<!--{$price02_min|sfPreTax:$arrSiteInfo.tax:$arrSiteInfo.tax_rule|number_format}-->
<!--{else}-->
<!--{$price02_min|sfPreTax:$arrSiteInfo.tax:$arrSiteInfo.tax_rule|number_format}-->〜<!--{$price02_max|sfPreTax:$arrSiteInfo.tax:$arrSiteInfo.tax_rule|number_format}-->
<!--{/if}-->円</span></p>
<p class="mini"><!--{$arrRecommend[cnt].comment|escape|nl2br}--></p>
</div>
<!-- 左列 -->
<!--{/if}-->
<!--{/if}-->

<!--{if ($smarty.section.cnt.index % 2) != 0}-->
<!--{* assign var=nextCnt value=$smarty.section.cnt.index+1 *}-->
<!--{if $arrRecommend[cnt].product_id}-->
<!-- 右列 -->
<div class="whoboughtright">
<!--{if $arrRecommend[cnt].main_list_image != ""}-->
<!--{assign var=image_path value="`$arrRecommend[cnt].main_list_image`"}-->
<!--{else}-->

<!--{assign var=image_path value="`$smarty.const.NO_IMAGE_DIR`"}-->
<!--{/if}-->
<a href="<!--{$smarty.const.DETAIL_P_HTML}--><!--{$arrRecommend[cnt].product_id}-->">
<img src="<!--{$smarty.const.SITE_URL}-->resize_image.php?image=<!--{$image_path|sfRmDupSlash}-->&width=65&height=65" alt="<!--{$arrRecommend[cnt].name|escape}-->" /></a>
<!--{assign var=price02_min value=`$arrRecommend[cnt].price02_min`}-->
<!--{assign var=price02_max value=`$arrRecommend[cnt].price02_max`}-->
<h3><a href="<!--{$smarty.const.DETAIL_P_HTML}--><!--{$arrRecommend[cnt].product_id}-->"><!--{$arrRecommend[cnt].name|escape}--></a></h3>

<p>価格<span class="mini">(税込)</span>:<span class="price">

<!--{if $price02_min == $price02_max}-->
<!--{$price02_min|sfPreTax:$arrSiteInfo.tax:$arrSiteInfo.tax_rule|number_format}-->
<!--{else}-->
<!--{$price02_min|sfPreTax:$arrSiteInfo.tax:$arrSiteInfo.tax_rule|number_format}-->〜<!--{$price02_max|sfPreTax:$arrSiteInfo.tax:$arrSiteInfo.tax_rule|number_format}-->
<!--{/if}-->円</span></p>
<p class="mini"><!--{$arrRecommend[cnt].comment|escape|nl2br}--></p>
</div>
<!-- 右列 -->
<!--{/if}-->
<!--{/if}-->

<!--{if $smarty.section.cnt.last}-->
</div>
<!--{/if}-->
<!--{/section}-->
</div>
<!--{/if}-->
</div>
<!--▲CONTENTS-->
« 1 (2)
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ


 



ログイン


EC-CUBEペイメント

公式ストアEC-CUBE4系デザインテンプレート続々リリース中

統計情報

総メンバー数は65,915名です
総投稿数は98,047件です

投稿数ランキング

1
seasoft
7332
2
AMUAMU
2712
3
468
2597
4
nanasess
2101
5
umebius
1717
6
yuh
1612
7
red
1422
8
h_tanaka
1038
9
fukap
907
10
tsuji
863
11
shutta
835
12
tao_s
792
13 ramrun 789
14 karin 657
15 sumida 641
16
homan
633
17 DELIGHT 571
18
patapata
502
19
flealog
485
20 tonton 437


ネットショップの壺

EC-CUBEインテグレートパートナー

Copyright© EC-CUBE CO.,LTD. All Rights Reserved.