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*****>