EC-CUBE newの商品を取得するブロックを作る

木曜日, 10月 22nd, 2009

こんにちは、なかわけです。

タイトルの通り、商品登録の際にnewにチェックした商品を取得するようなブロックを作ります。
作業ログのため、箇条書きで日本語が変な可能性あり。

  1. 管理ページのブロック編集で「新商品紹介」を新規作成する。
    中身はとりあえず、空欄もしくは適当なhogeを入力しておく。
  2. レイアウト設定で該当ページに「新商品紹介」をレイアウトする。
  3. /data/class/pages/frontparts/bloc/にLC_Page_FrontParts_Bloc_NewProducts.phpを作る。
    今回はLC_Page_FrontParts_Bloc_Ranking.phpをコピーしてそれを元にコードを書き換えて作成した。
    class名のあたりとかを書き換える。
  4. webディレクトリのfrontparts/bloc/にnew_products.phpを作る。
    こちらもranking.phpをコピーして作る。
    require_onceとnewのあたりを書き換える。
  5. /data/class_extends/page_extends/frontparts/bloc/にLC_Page_FrontParts_Bloc_NewProducts_Ex.phpを作る。
    これも同ディレクトリにあるファイルをコピーして作成。
    require_onceとclass名のあたりを書き換える。
  6. DBのdtb_blocの「新製品紹介」の行のphp_pathを「frontparts/bloc/new_products.php」に書き換える。

ここまで作業すると管理ページで作成した「新商品紹介」のhogeが表示されると思います。

次にLC_Page_FrontParts_Bloc_NewProducts.phpの中身を書き直す。
LC_Page_FrontParts_Bloc_Ranking.phpをコピーしたのでIfGetRanking()があると思うので、そこを書き換える。

    function lfGetNewProducts(){
        $objQuery = new SC_Query();
         
        $col = "product_id, name, price02_min, price01_min, main_list_image ";
        $from = "vw_products_allclass";
        $where = "product_flag LIKE '1____'";
        
        return $objQuery->select($col, $from, $where);
    }

最後に管理ページの「新商品紹介」にSmartyのコードを書く。大体こんな感じで。

<!--{section name=cnt loop=$arrNewProducts}-->
    <div class="NewProductsBlock">
        <a href="<!--{$smarty.const.URL_DIR}-->products/detail.php?product_id=<!--{$arrNewProducts&#91;cnt&#93;.product_id}-->">
            <img src="<!--{$arrNewProducts&#91;cnt&#93;.main_list_image-->" />
        </a>
        <h4><a href="<!--{$smarty.const.URL_DIR}-->products/detail.php?product_id=<!--{$arrNewProducts&#91;cnt&#93;.product_id}-->"><!--{$arrNewProducts&#91;cnt&#93;.name|escape}--></a></h4>
    <!--{assign var=price01 value=`$arrNewProducts&#91;cnt&#93;.price01_min`}-->
    <!--{assign var=price02 value=`$arrNewProducts&#91;cnt&#93;.price02_min`}-->
        <p class="Price">
            価格:<span class="price">
    <!--{if $price02 == ""}-->
        <!--{$price01|sfPreTax:$arrInfo.tax:$arrInfo.tax_rule|number_format}-->
    <!--{else}-->
        <!--{$price02|sfPreTax:$arrInfo.tax:$arrInfo.tax_rule|number_format}-->
    <!--{/if}-->円</span>
        </p>
        <p class="Description"><!--{$arrNewProducts&#91;cnt&#93;.comment|escape|nl2br}--></p>
    </div>
<!--{/section}-->

これで商品登録のときにnewにチェック入れた商品が表示されると思います。
間違ってたり、動かねえよ!という方はコメントください。見直したりしてみます。

Tags: ,

Leave a Reply

*