バージョン選択

フォーラム

メニュー

オンライン状況

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

サイト内検索

機能要望 > フロント機能 > 新入荷商品をブロックに表示したい

フロント機能

新規スレッドを追加する

| 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
ゲスト
投稿日時: 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カラムでセンター部へブロックを挿入してみましたが全ページが表示された中にシステムエラーが発生しました。大変お手数ですが、サイト管理者までご連絡ください。
とのエラーになります。

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

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

お手数おかけいたしますが宜しくお願いします
(1) 2 3 4 ... 8 »
| 新しいものから 前のトピック | 次のトピック | トップ


 



ログイン


EC-CUBEペイメント

統計情報

総メンバー数は37,779名です
総投稿数は88,890件です

投稿数ランキング

1
seasoft
7332
2
AMUAMU
2712
3
nanasess
1865
4
yuh
1545
5
468
1386
6
red
1204
7
umebius
1007
8
fukap
907
9
shutta
827
10
tsuji
815
11 ramrun 789
12
tao_s
667
13 karin 656
14 sumida 641
15
h_tanaka
634
16
homan
633
17 DELIGHT 571
18
patapata
502
19
flealog
483
20 tonton 436


ネットショップの壺

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

Copyright© LOCKON CO.,LTD. All Rights Reserved.