wait.ページの言語切り替えボタンが、サイト右上にありますが、日本語と英語でアドレスが違います。(index.phpとindex_en.php)index_en.phpを登録してもらうのも手間なので、同じhttp://www.chosyu.jp/にアクセスすれば、ブラウザの言語設定を見て、自動で分岐するように変更しました。JavaScriptでもできるのですが、JavaScriptを読み込んでからの実行になるので、一瞬飛ぶ前の画面が出てしまいます。いうわけで、PHPで実装しました。≫メインページ(index.php)の一番上に下記コードを追加して実装しています。);exit;}}?>クッキーを利用して、初回のみ自動で分岐するようになっています。1回、英語サイトに移動したあと、左上のJPボタンから日本語サイトに戻ってきたときには、実行されません。最初にindex_en.phpを表示したあと、日本語表示にした場合を考慮してindex_en.phpの方にも、クッキーを書き込むようにしてあります。どちらかと言うと、MTでの英語サイト構築方法の方が重要だとは思うので、忘れないうちに、まとめる予定です。wait.写真ビューアの開発メモ開発の手順は、大きく3つ。≫FLASHをHTMLに組み込むには、SWFObjectが便利。ダウンロードと使い方は検索すれば、すぐに出てくるけれどFLASHからJavaScriptを呼ぶには、オプションのallowscriptaccessを"always"にしなければいけないが、SWFObjectでのパラメータ渡しの方法が分からずに悩む。グーグルさんで検索すると、すばらしいWEBアプリを発見。v1.2さらに詳しくで項目を開くと、パラメータが指定できるので、設定してコードを生成。デフォルトの設定だと、FLASHが最善面に来てしまい、highslideで開いた画像がFLASHの下に隠れてしまう。指定することで画像をFLASHの上に表示することができる。問題は、どうやってhighslideを起動するか。/></a>JavaScriptからonclick()は叩けるらしい。試行錯誤したけれど、ソースを見た方が早いだろう。簡略化したので、実際に使っているソースとは少し違うけど。サンプル2次配布がどうだか分からなかったので、JavaScriptは削除してあります。jsフォルダにswfobject.jsを入れ、js/highslideにhighslideを入れてください。highslideはこちらからダウンロードできます。id="head_flash_img">の中に、id_hs_xxと名前をつけた<a>タグを追加する。それをonclick()で実行している感じ。id="head_flash_img">を非表示にしているので、これをコメントアウトすると、実際の動作が分かりやすいかも。最初は、innerHTMLで追加する<a>タグを使いまわそうと思ったけれど、hs.expand(this)のthisが肝心で、これが変わると同じ画像が複数開いたりするので、結局、枚数分を作成している。FLASHのソースは、ある意味キモな部分なので非公開。知り合い限定で、欲しい人がいれば送ります。動きは好きな様に作って、highslideさえ起動できれば、同じ様なものは作れるはず。xmlのリストから画像を読み込むのは、どこにでもサンプルが転がっている。クリックしたら移動して、移動した座標から4角形の頂点を計算し、drawTrianglesで、頂点リストとUVリストを使った、2Dポリゴンのようなイメージで描画。楕円の中央部分の幅は広く端は狭く補正とか、移動に減衰を入れるとか、画像の順番をその都度ソートするとか。MTでも絵文字使おうぜプラグイン、アリマス<img>タグを追加してくれるプラグインです。追加するときに、通常はマウスカーソルの位置に挿入されますが、たまに記事の先頭にコードが書き込まれることがあるので、コピペで表示したい場所に移動してください。wait.このサイトの初回表示時に、5秒くらい画面が真っ白で、何も表示されない状態が続く問題が、ず~っと起こっていました。表示が異常に遅いときがありました。謎な現象でしたが、たぶん解決。≫ブラウザのキャッシュを削除して表示しても、普通に表示されるのでキャッシュの問題でもなく。Analyticsを外してみたり。DNSのキャッシュが保持されている時間が、意外に短いらしいので、IPアドレス変換に時間がかかってるのかと疑ってみたり。このサイトは、シンプルながら、遊びで実は結構いろいろなコンポーネントを組み込んでいます。その辺が問題なのかとも思い、1つずつ機能を外してみました。結局のところ、とあるJavaScriptが原因でした。プログラムソースコードを、行番号付きで表示するっていうSyntaxHighlighterの読み込みに、異常に時間がかかることがあるらしい。実のところ、なんで時間がかかるのかは、よく分かっていないんだけれどもSyntaxHighlighterを読み込む位置を、HTMLの下に移動して、通常画面を表示した後にロードするように変更。これで、読み込みは発生しているけれども、見た目は表示されているはず。問題を調べている間に、単純にサイトが重いからだろうと思っていた時期もありサイトを軽くする方法を、何個かついでに実装しています。WEBで検索すると結構ヒットする、14のルールっていうのがおもしろい。元ネタは本で出版されています。―高速サイトを実現する14のルールこの中で、cssを上にまとめるのと、表示に関係のないJavaScriptを下にまとめるのが、簡単な上に効果が大きい。cssとJavaScriptをgzip圧縮すると、格段に軽くなりますが、こっちはちょっとひと手間必要。gzipって書いてあったので、zip圧縮すればいいのかと思ったら読み込んでくれない。tarのtgz圧縮のことでした。***.css.gzとか***.js.gzというファイル名になります。gzipに対応していないブラウザがあるらしく、対応したブラウザの場合はgzip版を、未対応の場合には通常のcssやjsを読み込むという分岐が必要になります。記述すると、判別してくれるらしい。噂のソースを綺麗に表示するコンポーネント。元ネタサイトは忘れてしまったけれど、検索すれば引っかかるはず。Typeで長い文字列をトリミングするにはtrim_toというフィルタが用意されています。このtrim_toは半角英数字も日本語も、同じ1文字と数えてしまうので見た目で同じ長さにはなりません。文字数を半角文字数で指定するプラグインもありましたが、MT4.2で動作しなくなってしまったので、ルーチン的には邪道っぽいけど、自作してみました。フォルダにアップします。2.ttrim_to="半角文字数"で切り取る文字数を指定します。$out;});perlの得意な文字列置換を利用した、なんちゃってアルゴリズム。UTF-8の日本語コードが3byteでありASCIIコードとかぶらない性質を利用。半角文字数が端数だった場合も、文字化けしないようにきちんと切り取ってくれます。半角スペースが2byteコードになっているので1byteへ変換しています。プロポーショナルフォントの場合、どちらにせよ半角と全角で文字の長さは合わないんだけど。wait.システム系のテンプレートがお亡くなりになりました。アップデートのときかなぁ。追記:ネットで検索すると、同様の症状がちらほら。pluginsフォルダとmt-static/pluginsに、元にしたテンプレートを置いておかないと、システムテンプレートのコメントプレビュー、コメント完了、ダイナミックパブリッシングエラー、ポップアップ画像、検索結果が死んでしまうらしい。MTのアップデートの際に、テンプレートをコピーし忘れたのが原因。いうか、そんなの必要だと思わなかったよ。元のテンプレートを削除等でなくしてしまった場合、これを復旧する手段はない。サポートに確認してみたところ、新規でシステムテンプレートを作成することはできないとのこと。どこかのサイトで、データベースを直接いじって復旧できたって記事はあったけど。このサイトは、小粋空間さんの"KoikikukanTemplateSet"を使用しているけどどこかの段階で、バックアップした"templateset_chosyu"をあてがってしまったので今後、アップデートの際にtemplateset_chosyuをなくしてしまうと、復旧が不可能になってしまう。Typeの仕様設計ミスだと思うけど、サポートの方でも対応する気はないらしいので、しかたがない。wait.ソースコードを綺麗に表示し、行番号とかも追加してくれる便利なJavaScript、dp.SyntaxHighlighter。Typeを導入してみました。合計なにげに、結構大変だったのでメモをのこしておきます。≫1.プラグインをダウンロードして、"plugins"と"mt-static/plugins"にアップします。theme="default"$>[/code]を入れます。設定されていないと、JavaScriptとcssへのパスが正常に通りません。デフォルトだと、コメントアウトされてるはず。cpp">ソースコード</pre>と書けばよいだけのはずだけど、ここでもトラブル。備忘録さんのMTRemoveBlankを使用しています。ところが、HTMLソースを出力したあとにJavaScriptでプログラムソースを表示するので変換する前に、HTMLソース出力の段階で改行やスペースが削除されてしまいます。これを防ぐために、プログラムコード部分のスペース削除を除外しました。関数を変更させていただきました。記事中にリンクを貼った場合などに(原因不明)、ソースコード中に自動改行の<br>や<p>タグが出現してしまうことがある。選び、改行は<br>タグを手動でいれています。wait.サイドバーのコメントやトラックバック一覧のリストを破線にしたい。画像を用意すればいいんだろうなとは思うけれども、実作業に入る前にググってみる。各リストごとに、書き換える場所が明示されているので分かりやすいです。画像も小粋空間さんのページへリンクが貼ってありました。ちなみに、ひとくちメモのカテゴリは、トップに上がって他の記事を流さないように、日付を過去にしています。既存のCGIプログラムを中央画面に表示するのが、意外とめんどくさい。使うはずのメール送信CGIは、いろんな所で配布されているけれどもブログにどうやって組み込んだらいいのか、ちょっと迷うところ。ブログ用のメール送信CGIがないものかと探していたらプラグインとして実装されているものがありました。メールフォームプラグインV2.10の使い方このサイトには、他にも便利なプラグインが大量に公開されているのでちょくちょく探してはインストールしています。掲示板CGIを、ほとんどそのまま使うことができたので大抵は何のCGIでも使えそう。店情報の登録とかは、何かCGIを探してきた方がいいだろうなぁ。Typeは、コメントを受け付けるときにメールアドレスと名前は必須にできるがどちらか1つだけを必須にするという設定がない。メールは任意で、名前入力のみ必須にしたいと思う。プラグインがあるかと思って探したけれど、見つからなかったので仕方ないので、ファイルを直接変更して改変。これをやると、MTをバージョンアップしたときに、やり直さなければいけない手間があるけど仕方ない。コメント記入時に「名前のみ必須」にするいつものごとく、先人のカスタマイズを拝借。ありがとうございます。Reserved.このサイトはJavaScriptを使用しています。申し訳ありませんが、JavaScriptを実行できない環境では表示できません。