wa - NucleusやFlashなどなど

RSS

Home > Nucleus キーワードリンクプラグインのテスト

09.28 '05

Nucleus キーワードリンクプラグインのテスト

今まで、プラグインを作る時、このブログで直接デバッグしておりまして、ずらーっとエラーコードが並んでる状況をさらしておりました。:oops:
今日から、別ブログで、ある程度作ってから、このブログにインストールするようにしましたので、少しは改善されると思います。
キーワードリンクプラグインってのが、とりあえず完成したので、このブログで動作確認をしています。

はてなダイアリーキーワードみたいな感じに、本文中のキーワードに、自動リンクを挿入します。
キーワードを括弧とか特定の記号などで囲まなくてもOKです。
普通に書いた文章の中から、設定したキーワードを見つけると、そこに設定したリンク先を埋め込みますので、過去の記事などにも反映されます。

↓こんな感じに、リンクが自動的に張られます。
Nucleusって面白い。でもブログサービスも良いなぁ。
Flash ActionScriptは今後どうなる?

「はてなキーワードの自動リンクって、うっとうしい。」って声はたまに聞きますが、個人的には好きです。
確かに、なんでもかんでもキーワードがリンクしていると、うっとうしいかもしれません。
はてなダイアリーキーワード自動リンクAPIを使うのもヘビーそうだし(XML-RPC版もあったり、試したら面白くてハマるかもしれないけど)、はてなだけじゃなく色々なページを登録できると面白いなぁと思いまして、ずいぶん悩みましたが以下のような仕様にしてみました。
  1. 事前にキーワードとリンク先を、静的に設定しておく。
  2. キーワードは、特定の記号などで囲まなくても良い。
  3. <a>と<img>タグ内は、対象外とする。
  4. 記事内で使用している、<a><img>タグ以外の「意味を持つ文字列」をキーワードとしないよう注意が必要
最初は、
プラグイン編集ページのパラメータとして、
  1. リンク先(例えばhttp://d.hatena.ne.jp/keyword/)
  2. キーワード(複数キーワードはカンマで区切るなどして)

を登録して、実際のリンクページは、リンク先の末尾にキーワードを付加してやれば、あとからプラグイン編集ページで、リンク先を変更するだけで、動的にウィキペディアやYahoo!用語辞典に切り替えたりすることができる。
という仕様でした。プラグイン管理ページも必要ないので作るのも楽なのですが、静的にリンクページを設定する方が、使い方の幅が広がるかと思い、最初に書いた仕様にしました。

これにより、キーワードに対しどんなページでも登録できるので、以下のような使い方もできます。
  • タレントの話題とかが多いブログなら、オフィシャルページなんかにリンク(例えば奥田民生とか書いてみたり)
  • Seesaa BLOGみたいに、キーワードからアフェリエイト(例えばFlash 8(amazon)とか書いてみたり)
    「そのつもりがないのに、クリックしたら購入ページ」ってのもいやらしいので、あえてしませんが、Flash 8ってキーワードにすれば、このブログで多用しているので、その全てがアフェリエイトになります。
えーっと、あんまり思いつかない。。。

実はこのプラグイン、先日作成したスマイリープラグインのおまけ機能として作っていまして、スマイリーアイコンの登録と同じようにキーワードとリンク先を登録するだけで機能するようにしていたんです。
数行の修正で動作したのですが、おバカなことに、「<img>タグのurlや<a>タグ内の文字列まで置換えてしまう」ということに、あとから気づいたのでした。
正規表現で、特定タグを対象としないようにできないかとがんばってみたのですが、文中にタグが存在しない場合もあるし、必要な条件を一発でクリアする正規表現を書くことが出来ませんでした。
それで、力技でちょっと無理やりな処理を入れることとなり、スマイリープラグインと切り離しました。

具体的には、以下のような美しくない処理をしています。
  1. <a>、<img>タグを別の文字列{[連番]}に置き換えておく。
  2. 登録したキーワードにリンクを組み込む。
  3. 文字列{[連番]}を、退避させておいた<a>、<img>タグに戻す。
何度も複数の正規表現を使って処理していますので、かなり不細工なつくりになってしまいました。

まだまだ、変なところ(仕様?)があるので、もうちょっと動作確認を続けます。

[2005-11-06追記]
Nucleus(JP)フォーラムで、まみおさんAndyさんにアドバイスをいただき、多くの問題を改善することができました!ありがとうございます。

コメント

この記事へのコメントはありません。

コメント追加



プレビュー

コメント追加通知RSS:
↑このフィードをRSSリーダーに登録しておくと、この記事へのコメント追加をチェックすることができます。
コメント追加後の、返事待ちなどにお使い下さい。
なお、コメントチェックの必要がなくなった際には、このRSSを削除して下さいね。
不要なトラフィックを避けるために、ご協力お願いいたします。

トラックバック

トラックバック
このエントリにトラックバックはありません
このトラックバックURLを使ってこの記事にトラックバックを送ることができます。 もしあなたのブログがトラックバック送信に対応していない場合にはこちらのフォームからトラックバックを送信することができます。.
トラックバックURL:
znBackup znItemFieldEX znCustomAdmin znBackup znSmiley znShowDraft znSpeedCubing znKeywordLink znCommentRSS znCCitation znItemParts znMCList znHatenaExist znQuestionnaire znFlash