/*@cc_on _d=document; eval('var document=_d');@*/
/***********************************************************
* feeds.js [ver 1.2.6]
* /--- update log ---/
* ・ちょっとだけ機能まとめ、修正 - 2009.03.10 ver 1.2.6
* ・新着表示設定を追加[オプション機能] - 2009.03.09 ver 1.2.5
* ・キャッシュ対策の仕様変更 - 2008.11.06 ver 1.2.4
* ・ExciteBlogのPR広告を表示させないようカスタマイズ - 2008.7.24 ver 1.2.3
* ・追記・書き換えモードの選択を追加 - 2008.1.29 ver 1.2.2
* ・画像1枚の表示 - 2007.12.13 ver 1.2.1
***********************************************************
/*********
* 記事の表示設定
*/
var settings = {
rss_atom : 'http://rss.exblog.jp/rss/exblog/nitto/index.xml' , // 取得するブログフィードのURL(必須)
targetId : 'column_ul' , // フィード内容を表示させるHTMLタグのid属性(必須)
MaxEntry : '4' , // エントリー表示の最大数(数値指定又は''…''の場合は全ての記事を取得)
TitleMax : '',
TextMax : '35' , // 本文の文字数(数値指定又は''…''の場合は全ての記事内容を取得)
DataMax : '' , // 日付・タイトル・本文を含む全体の文字数を固定(数値指定又は''…''の場合は固定しない)
isCRLF : 'NO' , // 記事の改行を有効にする(YES/NO)
isCate : 'NO' , // カテゴリでフィードを取得する(YES/NO)
isImage : 'NO' , // 記事内の画像1点を抜き出す(YES/NO)
DF:{
Year : '/', // 年のフォーマット
Month: '/', // 月のフォーマット
Day : '' // 日のフォーマット
},
DS:{
"year": 'YES', // 年を表示する(YES/NO)
"month": 'YES', // 月を表示する(YES/NO)
"day": 'YES' // 日を表示する(YES/NO)
},
loading_image : 'images/loading.gif', // 読み込み中表示用画像へのパス
loading_Alt : '読み込んでいます。' // 読み込み画像がない場合に表示される代替テキスト
};
/*********
カテゴリ表示を使用する場合カテゴリを指定する(複数指定可)
上部の"inCate"を"YES"にする(YESにしないと効きません)
例)複数のカテゴリを指定する場合は、下記のようにカテゴリを指定します。
var category = ["カテゴリ1","カテゴリ2","カテゴリ3"];
※一番最後の指定の後ろには「,」は入れないで下さい。
***********/
var category = [];
function putHtml(DATE,TITLE,TEXT,URL,IMAGE,CATEGORY,WHATSNEW) {
/*********
表示記事本文の設定
以下は記事から取得する内容
DATE : 日付
TITLE : タイトル
TEXT : 記事本文
URL : 記事へのリンク+
WHATSNEW:新着表示
*********/
var tmpHtml = '
'+DATE+' '+TITLE+' '+WHATSNEW+'\n';
return tmpHtml;
};
//==========================================================
// オプション設定
//----------------------------------------------------------
var options = {
//----------------------------------------------------------
// 新着表示設定
//----------------------------------------------------------
WhatsNew:{
show_options:'NO', // 新着表示を行う(YES/NO)
add_type:'1' , // 新着表示を行う判断基準(0:本日-n日 1:新規n件)
add_num:3 , // 何日前又は何件分に新着表示をつけるか
source:'0' , // 新着表示の表示タイプ(0:text 1:image)
src:'' , // 新着情報の表示タイプで画像を選んだ場合の画像パス
text:'[New!]' // 新着情報の表示タイプで文字を選んだ場合の表示文字
}
//----------------------------------------------------------
};
//==========================================================
/*
* 設定ここまで
*********/
/***********************************************************
* @@ feed取得処理の開始
*/
if( typeof(settings) != 'undefined')
{
var conteiner = document.getElementById(settings.targetId);
var Loading;
if(settings.loading_image != "") {
Loading = document.createElement('img');
Loading.setAttribute('src',settings.loading_image);
} else {
Loading = document.createElement('p');
Loading.style.textAlign = 'center';
Loading.appendChild(document.createTextNode(settings.loading_Alt));
}
conteiner.appendChild(Loading);
conteiner.style.display = 'block';
google.load("feeds", "1");
}
//==========================================================
// オプション機能設定
//----------------------------------------------------------
options.WhatsNew.init = function (nCnt){
var sAddWhatsNew = {};
switch(this.add_type)
{
case '0':
// 0 日付比較の場合、ミリ秒単位で比較する
var tmpd = new Date();
var d = new Date(nCnt);
var diffsec = tmpd.getTime() - (this.add_num * 86400000); // 本日(ミリ秒)-規定日(ミリ秒)
tmpd.setTime(diffsec); // 差し引いた秒数をセット
var sec = d.getTime(); // 記事の日付(ミリ秒)をセット
if(tmpd.getTime() > sec) { // 比較して規定日以下ならこの処理は読み飛ばす
return;
}
break;
case '1':
if(nCnt >= this.add_num)
{
return;
}
break;
default:
isNum = true;
break;
}
if(this.show_options == 'YES'){
switch(this.source)
{
case '0':
this.txt = this.text;
break;
case '1':
this.img = '
';
break;
default:
this.txt = "";
this.img = "";
return;
break;
}
}
else
{
}
return this;
};
//==========================================================
function initialize()
{
var rnd = (new Date()).getTime();
if(settings.rss_atom.match(/\?/ig))
{
rnd = '&' + rnd;
}
else
{
rnd = '?' + rnd;
}
var feed = new google.feeds.Feed(settings.rss_atom+rnd); // キャッシュ対策 フィード取得時にクエリ送信
var entrysMax = 100;
feed.setNumEntries(entrysMax); // feed最大数の指定(MAX250まで)
feed.load( function(result) {
if (!result.error) {
var isEntry,entryAllData,arrEntrys,sEnTitle,sEnURL,sEnText,sEnDate,nEntryNum,sHtmlPool,isTrimText;
sHtmlPool = '';
entryAllData = result.feed.entries.length;
getFeedCnt = 0;
for (var nECnt = 0; nECnt < entryAllData; nECnt++) {
isEntry = 'false';
arrEntrys = result.feed.entries[nECnt];
if(settings.isCate == 'YES')
{
for(var nCnt=0; nCnt/);
if(sImage == null)
{
sImage = '';
}
else
{
sImage = '' + sImage; // 文字列にObj扱いのsImageを変更
sImage = sImage.match(/(\w+):\/\/([\w.]+)\/(\S*)/);
sImage = sImage[0].replace(/\W$/,"");
sImage = '
'
}
}
if(typeof(sImage) == 'undefined')
{
sImage = '';
}
sEnText = sEnText.replace(/(
)|(
)/gi,"\n");
sEnText = sEnText.replace(/(<.*?>)|(\r\n)|(\r)/gi,"");
if (settings.isCRLF == 'YES') {
sEnText = sEnText.replace(/\n/gi,"
");
sEnText = sEnText.replace(/[
]{2,}/gi,"
");
} else {
sEnText = sEnText.replace(/\n/gi,"");
}
if (settings.TextMax != '') {
if (sEnText.length > parseInt(settings.TextMax)) {
sEnText = sEnText.substring(0,parseInt(settings.TextMax));
isTrimText = 'true';
}
}
var dateObj = new Date(arrEntrys.publishedDate);
var nYear = dateObj.getFullYear();
var nMonth = dateObj.getMonth() + 1;
var nDay = dateObj.getDate();
nMonth = nMonth + ''; nDay = nDay + '';
if(nDay.length == 1) {
nDay = '0' + nDay;
}
if(nMonth.length == 1) {
nMonth = '0' + nMonth;
}
sEnDate = "";
if(settings.DS.year == 'YES')
{
sEnDate = nYear + settings.DF.Year;
}
if(settings.DS.month == 'YES')
{
sEnDate = sEnDate + nMonth + settings.DF.Month;
}
if(settings.DS.month == 'YES')
{
sEnDate = sEnDate + nDay + settings.DF.Day;
}
if(settings.TitleMax != "" && parseInt(settings.TitleMax) > 0)
{
if(sEnTitle.length > parseInt(settings.TitleMax))
{
var tmpLen = sEnTitle.length - parseInt(settings.TitleMax) + 2;
sEnTitle = sEnTitle.substring(0,sEnTitle.length - parseInt(tmpLen));
sEnTitle = sEnTitle + '…';
}
}
if(settings.DataMax != "" && parseInt(settings.DataMax) > 0) {
var tmpDateLen = sEnDate.length;
var tmpTitleLen = sEnTitle.length;
var tmpTextLen = sEnText.length;
var TotalLen = tmpDateLen + tmpTitleLen + tmpTextLen;
if(TotalLen > parseInt(settings.DataMax)) {
patchLen = TotalLen - parseInt(settings.DataMax);
sEnText = sEnText.substring(0,sEnText.length - parseInt(patchLen));
isTrimText = 'true';
}
}
if(isTrimText == 'true') {
sEnText = sEnText + '…';
}
//==========================================================
// オプション関連の処理をここで実行
//----------------------------------------------------------
if(options.WhatsNew.add_type == '0')
{
var opNum = arrEntrys.publishedDate;
}
else
{
var opNum = getFeedCnt;
}
whatsnew_true = false;
var whatsnew = options.WhatsNew.init(opNum);
if(typeof(whatsnew) != 'undefined')
{
if(typeof(whatsnew.img) != 'undefined')
{
sWhatsNew = whatsnew.img;
whatsnew_true = true;
}
if(typeof(whatsnew.txt) != 'undefined')
{
sWhatsNew = whatsnew.txt;
whatsnew_true = true;
}
}
if(whatsnew_true === false)
{
sWhatsNew = "";
}
//==========================================================
sHtmlPool += putHtml(sEnDate,sEnTitle,sEnText,sEnURL,sImage,arrEntrys.categories,sWhatsNew);
getFeedCnt = getFeedCnt + 1;
}
}
conteiner.removeChild(Loading);
conteiner.innerHTML += sHtmlPool;
conteiner.style.display = 'block';
}
});
}
google.setOnLoadCallback(initialize);