TOP > スポンサー広告 > スポンサーサイト> ブログいぢり(カスタマイズ) > FC2ブログに関連記事の表示をする(関連エントリー) 1の3

スポンサーサイト

--.--.--(--:--)
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
  

この記事の写真を大きなサイズ(原寸)で全部見る。
スポンサー広告 | トラックバック(-) | コメント(-) | [EDIT]

FC2ブログに関連記事の表示をする(関連エントリー) 1の3

2009.04.16(00:00)

FC2ブログに関連記事の表示をする(または関連エントリー)カスタマイズ方法ということで、 タグのRSSとGoogle AJAX Feed APIを使用してこんなやつを作ってます。

関連エントリーサンプル

目的:【個別記事に関連記事を表示する】

説明手順
  1. 下準備
  2. 基本の表示
  3. 関連記事(タグを使った一覧)の表示
  4. 表示の調整
  5. よくあるカスタマイズ

FC2ブログに関連記事の表示をする(関連エントリー) 1の1~1の2」で[4.表示の調整]までできました。
もぅ少しだけ手を加えてみます。


5.よくあるカスタマイズ

カテゴリの新着を追加する

カテゴリのXMLとカテゴリ名がわかれば簡単ですな。

5-1.1 *javascript*
    feedControl.addFeed("<%url>?xml&category=<%topentry_category_no>", "<%topentry_category>");

カテゴリと最近の記事をだすだけなら、わざわざこのgoogle.feeds.FeedControlを使わなくてもFC2変数だけで できます。FC2の変数は内線電話、google.feedsは外線電話、もしくは携帯電話みたいなイメージかな。

現在の記事の「カテゴリ」「最近の記事」「月別記事(RSS無し)」「検索(RSS無し)」に関しては、FC2の変数でその一覧が設定件数分取得できます。 関連記事とみなしているタグに関しては、現在のFC2使用上、タグ内の記事一覧を取得することができません。 今回の方法は同じ敷地内にいるみたいなんだけど、内線ついてない部屋にいる人と連絡するためにその人の携帯にかけた、みたいな。

google.feedsのすごいところは、外(別ドメイン)のものも簡単に呼べちゃうその外線機能にあるわけですが、 そのあたりは個人で勉強よろしく。

最初の記事は何でも1件目

関連する記事が、現在の記事しかないのなら、表示しなくてもいいんでない?ということで件数が1件以上の場合にリスト表示対象にするようにします。

CSSだけでタグクラウド」の時にも「件数」はキーポイントでしたが、topentry関連のタグ件数の変数は今の所ない。 そんなわけで件数を取得する関数を作ります。

5-2.1 *javascript*
var tagnames=[<!--ctag-->"<%ctag_name>",<!--/ctag-->];
var tagcounts=[<!--ctag--><%ctag_count>,<!--/ctag-->];
function getTagCnt(tagName){
    for(var i in tagnames){
        if(tagnames[i]==tagName){return tagcounts[i];}
    }
return 0;
}

上記の条件文を加えてできあがり。

5-2.2 *javascript*
[変更前]
<!--topentry-->
<!--tag_list-->
        feedControl.addFeed("<%url>?xml&utag=<%topentry_tag_list_parsename>", "<%topentry_tag_list_name>");
<!--/tag_list-->
<!--/topentry-->

[変更後]
var tmpcnt;
<!--topentry-->
<!--tag_list-->
tmpcnt = getTagCnt("<%topentry_tag_list_name>");
if(1<tmpcnt){
        feedControl.addFeed("<%url>?xml&utag=<%topentry_tag_list_parsename>", "<%topentry_tag_list_name>");
}
<!--/tag_list-->
<!--/topentry-->
→別画面で開く(javascript)

タグの数が多い場合や、1件未満のタグが多い場合などは、それに適した内容に考慮したほうがよいかもしれませんね。
[5-1]のカテゴリも同様の考え方でできます。テンプレート用 変数一覧で確認してみてください。

現在のページと広告を省く

関連する記事には、今現在の記事は表示しなくてもよいよなぁ、と思ってがんばってみた。 ついでに、FC2がフィードにいれている広告も、関連エントリーには不都合なので非表示にするぞっ!!
(広告が表示されるブログは、FC2のブログ管理画面のお知らせトップに表示されていると思いますが、本ブログ「blog102」も対象なのです…。)

やりたい度は高いのに、9割までしかできてない。以下のスクリプトを実行するとできるんだけどね。

5-3.1 *javascript*
function exceptRow(){
    var collect = new Array();
    var targetObj=document.getElementById("feed");
    var objects = targetObj.getElementsByTagName("div");
    var mypage=pageAddr();

    for(var i in objects){
        if(objects[i].className == "gfc-result"){
            collect.push(objects[i]);
        }
    }

    for(var i in collect){
        var feedObj = collect[i];
        var a_objects = feedObj.getElementsByTagName("a");
        for(var j in a_objects){
            var a_href=a_objects[j].href.toLowerCase();
            if(a_href){
                if(a_href == mypage){
                    //自分非表示
                    feedObj.style.display="none";
                    break;
                }else if(a_href.indexOf("overture.com",0)>=0){
                    //広告非表示
                    feedObj.style.display="none";
                    break;
                }
            }
        }
    }
}
function pageAddr(){
    var href = location.href.toLowerCase();
    var ank = location.hash.toLowerCase();
    var se = location.search.toLowerCase();
    var tmp;
    tmp = href.replace(ank,"");
    tmp = tmp.replace(se,"");
    return tmp;
}
→別画面で開く(javascript)

自分の記事:URLが次の内容と同じである場合。
「location.hrefからlocation.hash(?や&の引数)・location.search(#のアンカー)を抜いたURL」
なのでフレームでこの関連記事を表示する人にはまずいかも。「<%topentry_link>と一致するURL」とするほうが素直なのは分かってるんだけど。

広告の判定:URLに「overture.com」が含まれている場合としてます。FC2の仕様に依存してるので仕様変更があれば対応が必要です。自ブログの関連記事しか出さないよ、という人は、「自ドメイン(<%url>)以外のURLの場合」、とするのが一番確実だと思います。

なぜ9割なのかというと、このスクリプトのキックタイミングに問題があるのです。
描画完了時点(Callback)がとれなーい。まぁ当たり前っちゃ当たり前か。 タイマーで監視すれば可能だけど、それはなんかなぁ、ヤ。

さんざんいじくってみたんですが、今のgoogle.feeds.FeedControlの仕様では外からラップ(?)するのも無理そうです。うーん、どうしたもんか。 それとも私が知らないだけで方法はあるのか?教えて偉い人!!


(検証環境:IE6 IE7 FireFox3)
(お断り:FC2ならびにGoogle AJAX Feed APIも仕様変更の可能性があります。)

  

この記事の写真を大きなサイズ(原寸)で全部見る。
見返り美人 | | うめ成長記録part.12


◆新着・関連記事
Loading...(Javascript)
コメント
コメントの投稿












管理者にだけ表示を許可する
トラックバック
トラックバックURL:
http://cat2neko2cafe2.blog102.fc2.com/tb.php/107-f77519d5

[PR]
エコキッチンさんのランキングベスト3にはいるシリコンカップカバー。 猫ぱんちさんでみてすっごい気になってました。お値段も、手ごろ。

【シリコンカバー】MOM Kitchen(マムキッチン) シリコン製カップカバー

雑貨屋さんが好きなので、ここのサイトは楽しい。 私の勘所をよく知っていらっしゃる(違)欲しいのいっぱい出てくる。 料理しないくせにキッチン用品欲しい~。プレゼントにも最適な商品がいっぱいです。
[エコキッチン]


見返り美人 | | うめ成長記録part.12
プロフィール
双葉そら

Author:双葉そら

ひとつきに一度は猫かふぇに行かなければ、猫欠乏症及びもっふもふ禁断症状に陥ります。

猫カフェにいる人々をみてるのも楽しかったりします。

普段はSE関連のお仕事。
WEBやデザイン系は苦手です。
配色って何?おいしいの?

本サイトにて、癒しと、猫カフェの認知&"布教"の一端を担えれば最高です。

肉球礼賛 ビバ肉球


カテゴリ
最近の記事
猫喫茶
ねこかふぇリンク。

*猫カフェ情報猫カフェ一覧(自内)


肉球 マウスパッド 【ねこきゅう マウスパッド】 [マウスパッド にくきゅう 猫 ネコ]肉球 マウスパッド
 ぷにっぷにっ!

*猫カフェブログ(自内)


当サイトへのリンクはご自由に。
「猫とカフェオレ、ときどき仕事」バナー

お気に入り

*猫カフェブログ(自内)
店舗ブログではなく、一般の人の猫カフェブログを集めてみました。

*ネコキャバではない。
東京の猫カフェ【ねこのみせ】ブログ。店内の徒然にとどまらず、開店の原点エピソードや、経営者視点からの猫カフェ動向の感想だったり読み応えあり。(→移転前)

*関西 猫 カフェめぐりの日々
→更新終了。いままで素敵な写真で楽しませてくださりありがとうございました!!
主に関西圏猫カフェのにゃんこ写真が盛りだくさん。 やさしい表情のにゃんこから、アクロバティックな姿まで生き生きした写真は必見。

*赤ソマ狂の詩
旧題「coco壱!」。飼い猫coco(ソマリ)ちゃんのブログ。ブリーダさんの頃から見てるので 個人的に愛着が強いのですが、ソマリ好きさんも是非。
赤ソマ狂の詩バナー

*這いつくばって猫に近づけ
猫写真家、荻窪氏が書く猫の撮影といろんなデジカメのレビュー。

*【実録】隠れ?ヲタギャルの日常【4コマ】
イラストレータさんの4コマブログ。わからないネタもあるかもしれませんが、 猫漫画は秀逸。
「08冬コミ参加おめでとうございます」 ←この意味が分かる人なら猫ネタ以外でも全部面白いとおもいます。
【実録】隠れ?ヲタギャルの日常【4コマ】バナー

*ミシュニャン
タイトルは、レストランガイドミシュランをもじったもの。世界をまたにかけた猫探訪録。

*猫の肉球が素材-ダ・ジ・ポン
猫モチーフのフリー素材。めっさかわいくて、全部散りばめたい衝動に駆られます。

[tag cloud]
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。