|
ECサイトに更新システム、地図サイトなどオープンソースの"EC-CUBE"を利用しているが、サイト内検索で利用されたキーワードを取得して集計できないかという要望があり実装することにした。 サイト内検索のキーワードはGETで残るのでアクセス解析を通じて知ることは可能だが、検索サイトからやってきたユーザのキーワードも残るので必要な箇所だけ集計するのは難しい場合がある。 さらに、サイト内検索で使われるキーワードというのは検索サイトで利用されるキーワードとは違い、サイト内で本当に探したい単語を入力されるため、人気のあるキーワードはマーケティングで大いに活用することができる。 動作環境はPHPとMySQLでVPSの"ラピッドサイト"で運用を確認しているが、"CPI"など他のホスティングでもPHPなどバージョンを満たしていれば動作する。 まず、検索時のプログラムにキーワードを格納するように実装する。 ![]() 検索を行うファイルは「/html/products/list.php」であり、中に"lfDispProductsList"というファンクションがあるのでここに記載する。 しかし、ここでどのテーブルに格納するかが問題となる。 そこで新たに「dtb_searchlog」というテーブルを作成し、そこにキーワードと更新日時を格納できるようにカラムを設定している。 今回は同じキーワードでも1つのレコードとして格納するようにしている。 そうすると検索のたびにデータベースの容量が増えてしまうのだが、「いつ、何というキーワードで検索されたか」がわかるので、時期に応じた商品の注目度などが判断できるようになる。 データベースの容量を極力増やしたくないのであれば、データを格納する前に一度同じものがないか確認し、あればそのキーワードの検索件数を1カウント増やすようにすればよいだろう。 これで検索を行い、データベースにデータが入っていればフロントの実装は完了だ。 次に、このキーワードを集計表示する画面を作る。 こちらは管理者が見るものなので、管理画面内に設定する。 実行ファイルは「/html/admin/products/search.php」、テンプレートファイルは「data/Smarty/templates/admin/products/search.tpl」として新規に設置する。 また、この画面にリンクするために「data/Smarty/templates/admin/products/subnavi.tpl」も修正しておく。 実行ファイルの「search.php」には「dtb_searchlog」から同じキーワードをグループとしてまとめ総数をカウントしたデータを取得し、「search.tpl」でそれらを表示するようにする。 ![]() ここから各キーワードをクリックすると検索された日付が出るようにすれば完了となる。 大よそ一時間もかからないうちに実装できたが、これも「EC-CUBE」が共通実装の部分はクラス化されており、似たような処理は他のファイルからコピーして使えばよいので開発者にはありがたい。 これがプラグイン化してワンクリックで実装できるようになればありがたいのだが。 |
| << 前記事(2007/11/15) | トップへ | 後記事(2007/11/19)>> |
| タイトル (本文) | ブログ名/日時 |
|---|
| 内 容 | ニックネーム/日時 |
|---|
| << 前記事(2007/11/15) | トップへ | 後記事(2007/11/19)>> |