iPHONE4をJAILBREAK。その前にiosを4.3.5から4.3.3にダウングレードする

いまさらだけど、というか、もうじきiphone5出るってのに、iphone4を買い、いじいじする日々。
買ってよかった、みんなのiphone。楽しい!

iphoneを買ったら最初にやりたかったこと。
TETHERING。
そう。携帯の電波をPCのWIFIの接続基地として使うって言うアレですね。携帯通じるところなら、どこでも、パケホーダイで使いホーダイっていうやつです。

それで、iphone4を買ったときに、早速脱獄して、TETHERME(TETHERING用のソフトです)をインストールしたんだけど、結局、自分はいつでも電波届くところにいるし、外で、そんなに必要に迫られることもなくて、利用せずじまい。だけど、TETHERMEが様々買ったアプリの中で一番高額なのであった;

脱獄すると、iphoneのメールの着メロが自由に設定できるので(iphoneの着信音って、使えるのが限られてて、みんなiphone使ってたりすると、誰の携帯がなってるのかさっぱりわからんのです!)それを好きな曲に変えるのが一番脱獄後のメリットだった。
なのに。なぜか。
うかつにも、iosのバージョンを脱獄した4.3.3から4.3.4にアップグレードしてしまったのですよ。がちょーん。油断した!

それで、ios4.3.4にしたら、原則普通の制限のない脱獄はできないし、脱獄しないと、着メロもせっかく買ったTETHERMEも使えない。。。

ま~。おかしな位色々やりましたですよ。フリーズしたまま電波を認識せず、起動さえしないという、いわゆる 「文鎮化」っていうのも、散々なりましたですよ。
その都度何時間もかけて青くなりながら、ios4.3.4に入れなおしてっと。

でも、本日、ios4.3.3へ無事ダウングレードし、TETHERMEもメール着メロもその他色々も実現できましたっ!おめでとう!ありがとう!
なので、前置き長いですけど、備忘録代わりに、ささっと、要件かいときます。

iosを4.3.4にうっかりアップグレードしちゃったかた。そして、何度ネット見ながら色々やっても、4.3.3へ戻せなかった方。下記のチェックポイントを参考にしながらリトライしてみてください。
私はコレでいけました。

ダウングレードには、ダウングレードしたいバージョンのiosのshshという設定ファイルが必要です。これは、APPLEのサーバに、それぞれ自分のiphone専用のファイルが保存されていますので、それを取得して保存しておきます。これをもっていない人は、残念ながら、ダウングレードはできません。APPLEサーバにあるのは、常に利用できる最新バージョンのみです。履歴保存はされていません。以前に脱獄をしていて、うっかりアップグレードしてしまった!という私のような人は、cydiaのサーバに使用していた最終分だけであれば、保存されている可能性があります。
つまり、ios4.3.3で脱獄していたのなら、その分だけはcydiaから取得できる可能性があります。

まず、TINYUNBLLERAの最新版 (5.00.09)をDLしましょう。一応、同じページから、Fix RecoveryもDLして解凍しておきましょう。細かいやり方とかスクリーンキャプチャはどこかのサイトを参考にしてください。私は、こうやったらできたよ、という要件とやり方だけを簡単に書いていきます~。
私は、5.00.06ではできず、5.00.09でできました。単にやり方わかってなかったのかも知れませんが;

iphone4でのことです。iphoneをUSBでPCにつないで、Tinyunblleraを起動し、まずは、SHSHを 取得してみます。毎回取得して保存している方は、GOOD JOB!その手元のファイルを使いましょう。
Tinyunblleraを起動して、Advancedタブから、「Request SHSH From Cydia」にチェックを入れて「General」タブを見て、画面右上のほうの「Save SHSH」ボタンをクリックしましょう。自分のSHSHが保存されていれば、それがDLされます。なかったらココでさようならです。
ちなみに、その 「Request SHSH From Cydia」のチェックを外すとAPPLEサーバへSHSHをとりに行きますので、その場合は、今ならios4.3.5とか5.0b1などが取得できます。今回いりませんが、まあ取得しといてもいいかも。

SHSHが無事に取得できたら、今度は、iso4.3.3のファームウエアのファイルをネットから探してきます。
http://getios.com/

ココ↑でDLできます。

それをPCのどこかわかりやすいところに保存して、Tinyunblleraに戻ります。

iphone4をDFUモードに入れます。
http://www.iphooone.com/pukiwiki/index.php?JailBreak%BC%EA%BD%E7

ココとか参考になります。

  1. iPhoneの電源ON パソコンに接続 iTunesを起動しておく
  2. Homeボタンを押しながら、パワーボタン(右上)を押し続ける。
  3. しばらく経つと電源をOFFの表示が出るが無視して押し続ける。
  4. 電源が落ちたらパワーボタンを「だけ」放す。ホームボタンは押しっぱなし。
  5. やがて10秒程度でiTunesが「リカバリーモードのiPhoneを見つけました」と表示。 ホームボタンを放す。

Tinyunblleraでiphone4を選び、「General」たぶでは、そのSHSHを選び、右上の「Start TSS Server」ボタンをクリック。(skypeを使っているとポートが競合するのでSKYPEは終了しておきます)TSSサーバが起動したら、ITUNESを起動して、iphone4を復元します。
WINDOWSでは、SHIFTボタンを押しながら、ITUNESの画面の復元ボタンをクリック。先ほど保存した ファームウエアのファイルを選びます。「iPhone3,1_4.3.3_8J2_Restore.ipsw」ですね。

※DFUモードに入っていれば、iphoneの画面は真っ暗で、ITUNESでは復元が必要なiphoneを認識していて、Tinyunblleraの「Log」たぶでは、DFUモードのiphoneにつながっていると言うメッセージが出ます。

復元を開始します。
作業ができているかどうかは、iphoneの画面が、白く電源がついて復元作業が進んでいるかどうかで判断してください。終了しても、ITUNESには、できませんでしたっ!というエラーコードがでて、iphoneは、USBでの接続、リカバリーモードになりますので。

終わったら、 Tinyunblleraで画面上のほうの「Exit Recovery」ボタンをクリック。TSS Serverは、もうストップしてOKです。
その後iphoneが普通に再起動できないようなら、 「Exit Recovery」の右の「Fix Recovery」ボタンをクリック。それで、iphoneを再起動したら、普通にダウングレードした状態で起動できると思いますが、ダメな場合は、先ほどTinyunblleraと一緒にDLしてきたfixrecovery43.exeを起動して、それで、「Fix Recovery」してください。

iphoneが再起動できたら、ITUNESで、バックアップしていた前のデータを復帰させて同期させて完了です。
直前のios4.3.4とかのバックアップデータを上書きしても、それはアプリやアドレス帳、写真などのデータですので 、os自体が再度上書きされることはありません。

これで、ファームは、4.3.3に戻りました。あとは、必要に応じて、また、このバージョンで脱獄ツールを使って脱獄してください。

おわり。
DFUモードになってることは、しっかり確認してね!ここ、ポイント1です。
復元したとき、エラー出てても、iphoneの画面で復元が進んで完了していたら気にせずTinyunblleraで 「Exit Recovery」、「Fix Recovery」へ進みます。これポイント2です。

フリーのパーテーション変更ソフトEaseUS® Partition Master

http://www.partition-tool.com/

EaseUS® Partition Masterは、ホームユースならフリーです。XPはもちろん7にも対応しています。便利。

ツールは、パーテーションマジックのようなGUIベースなので、直感的にわかりやすく使い勝手も良いです。最近は、HDDも価格がぐんと安くなって追加する人も多いのでは。そういう時に既存HDDの分割していたパーテーションは、もう1つにしてしまいましょう!

OpenCartのカスタマイズ 支払い方法を追加する

オープンカートで標準で使用できる銀行振込モジュールは1つ。

テキスト形式で、支払先とか説明を入力して、ユーザーが買い物した際には、その内容が表示&メール送信sれるわけだけど、日本の場合、銀行振込ってメインの支払い方法なことも多く、郵貯と三井とか複数用意していることも多い。

1つに纏めて、ここかここかここって入金するときに勝手に選んでもらうのなら、良いのだけれど、入金確認の問題とか、注文数も多くなってくると、口座分だけ手間がかかるので、注文時に、郵貯なのか、三井なのか、ジャパンネットなのか、選んでおいて欲しいもの。

そこで、標準のBANK TRANSFER(銀行決済)モジュールを複製編集して、注文時にユーザーに予め選んでもらうことにします。

そうしますとですね、買い物画面では、支払い選択の時に、こんな感じで、 振込先銀行ごとに選択してもらえるようになるわけです。↓↓↓

 

1つの支払い方法モジュールを追加するごとに、コピー編集して追加するPHPファイルは、 9つです。

オープンカートは、MVCLフレームワークを使用しているので、

  • Model – Database layer
  • View – Template display
  • Controller – Main controlling code base
  • Language – Localization

という4つのファイルが1セットとなって動作する仕組みです。その組が、カタログとアドミンの双方に構成されます。ただし、上位のコントローラーのコードを引き継ぐ場合など、このうちの複数ファイルが上位ファイルで代替される場合があります。

参考:http://www.opencart.com/index.php?route=documentation/documentation&path=77_6

今回の銀行モジュールの場合は、アドミン4,カタログ5の計9ファイルが追加編集される1セットのPHPファイルとなります。

もともと存在するモジュールをコピー編集するだけですので、そう難しくはありません。

じゃあ、やっていきましょう!

下記のファイルをそれぞれ同ディレクトリにコピー&リネームしていきます。リネームする名前は揃っていれば問題ないので、任意で。

  • /admin/controller/payment/bank_transfer.php  →コピーして、bank_transfer02.php を作成
  • /admin/view/template/payment/bank_transfer.tpl  →bank_transfer02.tpl
  • /catalog/controller/payment/bank_transfer.php  →bank_transfer02.php
  • /catalog/model/payment/bank_transfer.php  →bank_transfer02.php
  • /catalog/view/theme/default/template/payment/bank_transfer.tpl  →bank_transfer02.tpl
  • /admin/language/english/payment/bank_transfer.php  →bank_transfer02.php
  • /admin/language/japanese/payment/bank_transfer.php  →bank_transfer02.php
  • /catalog/language/english/payment/bank_transfer.php  →bank_transfer02.php
  • /catalog/language/english/payment/bank_transfer.php  →bank_transfer02.php

3つめ、4つ目の支払いを作成する場合も同様の手順で、5ファイル1セットで追加を行います。

/admin/controller/payment/bank_transfer02.php

2行目のControllerPaymentBankTransfer を ControllerPaymentBankTransfer02 に。

class ControllerPaymentBankTransfer02 extends Controller {

ファイル内の、payment/bank_transfer をすべて payment/bank_transfer02 へ置き換え。

/admin/view/template/payment/bank_transfer02.tpl

ファイル内の、bank_transfer をすべて、 bank_transfer02 へ置き換え。

/catalog/controller/payment/bank_transfer02.php

2行目のControllerPaymentBankTransfer を ControllerPaymentBankTransfer02 に。

class ControllerPaymentBankTransfer02 extends Controller {

ファイル内の、payment/bank_transfer をすべて payment/bank_transfer02 へ置き換え。

/catalog/model/payment/bank_transfer02.php

2行目のModelPaymentBankTransfer を ModelPaymentBankTransfer02 に。

class ModelPaymentBankTransfer02 extends Model {

ファイル内の、payment/bank_transfer をすべて payment/bank_transfer02 へ置き換え。

/catalog/view/theme/default/template/payment/bank_transfer02.tpl

ファイル内の、bank_transfer をすべて、 bank_transfer02 へ置き換え。

4つの言語ファイルは、それぞれ文言を変更します。

例えば、

$_[‘heading_title’] = ‘銀行振込み(三井住友銀行)’;

というような感じで。

これだけです。

FTPアップロードして、管理画面で、モジュールをインストールし、支払先情報などを設定していきましょう。 登録したら、買い物画面で選択できるようになっているはず。

ジョギングが楽しくなるIPHONEアプリ『RunKeeper』

http://runkeeper.com

遅ればせながら、スマホ組になりました。
きのこ組を離れてわんこ組に。
iphone4買いました。

そこで楽しいアプリを紹介します。

『RunKeeper』
以前は、基本有料で無料版は広告が表示されていたらしいのですが、最近基本無料になり、出来ることも増えました。
GPSを利用して、ウォーキングやランニングの記録ができたり、友人とアクティビティの記録を共有したり、フェイスブックやツィッターに連携してフィードを送ったり、と、孤独なジョギングの心の支えになってくれる素敵アプリ。
その他に、睡眠測定ツールや体脂肪を計測してWEBに送る体重計などの市販キットと連携すると、RunKeeperのWEBサイト内で、自分のフィジカル全体を管理することができます。
年間$19.99のエリートに登録してプロユーザーになると、さらに、RunKeeperが独自に組んでいるフィットネスプログラムに参加し、痩せるためのプログラム、フルマラソンを走るためのプログラム、といったように、週何日どれくらいの運動をするかが詳細プログラムとして提供され、その通りに行うと目標達成できる(であろう)という面白い取り組みもあったりします。ハード面とソフト面どちらもサポートしているのが、人気の秘密なのかな、と思います。

さて。

では利用についてですが。
まずは、http://runkeeper.com/へ。 ユーザー登録と基本設定を先に済ませてしまいましょう。
いきなりiphoneでアプリをインストールするのもありですが、RunKeeperのWEBサイトから、ituneへのリンク接続もできるので、ここはあせらず先にアカウント取得と設定をば。

『RunKeeper』のトップページ右側の「Sign up to get started!」という項目にE-MAIL、パスワード&パスワードの確認を入力してアカウント登録しましょう。
WEBサイトにあなた専用のマイページが作成されます。
右上の 「Your profile」から「My Settings」をクリックして選択し、必要事項を入力していきましょう。半角英数字ですよ、日本語はNGですから;

  1. 「Profile」-適当に入れていきましょう。
    • Full Name→ニックネームでOK
    • URL→URLの青い部分に入る英文字。自由に。
    • Location→TOKYOとかJAPANとか。
    • I am a…→ランナーなのかウォーカーなのか等選択。
    • Goal →自分の目標、目的
    • 0Gender→性別
    • Birthday
  2. 「Picture」
    • 自分のアイコンになる画像を登録します。フェイスブックを利用しているならフェイスブックにログインしてその画像を使うこともできます。
  3. 「Apps」
    • WEBサービスにリンク設定できる他、iphoneやandroidのアプリケーションへのインストール画面へのリンクボタンがあります。
      それぞれ、リンクさせたいアプリへのログインと設定を行います。
      私の場合は、FACEBOOKへリンクさせた他、iphoneのアプリを使いたいので、上のほうのブルーの「download for iPhone」ボタンをクリックしてitunes Previewサイトへ行き、iphoneへのアプリダウンロード設定をすることにしました。ここはちょっと手順があるので、一旦保留して、先に他の設定を完了させていきますよ。
  4. 「Sharing」
    • ここで設定したViewable By:の内容は、フェイスブックやツィッターで他の友人などにRunKeeperのどこまでの内容を見せて共有するかを決めます。
      Activitiesは基本Everyoneで、女性の場合は、Activity Mapsは見せない(ストーカーとか怖いし;)→Just Me、Weight(体重)は見せない→Just Meというように設定していってください。
  5. 「Preferences」
    • 距離単位→km
    • 重さ単位→kg
    • 週の始まり→日曜か月曜
  6. 「Notifications
    • アクティビティの通知を受け取るなら、受け取りたい方法にチェックを入れます。ニュースレターの受信やコメントの受信などもここで設定します。
  7. 「Email」
    • 追加のアドレスを使うなら。

これくらいでしょうかね。
トップページの左下の「Enter Your Weight」というボタンからは、体重を入力できます。
この辺も任意で登録しておきましょう。

そしたら、iphoneのほうのアプリインストールと設定を行っていきます。
さっき開いたituneプレビューのサイト画面↓

 

左上のブルーのランナーのアイコンの下の「View itunes」リンクをクリックしてituneのappストアへ。iphoneをPCにつないで、無料アプリをダウンロードして同期します。
このやり方がわからない人は、iphone本体の「App Store」アイコンをクリックして、 検索から、「RunKeeper」で検索しましょう。

これを選択してインストールします。

無事インストールできましたらば。iphoneのほうで、アプリの設定を。(基本アンドロイドも同じかと思います。)

アプリを起動して表示される、下の黒いメニューエリアの3つのメニュー(start/Activities/Settings)から「Settings」を選んでタップ。セッティング画面が開きますので、先ほどRunKeeperのWEBサイトでアカウント登録したE-MAILとパスワードを入力します。

あとは適当に好みのセッティングしてください。一番下から2番目の「Post to Facebook」をONにしておくと、アクティビティを終えて、アプリに保存したときに、自動でフェイスブックにフィードしてくれます。

ここまでできたら、いよいよ使用開始。

先程の3つのメニューから「Start」をタップ。「Input Type」をGPSにします。(先にiphoneの設定メニューで、「位置情報サービス」の設定をオンにしておいてくださいね。

アクティビティのタイプ(ウォーキングとかランニングとか)とプレイリスト(アクティビティ開始と同時に効き始めるipodのプレイリストを指定することができます)を設定しておきます。コーチングは、速さとか時間とかペースとか、あとはカスタムで、設定しておくと、アクティビティ中に音声ガイダンスで教えてくれます。慣れるまでは要らないかな;

設定できたら、緑のでっかい「Start Activities」ボタンをタップして、ランニング開始!
画面がモニタリング画面に変わりますので、終了したらSTOPボタンをタップします。休憩の時は、PAUSEボタンですね。
ストップすると、保存の画面が出ますから、保存する場合は、緑の「Save Activities」で保存。破棄する場合は、その上のDiscardボタンです。
最後に、結果が表示されますので、画面上部の「options」ボタンをタップして、ランキーパーのWEBサイトに情報を送信しましょう。

これで、ランキーパーのWEBサイトでも、情報が見れるようになりました。

設定が出来ているので、次からは、アクティビティの時にiphoneでアプリを起動して、スタートし、終了後、保存してWEBサイトへ情報を送信。
アプリとWEBサイトでは、アクティビティの時間、カロリー、それから、ルートなどが閲覧でき、月の合計なども集計できます。

楽しいですよ!

OPENCARTのカスタマイズ 受注メールの送信内容を追加する

OPENCARTでECの実運用をしようとしたら、ちまちまとカスタマイズしないといけないことが出てきてしまった。
EC-CUBEでも有ることなので、まあ、ECって結構システムの要件幅が広いというか宿命なのかも。

今回は、受注メール関連で色々気に入らないところが出てきてそれを簡単にカスタマイズした。

OPENCARTでは、受注の自動返信メールだけ何故かHTMLメールが送られる。その後のステータス変更は全部、はぁ?これでいいの?業務連絡???みたいなテイストメールなのになぜだ?

それで、変更点だけども、細かく言っていくと、キリがないので、自分にとって後から備忘録として応用できそうなところと、同じようなことをしたい誰かのお役に立ちそうなところの折り合いをつけて、やり方とか方向性とかポイントとか、うむ、なんだな、そういうちょっと手抜きなところを書いとく。

やること。↓

1)受注確認メールで、HTML/TEXTメール双方の表示文言を編集して変える
2)受注確認メールで、HTML/TEXTメール双方の文章の頭の方に、お客様名を入れる
3)受注確認メールのTEXTの方で、もう少し体裁を整えて、配送先とか請求先とか、ご挨拶文とかも入れる

テスト太郎 様 この度はご注文ありがとうございます。」「みたいな感じで。

もうちょっとスマートな方法もあるかも知れないけど、一応多言語化してもいいように、そこら辺は考えてやっとく。

 

出来上がりの受注メールはそれぞれこんな感じ。↓

文言とか順番とかは、アレンジで。

受注確認メールで、HTML/TEXTメール双方の表示文言を編集して変える

/catalog/language/japanese/mail/order_confirm.php の編集

(※英語とか中国語とか対応する多言語も同じ要領で変えておく)
以下は例ですので、適宜好きなように変えてください。
変更のポイントは、テキストメールの時は、挨拶文を複数行にするときは、1行ごとに改行コードを繋ぎます。
HTMLのところは、普通に
タグで改行できます。

4行目の $_[‘text_greeting’]  がHTMLメールの挨拶文に当たります。
ここを下記のように変更。
%s 様」、これが、後からPHPコードで読み出し追加するお客様名の表示部分になります。
1つ目の%s記号がお客様名で、2つ目の%s記号が店舗名を表示させるコードになります。
お客様名の表示が要らない人は、%sは店舗名のところだけです。

$_['text_greeting'] =
'このメールは当店でお買い上げいただいたお客様に送信しています。

%s 様

この度は、 %s でお買い上げ頂き誠にありがとうございます。

--------------------------------------------------------------------

このメールはご注文内容確認のための自動配信メールです。

当店で担当者がお客様からのご注文を確認し、商品の確保ができましたら、

改めてご確認のメールをお送りさせていただきます。

--------------------------------------------------------------------

以下のご注文を承りましたのでご確認ください。';

5行目にテキストメール用の挨拶文を追加。こっちは最初に定義されていないので、定義自体を新たに作成します。

$_['text_greeting_text'] =
'このメールは当店でお買い上げいただいたお客様に送信しています。'."\n\n".
'%s 様'."\n".
'この度は、 %s でお買い上げ頂き誠にありがとうございます。'."\n\n".
'--------------------------------------------------------------------'."\n".
'本メールはご注文内容確認のための自動配信メールです。'."\n".
'当店で担当者がお客様からのご注文を確認し、商品の確保ができましたら、'."\n".
'改めてご確認のメールをお送りさせていただきます。'."\n".
'--------------------------------------------------------------------'."\n\n".
'以下のご注文を承りましたのでご確認ください。';

後は、日本語で編集したい箇所があれば適宜更新して保存。
ちなみに、私は、名称は全て[ ]で括るようにしました。先の出来上がりイメージを見てもらうとわかると思うのですが、HTMLメールの時は表組みになるからそのままでも良くても、テキストメールにも項目表示させたいと思うと、タイトル名称と内容との区切りが欲しかったので。
例えば、

$_['text_order_detail'] = '[注文詳細]';

こういう感じですね。

受注確認メールで、HTML/TEXTメール双方の文章の頭の方に、お客様名を入れる~体裁を整える

まず、お客様名を表示させるための準備。

/catalog/language/japanese/mail/order_confirm.php の編集

これは今さっき上で一緒に済ませてしまいました。
$_[‘text_greeting’] の中身に%sを1つ先に足してやります。

/catalog/model/checkout/order.php の編集

●L136(HTMLメール用の挨拶文の定義箇所にお客様名の呼び出しコードを追加)

$template->data['text_greeting'] = sprintf($language->get('text_greeting'), html_entity_decode($order_query->row['store_name'], ENT_QUOTES, 'UTF-8'));

↓↓↓
$template->data['text_greeting'] = sprintf($language->get('text_greeting'), $order_query->row['firstname'].$order_query->row['lastname'], html_entity_decode($order_query->row['store_name'], ENT_QUOTES, 'UTF-8'));

●L299~L344 (テキストメール用の挨拶文の定義を変更)


//ここで挨拶文定義している。さっき日本語ファイルで追加したtext_greeting_textの定義箇所。↓
$text = sprintf($language->get('text_greeting_text'), $order_query->row['firstname'] .' '. $order_query->row['lastname'], $order_query->row['store_name'], $order_id) . "\n\n";
//見やすいように区切り線追加。↓
$text .= '--------------------------------------------------------------------' . "\n";
$text .= $language->get('text_order_id') . ' ' . $order_id . "\n";
$text .= $language->get('text_date_added') . ' ' . date($language->get('date_format_short'), strtotime($order_query->row['date_added'])) . "\n";
$text .= $language->get('text_order_status') . ' ' . $order_status_query->row['name'] . "\n";
$text .= '--------------------------------------------------------------------' . "\n";
//構成箇所を変えて先にお客様からのコメントと支払情報を表示させる。↓
if ($order_query->row['comment'] != '') {
$comment = ($order_query->row['comment'] . "\n\n" . $comment);
}
if ($comment) {
$text .= $language->get('text_comment') . "\n";
$text .= $comment . "\n";
}
$text .= '--------------------------------------------------------------------' . "\n";
//お客様名、E-MAIL、電話番号の表示↓
$text .= $language->get('text_customer_name') . ' ' . $order_query->row['firstname'] .' '. $order_query->row['lastname'] . "\n";
$text .= $language->get('text_email') . ' ' . $order_query->row['email'] . "\n";
$text .= $language->get('text_telephone') . ' ' .$order_query->row['telephone'] . "\n";

//お届け先の情報を表示↓
$text .= $language->get('text_shipping_address') . "\n"
.$textmail->data['shipping_address']. "\n";

//請求先の情報を表示↓
$text .= $language->get('text_payment_address') . "\n"
.$textmail->data['payment_address']. "\n";
$text .= '--------------------------------------------------------------------' . "\n";
$text .= $language->get('text_product') . "\n";

foreach ($order_product_query->rows as $result) {
$text .= $result['quantity'] . 'x ' . $result['name'] . ' (' . $result['model'] . ') ' . html_entity_decode($this->currency->format($result['total'], $order_query->row['currency'], $order_query->row['value']), ENT_NOQUOTES, 'UTF-8') . "\n";
$order_option_query = $this->db->query("SELECT * FROM " . DB_PREFIX . "order_option WHERE order_id = '" . (int)$order_id . "' AND order_product_id = '" . $result['order_product_id'] . "'");
foreach ($order_option_query->rows as $option) {
$text .= chr(9) . '-' . $option['name'] . ' ' . $option['value'] . "\n";
}
}

$text .= "\n";

$text .= $language->get('text_total') . "\n";

foreach ($order_total_query->rows as $result) {
$text .= $result['title'] . ' ' . html_entity_decode($result['text'], ENT_NOQUOTES, 'UTF-8') . "\n";
}

$order_total = $result['text'];

$text .= "\n";

$text .= '--------------------------------------------------------------------' . "\n";

if ($order_query->row['customer_id']) {
$text .= $language->get('text_invoice') . "\n";
$text .= $order_query->row['store_url'] . 'index.php?route=account/invoice&order_id=' . $order_id . "\n\n";
}

if ($order_download_query->num_rows) {
$text .= $language->get('text_download') . "\n";
$text .= $order_query->row['store_url'] . 'index.php?route=account/download' . "\n\n";
}
$text .= $language->get('text_footer');

これで、ある程度体裁の整ったテキストメールになった。
メールのフッター部分に店舗のURLとかメールとか担当者とか共通して入れたい場合は、
/catalog/language/japanese/mail/order_confirm.php の

$_['text_footer'] = 'ご質問等がございます場合は、このメールアドレスに返信してください';

この部分に、同じ要領で追記していけばいいかと思います。
注文ステータスを変更したときに送るアップデートメールのテキスト内容もこういう要領で直していきます。
なぜかアップデートのときはテキストメールだけ送られるんですね;
/catalog/language/japanese/mail/order_update.php を編集しましょう。
こっちでも注文情報とか出したいですね。。。日本語ファイルだけじゃなくて、この追加もしたほうがいいですね。
う~む。じゃあ、それは後日。やってみてから。