Zen-Cartの商品提供可能日を時刻まで指定する方法
2007-09-29
Zen-Cartには、商品登録時に、商品提供可能日を設定することが可能です。
一般設定>トップページの表示設定で「入荷予定商品」を表示するようにしていれば、
トップページや商品リストの下部にリストされます。
管理画面側
まずは管理画面側から・・・ admin/includes/modules/pages/product_info/main_template_vars.phpの50行目付近date_format(p.products_date_available, '%Y-%m-%d') as
を
date_format(p.products_date_available, '%Y-%m-%d %H:%i:%s') as
にします。
次に同ファイルの280行目付近
<td class="main"><script language="javascript">dateAvailable.writeControl(); dateAvailable.dateFormat="yyyy-MM-dd";</script></td>
を
<td class="main"><script language="javascript">dateAvailable.writeControl(); dateAvailable.dateFormat="yyyy-MM-dd 00:00:00";</script></td>
にします。
これだけで提供可能日を日付だけでなく時刻まで登録することができるようになります。
テキストボックスのサイズが小さいのが気になるようでしたら、
admin/includes/javascript/spiffyCal/spiffyCal_v2_1.js
の930行目付近のsize="12"を適当な値に変更してください。
ショップ画面側
includes/modules/upcoming_products.phpの15行目付近if ( (!isset($new_products_category_id)) || ($new_products_category_id == '0') ) {
$expected_query = "select p.products_id, pd.products_name, products_date_available as date_expected
from " . TABLE_PRODUCTS . " p, " . TABLE_PRODUCTS_DESCRIPTION . " pd
where to_days(products_date_available) > to_days(now())
and p.products_id = pd.products_id
and pd.language_id = '" . (int)$_SESSION['languages_id'] . "'
order by " . EXPECTED_PRODUCTS_FIELD . " " . EXPECTED_PRODUCTS_SORT . "
limit " . MAX_DISPLAY_UPCOMING_PRODUCTS;
} else {
$expected_query = "select p.products_id, pd.products_name, products_date_available as date_expected
from " . TABLE_PRODUCTS . " p, " . TABLE_PRODUCTS_DESCRIPTION . " pd, " . TABLE_PRODUCTS_TO_CATEGORIES . " p2c, " .
TABLE_CATEGORIES . " c
where p.products_id = p2c.products_id
and p2c.categories_id = c.categories_id
and c.parent_id = '" . (int)$new_products_category_id . "'
and to_days(products_date_available) > to_days(now())
and p.products_id = pd.products_id
and pd.language_id = '" . (int)$_SESSION['languages_id'] . "'
order by " . EXPECTED_PRODUCTS_FIELD . " " . EXPECTED_PRODUCTS_SORT . "
limit " . MAX_DISPLAY_UPCOMING_PRODUCTS;
}
を
if ( (!isset($new_products_category_id)) || ($new_products_category_id == '0') ) {
$expected_query = "select p.products_id, pd.products_name, products_date_available as date_expected
from " . TABLE_PRODUCTS . " p, " . TABLE_PRODUCTS_DESCRIPTION . " pd
where products_date_available > now()
and p.products_id = pd.products_id
and pd.language_id = '" . (int)$_SESSION['languages_id'] . "'
order by " . EXPECTED_PRODUCTS_FIELD . " " . EXPECTED_PRODUCTS_SORT . "
limit " . MAX_DISPLAY_UPCOMING_PRODUCTS;
} else {
$expected_query = "select p.products_id, pd.products_name, products_date_available as date_expected
from " . TABLE_PRODUCTS . " p, " . TABLE_PRODUCTS_DESCRIPTION . " pd, " . TABLE_PRODUCTS_TO_CATEGORIES . " p2c, " .
TABLE_CATEGORIES . " c
where p.products_id = p2c.products_id
and p2c.categories_id = c.categories_id
and c.parent_id = '" . (int)$new_products_category_id . "'
and products_date_available > now()
and p.products_id = pd.products_id
and pd.language_id = '" . (int)$_SESSION['languages_id'] . "'
order by " . EXPECTED_PRODUCTS_FIELD . " " . EXPECTED_PRODUCTS_SORT . "
limit " . MAX_DISPLAY_UPCOMING_PRODUCTS;
}
に変更します。
具体的にはto_days関数を利用しないようにしているということですね。
他にもproducts_date_available関連のto_days関数を利用しているところがあれば、そちらも変更しておいた方がいいでしょう。