クロスドメインでのXML取得を、phpを使って実装してみます。
同一ドメインの場合
まずは、同一ドメインの場合のXML取得のサンプルです。
HTML
<div id="sample"></div>
JavaScript
$(function() { $.ajax({ url: 'https://cly7796.net/blog/feed/', dataType: 'xml', success: function(data) { // 取得件数 var getCount = 5; if ($('item', data).length < getCount) { getCount = data.length; }; var insert = ''; insert += '<h1>'; // リンク先の挿入 insert += '<a href="' + $('channel', data).children('link').text() + '">'; // タイトルの挿入 insert += $('channel', data).children('title').text(); insert += '</a>'; insert += '</h1>'; insert += '<ul>'; for (var i = 0; i < getCount; i++) { var thisItem = $('channel', data).children('item').eq(i); insert += '<li>'; // 日時の挿入 insert += '<p class="pubDate">'; insert += thisItem.children('pubDate').text(); insert += '</p>'; // タイトルの挿入 insert += '<p class="title">'; insert += thisItem.children('title').text(); insert += '</p>'; // リンク先の挿入 insert += '<a href="' + thisItem.children('link').text() + '">詳細はコチラ</a>'; insert += '</li>'; }; insert += '</ul>'; $('#sample').append(insert); } }); });
この読み込むXMLを別ドメインのものに変更しても、このままではうまく表示されません。
JavaScript
$(function() { $.ajax({ url: 'http://feedblog.ameba.jp/rss/ameblo/clown-happy/rss20.xml', dataType: 'xml', success: function(data) { // 取得件数 var getCount = 5; if ($('item', data).length < getCount) { getCount = data.length; }; var insert = ''; insert += '<h1>'; // リンク先の挿入 insert += '<a href="' + $('channel', data).children('link').text() + '">'; // タイトルの挿入 insert += $('channel', data).children('title').text(); insert += '</a>'; insert += '</h1>'; insert += '<ul>'; for (var i = 0; i < getCount; i++) { var thisItem = $('channel', data).children('item').eq(i); insert += '<li>'; // 日時の挿入 insert += '<p class="pubDate">'; insert += thisItem.children('pubDate').text(); insert += '</p>'; // タイトルの挿入 insert += '<p class="title">'; insert += thisItem.children('title').text(); insert += '</p>'; // リンク先の挿入 insert += '<a href="' + thisItem.children('link').text() + '">詳細はコチラ</a>'; insert += '</li>'; }; insert += '</ul>'; $('#sample').append(insert); } }); });
別ドメインの場合
方法はいくつかあるみたいですが、今回はPHPで一回取得してから、それを読み込むようにします。
PHP
<?php $url = "http://rssblog.ameba.jp/clown-happy/rss20.xml"; $xml = file_get_contents($url); header("Content-type: application/xml; charset=UTF-8"); print $xml;
JavaScript
$(function() { $.ajax({ url: 'get.php', dataType: 'xml', success: function(data) { // 取得件数 var getCount = 5; if ($('item', data).length < getCount) { getCount = data.length; }; var insert = ''; insert += '<h1>'; // リンク先の挿入 insert += '<a href="' + $('channel', data).children('link').text() + '">'; // タイトルの挿入 insert += $('channel', data).children('title').text(); insert += '</a>'; insert += '</h1>'; insert += '<ul>'; for (var i = 0; i < getCount; i++) { var thisItem = $('channel', data).children('item').eq(i); insert += '<li>'; // 日時の挿入 insert += '<p class="pubDate">'; insert += thisItem.children('pubDate').text(); insert += '</p>'; // タイトルの挿入 insert += '<p class="title">'; insert += thisItem.children('title').text(); insert += '</p>'; // リンク先の挿入 insert += '<a href="' + thisItem.children('link').text() + '">詳細はコチラ</a>'; insert += '</li>'; }; insert += '</ul>'; $('#sample').append(insert); } }); });
【参考サイト】
こちらの記事を参考にブログの表示が出来ました!ありがとうございます。
ただ、上記記事のように、日付を2017.01.01みたいに表示させたいと思うのですが表示が上手くできません。
また、ブログの内容を150字程度表示させる事は可能でしょうか?
表示させたいものは
日付(2017.01.01みたいな)+ブログ記事のタイトル+ブログ記事の内容(159字程度)です。
ひひさん
コメントありがとうございます。
使用するXMLにもよるかと思いますが、
日付と本文ともに出力前に整形すれば可能です。
以下のサンプルページをご確認頂ければと思います。
https://cly7796.net/blog/sample/ajax-get-xml/index6.html
何度もすみません。
HTMLでの表示はできました。
・記事内の最初の画像の表示
・記事内に画像がなかった場合の代わりの画像表示
・タイトルにリンクをつける
以上のようなことはできますでしょうか?
つっちーさん
コメントありがとうございます。
→こちらはXMLにサムネイルの項目があれば表示できますが、記事の本文中にある画像を表示する、ということでしたら難しいかもしれません。
→こちらは以下にサンプルをおいています。
https://cly7796.net/blog/sample/ajax-get-xml/index5.html
下記ファイルの31~36行目でタイトルにリンクをつけています。
https://cly7796.net/blog/sample/ajax-get-xml/sample5.js
HTMLで作成したホームページにこちらを使用することはできるのでしょうか?
日付を2017.01.01みたいに表示させることは出来るのでしょうか?
yamaさん
コメントありがとうございます。
JavaScriptで出力する前に日付を整形すれば可能です。
以下にサンプルページを置いていますので、コードをご確認頂ければと思います。
https://cly7796.net/blog/sample/ajax-get-xml/index4.html
日付の整形については過去に記事を書いていますので、よければ合わせてご確認ください。
https://cly7796.net/blog/javascript/date-format/
ありがとうございます。
大変参考になりました。