「改行を変換する」で意図的にbrを無視する方法

MovableTypeの「改行を変換」したときのBR出たり出なかったりの
ズレ修正util.pmの更新その2です。
恐らく前回のネタ理解しづらい内容だったので
とりあえずまとめて見る必要が出てきたのでまとめてみます。
別に混乱してたわけではないんだが、
いじるたびに新発見が・・・ってのが3回くらい繰り返しただけだ

おいらがやりたかったこと
フォーマット「なし」と「改行を変換」での開始位置がずれるのが気に入らなかった。
(「無し」の時にpタグをいれるか、「改行を変換」でpタグを入れないことで揃う。
 普段pタグ使うことが滅多に無いんで、pタグを入れないようにする事で前回対策を完了)

「改行を変換」するとAAがズレる場合があるので、なんとかする
(p、brタグ付与する条件が謎→今回の対応)

TABLEタグを使うと改行連打でみっくみっくにされてしまう。
(上記と同じp、brタグを付与「しない」条件が謎→今回の対応)


util.pmのsub html_text_transformで何を行っているか?
段落タグ<p>の自動的追加。改行を<br>に変換を行っている。
但し、タグの書き方、位置によっては<p>も<br>も無視される。

Pタグは必要か?
あってもなくても問題ない。IEでP使うとイマイチだったりするって何かに書いてあった。
正確な記述(段落タグを定義する)としては間違っているんだろうが、
無くてもいいならいらないじゃん?手書きでタグ書くときは俺使ったこと無いです・・・

pをbrにすることでどうなるのか?
改行の行間隔が変わってくる。
ある意味改行したい分だけちゃんと改行される。
元々のpタグ自体にはスタイル含まれてなければ横幅については変わることないっす。

今回の対応。空気読めていないBR無視を止めて、
意図的に何かすることによってBR無視を発動するような仕掛けにします。

そういうわけでIF文を見直そうかと思ったんですが
象形文字すぎてよくわからんのと、タグだったらBRしないとか指定しても
意図しないBR無視が発生するだけなので、あるワードの時のみBR無視とするようにした。
⑨っぽい発想だが、あとはMT関数の1つでも容易しねーと無理なきがするぞ?
(既に用意されてたらどうすっかねw)

つうわけで、試しに段落に__DisBRが
含まれていたら無視するようにしてみました。
(アンダーバーは半角。小文字大文字完全一致で書く事)

術式はこれでも見てくれ
ターゲットは[mt-root]/lib/mtのUtil.pmなのは前回と同じ。
書き直す部分も同じhtml_text_transform内。
今回は__DisBRにしてあるが、別に「_あたいは最強_」とか
好きに書き直してもらって構わない。
最低の条件は普段使わない文字列にすることだ。

テスト結果はこんな感じですかね。
使い方は適用する段落のどこか(エントリーソースで言う1つの赤枠内)
に__DIsBRを入力すると入れた段落全体
に対して改行によるBRが無視されます。
段落の先頭と終了のBRのみ付与されます。
__DisBRでない場合には改行によるBRと先頭、最後のBRが必ず付与されます。


ちなみにこれを適用するとメリットとして自動BRの融通が利きますが、
デメリットは都合でデフォルトに戻した場合、
エントリを再構築すると__DisBRという文字が表示されます。

まあ、SQLで回せばまとめて__DisBRだけ消せるから、さほど面倒でもないですが、
気になる人は使わなければいいだけですね。
(あんまtableつかわねーって言えばそれまでだが)

後日抹消用PHP作りますね。→まるでサンプルのようなものができたらしい
DL後、ユーザーとか書き直して拡張子をphpにしてupしてください。
一応動作確認も取れたんだけど、注意点があるとすれば
エントリをSQL文で操作するので扱いにはかなり注意したほうがいい。
できるなら、予め2,3個、エントリおよびエントリの続きに__DisBRを
入れたものを適当に非公開で保存しておいて、まず消すことができるかどうか
確認したうえでやってください。ベースはmysql(PEAR)で作ってますが、
PGSQLの場合はCOMMITの行だけコメントはずせば動くはず。
確認自体もecho sqlのコメントしてある部分をはずして、
conn->queryをコメントにして文法のみ表示してそれっぽいの
(DisBRが取り除かれたエントリ文章+エントリid)が出てたのを
確認したうえでやったほうがいいです。
ま、わけわかんねーと思ったら使わなければいいってことでFA。
使うなら自己責任でよろしく

ちなみにDBアクセス用のユーザーやらパスやら指定しないと動かないんで
気をつけるべし。モノがモノなんで
パスかかってるようなフォルダに入れておくと吉。
(XREAで言うとlogフォルダ)

追記
昔のエントリに対して__DisBRを適用してみた。
</table><BR>
<BR>

と予定通りの記述だったんだが、</Table>の時点で改行入ってて
tableの上1行あけに対して下は2行あけになってた。。。

そういうわけで、__DisBR後はy_count=0とした。(IF文も入れ替えた)
出来上がり比較はこんな感じに。(テキストの修正は終わってます)
BRのがあったりなかったりバラバラなのがとりあえず安定して表示されるようにはなった。




認証、名前入れが面倒だという方はこちらをどうぞ

トラックバックURL

このエントリーのトラックバックURL:
http://www.luminousqueen.com/mt/mt-tb.cgi/706

コメントする



スパム対策の為にCAPTCHA認証を導入しています。

認証について細かいことはこちらをみてください

カテゴリ

サイト内検索


Syndicate this site (XML)
小粋空間
QLOOKアクセス解析