2011年1月7日金曜日

phpやMTのケータイキットプラグインを利用してxhtmlの宣言を記述するときの注意点

モバイルではxhtmlを利用してページを作成するのが一般的らしいのですが、
今回下記の宣言をMT上にそのまま書くと真っ白なページが表示されてしまいました。


<?xml version="1.0" encoding="Shift_JIS"?>
<!DOCTYPE html PUBLIC "-//i-mode group (ja)//DTD XHTML i-XHTML(Locale/Ver.=ja/1.0) 1.0//EN" "i-xhtml_4ja_10.dtd">
<!DOCTYPE html PUBLIC "-//OPENWAVE//DTD XHTML 1.0//EN" "http://www.openwave.com/DTD/xhtml-basic.dtd">
<!DOCTYPE html PUBLIC "-//J-PHONE//DTD XHTML Basic 1.0 Plus//EN" "xhtml-basic10-plus.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="ja" xml:lang="ja">



理由としては、モバイルサイト構築のためケータイキットというMTで
携帯の各キャリアに対応したページを作成するためのプラグインを使用していたのですが、
これがphpを利用しているので冒頭のxml宣言の部分がphpコード開始宣言の部分と
解釈されてしまっていたようでした。
なので冒頭の宣言文をphpでの出力に変えました。
phpを使っていると意識して作っているわけじゃなかったので、
なんで出ないかなーと少し考えました。


<?php echo "<?xml version=\"1.0\" encoding=\"Shift_JIS\"?>"?>


参考サイト:
http://softinat.net/technique/MobileSitePhp.html

2010年12月2日木曜日

メールを送るときのメモ

よいメールの書き方

1)相手に伝えたいことを明確にして 少なくする
ひとつのメール、文章で、伝えたいことは少なくする。
多ければ箇条書きにしたり、番号振ったり相手がひとつづつ片付けられるようにする。

2)あの や その 等余計なものを使わない
邪魔なものはとる。「とか」もやめたい。だがよく使ってしまう。

3)例をあげたり、URLを貼ったり、資料を作る。文章だけで伝えない
結局文章だけでは伝わりにくい。
余計なやりとりをするよりは資料をちゃっと作ってあげたほうがイメージが共有できるので楽

4)丁寧すぎない
丁寧すぎて文章が長くなるよりはそこそこでいいから文章が短いほうがよい気がしている。
慇懃無礼ってやつですか。だがこれもよくやってしまう

5)意外と同じこと2回書いてしまうため、見直しはしっかり

6)返信は早めにやってしまったほうがタスクが減る

6番はあんまりよいメールの書き方と関係ないかも

2010年10月28日木曜日

MTのsplitプラグインについて

自分で原因調査したわけではないのですが、、、
私ともう一人の方で大分ハマってしまったsplitプラグインの罠について。
というか、報告してあげたほうが良いレベルなんでしょうかね。
それとも仕様なのかな。

MTでsplitというプラグインがあります。
http://www.koikikukan.com/archives/2009/01/20-015555.php

こちらは、カスタムフィールド等にいれた、データを任意の区切り文字で
split した配列変数を返してくれるプラグインで、便利なのでよく使います。
何個入力されるかわからないときとかよく使う。

今回は、splitした内容をMTIfで判定して、合致したら出力を行うみたいなことを
しようとしていたのですが。
改行を区切り文字にしてsplitで区切って配列変数に入れる。
そのあとループで回して変数にセットしてIf文で分岐

【フィールドの入力値】
A
B
C

【テンプレート】

<MTVar name="string" split="\n" setvar="alphabets">
<MTLoop name="alphabets">
<MTSetVarBlock name="result"><MTVar name="__value__"></MTSetVarBlock>
</MTLoop>

<MTIf name="result" eq="●●">
~~処理~~
</MTIf>



上記だと出力したときに、なぜかCの分岐しか出力されない。
一番最後に入っていた値のIf文しか実行されませんでした。

splitで区切っているはずで、試しに
などで出力してみても、
ちゃんと区切れているのですが、だめでした。

私で一日、もう一人の方にも半日以上みてもらったけどだめで
ダメもとで改行区切りをカンマ区切りに変えてみたら全部でました。

【フィールドの入力値】
A,B,C

【テンプレート】

<MTVar name="string" split="," setvar="alphabets">
<MTLoop name="alphabets">
<MTSetVarBlock name="result"><MTVar name="__value__"></MTSetVarBlock>
</MTLoop>

<MTIf name="result" eq="●●">
~~処理~~
</MTIf>


記号でできて文字コードでできないことから、
splitプラグインで区切ったとき、改行コードのようなものは
splitしたときに前の値にくっついてしまうようです。
目には見えないし出力にも現れませんが。

回避方法としては、splitで区切った値を使用して
分岐処理をしたい場合は改行を使わない、または
strip_linefeeds="1" のモディファイアを付けるといいらしい
http://www.movabletype.jp/documentation/appendices/modifiers/strip_linefeeds.html

一時はお客さんに複数入力はあきらめてもらおうかと
思ったくらいだったので奇跡がおきてよかったです。

時には自分らのコードの誤りだけでなくて
MTの機能自体やプラグイン自体の挙動もチェックしたほうが
いいかもっていうおはなしです?

2010年10月21日木曜日

特定カテゴリでアーカイブを出力しないようにする

MTはアーカイブマッピングのパスにもMTタグが使えるので、
ブログ記事などで出力したくないカテゴリの記事を出力しないようにできる。

http://unimakura.sakura.ne.jp/blog/2010/02/mt-3.html


http://salvageship.dropcontrol.com/2009/03/post-40b6.html