[Magento] 商品一覧に『NEW』『SALE』のアイコンを表示する

管理画面から設定する項目

『NEW』アイコン表示に使う期間設定項目

NEW

『SALE』アイコン表示に使う期間設定項目

SALE

対象ファイル(カテゴリ一覧の場合)

  • /app/design/frontend/default/modern/template/catalog/product/list.phtml
  • /app/design/frontend/default/modern/template/catalog/product/widget/new/content/new_grid.phtml
  • /app/design/frontend/default/modern/template/catalog/product/widget/new/content/new_list.phtml
を編集します。

記述するコード

該当箇所に以下をペーストするだけでOKですが、画像のパスなどは適所変更してください。

<?php
// 特別価格の取得準備
$specialprice = Mage::getModel('catalog/product')->load($_product->getId())->getSpecialPrice(); 
// 『特別価格開始日』の取得
$specialPriceFromDate = Mage::getModel('catalog/product')->load($_product->getId())->getSpecialFromDate();
// 『特別価格終了日』の取得
$specialPriceToDate = Mage::getModel('catalog/product')->load($_product->getId())->getSpecialToDate();
// 現在時刻の取得
$today =  time();

/*
本来テンプレートファイルの中で上記の「Mage::」は使うべきではないですが、
↓のようにするのですが、うまく動作しないので・・・
$specialprice = $_product->getSpecialPrice();
$specialPriceFromDate = $_product->getSpecialFromDate();
$specialPriceToDate = $_product->getSpecialToDate();
*/
?>

<?php
if ($specialprice){ ?>
<?php if($today >= strtotime( $specialPriceFromDate) && $today <= strtotime($specialPriceToDate) || $today >= strtotime( $specialPriceFromDate) && is_null($specialPriceToDate)) { ?>

	<!-- 『SALE』アイコンの表示 -->
	<img src="sale.png" border="0" alt="SALE" />
	
<?php }else{ ?>
<?php } ?>

<?php }else{ ?><?php } ?>

<?php
$start = strtotime($_product->getNews_from_date());
$end = strtotime($_product->getNews_to_date());
if ($today < $start || $today > $end) {
?>
<?php }else{ ?>

	<!-- 『NEW』アイコンの表示 -->
	<img src="new.png" border="0" alt="NEW" />

<?php } ?>

セール商品の価格が期間を過ぎても変わらない・・・

運用ではCronを使う必要があるのですが、Cronを設定していない状態ではmagentoのファイルキャッシュの関係でセール商品の価格が期間を過ぎても変わらないという状態に陥ります…。そんなときは『インデックス管理』の商品価格の項目を「再インデックス」することで全商品の価格のキャッシュを作り直します。セール価格も期限が過ぎていれば通常価格に戻ります。お試しあれ。
インデックス管理

以上です。

Similar posts