================================================================================ Trackback For Products for oscommerce 2.2MS1J R7 ================================================================================ ■ はじめに この拡張モジュールは、新規に作成したモジュールです。 作成するにあたって、石川直人さん(ishinao)の「自分で作るblogツール」を参考にしました。 また、トラックバックの受信確認テストとトラックバックスパム対策については、P_BLOG ProjectのP_BLOGを 利用させて頂きました。 石川さん、P_BLOG Projectには感謝します。 - 『自分で作るblogツール(PHP編)』サポートエントリー http://dev.ishinao.net/archives/000013.html - 『自分で作るblogツール(PHP編)』 ソフトバンクパブリッシング http://www.sbpnet.jp/books/products/detail.asp?sku=4797327073 - P_BLOG Project http://pbx.homeunix.org/p_blog/index.php また、トラックバックの仕様として「トラックバック技術仕様書」を参考にしました。 - トラックバック技術仕様書 http://lowlife.jp/yasusii/stories/8.html 不具合等ありましたら、 sogabe@alles.or.jp もしくはosCommerce 日本語版のメーリングリスト tep-j-generalに、 連絡お願いします。 - osCommerce 日本語版のメーリングリスト tep-j-general http://www.bitscope.co.jp/tep/ml.html ■ ライセンス GNU GENERAL PUBLIC LICENSE Version 2に準じます。詳細は、添付のLICENSEを参照してください。 ■ 注意事項 動作確認等は行っていますが、動作環境等によっては不具合等が生じる場合が可能性があります。 発生した不具合等の対処は可能な限り行いますが、データベースの修復や不具合による損害等については、 責任を負いかねます。あくまでも自己責任でご利用ください。 バージョン(0.1)を御覧になれば分かりますが、十分な機能や試験を行っていませんので、商用でのご利用は おすすめできません。試験環境で十分確認して導入を検討してください。 ================================================================================ ■ 概要 Trackback For Productsは、商品に対するトラックバックを受信し、商品画面(product_info.php)等にトラックバックを 表示します。一般的なブログツールのトラックバックのようなイメージです。 現在実装している機能は以下の通りです。 - トラックバックの受信 - トラックバックスパム対策 - 受信したトラックバックの概要(excerpt)に2byte文字が含まれていない場合スパムとする - トラックバック元URLのコンテンツに言及リンクを含まない場合スパムとする。 - 同一商品に対して同一のURLからのトラックバックを登録しない - トラックバックの承認 - 管理画面で承認したトラックバックのみ表示 - トラックバック受信時に自動的に承認済にする - 最新のトラックバックをBOXとして表示 - 表示するトラックバック数の設定 - キャッシュの使用およびキャッシュ時間の設定 - 商品画面にトラックバックを表示 - 表示するトラックバック数の設定 - キャッシュの使用およびキャッシュ時間の設定(BOXと共用) - rel="nofollow"属性の使用 - トラックバックURLのAuto Discovery機能 ================================================================================ ■ ToDo - トラックバック元URL文字列に、指定した文字列が含まれている場合にスパムと判定 - IPアドレスによるスパム判定 - P_BLOG以外からのトラックバックを正常に受信できることを確認 - Auto Discovery機能の確認 - トラックバックpingの一覧をRSSで出力( __mode=rss) ================================================================================ ■ 使用方法 1. 管理画面でトラックバックの基本設定を行います。管理画面 -> 基本設定 -> トラックバックを選択します。 この画面では以下の項目を設定します。 - トラックバックを有効にする (初期値 false) トラックバックを有効にします。 - 商品画面に表示するトラックバック数 (初期値 5) 商品画面に表示するトラックバック数を設定します。設定したトラックバック数だけ受信時間の降順で最新の トラックバックから表示します。 - BOXに表示するトラックバック数 (初期値 5) 画面の左もしくは右のトラックバックBOXに表示するトラックバック数を設定します。設定したトラックバック数だけ 受信時間の降順で最新のトラックバックから表示します。 - トラックバックをキャッシュする秒数 (初期値 3600) 商品画面もしくはトラックバックBOXをキャッシュする秒数を設定します。 基本情報 -> ページキャッシュ -> キャッシュを使用 がtrueの場合のみ有効です。キャッシュを有効にすることによって、負荷を下げることができますが、 キャッシュする時間を過ぎないと、トラックバックを反映することができません。 - トラックバックを承認済で登録する (初期値 false) トラックバック受信時にトラックバックの承認を「承認済」で登録します(デフォルトでは「未承認」)。 trueにすることによって、承認行為をしないですぐトラックバックを表示することができるようになります。 - 概要に2byte文字を含まない場合スパムとする (初期値 false) 受信したトラックバックの概要に2byte文字が含まれていない場合スパムと判定するか設定します。 trueにした場合は登録しません。 - 重複したトラックバック元URLは登録しない (初期値 true) 1つの商品に同じトURLからトラックバックを受信した場合登録するか設定します。 trueにした場合は登録しません。 - 言及リンクを含まない場合スパムとする (初期値 false) トラックバック元のコンテンツに言及リンクを含まない場合、スパムとして扱うかを設定します。 trueにした場合は登録しません。この機能を使用するにはcurlが必要です。 2. 管理画面で受信したトラックバックの管理を行います。管理画面 -> カタログ管理 -> トラックバックを選択します。 ここでは、トラックバックの承認行為および削除を行います。 トラックバックには、「承認」という以下の4つのステータスがあります。 - 未承認 トラックバックを受信した後承認行為をまだ行っていない状態です。表示されません。 - 承認済 トラックバックを承認し、表示を許可する状態です。 - 却下 トラックバックの表示を行わない状態です。表示されません。 - 保留 トラックバックの承認行為は行ったが、判定を保留した状態です。表示されません。 トラックバック一覧のチェックボックスを選択し、「承認」「却下」「保留」ボタンを押下すると、「承認」ステータスを 変更することができます。また、右上にあるプルダウンで一覧に表示するトラックバックの「承認」ステータスを 絞ることができます。 同様に、チェックボックスを選択し「削除」ボタンを押下すると、選択したトラックバックを削除することができます。 ただし、元に戻すことはできません。 また、「全反転」リンクを押下すると、チェックボックスのすべての選択を反転することができます。 3. あとはトラックバックを受信するだけです。トラックバックがないのも寂しいので、サクラでトラックバックを送信する ことも考えた方がいいかもしれません。ないと寂しいです。 ================================================================================ ■ 注意事項 - 繰り返しますが、バージョンはモジュールの完成度と密接な関連があります。 - トラックバックのスパム判定は簡易機能なのであまりあてにしてはいけません。 - トラックバックの承認行為についてはいろんな意見があると思いますので、各自判断して利用してください。 トラックバックスパムでサーバがどうにかなっても、名誉を貶められても本モジュールの範囲外のことです。 - 【絵文録ことのは】 トラックバックをめぐる4つの文化圏の文化衝突――「言及なしトラックバック」はなぜ問題になるのか http://kotonoha.main.jp/2006/01/06trackback.html ================================================================================ ■ ファイル構成 新規: (アーカイブに含まれています) admin/includes/languages/japanese/trackbacks.php admin/includes/functions/trackbacks.php admin/trackbacks.php catalog/includes/boxes/trackbacks.php catalog/includes/functions/trackbacks.php catalog/includes/modules/trackbacks_for_products.php catalog/includes/trackbacks_top.php catalog/tb.php 修正: (アーカイブに含まれていません) admin/includes/application_top.php admin/includes/languages/japanese.php admin/includes/boxes/catalog.php admin/includes/stylesheet.css catalog/product_info.php catalog/includes/application_top.php catalog/includes/languages/japanese.php catalog/includes/languages/japanese/product_info.php catalog/includes/column_left.php catalog/stylesheet.css その他: (アーカイブに含まれています) sql/tb.sql readme_j.txt LICENSE ================================================================================ ■ インストール STEP 0 バックアップ -------------------------------------------------------------------------------- - ファイルおよびデータベースをバックアップします。 STEP 1 新規ファイルの追加 -------------------------------------------------------------------------------- - 以下の新規ファイルを該当のディレクトリにコピーしてください。 admin/includes/languages/japanese/trackbacks.php admin/includes/functions/trackbacks.php admin/trackbacks.php catalog/includes/boxes/trackbacks.php catalog/includes/functions/trackbacks.php catalog/includes/modules/trackbacks_for_products.php catalog/includes/trackbacks_top.php catalog/tb.php STEP 2 修正 (admin/includes/application_top.php) -------------------------------------------------------------------------------- - 一番最後(?>の前)に、以下の3行を追加します。 // Trackback For Products define('FILENAME_TRACKBACKS', 'trackbacks.php'); define('TABLE_TRACKBACKS', 'trackbacks'); STEP 3 修正 (admin/includes/languages/japanese.php) -------------------------------------------------------------------------------- - 一番最後(?>の前)に、以下の2行を追加します。 // Trackback For Products define('BOX_TRACKBACKS', 'トラックバック'); STEP 4 修正 (admin/includes/boxes/catalog.php) -------------------------------------------------------------------------------- - 以下の記述の前に、 '' . BOX_CATALOG_PRODUCTS_EXPECTED . '
' . 以下の1行を追加します。 '' . BOX_TRACKBACKS . '
' . STEP 5 修正 (admin/includes/stylesheet.css) -------------------------------------------------------------------------------- - 一番最後に以下を追加します。 table.trackbacks_list { font-family: Osaka, Verdana, Arial, sans-serif; /* フォントファミリ */ font-size: 10px; /* フォントサイズ */ border: 0; border-collapse: collapse; } .trackbacks_list thead { background-color: #C9C9C9; font-family: Osaka, Verdana, Arial, sans-serif; /* フォントファミリ */ font-size: 10px; /* フォントサイズ */ color: #ffffff; /* フォントカラー */ font-weight: bold; } .trackbacks_list tbody { font-family: Osaka, Verdana, Arial, sans-serif; /* フォントファミリ */ font-size: 10px; /* フォントサイズ */ color: #000000; /* フォントカラー */ } .trackbacks_list tr.odd { background-color: #f0f1f1; } .trackbacks_list tr.even { background-color: #ffffff; } .trackbacks_list td.approval { text-align: center; } .trackbacks_list td.choise { text-align: center; } STEP 6 修正 (catalog/product_info.php) -------------------------------------------------------------------------------- - 160行あたりの以下の後に、
以下を追加します。 - 以下の前に、 以下を追加します。 STEP 7 修正 (catalog/includes/application_top.php) -------------------------------------------------------------------------------- - 以下の後に、 define('FILENAME_UPCOMING_PRODUCTS', 'upcoming_products.php'); 以下を追加します。 // Trackback for Products define('FILENAME_TRACKBACKS_FOR_PRODUCTS', 'trackbacks_for_products.php'); define('FILENAME_TB', 'tb.php'); - 以下の後に、 define('TABLE_ZONES', 'zones'); 以下を追加します。 // Trackback for Products define('TABLE_TRACKBACKS', 'trackbacks'); - 一番最後(?>の前)に以下を追加します。 include_once DIR_WS_FUNCTIONS . 'trackbacks.php'; STEP 8 修正 (catalog/includes/languages/japanese.php) -------------------------------------------------------------------------------- - 一番最後(?>の前)に以下を追加します。 // Trackbacks for Products define('BOX_HEADING_TRACKBACKS', 'トラックバック'); define('BOX_HEADING_TRACKBACKS_FOR_PRODUCTS', 'トラックバック (最新 %d 件)'); define('TEXT_CONTINUE_TO_READ', ' (続きを読む)'); STEP 9 修正 (catalog/includes/languages/japanese/product_info.php) -------------------------------------------------------------------------------- - 一番最後(?>の前)に以下を追加します。 // Trackbacks for Products define('TEXT_TRACKBACKS_URL', 'この商品のトラックバックURL: '); STEP 10 修正 (catalog/includes/column_left.php) -------------------------------------------------------------------------------- - 表示したい場所に以下を追加します。 if (TRACKBACKS_ENABLED == 'true') { if ( (USE_CACHE == 'true') && !SID ) { echo tb_cache_trackbacks_box(TRACKBACKS_CACHETIME); } else { include(DIR_WS_BOXES . 'trackbacks.php'); } } STEP 11 修正 (catalog/stylesheet.css) -------------------------------------------------------------------------------- - 一番最後に以下を追加します。 /* --------------------------- トラックバック --------------------------- */ .trackbacks_url { font-family: Osaka, Verdana, Arial, sans-serif; /* フォントファミリ */ font-size: 11px; /* フォントサイズ */ padding: 10px; margin-bottom: 1em; } .trackbacks_title { font-family: Osaka, Verdana, Arial, sans-serif; /* フォントファミリ */ font-size: 12px; /* フォントサイズ */ margin-bottom: 5px; padding-bottom: 2px; border-bottom: 1px #ddd solid; } .trackbacks_excerpt { font-family: Osaka, Verdana, Arial, sans-serif; /* フォントファミリ */ font-size: 11px; /* フォントサイズ */ line-height: 1.5; /* 行の高さ */ padding: 1em; } .trackbacks_blog { font-family: Osaka, Verdana, Arial, sans-serif; /* フォントファミリ */ font-size: 11px; /* フォントサイズ */ font-style: italic; text-align: right; } STEP 12 MySQL DBの修正 -------------------------------------------------------------------------------- - phpMyAdminやコマンドラインを使用して、sql/tb.sqlのSQLを実行してください。 以上で終了です。 ================================================================================ ■ 履歴 2006-05-05 v0.1 初版 2006-05-13 v0.2 - トラックバックをスパムと判断した時に返すレスポンスコードを 403に変更 - excerpt(任意項目)がある場合のみ2byteチェックを行うように変更 - トラックバック元に言及リンクがない場合スパムと判定 - トラックバックを有効/無効を設定できるように変更 - その他細かなbug fix 2006-12-03 v0.3 - Auto Discovery機能を http://blog.bulknews.net/cookbook/blosxom/trackback/tb_discovery.html のtb_discovery.plで確認しました。(#5) - tb.sqlをphpMyAdminでも実行できるように修正しました。 - admin/functions/trackbacks.phpをadmin/includes/functions/trackbacks.phpに変更しました。 $Id: readme_j.txt 168 2006-12-03 12:09:07Z sogabe $