解決済
livedoorブログの個別記事ごとに、属しているカテゴリーの記事一覧を表示させたいのです。
livedoorブログの個別記事の下の方に、カテゴリー内の他の記事を一覧表示表示させたいのですが、検索しても方法がわかりませんでした。教えていただけるとうれしいです。方法そのものでなくても、個別記事のカテゴリーを判別するためのJavaScriptなどがあれば教えていただけると助かります。何卒よろしくお願いします。
回答(2)
3.

このスクリプトでカテゴリ名は拾えるようになりました。
<script type="text/javascript"><!--
function read_rdf(rdf_text){
rdf_text.match(/.*dc:title=\"(.*?)\"\r*\n*.*dc:identifier=\"(.*?)\"\r*\n*.*dc:subject=\"(.*?)\"\r*\n*.*dc:description=\"(.*?)\"\r*\n*.*dc:creator=\"(.*?)\"\r*\n*.*dc:date=\"(.*?)\"/i);
this.title = RegExp.$1;
this.identifier = RegExp.$2;
this.subject = RegExp.$3.split(',');
this.description = RegExp.$4;
this.creator = RegExp.$5;
RegExp.$6.match(/(\d\d\d\d)-(\d\d)-(\d\d)T(\d\d):(\d\d):(\d\d).*/);
this.date = new Date(RegExp.$1, RegExp.$2-1, RegExp.$3, RegExp.$4, RegExp.$5, RegExp.$6);
}
var _el_abody = document.getElementById('articlebody');
if(_el_abody){
var _rdf = new read_rdf(_el_abody.innerHTML);
document.write(_rdf.subject[0]);
}
//--></script>
一応、read_rdfは他の用途でも使えるように
いろいろな情報を取り出せるようにしておきました。
よろしくお願いいたします。
JavaScriptの勉強をしながらimgさんが書いてくださったコードを理解できるようになるといいなと思います。
ありがとうございました。
1.

<$ArticleCategory1$> <$ArticleCategory2$>という独自タグで取得できますよ
早速のご回答ありがとうございます。
記事カテゴリー名は、お教え頂いたタグで取得できるのですが、個別記事では<CategorizedArticlesLoop>が使えないため、カテゴリーの記事一覧が作れないんです。そこで困っております。
読み込んだ個別記事の<$ArticleCategory1$>や<$ArticleCategory2$>の内容を変数として受け取る方法がわかれば何とかなるような気もするのですが・・・。
コメント(12)
そのまま
var category1 = "<$ArticleCategory1$>"; var category2 = "<$ArticleCategory2$>";で取得できませんか?
imgさん。コメントありがとうございます。
なるほど、
var category1 = "<$ArticleCategory1$>";
var category2 = "<$ArticleCategory2$>";
で取得できるんですね。
わたしはlivedoorブログは長いのですが、JavaScriptはかなりの初心者で本を見ながらでないとわかりませんが、とりあえず教えて頂いた形でやってみます。ありがとうございます。
もしよろしければ、取得した後、どうすれば良いかおわかりになることがございましたら教えて頂けると助かります。
<script type="text/javascript">
<!--
var category1 = "<$ArticleCategory1$>"; document.write(category1);// -->
</script>
上のように書いてサイドバーの一番最後にフリーエリアで書いたのですが、「<$ArticleCategory1$>」とそのまま表示されてしまいます。変数として取得できていないのでしょうか?
フリーエリアでは特殊タグが使えないです。
対応のものを作ってみますのでちょっと待ってください。
私もJS暦は短いので、
あまり良いソースは作れなくてすみませんが。
imgさん。ありがとうございます。
なるほど、フリーエリアはタグが使えないんですね。納得です。個別記事のHTML内で試してみます。
しかも、対応のものを作ってくださるなんてすみません。感激です。ありがとうございます。
おまちしています~。
imgさん。個別記事のHTML内でやってみました。
<IfArticleCategory1>
<script type="text/javascript">
<!--
var category1 = "<$ArticleCategory1$>"; document.write(category1);// -->
</script>
</IfArticleCategory1>
見事に表示されました!JavaScriptに変数を渡せました!ありがとうございます!!
とりあえずうれしかったので、ご報告です。
引き続きおまちしています~。
<script type="text/javascript"><!--
function read_rdf(rdf_text){
rdf_text.match(/.*dc:title=\"(.*?)\"\r\n.*dc:identifier=\"(.*?)\"\r\n.*dc:subject=\"(.*?)\"\r\n.*dc:description=\"(.*?)\"\r\n.*dc:creator=\"(.*?)\"\r\n.*dc:date=\"(.*?)\"/i);
this.title = RegExp.$1;
this.identifier = RegExp.$2;
this.subject = RegExp.$3.split(',');
this.description = RegExp.$4;
this.creator = RegExp.$5;
RegExp.$6.match(/(\d\d\d\d)-(\d\d)-(\d\d)T(\d\d):(\d\d):(\d\d).*/);
this.date = new Date(RegExp.$1, RegExp.$2-1, RegExp.$3, RegExp.$4, RegExp.$5, RegExp.$6);
}
var _el_abody = document.getElementById('articlebody');
if(_el_abody){
var _rdf = new read_rdf(_el_abody.innerHTML);
document.write(_rdf.subject[0]);
}
//--></script>
>>#7についてです。
ソースは少し余計なコードも含んでいますが、
カテゴリ1は _rdf.subject[0]
カテゴリ2は _rdf.subject[1]
で取り出せます。
カテゴリの設定が無い場合は
_rdf.subject[0]の値は''
_rdf.subject[1]はundefined
という違いがありますので注意してください。
あと、'articlebody'の部分は
<$TrackBackAutoDiscovery$>が含まれているdivタグのidを指定します。
デザインによっては違うかもしれませんので、適切なものに変えてください。
imgさん。ご丁寧に本当にありがとうございます。
ソースまで作っていただいたのにお返事が遅くなり申し訳ありません。
早速ためさせていただいたのですが、サイドバーに入れても、個別記事のHTMLに入れても何も表示されない状態でした。
何が原因なのでしょうか。
idはarticlebodyでした。
RDFの内容を読み込んで、dc:subjectを表示させて頂いてるんですよね。出来そうだと思うのですが・・・。
ローカルだと表示できるのですけど、どうしてでしょうかね。
試しに3行目をこちらに差し替えるとどうなりますか?
rdf_text.match(/.*dc:title=\"(.*?)\"\r*\n*.*dc:identifier=\"(.*?)\"\r*\n*.*dc:subject=\"(.*?)\"\r*\n*.*dc:description=\"(.*?)\"\r*\n*.*dc:creator=\"(.*?)\"\r*\n*.*dc:date=\"(.*?)\"/i);↑切れているのでコピペしにくいですが、
次の行まで跨いで選択すれば全部入ると思います。
あとは、個別ページのサイドバーを反映させる場合は
「全てのページ」で再構築する必要がありますが、
その辺はどうでしょうか?
差し替えたらできましたよ!imgさん!
ありがとうございます!!
サイドバー、個別記事のHTMLともにカテゴリーが表示されました。
続きはまた新たに質問させていただこうかと思います。
この質問は一旦「解決」にさせて頂きたいのですが、良かったら先ほどのコメントを回答にして頂けませんでしょうか。
どういたしまして。
ベストありがとうございました。
