FreeStyleWiki について

ページのタイトルを最初の見出しと同じにするパッチ

標準では、FSWiki の生成する HTML の title 要素には、ページ名(wiki名)がそのまま使用される。

それではブックマークした場合、検索エンジンにひっかかった場合に表示されるページの名称がいまいちである。

そこで、ページ中の最初の大見だし (!!! で始まる行) の内容を、title 要素に使うようにするパッチを作成した。

diff -uNr wiki3_6_2.orig/lib/Wiki/HTMLParser.pm wiki3_6_2/lib/Wiki/HTMLParser.pm
--- wiki3_6_2.orig/lib/Wiki/HTMLParser.pm	2006-07-02 18:10:04.000000000 +0900
+++ wiki3_6_2/lib/Wiki/HTMLParser.pm	2006-07-21 20:55:36.795765646 +0900
@@ -22,6 +22,7 @@
 	my $self = Wiki::Parser->new($wiki);
 	
 	$self->{html}  = "";
+	$self->{title} = "";
 	$self->{pre}   = "";
 	$self->{quote} = "";
 	$self->{table} = 0;
@@ -141,6 +142,10 @@
 	$self->end_quote;
 	
 	my $html  = join("",@$obj);
+
+	if ($level == 1 && $self->{title} eq "") {
+		$self->{title} = $html;
+	}
 	
 	# メインの表示領域でないとき
 	if(!$self->{main}){
diff -uNr wiki3_6_2.orig/lib/Wiki.pm wiki3_6_2/lib/Wiki.pm
--- wiki3_6_2.orig/lib/Wiki.pm	2006-07-02 18:10:05.000000000 +0900
+++ wiki3_6_2/lib/Wiki.pm	2006-07-21 22:15:40.334272438 +0900
@@ -583,6 +583,10 @@
 	my $parser = Wiki::HTMLParser->new($self,$mainflg);
 	$parser->parse($source);
 	$self->{parse_times}--;
+
+	if ($mainflg && defined($parser->{title}) && $parser->{title} ne "") {
+		$self->set_title($parser->{title});
+	}
 	
 	return $parser->{html};
 }