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

ブログのrssのLINKタグ出力について

mei > ブログのrssのLINKタグ出力について @ 2014/7/4 20:20
ブログのRSSのLINKタグ出力について質問させてください。

導入初期に設定されている/news/indexではなく、
/blog-*******/index
として運用したいと考え、/blog-*******/にブログを作成しました。
(*******は名前を入れていますので伏字にしています)

しかし、HTMLソースを確認すると
<link href="/news/index.rss" type="application/rss+xml" rel="alternate" title="ニュースリリース RSS 2.0" />
が記述されていて、/blog-*******/index.rssのアドレスがhrefに記載されていません。
ファイルとして /blog-*******/index.rss は出力されています。

テンプレートを確認してみましたら、
<?php $this->BcBaser->rss('ニュースリリース RSS 2.0', '/news/index.rss') ?>
という記載があり、/news/index.rssに固定されていましたので、
http://basercms.net/reference_3/archives/63
こちらを参考に
<?php $this->BcBaser->rss($title,$link) ?>
を
/app/webroot/theme/nada-icons/Layouts/default.php
の元のrss出力の下部に追加して保存、ブログのHTMLソースを再度確認してみると
<link href="/news/index.rss" type="application/rss+xml" rel="alternate" title="ニュースリリース RSS 2.0" />
<meta rel="alternate" />
が出力され、/blog-*******/index.rss にリンクされませんでした。

いくつかのテンプレートを確認したところ、同じように
<?php $this->BcBaser->rss('ニュースリリース RSS 2.0', '/news/index.rss') ?>
になっていて、試しに「skelton」テーマに変更してHTMLソースを確認してみましたが、/news/index.rssになっていました。
これを解消し、
/blog-*******/
のブログは/blog-*******/index.rssを<link>タグに出力するにはどうしたらいいのでしょうか?

■ BaserCMSのバージョン: 3.0.2
■ レンタルサーバー名:ロリポップ
■ スマートURLの利用: [ON]
■ 設置フォルダ: [ドキュメントルート]
■ 利用しているデータベース: [SQLite]
■ PHPスキル(自己評価): [ 全くわからない ]
tecking > Re: ブログのrssのLINKタグ出力について @ 2014/7/4 21:30
meiさん

引用:
/blog-*******/index.rssをタグに出力するにはどうしたらいいのでしょうか?


下のようなコードでどうでしょう?

<?php $this->BcBaser->rss('foobar', '/blog-*******/index.rss') ?>


《出力結果》
<link href="/blog-%2A%2A%2A%2A%2A%2A%2A/index.rss" type="application/rss+xml" rel="alternate" title="foobar" />

(%2A は * がURLエンコードされたものなので、本来の文字列が入ればきちんと出力されるはずです)
mei > Re: ブログのrssのLINKタグ出力について @ 2014/7/4 22:05
teckingさん

説明不足ですみません。
現在は
/blog-*******/
のブログを対象にしていますが、仲間内で使う分だけ増やす予定でいます。
例えば
/blog-a/ … <link href="/blog-a/index.rss" type="application/rss+xml" rel="alternate" title="BLOG-A" />
/blog-b/ … <link href="/blog-b/index.rss" type="application/rss+xml" rel="alternate" title="BLOG-B" />
/blog-c/ … <link href="/blog-c/index.rss" type="application/rss+xml" rel="alternate" title="BLOG-C" />
というように増やしたブログもそれぞれのブログに応じて<link>タグが書き出されるようにしたいです。
よろしくお願いします。
tecking > Re: ブログのrssのLINKタグ出力について @ 2014/7/5 10:15
引用:
増やしたブログもそれぞれのブログに応じてタグが書き出されるようにしたいです。

ベタにやるなら、テンプレートファイルに

<?php $this->BcBaser->rss('BLOG-A', '/blog-a/index.rss') ?>
<?php $this->BcBaser->rss('BLOG-B', '/blog-b/index.rss') ?>
<?php $this->BcBaser->rss('BLOG-C', '/blog-c/index.rss') ?>

と書いていく方法がありますよね。

ただこの場合、ブログが増えるたびタグを追記する必要があり煩雑なので、データベースから動的にデータを取得してタグを出力させるのもよいかもしれません。
下記、ざくっと書いたコードですがご参考までにどうぞ。

<?php
/*
 * 公開されているブログのアカウント・タイトルを取得
 */
$BlogContent = ClassRegistry::init('Blog.BlogContent');
$fields = $BlogContent->find('all', array(
	'conditions' => array(
		'status' => 1
	),
	'fields' => array(
		'name',
		'title'
	),
	'recursive' => -1
));

/*
 * RSSフィードへのリンクを出力
 */
if ($fields) {
	foreach ($fields as $field) {
		$this->BcBaser->rss($field['BlogContent']['title'], '/' . $field['BlogContent']['name'] . '/index.rss');
	}
}
?>

mei > Re: ブログのrssのLINKタグ出力について @ 2014/7/5 15:24
teckingさん

コードを書いてくださり、ありがとうございます。
無事ブログの<link>タグが出力されました。

ありがとうございました。