■ユーザーズフォーラム リニューアルのお知らせ
新規投稿は新ユーザーズフォーラムにお願いします。
このフォーラムは閲覧専用のアーカイブです。

カテゴリ別のフィード情報が表示できません

cyan > カテゴリ別のフィード情報が表示できません @ 2010/10/25 16:07
失礼いたします。

BaserCMSでブログページのフィードをトップページに表示しようと思っています。

表示したい内容は次の通りです。
・ブログの新着情報
・ブログのカテゴリAの新着情報
・ブログのカテゴリBの新着情報

そこで、管理画面のフィード管理でフィードを3つ作成して同じフィードURLを指定、
カテゴリABの新着情報にはそれぞれカテゴリフィルターを設定しました。

ですが、ブログの新着情報単体では表示されるものの、
カテゴリの新着情報と同時に表示しようとすると全て表示されなくなってしまいました。

何か良い方法があればご教授ください。


ちなみに、環境は次の通りです。

■ BaserCMSのバージョン:1.6.6
■ スマートURLの利用:OFF
■ 設置フォルダ:サブフォルダ
■ 利用しているデータベース:CSV
■ PHPのバージョン:4.3.9
ryuring > Re: カテゴリ別のフィード情報が表示できません @ 2010/10/25 20:48
こんばんは。

自分の環境で同じような設定を行い、表示したところ正常に表示できました。

ただ、1つのブログRSSに出力件数について、初期設定では最新10件となっているので、その最新10件の中に該当カテゴリの記事が入っていない場合には、表示されない可能性がありますので、出力件数を変更して調整する必要があります。
(ブログの基本設定より変更できます)

ちなみに、フィード管理の各フィード設定の操作欄にある「確認」ボタンをそれぞれクリックした場合にはどうなりますか?

Twitter:@ryuring
baserCMS総合サービスサイト ビーコミ

cyan > Re: カテゴリ別のフィード情報が表示できません @ 2010/10/26 13:55
返信ありがとうございます。

RSSの内容の確認を行いましたが問題ありませんでした。

なお、フィード管理の各フィード設定の操作欄にある「確認」ボタンをそれぞれクリックした場合は次のようになりました。

・ブログの新着情報フィード:正常に表示
・ブログのカテゴリA及びBの新着情報:表示されない

ちなみに、それぞれのフィード設定の中にある読込フィード一覧の操作欄にある「確認」ボタンにつきましては
RSSファイルが表示されています。
ryuring > Re: カテゴリ別のフィード情報が表示できません @ 2010/10/27 1:16
こんばんは。

引用:
・ブログのカテゴリA及びBの新着情報:表示されない


ここが問題のようですね。

フィード設定のカテゴリフィルターは、「ブログカテゴリ名」ではなく、「ブログカテゴリタイトル」を入力する必要があります。

間違いないでしょうか?

Twitter:@ryuring
baserCMS総合サービスサイト ビーコミ

cyan > Re: カテゴリ別のフィード情報が表示できません @ 2010/10/27 19:49
返信ありがとうございます。

引用:
フィード設定のカテゴリフィルターは、「ブログカテゴリ名」ではなく、「ブログカテゴリタイトル」を入力する必要があります。

間違いないでしょうか?


はい、「ブログカテゴリタイトル」を入力しております。

なお、最初の書き込みでカテゴリ別と同時に表示をすると全て表示されなくなると書きましたが、
本日確認したところ新着情報は表示されましたが、カテゴリ別の表示がされないという状態になっていました。

ryuring > Re: カテゴリ別のフィード情報が表示できません @ 2010/10/28 22:10
独自サーバーですよね?

PHPの内部エンコードはどうなっていますか?

カテゴリのフィルタリングでデータが抽出できないのが問題のような気がします。

ちなみに、/baser/plugins/feed/controllers/feed_controller.php の 121 行目でフィードデータの取得を行っています。

$feed = $this->RssEx->findAll($url ,null, $feedDetail['FeedDetail']['cache_time'] ,$categoryFilter);


その次の行あたりで、

var_dump($feed);


と記述して、取得したデータの中身を確認してみてください。

まずは、管理画面、フィード設定一覧の「確認」ボタンで動作を確認するといいです。

Twitter:@ryuring
baserCMS総合サービスサイト ビーコミ

cyan > Re: カテゴリ別のフィード情報が表示できません @ 2010/11/4 19:10
回答が遅れまして申し訳ありません。


引用:
var_dump($feed);



PHPを変更して出力された結果は次のようになりました。


array(2) { ["Channel"]=> array(6) { ["title"]=> array(1) { ["value"]=>
string(30) "(ブログタイトル)|(ブログカテゴリタイトル)" } ["link"]=> array(1) { ["value"]=>
string(52) "(表示中のページのアドレス)" } ["description"]=> array(1) {
["value"]=> string(148) "(ブログ説明文)" } ["pubDate"]=> array(1) {
["value"]=> string(0) "" } ["language"]=> array(1) { ["value"]=> NULL }
["generator"]=> array(1) { ["value"]=> string(8) "BaserCMS" } } ["Items"]=>
array(0) { } }


ご指摘の通り、ここでフィードデータが取れていないようです。
ちなみに、正常に表示されているカテゴリ指定無しの出力結果は、Channelの値は全く同じでItemsに値が入っていましたので、やはりカテゴリが原因かと思われます。
ですので、カテゴリについてもう少し調べてみます。
ryuring > Re: カテゴリ別のフィード情報が表示できません @ 2010/11/5 16:16
こんにちは。

ちなみに、正常に表示されているカテゴリ指定無しの出力結果は、Channelの値は全く同じでItemsに値が入っていましたので、やはりカテゴリが原因かと思われます。
ですので、カテゴリについてもう少し調べてみます。


カテゴリのフィルタリングは、/baser/plugins/feed/models/rss_ex.php の 72行目、「filteringCategory」というメソッドで行っています。

このメソッドに入ってくる「$items」という変数に、データーがちゃんと入っていて、戻り値が空になるという事であれば、間違いなくこのメソッドが原因です。

文字コードが原因のような気がします。

Twitter:@ryuring
baserCMS総合サービスサイト ビーコミ

cyan > Re: カテゴリ別のフィード情報が表示できません @ 2010/11/11 12:17
再び回答が遅れまして申し訳ありません。


引用:
カテゴリのフィルタリングは、/baser/plugins/feed/models/rss_ex.php の 72行目、「filteringCategory」というメソッドで行っています。

このメソッドに入ってくる「$items」という変数に、データーがちゃんと入っていて、戻り値が空になるという事であれば、間違いなくこのメソッドが原因です。


filteringCategoryメソッドを調査したところ、rss_ex.php の 87〜89行目にある

if(get_class($item['category']['value']) == 'SimplePie_Category') {
	$category = $item['category']['value']->term;
}


の部分でget_class($item['category']['value'])の値が'simplepie_category'となっていたため
$categoryにカテゴリーの値が入らず、その結果戻り値が空になっていることが分かりました。

何故get_class($item['category']['value'])の値が'simplepie_category'になってしまったかは不明ですが、
応急処置として87行目を

if(strcasecmp(get_class($item['category']['value']), 'SimplePie_Category') == 0) {


と変更することで、カテゴリーフィルターを設定した状態でのフィード出力が出来るようになりました!

ご対応いただき、ありがとうございます。
ryuring > Re: カテゴリ別のフィード情報が表示できません @ 2010/11/15 13:19
cyan さん

ご報告ありがとうございます。

SimplePie_Category は、/baser/plugins/feed/vendors/simplepie.php を読み込んでおり、
そのファイルのクラス名についても、SimplePie_Category としてちゃんと定義されています。

もしかしたら、そのサーバー上で、上記ファイルを読み込むより先に、別のライブラリを読み込んでしまっているのかもしれませんね。

なにはともあれ、解決できてよかったです。

Twitter:@ryuring
baserCMS総合サービスサイト ビーコミ