Zen Cart 地域別送料を設定

Zen Cart

Zen Cart 1.3.0.2

Zen Cartで地域別送料を設定するやり方は、定額料金(flat)と地域税を組み合わせて作ることが可能なようですが、なんだか分かりにくいなぁというのと、重量別にしたいときに対応できないので、困ってました。

そこで考えてみたところ、せっかく地域料金(zones)、というモジュールがあるじゃないですか。
ただ、これが使えないのは国名別の送料になってるところなんですよね(^_^;
グローバルすぎます[huh]

国内で使用するだけなら、国名別の送料、いらないですよね。
それに、顧客アカウントを作るときに、国名をいちいち入力させるのはよくないなぁと思ってたところです。

ではこの国名別送料を、県名に変更してみれば、日本国内で使える地域別送料モジュールができるはずです。

(下記の方法は、ノウハウのある方が自己責任で使ってください。Back Upを取ってから作業を行ってください。)

  1. Zen Cartのデータベースの”zen_country”を(インストール時にzenをつけなかった方はcountryだと思います。編集します。

country_idは県の番号、countries_nameは県名、countries_iso_code_2 countries_iso_code_3 はcountry_idと同じでよいでしょう。
address_format_idは6にしてください。

  1. 47都道府県が入力できましたか?都道府県名、country_idcountries_iso_code_2 countries_iso_code_3 の表は大切に控えましょう。
  2. 次は、一般設定→顧客アカウントの設定→都道府県名表示をfalseにします。県名の入力がかぶるのを防ぐためです。
  3. Zen Cartの管理画面へ移り、モジュール→配送モジュールの設定→地域料金をインストールします。
  4. 地域料金による配送をTrueにします。
  5. あとは、モジュールの説明に従って入力します。“地域1に適用するISO国コード(2文字)をカンマ区切りで入力します”などとあるところのISO国名コードは、自分が入力した県のcountry_idを入力します。
  6. さらに、language/japanese内の語句定義ファイルにて「国名」とあるところを「県名」と置換してしまいましょう。

以上で、終わりです!

Zen Cart導入・カスタマイズ・構築

Zen cart ロゴの大きさを変更する

Zen Cart

Zen Cartでロゴの大きさを変更する

Zen Cart 1.3.0.2-l10n-jp-5

Zen Cart、ロゴを変更しても、なぜかソースに高さ・横幅の指定がしてあって、うまく反映されない…
という場合には、次の場所を編集しましょう。

 /includes/languages/japanese/itfl/header.php 内
 
 define('HEADER_LOGO_WIDTH', '284px'); //横幅
 define('HEADER_LOGO_HEIGHT', '81px'); //高さ

Zen Cart

android.support.test.espresso.AmbiguousViewMatcherException

Android
Espresso

フラグメントやリストなど、何かと繰り返すコンテンツってありますよね?
Androidのテスト用サポートライブラリ、Espressoですが、同じ名前やIDなのに複数存在する要素をテストしようとすると、下記のエラーが出ます。

android.support.test.espresso.AmbiguousViewMatcherException: ‘with id: jp.onlineconsultant.hogehoge:id/take_over_text’ matches multiple views in the hierarchy.
Problem views are marked with ‘****MATCHES****’ below.

 //ビューのxmlレイアウトファイル
    <TableRow
        android:layout_marginLeft="1dp"
        android:layout_marginRight="1dp"
        android:layout_marginTop="1dp"
        android:background="#FFFFFF"
        android:padding="3dp"
        android:id="@+id/sender_take_over_text">
 
        <TextView
            android:id="@+id/take_over_text"
            android:layout_width="0dp"
            android:layout_weight="1"
            android:text="@string/take_over" />
 
        <TextView
            android:id="@+id/take_over"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="2"></TextView>
    </TableRow>
    <TableRow
        android:layout_marginLeft="1dp"
        android:layout_marginRight="1dp"
        android:layout_marginTop="1dp"
        android:background="#FFFFFF"
        android:padding="3dp"
        android:id="@+id/sender_take_over_text">
 
        <TextView
            android:id="@+id/take_over_text"
            android:layout_width="0dp"
            android:layout_weight="1"
            android:text="@string/take_over" />
 
        <TextView
            android:id="@+id/take_over"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="2"></TextView>
    </TableRow>
 //テストコード
 onView(withId(R.id.take_over_text)).check(matches(withText(R.string.take_over)));

そういう時は、allOfを使って、親要素のIDなどを取得してどちらがどちらか、という判定を作ります。

 onView(allOf(withId(R.id.take_over_text), withParent(withId(R.id.sender_take_over_text))))
  .check(matches(withText(R.string.take_over)));

これでOKです!

withParentだと、直上の親の要素を指定することがあるので、おじいちゃん/おばあちゃんの要素を取りたい場合は

 isDescendantOfA

を使えばOKです。

application/octet-stream

Android

application/octet-stream

画像のアップロードフォームで、ファイルタイプがapplication/octet-streamで、画像として認識できずアップロードできない、という問題がありました。
ファイル自体の拡張子は、jpgとなっているのにも関わらずです。

application/octet-streamとは何かというと、

意味:
application/octet-streamとはContent-Type?ヘッダにおいてバイナリ形式である場合に指定されるサブタイプのこと。

アプリケーションが何か判断できないとき、またはそのアプリケーション独自のファイル・タイプ?であるため判別できない場合も使われる。

だ、そうです。

出典:
http://www23.atwiki.jp/sevenlives/pages/137.html

で、これはどこで遭遇したかというと、Experiaでブラウザから画像ファイルを投稿する時にこれになっちゃってたんですね。
アプリで撮った写真だからでしょうか?!

プログラムの色々なところを、ファイルタイプを見るのではなくて拡張子を見るように変更して解決しました。

android.widget.LinearLayout cannot be cast to android.widget.Button

Android

android.widget.LinearLayout cannot be cast to android.widget.Button

レイアウトのxmlファイルも、Acivityでも、ButtonをLinearLayoutなどにキャストしていないのに、なぜか上記のようなエラーが出ました…。
??と思い検索すると

http://stackoverflow.com/questions/11792109/linearlayout-cannot-be-cast-to-android-widget-button

にて、Clean→Buildしたらなおるよ~

と。

本当に治りました。

どっかでそんなキャストしてるのかな?と調べた時間がなんと無駄なことか…orz

本当に、ADTのバカ~[sad]

「バカバカバカバカっ。」
「そんなに怒るなよ…今度、オマエが行きたがってたレストランに連れて行ってやるからヨ」

という本宮ひろ志のマンガに出てくる女泣かせの主人公的なキャラのADTでも妄想して怒りをしずめたいと思います。