先日は苦労の末、UTF-8の文字数orバイト数のカウントに小一時間悩みましたが、何とか解決。
さて、WebDiaryProでは、タイトルをJavaScriptで書き出す機能がありますので、非常に重宝しますが、記事のタイトルが長い場合に、全体のレイアウトを崩していしまう現象が起きます。
そこで、タイトルが一定の長さ以上になった場合に、一部を省略するように改造してみたいと思います。
例(9文字後は省略)
「長すぎるタイトルを省略するスクリプト」
↓
「長すぎるタイトルを….」
こんな感じですね。
長いタイトルを短くするスクリプトです。
lib/webliberty/app/diary.pm
1893行目付近
open(FH, “$self->{init}->{data_diary_dir}$entry”) or $self->error(“Read Error : $self->{init}->{data_diary_dir}$entry”);
while () {
chomp;
my($no, $id, $stat, $break, $comt, $tb, $field, $date, $name, $subj, $text, $color, $icon, $file, $host) = split(/t/);if (!$stat) {
↓
open(FH, “$self->{init}->{data_diary_dir}$entry”) or $self->error(“Read Error : $self->{init}->{data_diary_dir}$entry”);
while () {
chomp;
my($no, $id, $stat, $break, $comt, $tb, $field, $date, $name, $subj, $text, $color, $icon, $file, $host) = split(/t/);utf8::decode($subj);
if (length $subj >= 14){$subj = substr($subj,0,14).”….”}
utf8::encode($subj);if (!$stat) {
この改造スクリプトでは14文字以上になった場合15文字目から削除するようになっています。
文字数を変更したい場合は、下線部分(14)の部分を変更してください。
utf8::decode($subj); でデコードしてutf8::encode($subj);で再度エンコードしてやればいいんですね。
以上!
コメント