[解決済み] 在庫ステータスの条件分岐「在庫僅少」が反映されない。
-
投稿者投稿
-
2012年3月16日 10:47 AM #51408you参加者
いつもお世話になっております。
在庫ステータスで条件分岐を使ったカスタマイズをしていて気付いたのですが、
0から4まであるステータスの中で、
「1:在庫僅少」
のみ反映されません。
「1の場合は●●、2の場合は▲▲、それ以外は■■」
といったコードを書いた場合、
1:在庫僅少を選択時は、■■が表示されます。
1以外を選択した時は全て正常に反映されております。
お手数をおかけ致しますが、一度ご確認いただければ幸いです。
【Welcart 1.1.2を使用】
[余談]
開発フォーラムの自分の書き込みに返信がついた時に、メールでお知らせがくるようになると助かります。
2012年3月17日 5:42 AM #64155nanbuキーマスターこんにちは。
> 「1の場合は●●、2の場合は▲▲、それ以外は■■」
> といったコードを書いた場合、
どのようなコードですか?
Welcartのバージョンはいくつですか?
> 開発フォーラムの自分の書き込みに返信がついた時に、メールでお知らせがくるようになると助かります。
何かプラグインがあるといいのですが・・・。
2012年3月17日 12:18 PM #64156you参加者>nanbuさま
お世話になっております。
記入したコードは試した以下の通りです。
(welcart1.1.2/wordpress3.3.1)
welcartは1.1.2をバージョンアップではなく新規で導入しました。
■welcart_default/wc_templates/wc_item_single.php
<?php if(usces_sku_num() === 1) : usces_have_skus(); ?>
<!--1SKU-->の以下に
<?php if( !usces_have_zaiko() ) : ?>
<?php $status = usces_get_itemZaiko( 'id' ); ?>
<?php if( 0 === $status ): ?>
<?php echo apply_filters('usces_filters_single_sku_zaiko_message', __('ステータス0', 'usces')); ?>
<?php endif; ?>
<?php if( 1 === $status ): ?>
<?php echo apply_filters('usces_filters_single_sku_zaiko_message', __('ステータス1', 'usces')); ?>
<?php endif; ?>
<?php if( 2 === $status ): ?>
<?php echo apply_filters('usces_filters_single_sku_zaiko_message', __('ステータス2', 'usces')); ?>
<?php endif; ?>
<?php if( 3 === $status ): ?>
<?php echo apply_filters('usces_filters_single_sku_zaiko_message', __('ステータス3', 'usces')); ?>
<?php endif; ?>
<?php if( 4 === $status ): ?>
<?php echo apply_filters('usces_filters_single_sku_zaiko_message', __('ステータス4', 'usces')); ?>
<?php endif; ?>
<?php else : ?>
<?php echo apply_filters('usces_filters_single_sku_zaiko_message', __('ステータスなし', 'usces')); ?>
<?php endif; ?>こうすると、「在庫あり/在庫僅少」を選択時には、「ステータスなし」が表示されました。
ステータス2、3,4については各々が表示されました。
上記のコードとは別ですが、<?php if( !usces_have_zaiko() ) : ?>の中にさらに<?php if( !usces_have_zaiko() ) : ?>を使用して条件分岐していたりするのですが、もしかしてこれも良くないのでしょうか・・・?
購入ができるステータスとできないステータス、といった二つのくくりで動きに違いが出ていると思います。
>何かプラグインがあるといいのですが・・・。
なるほど。
了解しました(^^;
2012年3月19日 3:26 AM #64157nanbuキーマスターusces_have_zaiko()は在庫があるかどうかを返していますので、!usces_have_zaiko()の中では在庫がない時のステータス、elseでは在庫がある時のステータスを表示させると良いかと思います。
このようになります。
<?php $status = usces_get_itemZaiko( 'id' ); ?>
<?php if( !usces_have_zaiko() ) : ?>
<?php if( 2 === $status ): ?>
<?php echo apply_filters('usces_filters_single_sku_zaiko_message', __('ステータス2', 'usces')); ?>
<?php endif; ?>
<?php if( 3 === $status ): ?>
<?php echo apply_filters('usces_filters_single_sku_zaiko_message', __('ステータス3', 'usces')); ?>
<?php endif; ?>
<?php if( 4 === $status ): ?>
<?php echo apply_filters('usces_filters_single_sku_zaiko_message', __('ステータス4', 'usces')); ?>
<?php endif; ?>
<?php else : ?>
<?php if( 0 === $status ): ?>
<?php echo apply_filters('usces_filters_single_sku_zaiko_message', __('ステータス0', 'usces')); ?>
<?php endif; ?>
<?php if( 1 === $status ): ?>
<?php echo apply_filters('usces_filters_single_sku_zaiko_message', __('ステータス1', 'usces')); ?>
<?php endif; ?>
<?php endif; ?>これを見ていただきますとわかります通り、usces_have_zaiko()の条件分岐を行う必要がございません。
そこでこのようになります。
<?php $status = usces_get_itemZaiko( 'id' ); ?>
<?php if( 0 === $status ): ?>
<?php echo apply_filters('usces_filters_single_sku_zaiko_message', __('ステータス0', 'usces')); ?>
<?php endif; ?>
<?php if( 1 === $status ): ?>
<?php echo apply_filters('usces_filters_single_sku_zaiko_message', __('ステータス1', 'usces')); ?>
<?php endif; ?>
<?php if( 2 === $status ): ?>
<?php echo apply_filters('usces_filters_single_sku_zaiko_message', __('ステータス2', 'usces')); ?>
<?php endif; ?>
<?php if( 3 === $status ): ?>
<?php echo apply_filters('usces_filters_single_sku_zaiko_message', __('ステータス3', 'usces')); ?>
<?php endif; ?>
<?php if( 4 === $status ): ?>
<?php echo apply_filters('usces_filters_single_sku_zaiko_message', __('ステータス4', 'usces')); ?>
<?php endif; ?>更に、フックを使う必要がなければこのように書くこともできます。
<?php
$status = usces_get_itemZaiko( 'id' );
if( 0 === $status ):
echo 'ステータス0';
elseif( 1 === $status ):
echo 'ステータス1';
elseif( 2 === $status ):
echo 'ステータス2';
elseif( 3 === $status ):
echo 'ステータス3';
elseif( 4 === $status ):
echo 'ステータス4';
endif;
?>また、この出力は、ステータス名を変えなければこのテンプレートタグと同じです。
<?php echo usces_get_itemZaiko( 'name' ); ?>
2012年3月19日 11:57 AM #64158you参加者>nanbuさま
根本的に使い方を間違っていたようで、お恥ずかしい限りです。
すみません。
上記に書いていた「上記のコードとは別ですが・・・」の件でも、elseの使い方を正常に使って試した結果、思ったように表示されたので本当に助かりました。
ありがとうございました。
-
投稿者投稿
- このトピックに返信するにはログインが必要です。