[Tep-j-general] Yahoo! 商品検索登録用データ作成スクリプト

アーカイブの一覧に戻る

hamada bungu****@leo*****
2006年 4月 8日 (土) 09:03:20 JST


こんにちわ。

On Fri, 07 Apr 2006 09:04:58 +0900
hamada <bungu****@leo*****> wrote:

> てゆーか、PHPで作れば宜しいんじゃないでしょか?(^_^;)

ということで、さくっと書いてみました。

高橋さんの書かれてたSQLでは「必須」とされてるURLや特価が取得出来ないよう
に思いますし、制限なし→全商品が出力され上限の1,000個を越えちゃうように
思うんですが、これでホントに大丈夫だったんでしょか?

当方のも、言語や税率や端数処理や「検索エンジン対策のurl」を決め打ちした
り、文字数制限を一部にしか実装してなかったり、かなり激しく手抜きです。あ
くまでも叩き台と言う事で。

一応、自分では“なるべく台にし易いよう”書いてるつもりです。

たぶん、真っ先に問題になるのはYahoo!言うところの「パス」、osCの「カテゴ
リ」の処理でしょう。

直接所属カテゴリを表示するのか、上位カテゴリを表示するのか。重複登録カテ
ゴリをどう処理するか等でいろんなケースが考えられましたので、ココは全部端
折ってます。必要な場合は適当に実装してください。


はまだ


osCの/catalogに設置されることを想定してます。
-----------------------------------------------


<?php

require('includes/application_top.php');

//初期設定
$limit		= 1000;
$encode		= "SJIS";
$file		= "yahoolist.txt";
$separator	= "\t";
$tax		= 1.05;

//クエリを投げる
$sql = "select p.products_id, pd.products_name, IF(s.status, s.specials_new_products_price, p.products_price) as price, pd.products_description, p.products_image, p.products_model from " . TABLE_PRODUCTS . " p, " . TABLE_PRODUCTS_DESCRIPTION . " pd left join " . TABLE_SPECIALS . " s on p.products_id = s.products_id where p.products_id = pd.products_id and pd.language_id = '4' order by p.products_id desc limit " . $limit;

$result = tep_db_query($sql);

//ファイルの書込み処理
$fp=fopen($file, "w");
flock($fp,2);

//データ見本部の書込み
$str = "id" . $separator . "title" . $separator . "url" . $separator . "price"  . $separator . "desc" . $separator . "image" . $separator . "no" . "\n"; 

fwrite($fp, $str);

//メインループ
while($data = tep_db_fetch_array($result)) {

	//1行分のデータを作成
	$str  = $data['products_id'];
	$str .= $separator;
	$str .= $data['products_name'];
	$str .= $separator;
	$str .= HTTP_SERVER . DIR_WS_CATALOG . FILENAME_PRODUCT_INFO . "/products_id/" . $data['products_id'];
	//「検索エンジン対策のurl」がfalseなら"?products_id="
	$str .= $separator;
	$str .= round($data['price'] * $tax);	//手抜き(^^;;
	$str .= $separator;
	$str .= mb_strimwidth(strip_tags(ereg_replace("\n|\r", "", $data['products_description'])), 0, 256);
	$str .= $separator;
	$str .= HTTP_SERVER . DIR_WS_CATALOG . DIR_WS_IMAGES . $data['products_image'];
	$str .= $separator;
	$str .= substr($data['products_model'], 0, 20);
	$str .= "\r\n";

	//文字コードの変換
	$str = mb_convert_encoding($str, $encode);

	//書込み
	fwrite($fp, $str);

}

//書込み終了処理
flock($fp,3);
fclose($fp);


?>





Tep-j-general メーリングリストの案内
アーカイブの一覧に戻る