【コラム】
いよいよ今回は、osCommerce本体のスクリプトを改造し、「お勧め商品」を表示するようにしてみよう。とはいえ、実はosCommerceには既に同様の機能が実装されていたりする。これは「also_purchased_products」と呼ばれるosCommerceのモジュールによって提供される機能で、以下のスクリーンショットのように、「この商品を買った人は、こんな商品も買っています」ブロックを表示するものだ。
しかし、本コラムで行う改造は、PHPで書かれたアプリケーションが、いかに簡単にカスタマイズできるかを示すことを主眼としている。あえて、osCommerceの元々の機能を、自分で作った推売システムで置き換えてしまうことにしよう。
実際の改造に入る前に、osCommerceをテストに適した設定に変更しておこう。管理画面の基本設定で、「キャッシュ」を「不使用」に設定する。これは、キャッシュを使用するようにしていると、スクリプトの変更が直ちに画面に反映されず、デバッグがしにくくなるためだ。
キャッシュの設定を変更したら、osCommerceのカタログページにアクセスして、何かひとつ商品を選択してみよう。アドレスバーに表示されるURIを見れば、商品情報の表示は「product_info.php」というスクリプトが担当していることがわかるだろう。商品情報のページに他のお勧め商品を表示するのであれば、このproduct_info.phpを書き換えればよいわけだ。
早速product_info.phpをエディタで開いてみよう。PHPスクリプトの編集に使うエディタはなんでも構わないが、最低限、複数文字エンコーディングの判別が可能なものが必要だ。今後本格的にPHPスクリプトを作成する予定があるのならば、以前紹介した「Eclipse 」などの統合開発環境を使ってもよい。Eclipseには「PHPEclipse」などのPHPプラグインもある。これらのプラグインは、PHPスクリプトの開発に特化したエディタが付属していて非常に便利だ。PHPEclipseについては、いずれまた本コラムの中で詳しく紹介する機会もあるだろう。
話をproduct_info.phpに戻そう。まず、既存の「also_purchased_products」モジュールを呼び出している箇所は、172行目あたりの以下の部分だ。
ここでは、外部ファイル(具体的にはincludes/modules/also_purchased_products.php)に記述されたスクリプトを、「include」命令によって実行時に取り込むようになっている。この部分は、思い切って全部コメントアウトしてしまおう。
代わりに、ここには以下の処理を記述する。
簡単に処理の概要を解説しておこう。まず、$query変数には、データベースからお勧め商品の情報を検索するための「SQL」命令が入る。ちょっとわかりにくいかもしれないが、基本的には、選択された商品のIDを元に前回作成したrecommendテーブルを検索しているだけだ。products_descriptionテーブルが結合されているが、これはお勧め商品の商品名を取得するためである。なお、「language_id = 4」としているのは、osCommerceが各国語毎にデータとして保持している商品の詳細情報のうち、日本語のデータだけを選択するためだ。本来はこういった「コードをスクリプトにべた書き」するようなことは、後のメンテナンス性を損ねるので避けるべきなのだが、今回は、サンプルとして「動く」のが優先ということで目をつぶっていただきたい。
データベースの検索は、osCommerceにあらかじめ用意されている「tep_db_query」関数で行う。同様に、検索結果からの値の取り出しには、「tep_db_fetch_array」関数を使用している。これらの関数はincludes/functions/database.phpに定義されており、osCommerce全体のデータベース処理を共通化している。現時点では、osCommerceはMySQLにしか対応していないが、データベース処理が関数として独立しているので、他のデータベースを使うように移植するのも、さほど難しくないはずだ。
さて、この改造の結果、商品情報のページの表示は画面のように変更される。
ちゃんとrecommendテーブルに登録されたお勧め商品が表示されるようになった。見た目的にはあまり格好良くないが、これはデザインを考えながら、PHPから出力されるHTMLのタグやCSSに手を加えていけばよいだろう。
なお、PHPの文法や関数に関しては、非常わかりやすいドキュメントも提供されている。いきなり高度なアプリケーションを開発するのは難しくても、osCommerceのようなアプリケーションで、既存のコードを参考にしながらカスタマイズするのは割と簡単だ。是非、読者の皆さんも挑戦してみて欲しい。
| 理研、脳・脊髄形成に必要な神経板湾曲の仕組みを解明 [20:16 5/25] |
| 京大、「慢性閉塞性肺疾患」患者の労作時呼吸困難は鍼治療が有効と実証 [20:08 5/25] |
| 120Hz SHVカメラ用イメージセンサーを使った撮像装置 - SHVフルスペック化へ [18:10 5/25] |
| 京大、視覚による物体認知は前頭前野からのトップダウン信号が重要と確認 [17:45 5/25] |
| 製品数の拡大だけでなくBCPの展開なども含めた総合力で事業の強化を図るTI [17:25 5/25] |
|
「ゆりてつ」サイン会は作者と都電に揺られるツアー仕立て [17:45 5/27] ホビー |
|
【ネタバレもありの徹底解明コラム】『サザエさん』タマの意外な事実 [17:30 5/27] ホビー |
|
鍼灸(しんきゅう)師が教える。オフィスで口臭予防ツボ・ベスト3 [17:00 5/27] キャリア |
|
[梶浦由記]米「アニメ・エキスポ」に2度目の参加決定 [17:00 5/27] ホビー |
|
【連載】これだけは要チェック! TOEIC(R)単語帳 第107回 今回のお題は…「chemical」 [17:00 5/27] キャリア |
4つの診断で、自分の適性を見つめなおそう!
働くこと・挑戦し続けることへの思いを綴ったインタビュー
あなたにピッタリのアドバイスを読むことができます。
転職に必要な情報が収集できます
企業からアプローチのメッセージが届きます。