「続きを読む...」の実装を考える(の続き)
trackback.moduleをパクって一応Ruby版を作成しました。こんな感じ(というかほとんど同じ?)
def truncate_utf8(_string,_len,_dots = "(続く...)")
return _string if _string.length < _len
if _string[_len] < 0x80 || _string[_len] >= 0xc0
return _string[0.._len-1] + _dots
end
while(_len >= 0 && _string[_len] >= 0x80 && _string[_len] < 0xc0)
_len = _len - 1
end
return _string[0.._len-1] + _dots
end
|
これで指定文字数で区切って(続く...)となるのですが、HTMLタグがあった場合の考慮も必要そうです。位置によっては<a href="xxxxxxx (続く...)はさすがによろしくない。タグを閉じないで終わることは避けなければいけません。一度すべてのタグを取り払った後、要約を作成すれば簡単だと思うのですがそれだとせっかくの文章表現がトップページで見られなくなってしまいイマイチ。単に"<"が">"で閉じているかチェックするのは簡単そうですが、<tag>と</tag>の論理的なペアまで考慮しないとレイアウトそのものが崩れる可能性のあるタグもあります。さすがにそこまで考慮するとなると...ちょっと手に負えないかも。
ところで、この記事を書いているDrupalのブログモジュールでは、FullHtmlで書いた記事もきちんと論理的な境目で(続き...)を挿入してくれますし、必要なら<!--break-->を挿入するとそこで切ってくれます。このアイディアを頂いて<!--break-->までを切り出すというのが一番現実的な気がしてきました。










Comments