[改造]タイトルの文字数を制御するスクリプト-WebDiaryPro

先日は苦労の末、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);で再度エンコードしてやればいいんですね。

以上!

コメント

タイトルとURLをコピーしました