「zen cart」タグアーカイブ

Zen Cartで、言語によって都道府県又は、State/Provinceのプルダウンメニュー表示非表示を切り替える

Zen Cartの都道府県や海外の州などの選択が邪魔

ZenCart 1.3.8a – 1.5.1
日本国内では配送モジュールで都道府県から送料を算出しているので、ドロップダウンメニューが必要。

 
しかし海外対応にした際に、State/Provinceとでてドロップダウンをクリックしても、アメリカ以外は州などが選べない。

 
言語によって表示・非表示を切り替える。
大規模カスタマイズになると、チェック部分などに問題が発生するので、あえて小規模なとりあえずカスタマイズにしておく。日本語ができて英語ができない台湾人などには対応できないが、その場合は、日本語ページで外国在住用、日本在住用・英語ページ外国在住用の3つに分ける手間が必要となる。

 

Zen Cartの送料カスタマイズ

触る場所は、

includes/templates/template_default/templates/tpl_modules_create_account.php

85行目~110行目辺り。

<?php
if (ACCOUNT_STATE == ‘true’) {
$country_zones_pull_down = array();
if ($flag_show_pulldown_states == true) {
$country_zones_pull_down = zen_prepare_country_zones_pull_down($selected_country);
?>
<label class=”inputLabel” for=”stateZone” id=”zoneLabel”><?php echo ENTRY_STATE; ?></label>
<?php
echo zen_draw_pull_down_menu(‘zone_id’, $country_zones_pull_down, $zone_id, ‘id=”stateZone”‘);
if (zen_not_null(ENTRY_STATE_TEXT)) echo ‘&nbsp;<span class=”alert”>’ . ENTRY_STATE_TEXT . ‘</span>’;
?>
<br class=”clearBoth” id=”stBreak” />
<?php }
?>
<label class=”inputLabel” for=”state” id=”stateLabel”><?php echo $state_field_label; ?></label>
<?php
echo zen_draw_input_field(‘state’, ”, zen_set_field_length(TABLE_ADDRESS_BOOK, ‘entry_state’, ’40’) . ‘ id=”state”‘);
if (zen_not_null(ENTRY_STATE_TEXT)) echo ‘&nbsp;<span class=”alert” id=”stText”>’ . ENTRY_STATE_TEXT . ‘</span>’;
if ($flag_show_pulldown_states == false) {
echo zen_draw_hidden_field(‘zone_id’, $zone_name, ‘ ‘);
}
?>
<br class=”clearBoth” />

 
———————————————————-
この前の部分、85行目のところを、ADD_FURIGANA の一文を追加。
最後の部分、110行目あたりに、<?php } ?> の一文を追加。

<?php if (ADD_FURIGANA == ‘true’) { ?>
<?php
if (ACCOUNT_STATE == ‘true’) {
$country_zones_pull_down = array();
~~~~~ 中略 ~~~~~
echo zen_draw_hidden_field(‘zone_id’, $zone_name, ‘ ‘);
}
?>
<?php } ?>
<br class=”clearBoth” />

これで、入力時にふりがながいる言語=日本語 の際には都道府県が表示され、それ以外(英語など)には表示されないこととなる。
あとは必須入力を解除するだけなので、管理画面-一般設定-最小値の設定 から、都道府県の最小値を0にしておく。

これでとりあえずは大丈夫。今回はめんどうだったので「ふりがな」あるなしで場合分けしたが、国IDやその他の値で場合分けすれば、日本語の海外在住者にも対応可能となる。

参考までに。

 

Zen Cart送料カスタマイズの注意点

この設定だと、料金自動計算などのある特定の状況下においてアカウント作成時にエラーが起こる場合がある。
もしも、アカウント作成時にエラーが発生する場合はこのカスタマイズでは対応できないので注意。

この記事も読まれています

Improved Attributes Controllerで、Zen cart オプション値を使いやすくカスタマイズ

「Improved Attributes Controller」というものがある。

ここからダウンロード。
Improved Attributes Controller.zip

これでZenカートのオプション名とオプション値が連動してない状態は改善される。
方法は簡単。adminフォルダに attributes_controller.php を上書きするだけ。
Zen Cartにとって、オプション値、オプション名、オプション編集は、ダウンロード商品や、サイズ、色などを指定する、とても重要な機能にも関わらず、使い勝手が非常に悪い。

※Zen Cart v 1.3.9以降は初めから組み込まれているので、上記のファイルをダウンロードする必要はないが、後述のカスタマイズは同様の方法で可能。

Improved Attributes Controller で、
2007haq1021-01
この状態から、
attributes_controller1


この状態になる。

まあこまでは簡単。他のページでも紹介されているが、これだけでは不十分で、微妙に使い勝手が悪い。元に比べるとはるかに改善されてはいるが。

attributes_controller_sause

ここ。1670行目あたりから始まる、

<!– start modification for improved attributes controller –>

<td class=”attributeBoxContent”>&nbsp;<?php echo TABLE_HEADING_OPT_NAME . ‘<br />’; ?><select name=”options_id” id=”Option Name” onchange=”TCN_reload(this)” size=”<?php echo ($action != ‘delete_attribute’ ? “5” : “1”); ?>” >
<option selected>Option Name</option>
</select>&nbsp;</td>
<td class=”attributeBoxContent”>&nbsp;<?php echo TABLE_HEADING_OPT_VALUE . ‘<br />’; ?><select name=”values_id[]” id=”Option Value” onchange=”TCN_reload(this)” multiple size=”<?php echo ($action != ‘delete_attribute’ ? “5” : “1”); ?>” >
<option selected>Option Value</option>
</select>&nbsp;</td>
</tr></table></td></tr>
</table>

この赤文字で書いた「5」の部分を 10 でも 20 でも、好きな数字に変える事で、
attributes_controller1
これが、

attributes_controller_2
こうなる。仮に 10 にしてみた。

これで作業効率は10倍以上と言っても過言ではないぐらい上がる。