kokodayo.net
FSWikiまとめ
FreeStyleWiki
編集FAQ

URLでリンク先のタイトルを取得してリンクするプラグインにアイコンを簡単に付けてみる

URLでリンク先のタイトルを取得してリンクするプラグインext_link装飾用HTMLタグプラグインext_linkで外部リンクの画像を付けてみました。

ここでは仮にUrlTitle.pmの一番下の行、return "[$title|$url]";をreturn "[$title|$url]"."{{img icon:ext_link.gif}}";に書き換えて、例えばとしてiconの名前のページにext_link.gifなどとしてアイコンを添付すると自動でアイコンが付くようになります。CSSだけでやる方法もあるみたいですが外部リンクにのべつ付いてしまうのも難かと思われますので、{{img icon:ext_link.gif}}などと手作業出来るのが逆に利点です。

さらに変更

あとKeywordの外部リンクも同様にすると一貫性が出るはずではなかろうかと

/lib/Wiki/Parser.pmのsub _parse_line_keywordのキーワードの部分
push @array, $self->url_anchor($url, $label);を
push @array, $self->url_anchor($url, $label)."<img src=\"[url]/img/ext_link.gif\" border=\"0\"></a>";と付加してみたらできたようなので、URL別名リンクもpush @parsed, $self->url_anchor($url, $label)."<img src=\"[url]/img/ext_link.gif\" border=\"0\"></a>";としてURLリンクもpush @parsed, $self->url_anchor($url)."<img src=\"[url]/img/ext_link.gif\" border=\"0\"></a>";としてみた。前出のUrlTitle.pmの方は元に戻しました。逆にこれでアイコンが付かないようなエスケープのやり方があるといいかも。CSSに絡みが出てくる場合があります。
GPLに準ずるライセンスで。

ところがこれでは子Wikiによってはアイコンがつかないバグがあるようで

修正

HTMLParser.pmのURLアンカ部分でとりあえず一括にした。いろいろやったが結局これだけにした。HTMLでいじっているのでどちらかといえば正解に近いのだろう。かなり軽くなった。

 return '<a href="'.$url.'" target="_blank">'.&Util::escapeHTML($name)."</a>"."<img src=\"[URL]/wiki/img/ext_link.gif\" border=\"0\"></a>"
 }else{
 return '<a href="'.$url.'">'.&Util::escapeHTML($name)."</a>"."<img src=\"[URL]/wiki/img/ext_link.gif\" border=\"0\"></a>";
 }

ipの設定が変ったら表示しなくなったので見直した

直接指定していた[URL]部分をはずして
/wiki/img/ext_link.gif

と画像のターゲットを相対パスに変更してOK

W3C先生で見直したら間違っていたのでreturn部分を修正

 return '<a href="'.$url.'" target="_blank\">'.&Util::escapeHTML($name)."</a>"."<img src=\"/wiki/img/ext_link.gif\" border=\"0\" alt=\"ext_link\">"
 }else{
 return '<a href="'.$url.'">'.&Util::escapeHTML($name)."</a>"."<img src=\"/wiki/img/ext_link.gif\" border=\"0\" alt=\"ext_link\">";
 }