ついでに書いておくと Unofficial Planet WordPress Japan のテンプレートいじった。Feedjack の Features には

# It generates pages/feeds with posts of a certain category (example, feed)
# It generates pages/feeds with posts from a certain subscriber (example, feed)
# It generates pages/feeds with posts of a certain category from a certain subcriber (example, feed)

と書いてあるけど、デフォルトでは全体の feed しか吐いてなかったので、各 subscriber, tag で feed 吐かせたいなぁ、と思ったので吐くようにテンプレートいじった。コントローラとかいじる必要あるのかと思ったけどテンプレート(Django ではビューで合ってる?)に書くだけでよかった。テンプレートだけで済むのはいいんだけど、書き方とかドキュメントにしておいてもらえると助かる。Feedjack 全般的にドキュメント少なすぎ。

URL 手打ちで http://planet.wp.luac.net/feed/rss/tag/del.icio.us/ とか http://planet.wp.luac.net/feed/rss/user/1/ とか http://planet.wp.luac.net/feed/rss/user/1/tag/books/ を叩くと feed が見られるので、テンプレートの中にこのような感じで表示すればよい。feed autodiscovery させたいので、HTML の head 要素に出力させたい。ついでにアイコンも出してしまいたい。

ということで Django のテンプレートいじり。else if 使いたかったのだけど使い方分からず(できるの?)。結局 if 文を一つづつ書くことで対応。

post_list.html を編集。
head 要素内に以下追加。

HTML:
  1. {% if tag and user %}
  2.         <link rel="alternate" type="application/rss+xml" title="RSS 2.0" href="{{ site.url }}/feed/rss/user/{{ user_id }}/tag/{{ tag.name|urlencode }}/" />
  3.         <link rel="alternate" type="application/atom+xml" title="Atom 1.0" href="{{ site.url }}/feed/atom/user/{{ user_id }}/tag/{{ tag.name|urlencode }}/" />
  4.         {% endif %}
  5.         {% if user and not tag %}
  6.         <link rel="alternate" type="application/rss+xml" title="RSS 2.0" href="{{ site.url }}/feed/rss/user/{{ user_id }}" />
  7.         <link rel="alternate" type="application/atom+xml" title="Atom 1.0" href="{{ site.url }}/feed/atom/user/{{ user_id }}" />
  8.         {% endif %}
  9.         {% if tag and not user %}
  10.         <link rel="alternate" type="application/rss+xml" title="RSS 2.0" href="{{ site.url }}/feed/rss/tag/{{ tag.name|urlencode }}/" />
  11.         <link rel="alternate" type="application/atom+xml" title="Atom 1.0" href="{{ site.url }}/feed/atom/tag/{{ tag.name|urlencode }}/" />
  12.         {% endif %}

アイコン出している id=button の div 要素を以下のようにした。

HTML:
  1. <div id="buttons">
  2.       <a href="{{ site.url }}/feed/rss/" title="RSS 2.0 feed"><img src="{{ media_url }}/img/button-rss.png"/></a> &bull;
  3.       <a href="http://www.djangoproject.com/"><img src="http://media.djangoproject.com/img/badges/djangosite80x15.gif" border="0" alt="A Django site." title="A Django site."/></a> &bull;
  4.       <a href="{{ site.url }}/feed/atom/" title="Atom 1.0 feed"><img src="{{ media_url }}/img/button-atom.png"/></a><br />
  5.       <a href="{{ site.url }}/opml/" title="OPML"><img src="{{ media_url }}/img/button-opml.png"/></a>
  6.       {% if user and tag %}
  7.       &bull;
  8.       <a href="{{ site.url }}/feed/rss/user/{{ user_id }}/tag/{{ tag.name|urlencode }}/" title="{{ tag.name }}'s RSS 2.0 feed"><img src="{{ media_url }}/img/button-rss.png"/></a> &bull;
  9.       <a href="{{ site.url }}/feed/atom/user/{{ user_id }}/tag/{{ tag.name|urlencode }}/" title="{{ tag.name }}'s Atom 1.0 feed"><img src="{{ media_url }}/img/button-atom.png"/></a>
  10.       {% endif %}
  11.       {% if user and not tag%}
  12.       &bull;
  13.       <a href="{{ site.url }}/feed/rss/user/{{ user_id }}/" title="{{ user.name }}'s RSS 2.0 feed"><img src="{{ media_url }}/img/button-rss.png"/></a> &bull;
  14.       <a href="{{ site.url }}/feed/atom/user/{{ user_id }}/" title="{{ user.name }}'s Atom 1.0 feed"><img src="{{ media_url }}/img/button-atom.png"/></a>
  15.       {% endif %}
  16.       {% if tag and not user %}
  17.       &bull;
  18.       <a href="{{ site.url }}/feed/rss/tag/{{ tag.name|urlencode }}/" title="{{ tag.name }}'s RSS 2.0 feed"><img src="{{ media_url }}/img/button-rss.png"/></a> &bull;
  19.       <a href="{{ site.url }}/feed/atom/tag/{{ tag.name|urlencode }}/" title="{{ tag.name }}'s Atom 1.0 feed"><img src="{{ media_url }}/img/button-atom.png"/></a>
  20.       {% endif %}
  21.     </div>

subscriber, tag もない場合は全体の feed, Django へのリンク, OPML を表示。subscriber と tag の時は subscriber, tag のアイコンを表示。subscriber の時は subscriber の feed アイコンを表示。tag の時は tag の feed アイコンを表示。

元から機能搭載されているとはいえ、テンプレートいじるだけでなんとかなるのは凄い便利と思った。Django がすごいのか Feedjack の作り方がすごいのか。とはいえ、Feedjack のドキュメントの充実化を願う。

Popularity: 24%

No Writebacks »

No Writebacks yet.

Leave a comment


RSS feed for comments on this post.
Trackback URI : http://wp.luac.net/items/611/trackback/