さて、うちのサイトではNucleusというCMSを使用していて、そのHTMLヘッダの作成には、NP_Headerというプラグインを使用している。
NP_Header (ページ 1) / プラグインの紹介 / Nucleus(JP)フォーラム
このプラグインの機能の中に、キーワードの自動抽出機能がある。これは、ブログの本文からbulkfeedsのAPIを使ってキーワードを抽出する機能である。
このサービスはすでに停止しているようなので、オプションで使用しないにしておかないと、ブログの表示に時間がかかってしまう問題があった。
また、ここで使っていたのはこのフォーラムで紹介された当初のものなので、バージョンは1.21。
そのバージョンではヘッダがプラグイン内の定義になっていたので、html5の書式に合わせるべく改造していた。
現在、最新版は2.02になっているようで、そのバージョンではヘッダの内容をブログごとに調整できるようなので、併せてバージョンアップしてみる。
NP_Header 2.02へのアップデート
古いバージョンとDIFFをとってみると、内容はずいぶん変わっているようだ。
ヘッダ部分が外部入力可能になっているようなのでその点は良いとして、昔のバージョンからはキーワードのテーブルが変わったようだ。
バージョンアップインストールの方法は、
1.旧バージョンを管理画面からアンインストール
この時、テーブルの削除はしないこと。
2.新バージョンのファイルをサーバ上で上書き
3.管理画面から再インストール
とすることで、キーワードのテーブルの内容が新しいテーブルに置き換わるようだ。
デフォルトだと、言語設定が「en」になっているのが気になるけれど、それ以外はデフォルトのままで使用可能。
Yahoo APIのキーワード検索の埋め込み
YahooAPIのPostのサンプルを参考に、bulkfeedsのキーワード生成部分を丸々置き換える。
Yahoo!デベロッパーネットワーク:WebAPIの使い方(POSTリクエスト) – Yahoo!デベロッパーネットワーク
Yahoo APIのキーが必要なので、プラグインオプションにYahooのキーの入力窓を追加し、bulkfeedsの文字列をYahooに置換。これでYahoo のAPIを使ってキーワードが生成されることになる。
こうなると、これまでに設定していたキーワードは不要なので、いったんテーブルを削除するモードでアンインストールして再インストール。
挙動を見ると、discriptionとkeywordsは、ヘッダを表示したり記事を編集するタイミングで生成されるようだ。
YahooのAPIの反応も早く、特に待たされる感じではない。いい感じだ。
その後の動作確認
検索エンジンのbotなどがクロールすると、そのタイミングでキーワードが生成されるようで、phpMyAdminで確認する限り、テーブルの内容は順調に増加している。
しかし、気になる部分が。まず、レコードを見ると、discriptionかkeywordsのどちらかしか入力されていない。
コードを確認すると、値の更新は「REPLACE INTO」を使用しているようだ。これは、レコードがない場合には追加、ある場合にはレコードを削除して追加という意味。アイテムの追加時にはどちらも同時に更新するけれど、クロールのタイミングで更新する場合には、レコードを削除して追加されるため、どちらかしか保存されていなかった。これは修正が必要。
まだ問題がある。postのサンプルコードをそのまま使ったのだけれど、どうもページに<などを使っていると、アンパサードとコロンが不正文字としてエラーになる問題が。これは、htmlspecialchars_decodeで一旦タグ文字に戻して、strip_tagsで削除することでうまくいった。
根本解決ではない気がするので、今後併せて修正する予定。
コメント