Labo

[EC-CUBE 2.12.2] 商品詳細のその他オススメ商品にステータスアイコンを表示させたい

2012年10月07日 / 投稿者名:fukap


今回も開発コミュニティから拾ってきたネタです、ハイ。
小一時間でやるにはちょうど良さそうだったので(ボソ
というわけでやってみました。

 

data/class/pages/products/LC_Page_Products_Detail.php の 関連商品情報表示 の下あたりに、関連商品ステータス取得コードを追加

        //関連商品情報表示
        $this->arrRecommend = $this->lfPreGetRecommendProducts($product_id);

        //関連商品の商品ステータスを取得
        if(count($this->arrRecommend) > 0){
            foreach($this->arrRecommend as $val){
                $this->recommendProductStatus = $objProduct->getProductStatus($val['product_id']);
            }
        }

data/Smarty/templates/default/products/detail.tpl の関連商品部分のコードを以下のような感じで修正

    <!--▼関連商品-->
    <!--{if $arrRecommend}-->
        <div id="whobought_area">
            <h2><img src="<!--{$TPL_URLPATH}-->img/title/tit_product_recommend.jpg" alt="その他のオススメ商品" /></h2>
            <!--{foreach from=$arrRecommend item=arrItem name="arrRecommend"}-->
                <div class="product_item">
                    <div class="productImage">
                        <a href="<!--{$smarty.const.P_DETAIL_URLPATH}--><!--{$arrItem.product_id|u}-->">
                            <img src="<!--{$smarty.const.ROOT_URLPATH}-->resize_image.php?image=<!--{$arrItem.main_list_image|sfNoImageMainList|h}-->&amp;width=65&amp;height=65" alt="<!--{$arrItem.name|h}-->" /></a>
                    </div>
                    <!--{assign var=price02_min value=`$arrItem.price02_min_inctax`}-->
                    <!--{assign var=price02_max value=`$arrItem.price02_max_inctax`}-->
                    <div class="productContents">
                        <!--▼商品ステータス-->
                        <!--{assign var=ps value=$recommendProductStatus[$arrItem.product_id]}-->
                        <!--{if count($ps) > 0}-->
                        <ul class="status_icon clearfix">
                            <!--{foreach from=$ps item=status}-->
                                <li>
                                    <img src="<!--{$TPL_URLPATH}--><!--{$arrSTATUS_IMAGE[$status]}-->" width="60" height="17" alt="<!--{$arrSTATUS[$status]}-->" id="icon<!--{$status}-->" />
                                </li>
                            <!--{/foreach}-->
                        </ul>
                        <!--{/if}-->
                        <!--▲商品ステータス-->

                        <h3><a href="<!--{$smarty.const.P_DETAIL_URLPATH}--><!--{$arrItem.product_id|u}-->"><!--{$arrItem.name|h}--></a></h3>
                        <p class="sale_price"><!--{$smarty.const.SALE_PRICE_TITLE}-->(税込):<span class="price">
                            <!--{if $price02_min == $price02_max}-->
                                <!--{$price02_min|number_format}-->
                            <!--{else}-->
                                <!--{$price02_min|number_format}-->~<!--{$price02_max|number_format}-->
                            <!--{/if}-->円</span></p>
                        <p class="mini"><!--{$arrItem.comment|h|nl2br}--></p>
                    </div>
                </div><!--{* /.item *}-->
                <!--{if $smarty.foreach.arrRecommend.iteration % 2 === 0}-->
                    <div class="clear"></div>
                <!--{/if}-->
            <!--{/foreach}-->
        </div>
    <!--{/if}-->
    <!--▲関連商品-->

商品ステータス部分のコードを書き加えてもらえればOKです。
プラグインコンテスト、結局間に合わなかった。
マイペースにぼちぼちやります。

[EC-CUBE 2.12.2] 商品詳細のその他オススメ商品にステータスアイコンを表示させたい への1件のコメント

  1. muray より:

    古い記事へのコメントで恐縮です。
    大変参考になりましたが、下記の追加部分にて
    LC_Page_Products_Detail.php

    $this->recommendProductStatus = $objProduct->getProductStatus($val['product_id']);

    上記ですと、recommendProductStatus が常に最後の1商品分しかステータス保持できないので、

            //関連商品の商品ステータスを取得
            if(count($this->arrRecommend) > 0){
                $this->recommendProductStatus = array();
                foreach($this->arrRecommend as $val){
                    $this->recommendProductStatus += $objProduct->getProductStatus($val['product_id']);
                }
            }
    

    としてみたところうまくいきました。ご報告です。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

* Copy This Password *

* Type Or Paste Password Here *

*

コメント欄にコードを挿入したい場合は、[php][/php] を使ってください。