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送料カスタマイズの注意点

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

twentyfifteenで灰色の線をなくす方法 Wrodpress

Twenty Fifteen シンプルな記事型ブログに最適なテーマ

シンプルですっきりとしたテーマ/テンプレートなのだが、あとTwentyfifteenに限らず、Twentythirteenもだが、基本的に英語環境で開発されているので、日本語にした時にはフィーリングが合わずしっくりこない。

 

具体的には左のメニューが大きすぎる、コンテンツ部分が少し狭い。灰色のborderが邪魔。などが代表的で一見すると簡単に変更できそうだ。

 

Twentyfifteenは意外とカスタマイズしにくかった

 

理由は以下の通り
・レスポンシブデザインで作られていて、CSSのメディアアンカーを探しにくい
・width などの配置を決めるpadding: 0.7917em 1.5833emなどの桁数が多くピンとこない
・前述の灰色のborderは実はboxshadowでやっているので分かりにくい
 

twentyfifteenで、CSSで簡単にコンテンツ部分を広げる方法

CSSで以下のような記述の部分を探そう。

.site-content {
display: block;
float: left;
margin-left: 20.4118%;
width: 79.5882%;
}

.sidebar {
float: left;
margin-right: -100%;
max-width: 313px;
position: relative;
width: 25.4118%;
}

ここで、 width: や margin-left: の値を好きに変更して、デザインを確かめてみよう。

なお、先述の通り、PC用のデザインを変えたいならメディアアンカーに注意が必要!

@media screen and (min-width: 38.75em) {
/*この間の部分を変更すること*/
}

↑こういう感じのやつ。

 

twentyfifteenで、灰色のborderを非表示に

 
このborderをカスタマイズするのがやっかいだった。
理由は、borderと言いつつ、ここはbox-shadowで描画されているから見つけられなかったのだ。border-left: 1px;などといくら検索しても何も見つからない。

.post-navigation {
border-top: 0;
box-shadow: 0 0 1px rgba(0, 0, 0, 0.15);
margin: 7.6923% 7.6923% 0;
}

こういった感じで、色々なところにbox-shadowで灰色の線が引かれている。

これを以下のように、

box-shadow: 0 0 0 rgba(0, 0, 0, 0.15);

すればとりあえず線は消える。

これも、メディアアンカーに注意だ!

ZenCartで通貨表示を¥から円やJPYに切り替える方法

Zen Cartの通貨表示に問題あり!

Zen Cart はデフォルトでは、¥になってるが、コレを半角でかくと「バックスラッシュ」になってしまう場合がある。
ローカライズ – 通貨設定 – のところで、右側シンボルを「円(税込)」とすることで、この¥の問題は解決できる。
「円(税込)」と日本語で入れるのだが、実はそうすると英語表示をした時にも 円(税別)とでてしまい、わけが分からなくなる。
 
しかしじゃあ英語の時には通過はドルにしようとすると、、為替レートの管理、送料の管理がかなり大変になってしまう。
 
例えば、送料を500円としていると、ドルに変換されると500ドルというとんでもない数値になる。なんともマヌケ。

 

最近ではクレジットカードやPaypalを使えば、円決済でも勝手にレート換算されるので、もう世界中を日本円で取引してしまうほうが、断然いいわけだ。

 

英語表示用の新しい通貨を追加する

管理画面の、ローカライズ – 通貨設定 – のところで、新しい通貨を追加。
JPYは既にあるはずなので、YENなどで作っておく(海外用の円)。設定値は1.0000000のままで。
 
右側シンボルを「JPY (inc.VIT)」など、外国向けの表記にしておく。
 

英語表示の円をJPYにしよう

includes/languages/english.phpの42行目。

// if USE_DEFAULT_LANGUAGE_CURRENCY is true, use the following currency, instead of the applications default currency (used when changing language)
define(‘LANGUAGE_CURRENCY’, ‘YEN’);
↑ CURRENCYをUSDからYENに。
 
これで通貨は円のまま、表記だけ英語にすることができる!

明日試したくなるカスタマイズ、ネットな日々に役立つ小技と、たまに旅行の妄想と。