zencartで、商品を選ぶと、その商品の詳細ページが表示されますが、その詳細ページ内の上部にカテゴリの画像が表示されます。
■それを消す、または、表示させる方法
一般設定 > 商品情報の設定 > カテゴリ名と画像の配置
0 = 非表示
1 = 表示
phpでrssの情報を抜き出したい場合は、titleやlinkの要素は以下の通りで抜き出せます。
<html xml:lang=”en” lang=”en”>
<head>
<title><?php echo $title; ?></title>
</head>
<body>
<h1><?php echo $title; ?></h1>
<?php
// Here we’ll put a loop to include each item’s title and description
foreach ($rss->channel->item as $item) {
echo “<h2><a href='” . $item->link . “‘>” . $item->title . “</a></h2>”;
echo “<p>” . $item->description . “</p>”;
}
?>
</body>
</html>
最初に書いた通り、上記でtitleなどは取得出来ますが、<content:encoded>など、
http://www.doyouphp.jp/php5/php5_simplexml.shtml
<?php // Load and parse the XML document
$rss = simplexml_load_file('http://partners.userland.com/nytRss/nytHomepage.xml');
$title = $rss->channel->title;
?>
<![CDATA[
が含まれる箇所が取得できません。
そこで、「MagpieRSS – PHP で使える RSS パーサー。」を参考にMagpieRSSというものを利用しました。
目次
使い方
index.php に http://yamazon.org/feed のRSSを埋め込むとして手順を示します。- http://magpierss.sourceforge.net/ で MagpieRSS (magpierss-0.3.tar.gz) を入手。
- magpierss-0.3.tar.gz を解凍。
- 拡張子が .inc のファイルと extlib フォルダを index.php と同じディレクトリにアップロード。
- 同じディレクトリ(サーバ上)の下に cache という名前のディレクトリを作る。
- index.php の中のヘッドラインを埋め込みたい位置に以下のコードを挿入。
<?php include('rss_fetch.inc'); $url = "http://yamazon.org/feed"; $rss = fetch_rss($url); if($rss){ $items = $rss->items; foreach($items as $item){ $content = $item["content"]["encoded"]; $content = mb_convert_encoding($content, "UTF-8", "auto"); echo $content; } }else{ echo "file not found."; } ?>これで、<content:encoded>が抜き出せましたが、文字化けしてしまいました。 mb_convert_encodingでエンコードしても文字化けのまま・・・。(どうやらASCIIに変換されている模様?) 文字化けについては解決次第、報告しようと思います。
<追記>
文字化けの件が解決したのでメモしておきます。
(Jcode.phpを使う方法 – mb_convert_encodingが使えない場合の解決法その1)
- http://www.spencernetwork.org/jcode/ でJcode.php(jcode_1.34.zip)を入手。
- jcode_1.34.zip を解凍。
- jcode.phps を jcode.php に拡張子を変えた後、readme.txt 以外のファイルを同じディレクトリにアップロード。(jcode.php と code_table.ucs2jis のみでも可)
- コードを以下の様に変更。
<?php
//MagpieRSS
include('rss_fetch.inc');
require_once 'code_table.ucs2jis';
require_once 'jcode.php';
$url = $search_domain;
$rss = fetch_rss($url);
$title = $rss->channel["title"];
//JcodeConvert($str, $from, $to) 0:PASS(無変換)1:EUC-JP 2:Shift_JIS 3:ISO-2022-JP(JIS) 4:UTF-8
//今回は変換元がEUC-JPだったので、PASS,4 でUTF-8に変換してます。
$title = JcodeConvert($title, 0, 4);
echo $title;
if($rss){
$items = $rss->items;
foreach($items as $item){
$content = $item["content"]["encoded"];
$url = $item["link"];
$content = JcodeConvert($content, 0, 4);
echo $url;
echo $content;
}
}else{
echo "file not found.";
}
//MagpieRSS
?>
私の場合は以上で、文字化けもなく <![CDATA[ が含まれる要素も全て取得出来ました。
RSSを取得する、その他の方法として
XML::FeedPPで、content:encodedなどを取得する方法
などもあるようです。//JcodeConvert($str, $from, $to) 0:PASS(無変換)1:EUC-JP 2:Shift_JIS 3:ISO-2022-JP(JIS) 4:UTF-8
この投稿へのコメント
コメントはまだありません。