<$MTEntryBody trim_to="N" あるいは words="N"
件のブログ修正の際、トップページのみ、個別エントリーの表示を先頭の指定文字数のみ表示させて、後は [ ...続きを読む ] と表示させたい、というリクエストがあった。
それ自体は、まあ文字数指定のトリム処理で良く、また [ ...続きを読む ] 部分の表示もJavaScriptを使って以下のようにすれば、まあ可能だ。<$MTEntryBody words="600"$>
<script type="text/javascript">
var strNum = <mt:entrybody count_characters="1" />;
if(strNum >= 10){
document.write("...<br />");
var linkStr = "<p><a href='<$MTEntryPermalink$>'>続きを読む</a><br /></p>";
document.write(linkStr);
}
...
問題は、指定文字数でトリムする trim_to の場合、開始タグと閉じタグの不整合が生じる、また文字数指定の場合は
タグが除去されたプレインテキストのみの表示になってしまう、ということ。
プラグインを作成して、強引に開始タグと閉じタグを整合させる処理でも噛ませれば、希望レイアウトのままの文字数指定が可能だとは思うが...
作るの面倒くさそうだなぁ。
- まず、指定文字数でトリム
- 記事内の、なんの文字列をタグとして認識させるか
- それは開始タグ/終了タグのセットが必要なタグか
- 開始タグであれば、配列に保存
- 閉じタグがあれば、配列の末尾のタグと照合して、同一であれば配列から除去
- ※末尾のタグと合致しない場合、元記事内にタグの不整合がある⇒エラー処理
- 記事内の最後のタグより後ろに < があれば、実体参照に置き換え
- 配列内に残るタグを、後ろから順次読み出して、対応する閉じタグを追加
といったあたりか・・・。
トラックバック(0)
このブログ記事を参照しているブログ一覧: <$MTEntryBody trim_to="N" あるいは words="N"
このブログ記事に対するトラックバックURL: http://northernland.net/mt/mt-tb.cgi/24

コメントする