2007
Mar
2nd
各カテゴリへのアクセスはカテゴリIDを用いた URL だったのですが、これをカテゴリ名でアクセスできるように変更してみました。例えば僕のブログで book カテゴリへは、これまでは
http://matatabi.homeip.net/blog/setomits/categorylist_html?cat_id=17という URL でアクセスするようにしていたのですが、これを
http://matatabi.homeip.net/blog/setomits/categorylist_html?cat_name=bookという URL でアクセスできるようにしたのです。これまで通り ID でのアクセスももちろん可能です。
このために、 blog_header の最初の方に以下の記述を追加しました。
あとは、 entry_body や modules/category などの
URL は必ずしもヒトのためではないですが、まあわかりやすいにこしたことは無いかなと。
ただ、このままでは name から id をセットするところで、適当なのがみつかった後も最後までループが回り続けています。これは無駄なのでちゃんと break したいのですが、DTML では <dtml-break> みたいなのは無いようです。やっぱりフラグを使って break するのでしょうか。
<dtml-if cat_name>
<dtml-in category_list>
<dtml-if "name==cat_name">
<dtml-call "REQUEST.set('cat_id',str(id))">
</dtml-if>
</dtml-in>
<dtml-elif cat_id>
<dtml-with "getCategory(id=cat_id)">
<dtml-call "REQUEST.set('cat_name', name)">
</dtml-with>
</dtml-if>
要するに、クエリーストリングに cat_name があれば cat_id をセットし、 cat_id があればそれに応じた cat_name をセットしているのです。あとは、 entry_body や modules/category などの
... <a href="<dtml-var blogurl>/categorylist_html?cat_id=<dtml-var id>"><dtml-var name></a> ...のような箇所を
... <a href="<dtml-var blogurl>/categorylist_html?cat_name=<dtml-var name>"><dtml-var name></a> ...というように変更しました。
URL は必ずしもヒトのためではないですが、まあわかりやすいにこしたことは無いかなと。
ただ、このままでは name から id をセットするところで、適当なのがみつかった後も最後までループが回り続けています。これは無駄なのでちゃんと break したいのですが、DTML では <dtml-break> みたいなのは無いようです。やっぱりフラグを使って break するのでしょうか。
Posted by setomits at 09:12 |
Comments: 0