[Tep-j-general] metaタグ生成スクリプト meta.php

アーカイブの一覧に戻る

hamada bungu****@leo*****
2004年 7月 2日 (金) 13:55:38 JST


こんにちわ。

先日Yahoo!の検索エンジンがGoogleからYahoo Search Technologyに変わったの
ですが、どうもコレは(Googleがすっかり無視してた)metaタグを見るらしいと
いうハナシがあります。

まぁmetaタグ自体は未だInfoseek他が使ってますし、有っても特に損するわけじゃ
ない→無いよりはあった方が良さそうなんで当方は以前からコレを生成する簡単
なスクリプトを組み込んでたんですが、今回YSTの絡みでコレの重要性が増しそ
うなので、この機会に公開しておくことにしました。

(Infoseekはクローラーのリンクを追う能力が低いので従来はmklist+ぐーぐら
等を使って1つ1つのurlを登録していかないと駄目だったんすが、最近はクロー
ラーの性能が上がって、放っててもリンクを結構追うみたいです。勿論個別登録
しといた方が確実だとは思います)

/catalog/includesにmeta.phpを配置し、product_info.phpヘッダ内の適当なと
ころに

<?php
require(DIR_WS_INCLUDES . 'meta.php');
?>

↑こんな記述を入れておけば、その場所にmetaタグのkeywordとdescriptionの行
を生成します。

自分の使用しか考えずに作ってるため、たとえば品名→キーワードに分解する際
の区切りを「半角空白」に決め打ちしてたりします。

当方の環境ではコレが一番都合が良かったのでこうしてますが、他の文字の方が
都合が良ければ適当に換えてください。

はまだ



meta.php
---------------------------------------------------------

<?php

$the_product_info_query = tep_db_query("select pd.language_id, p.products_id, pd.products_name, pd.products_description, p.products_model, p.products_quantity, p.products_image, pd.products_url, p.products_price, p.products_tax_class_id, p.products_date_added, p.products_date_available, p.manufacturers_id, m.manufacturers_name from " . TABLE_PRODUCTS . " p, " . TABLE_PRODUCTS_DESCRIPTION . " pd, " . TABLE_MANUFACTURERS . " m where p.products_id = '" . (int)$HTTP_GET_VARS['products_id'] . "' and pd.products_id = '" . (int)$HTTP_GET_VARS['products_id'] . "'" . " and p.manufacturers_id = m.manufacturers_id and pd.language_id ='" .  (int)$languages_id . "'");

//クエリを投げる
$the_product_info = tep_db_fetch_array($the_product_info_query);

//キーワードタグを作成
echo "<meta name=\"keyword\" content=\"" . $the_product_info['manufacturers_name'] ;	//先ずメーカー名をキーワードに入れる

//取得した商品名を半角スペース毎に分解して配列に収納
$pieces = explode(" ", $the_product_info['products_name']);

//分解した商品名部品をカンマ区切りで出力
//あまりにも「商品名の空白区切り」で出来る部品が多い場合は、行が冗長になったりスパム扱いされるのを避けるためキーワード個数を制限する必要があるかもしれない

$i = 0;

do {
	echo "," . $pieces[$i];
	$i++;

} while($pieces[$i] != "");	//部品が無くなるまでループ

echo "\">\n";

//説明タグを作成
echo "<meta name=\"description\" content=\"";

//「説明は100字以内くらい」との事なので、とりあえず150バイトにしてます
//説明内にタグや改行が含まれてると都合悪いので、除去

$description = mb_strcut(ereg_replace("\n|\r|\r\n"," ",strip_tags($the_product_info['products_description'])),0,150);

echo $description;

echo "\">\n";

?>






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