[Tep-j-general] 新規商品にNEWマークを付けたい

アーカイブの一覧に戻る

Akira Taniguchi tanig****@prime*****
2003年 10月 14日 (火) 17:07:00 JST


こんにちは、谷口です。
かなりご無沙汰しております(半年ぶり?(^^;;)

Fri, 10 Oct 2003 00:03:14 +0900 頃に
NuCL さんが送信された
「[Tep-j-general] 新規商品にNEW マークを付けたい」を引用しています。
> カタログからカテゴリの商品一覧を表示した際に
> 新しく登録した商品や、編集した商品に対して「NEW」の
> 表示を加えようと色々やっているのですが、どうも
> うまくいきません。
> 
> NEWマークを付けていらっしゃる方がいたら、変更の
> ポイントなどを教えてもらえませんでしょうか。

私が触っているのは2.2ではないですが、商品一覧はいじり倒しました。
既に原形を留めていないような気もします(苦笑)


変更するのは
/catalog/default.php
/catalog/includes/modules/product_listing.php
の2つです。

まず、default.phpを編集します。この172行目-194行目で一覧表示に使う情報
を取ってくるselect文を作っています。ここにNEWマークを付けるための条件
とするカラムを追加します。
おそらくproductsテーブルのproducts_date_addedとproducts_date_modified
になると思いますが、注意すべきなのは、MySQLで取得する日付の形式
(YYYYMMDDHHMMSS)とphpで処理する日付の形式(unix形式のタイムスタンプ)が
違うことです。ですので、UNIX_TIMESTAMP()関数を用いてこれを変換しておき
ます。

UNIX_TIMESTAMP(p.products_date_added) as prod_date_added, UNIX_TIMESTAMP(p.products_date_modified) as prod_date_modified


次に実際に一覧のhtmlを生成しているproducts_listing.phpを編集します。
106行目-151行目で商品毎の行を生成しているので、ここに「NEW」表示をする
ためのコードを追加します。

例えば「登録日か編集日が7日以内なら商品名の後ろに「It's New!」を追加す
る」場合はproducts_listing.phpの117行目の後に次のコードを追加します。
$new_today_date = mktime(0, 0, 0, date("m"), date("d"), date("Y"));
$new_add_limit = mktime(0, 0, 0, date("m", $listing['prod_date_added']), date("d", $listing['prod_date_added']), date("Y", $listing['prod_date_added']));
$new_modify_limit = mktime(0, 0, 0, date("m", $listing['prod_date_modified']), date("d", $listing['prod_date_modified']), date("Y", $listing['prod_date_modified']));
if (($new_add_limit > $new_today_date) or ($new_modify_limit > $new_today_date){
  $lc_text .= ' It's New! ';
}

全くこの通りのコードを使っているわけではないので、穴があると思います
が、こんな感じですということで。
----- 
ホームページ企画・製作・運営代行
プライムフェローズ PrimeFellows

谷口 明<tanig****@prime*****>




Tep-j-general メーリングリストの案内
アーカイブの一覧に戻る