拙著「FXはチャートで勝つ!」が発売されました。
FX(外国為替証拠金取引)でのチャートの読み方を解説しています。
自由国民社刊で、定価1,728円(消費税込み)です。
Movable Type用ShortCodeプラグイン・その7(対自動整形処理のデフォルト値と処理の変更)
昨日の記事で解説したように、ShortCodeプラグインでは、ショートコードのブロック内のbrタグを削除したり、ブロックの前後のpタグを削除したりする機能があります。
また、削除する/しないのデフォルトはショートコードごとに異なります。
さらに、削除する/しないをその都度指定することもできます。
今日はこのことについて解説します。
1.削除の処理の種類
ここまででは、単純に「brタグを削除」「pタグを削除」と述べました。
ただ、実際には以下のようにもっと細かな処理を行っています。
1-1.「brタグ+連続するスペースや改行」を単一の改行に変換
ショートコード内のブロックに、「brタグ+((スペースまたはタブの0回以上の連続)+改行)の0回以上の連続)」が出てくるごとに、それを単一の改行に変換することができます。
各ショートコードのこの機能のデフォルトの動作は、以下のようになっています。
ショートコード | デフォルトの動作 |
---|---|
template | しない |
templatew | する |
block | する |
table | する |
if | しない |
unless | しない |
noconv | する |
1-2.各行末のbrタグを削除
ショートコード内のブロックで、各行末のbrタグを削除するだけの処理を行うこともできます。
この処理は、templateショートコードのみ、デフォルトで行うようになっています。
1-3.ブロックの前後のpタグを削除
自動整形によってブロックの前後がpタグで囲まれ、かつそのp要素の内部すべてをショートコードで置き換える場合に、そのpタグを削除することができます。
各ショートコードのこの機能のデフォルトの動作は、以下のようになっています。
ショートコード | デフォルトの動作 |
---|---|
template | する |
templatew | する |
block | しない |
table | する |
if | しない |
unless | しない |
noconv | しない |
なお、段落がp要素で囲まれても、ショートコードを段落の一部として使う場合は、段落前後のpタグは削除されません。
例えば、以下のような書き方をした場合は、自動整形でこの段落がp要素で囲まれても、pタグはそのまま残ります。
このブログの名前は[template]<$mt:BlogName$>[/template]です。
1-4.空のp要素の削除
ショートコードによっては、処理結果が空文字列になることがあり得ます。
その場合、自動整形によってショートコードの前後がpタグで囲まれていると、空のp要素が出力されてしまいます。
この問題を避けるために、ショートコードの処理結果が空文字列になり、かつ自動整形によってショートコードの前後がpタグで囲まれている場合は、そのpタグも含めて、ショートコードの部分に何も出力しないようにしています。
この処理は、すべてのショートコードでデフォルトで行うようになっています。
1-5.先頭/最後のホワイトスペースの削除
ショートコードのブロック内の先頭と最後にホワイトスペース(空白/タブ/改行)があれば、それらを削除することができます。
この処理は、すべてのショートコードでデフォルトで行うようになっています。
1-6.ブロックの先頭/最後のbrタグの削除
ショートコードのブロックの先頭にbrタグだけの行がある場合や、ブロックの最後に余分なbrタグが連続している場合は、それらを削除することができます。
例えば、以下のようなショートコードを入力したとします。
[if name="hoge"] この部分は変数hogeの値が真のときだけ出力されます。 [/if]
この場合、リッチテキストエディタや、「改行を変換」の自動整形によって、以下を処理することになります。
<p>[if name="hoge"]<br /> この部分は変数hogeの値が真のときだけ出力されます。<br /> [/if]</p>
そして、変数hogeの値が真になっていれば、以下のような結果が得られます。
<p><br /> この部分は変数hogeの値が真のときだけ出力されます。<br /> </p>
ただ、最初の<p>タグの後の<br />タグと、最後の</p>タグの前の<br />タグは、不要なタグです。
そこで、これらを削除することができます。
各ショートコードのこの機能のデフォルトの動作は、以下のようになっています。
ショートコード | デフォルトの動作 |
---|---|
template | しない |
templatew | しない |
block | する |
table | しない |
if | する |
unless | する |
noconv | する |
2.個々のショートコードごとに対自動整形処理の方法を変える
ここまでで述べたように、ショートコードの処理の際にはpタグやbrタグの削除を行います。
その処理を行うかどうかを、個々のショートコードごとに明示することもできます。
それには、ショートコードを以下のように書きます。
[ショートコード名 -オプション -オプション ・・・ パラメータ="値" パラメータ="値" ・・・]
「オプション」には、以下の値を指定することができあます。
各オプションとも、する/しないのそれぞれで2種類ずつの書き方がありますが、どちらの書き方を使ってもかまいません。
削除処理の種類 | 処理を行う | 処理を行わない |
---|---|---|
「brタグ+連続するスペースや改行」を単一の改行に変換 | -cb -cut_br | -ncb -no_cut_br |
各行末のbrタグを削除 | -cbl -cut_br_line | -ncbl -no_cut_br_line |
ブロックの前後のpタグを削除 | -cp -cut_p | -ncp -no_cut_p |
空のp要素の削除 | -cpnc -cut_p_no_content | -ncpnc -no_cut_p_no_content |
先頭/最後のホワイトスペースの削除 | -tr -trim | -ntr -no_trim |
先頭のホワイトスペースの削除 | -lt -ltrim | -nlt -no_ltrim |
最後のホワイトスペースの削除 | -rt -rtrim | -nrt -no_rtrim |
ブロックの先頭/最後のbrタグの削除 | -tflb -trim_first_last_br | -ntflb -no_trim_first_last_br |
ブロックの先頭のbrタグの削除 | -tfb -trim_first_br | -ntfb -no_trim_first_br |
ブロックの最後のbrタグの削除 | -tlb -trim_last_br | -ntlb -no_trim_last_br |
例えば、templateショートコードでは、デフォルトでは「各行末のbrタグを削除」と「ブロックの前後のpタグを削除」の機能がオンになります。
しかし、ブロック内の文章のところどころにテンプレートタグを使うような場合だと、自動整形を生かして、行末のbrタグを残し、また段落前後のp要素も残したい場合もあります。
ただ、「[template]」の直後のbrタグと、「[/template]」の直前のbrタグは、削除する方が良いです。
上に書いたような処理を行うには、templateショートコードを以下のように書きます。
[template -ncbl -ncp -tflb] テンプレートタグ等 [/template]