ログイン
新規登録
パスワード紛失
メインメニュー
フォーラム
オンライン状況
20 人のユーザが現在オンラインです。 (14 人のユーザが フォーラム を参照しています。)
登録ユーザ: 2
ゲスト: 18
hanabi41, yumeko, もっと...
広告
機能要望 > フロント機能 > 新入荷商品をブロックに表示したい
フロント機能
新規スレッドを追加する

EC-CUBE ASP登場
| 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
ゲスト
投稿日時: 2007-10-19 15:34
対応状況: −−−
新入荷商品をブロックに表示したい
商品登録の際に「商品ステータス」がありますよね。
例えば「NEW」になっている商品のうち3〜5品程度を自動的に新入荷商品として表示させるようなブロックが作れないものかと思います。これが可能であれば「限定品」「残りわずか」などもブロックで表示させることが可能になると思うのですが、Smartyがわからないので断念。どなたかチャレンジして下さい!
ゲスト
投稿日時: 2008-3-17 23:35
対応状況: −−−
Re: 新入荷商品をブロックに表示したい
私もこーゆうのあったら非常に助かります!!
duckei
投稿日時: 2008-4-19 13:35
対応状況: −−−
半人前
登録日: 2008-3-19
居住地:
投稿: 23
Re: 新入荷商品をブロックに表示したい
バージョン2.0.1で作成してみました。

/frontparts/bloc/product_flag.phpを作成。


<?php

// {{{ requires
require_once(CLASS_EX_PATH . "page_extends/frontparts/bloc/LC_Page_FrontParts_Bloc_ProductFlag_Ex.php");

// }}}
// {{{ generate page

$objPage = new LC_Page_FrontParts_Bloc_ProductFlag_Ex();
register_shutdown_function(array($objPage, "destroy"));
$objPage->init();
$objPage->process();

?>


/data/class_extends/page_extends/frontparts/bloc/LC_Page_FrontParts_Bloc_ProductFlag_Ex.phpを作成。


<?php

// {{{ requires
require_once(CLASS_PATH . "pages/frontparts/bloc/LC_Page_FrontParts_Bloc_ProductFlag.php");

/**
 * productStatus のページクラス(拡張).
 *
 * LC_Page_FrontParts_Bloc_ProductFlag をカスタマイズする場合はこのクラスを編集する.
 *
 */
class LC_Page_FrontParts_Bloc_ProductFlag_Ex extends LC_Page_FrontParts_Bloc_ProductFlag {

    // }}}
    // {{{ functions

    /**
     * Page を初期化する.
     *
     * @return void
     */
    function init() {
        parent::init();
    }

    /**
     * Page のプロセス.
     *
     * @return void
     */
    function process() {
        parent::process();
    }

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

?>


/data/class/pages/frontparts/bloc/LC_Page_FrontParts_Bloc_ProductFlag.phpを作成。


<?php

// {{{ requires
require_once(CLASS_PATH . "pages/frontparts/bloc/LC_Page_FrontParts_Bloc.php");

/**
 * productStatus のページクラス.
 *
 * @package Page
 */
class LC_Page_FrontParts_Bloc_ProductFlag extends LC_Page_FrontParts_Bloc {

    // }}}
    // {{{ functions

    /**
     * Page を初期化する.
     *
     * @return void
     */
    function init() {
        parent::init();
        $bloc_file = 'productFlag.tpl';
        $this->setTplMainpage($bloc_file);
    }

    /**
     * Page のプロセス.
     *
     * @return void
     */
    function process() {
        if (defined("MOBILE_SITE") && MOBILE_SITE) {
            $objView = new SC_MobileView();
        } else {
            $objView = new SC_SiteView();
        }
        $objSiteInfo = $objView->objSiteInfo;

        // 基本情報を渡す
        $objSiteInfo = new SC_SiteInfo();
        $this->arrInfo = $objSiteInfo->data;

        
        $objQuery = new SC_Query();

        //検索したい商品のステータスを設定
        //NEW→1, 残りわずか→2, ポイント2倍→3, オススメ→4, 限定品→5
        $productFlag = 1;

        //検索する商品のステータスをランダムに決定し、表示させたい場合は以下のコメントを外してください。
        //$id_count = $objQuery->count(mtb_status);
        //$productFlag = rand(1,$id_count);
      
        $this->statusName =$objQuery->get("mtb_status_image", "name", "id={$productFlag}");
        
        //表示する商品の件数
        $listCount = 3;
        
        
        $ret = "";
        $arrTmp[$productFlag] = "1";
            
        for($i = 1; $i <= $productFlag; $i++) {
            if($arrTmp[$i] == "1") {
                $ret.= "1";
            } else {
                $ret.= "_";
            }
        }

        if($ret != "") {
            $ret.= "%";
        }

        $col = "dtb_products.product_id, dtb_products.name, dtb_products.main_image,
                MIN(dtb_products_class.price02) AS price02_min, MAX(dtb_products_class.price02) AS price02_max";
        $from = "dtb_products INNER JOIN dtb_products_class ON dtb_products.product_id = dtb_products_class.product_id";
        $where = "dtb_products.product_flag LIKE \"{$ret}\"";
        $groupby = "product_id";
        $this->groupby=$objQuery->setgroupby($groupby);
        //商品の表示はupdate_dateが新しい順
        $order = "dtb_products.update_date DESC";
        $this->order=$objQuery->setorder($order);

        $arrFlagList = $objQuery->select($col, $from, $where);
        

        //商品の表示をランダムに抽出する場合は以下のコメントを外してください。
        //srand((double)microtime()*1000000);  //乱数生成器を初期化
        //shuffle($arrFlagList);

        
        $this->arrFlagProducts = array_slice($arrFlagList, 0, $listCount);



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

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

?>


ブロック(/data/Smarty/templates/default/bloc/productFlag.tpl)を作成。
※dt_blocのphp_pathフィールドの値をfrontparts/bloc/product_flag.phpにする。

<table width="220" border="0" cellspacing="0" cellpadding="0" summary=" ">
<tr valign="top">
<td colspan="3"><img src="<!--{$TPL_DIR}--><!--{$statusName}-->" width="65" height="17" alt="<!--{$statusName}-->" class="r5" />の商品
</td>
</tr>
<tr>
<td colspan="3" height="10"></td>
</tr>
<!--{section name=cnt loop=$arrFlagProducts}-->
<tr valign="top">

<td width="60" align="left" valign="middle">
<span style=margin-left:20;><a href="<!--{$smarty.const.URL_DIR}-->products/detail.php?product_id=<!--{$arrFlagProducts[cnt].product_id}-->">
<img src="<!--{$smarty.const.SITE_URL}-->resize_image.php?image=<!--{$smarty.const.IMAGE_SAVE_DIR}-->/<!--{$arrFlagProducts[cnt].main_image|sfRmDupSlash}-->&width=60&height=60" alt=""></a></span>
</td>
<td width="160">
<span class="fs12"><a href="<!--{$smarty.const.URL_DIR}-->products/detail.php?product_id=<!--{$arrFlagProducts[cnt].product_id}-->">
<font size=-1><!--{$arrFlagProducts[cnt].name}--></font></a>
<a href="<!--{$smarty.const.URL_DIR}-->products/detail.php?product_id=<!--$arrFlagProducts[cnt].product_id}-->"></a></span><br>
<!--{if $arrFlagProducts[cnt].price02_min == $arrFlagProducts[cnt].price02_max}-->
<font size="-1">¥<!--{$arrFlagProducts[cnt].price02_min|number_format}--></font>
<!--{else}-->
<font size="-1">¥<!--{$arrFlagProducts[cnt].price02_min|number_format}-->〜¥<!--{$arrFlagProducts[cnt].price02_max|number_format}--></font>
<!--{/if}-->
</td>
</tr>
<!--{/section}-->
</table>


デフォルトは、NEWをupdate_dateの新しい順で3件表示します。
変更したい場合は、LC_Page_FrontParts_Bloc.phpの該当箇所を変更してください(該当箇所のコメントを外すとランダム表示になります)。
デザインは適当に読み替えてください。

何か問題等ありましたら書き込みお願いします。
ゲスト
投稿日時: 2008-4-22 10:49
対応状況: −−−
Re: 新入荷商品をブロックに表示したい
これすばらしいですね。
1系では動かないのでしょうか?使っているのが、1.34なので1系でも動くなら是非使いたいです。
duckei
投稿日時: 2008-4-25 8:39
対応状況: −−−
半人前
登録日: 2008-3-19
居住地:
投稿: 23
Re: 新入荷商品をブロックに表示したい
申し訳ありません。私が使っているのが2.01であるため
1系で対応可能かどうか詳しくはわかりません。
ただ、1系の他のブロックのプログラム(best5.phpなど)を参考にしていただき
上記プログラムを読み替えていただければ比較的簡単に対応可能だと思います。
おそらく上記のLC_Page_FrontParts_Bloc_ProductFlag.phpをproduct_flag.phpとして書き換えていただき、LC_Page_FrontParts_Bloc_ProductFlag_Ex.phpが必要なくなるのかなと思いますが・・・お力になれずスイマセン。
ゲスト
投稿日時: 2008-4-27 5:19
対応状況: −−−
Re: 新入荷商品をブロックに表示したい
duckei様の内容とおり致しましたがシステムエラーが発生しました。大変お手数ですが、サイト管理者までご連絡ください。
となってしまいます。
データベースへの追加も問題なく行ったのですが・・・
同じようにエラーになってしまわれた方はおりませんか??
ゲスト
投稿日時: 2008-4-27 16:29
対応状況: −−−
Re: 新入荷商品をブロックに表示したい
2系ですがプレビューはOKですがブロックをトップに挿入してもエラーで動きません(T-T)
ゲスト
投稿日時: 2008-4-27 23:32
対応状況: −−−
Re: 新入荷商品をブロックに表示したい
1系で挑戦してますが、ファイルの設置に苦戦してます。
と、いうか2系とディレクトリー構造が違いすぎて、
どのようにファイルを設置していいかが分かりません><

ぜひ欲しい機能なので、なんとか実装したいのですが…

1系で完成した方がいらっしゃったらご教授お願いします!
duckei
投稿日時: 2008-4-28 0:15
対応状況: −−−
半人前
登録日: 2008-3-19
居住地:
投稿: 23
Re: 新入荷商品をブロックに表示したい
ゲストさんへ
引用:

ゲストさんは書きました:
duckei様の内容とおり致しましたがシステムエラーが発生しました。大変お手数ですが、サイト管理者までご連絡ください。
となってしまいます。
データベースへの追加も問題なく行ったのですが・・・
同じようにエラーになってしまわれた方はおりませんか??


申し訳ありませんが、もう少しエラーがでた状況等
詳細を教えてください。


引用:

ゲストさんは書きました:
2系ですがプレビューはOKですがブロックをトップに挿入してもエラーで動きません(T-T)


データーベースdtb_blocのphp_pathフィールド値をNULL値からfrontparts/bloc/product_flag.phpに変更されてますでしょうか。
書き込みされている場合は、エラーの内容を記載していただけると助かります。
ゲスト
投稿日時: 2008-4-28 1:58
対応状況: −−−
Re: 新入荷商品をブロックに表示したい
duckei様 ご返信ありがとうございます。
該当のファイルを作成しアップロードしました。
ブロックを追加、PostgreSQLへログインしphp_pathの値をfrontparts/bloc/product_flag.phpへ変更。
確認しましたところ、きちんと反映されています。

今使っているデザインテンプレート自体はECCUBEの初期デザインである3カラムでセンター部へブロックを挿入してみましたが全ページが表示された中にシステムエラーが発生しました。大変お手数ですが、サイト管理者までご連絡ください。
とのエラーになります。

試しに他の場所にもブロックを入れてみましたが全て同じでした。

私もプレビューでは□(画像?)の商品と表示はされます。

お手数おかけいたしますが宜しくお願いします
1234 ... |8 次へ→
| 新しいものから 前のトピック | 次のトピック | トップ

 
EC-CUBEダウンロード
正式版(zip版) 正式版(tar.gz版)
パートナー募集
構築事例募集
EC-CUBE寄付支援プロジェクト
リンク
投稿数ランキング
1
seasoft
4925
2 ramrun 789
3
AMUAMU
787
4
nanasess
722
5
homan
547
6 tonton 435
7
kishik
381
8
tao_s
334
9 x41 299
10
ecbg
297
11
DDR
259
12 arts 227
13 pineray 208
14
kvex2004
205
15
flealog
184
16
DELIGHT
142
17
mahalo_c
136
18 nanakoko 135
19 popo 126
20 kurobon 116
21
yokoshima
113
22
Oba
106
23
takoyaki
105
24 lvsa 104
25
lucky7
101
26 mi-taro 100
27 it3 92
28
sakurai07
88
29
illfrog300
88
30
kaoring777
87
31
ryo
86
32 tao 82
33 tmtqn543 82
34 mkhkck 79
35 bott 78
36 hunterman 78
37
saratoga
76
38
vexit
70
39
asayama
68
40
osamusi
66
41 kana 64
42
kishimoto
63
43 harutom 63
44
lockon_admin
62
45 fsv_g2 61
46 NSX 61
47 Masashige 61
48 fukuma 60
49 kctakeyama 60
50 Linux-user 59
Copyright© LOCKON CO.,LTD. All Rights Reserved.