<$MTEntryBody trim_to="N" あるいは words="N"

| | コメント(0) | トラックバック(0)

件のブログ修正の際、トップページのみ、個別エントリーの表示を先頭の指定文字数のみ表示させて、後は [ ...続きを読む ] と表示させたい、というリクエストがあった。

それ自体は、まあ文字数指定のトリム処理で良く、また [ ...続きを読む ] 部分の表示も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

コメントする

このブログ記事について

このページは、adminが2008年1月10日 11:44に書いたブログ記事です。

ひとつ前のブログ記事は「MTEntries id="N"」です。

次のブログ記事は「アーサー・C・クラーク氏 逝去」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

Powered by Movable Type 4.01