django 0.9 release | Top | RhacoのTemplateParserについてのメモ

 

COREBlogのアーカイブリンクをシンプルにする

COREBlogのアーカイブリンクをシンプルにする。

アーカイブへの月毎リンクが結構な数になってしまったので、シンプルにしてみた。
いつも通りDTMLをごにょごにょしてごまかそうとした所、DTMLは変数をぐりぐりすることが出来ないことに気づく(今頃かい・・・)。

ついにCOREBlogのソースコードをいじってしまった。
※COREBlog1.2を対象にしています。
 参考にして壊れても知りません。
 またZopeのコード記述に関する定石も知らないので、いい加減なコードです。

まず、modulesのarchivesをZMI上でコピーペースとしてarchives2というDTMLMethod?を作る。

archives2
<dtml-unless module_item_count>
<dtml-call "REQUEST.set('module_item_count',15)">
</dtml-unless>
<dtml-let prev_year="0">
<h3><dtml-if "_.len(document_title)>0"><dtml-var document_title><dtml-else>ARCHIVES</dtml-if></h3>

<ul>
<dtml-in prefix="year_loop" expr="month_archive_items2(count=36)">
<dtml-if year_loop_odd><li class="odd">
<dtml-elif year_loop_even><li class="even">
</dtml-if>
<dtml-in prefix="month_loop" expr="year_loop_item" mapping reverse>
<dtml-if expr="month_loop_number == 1">
<dtml-var year>:
</dtml-if>
<a href="<dtml-var blogurl>/monthlist_html?year=<dtml-var year>&month=<dtml-var month>"><dtml-var month></a> 
</dtml-in>
</li>
</dtml-in>
</ul>
</dtml-let>


COREBlogのCOREBlog.pyを修正する。
def month_archive_items(self,count=1,start_year=0,start_month=0):のメソッドの下あたりに追記する。

    security.declareProtected(View, 'month_archive_items2')
def month_archive_items2(self,count=1,start_year=0,start_month=0):
""" Return list of year/month archive. """
count = r2i(count,1)
start_year = r2i(start_year,0)
start_month = r2i(start_month,0)
if start_year == 0 or start_month == 0 or start_day == 0:
#Base date is today
t = localtime(time())
year = t[0]
month = t[1]
else:
year = year
month = month

ret_l = []
ret_d = {}
cnt = 100 #limitter
while cnt > 0 and count > 0:
if not self.datemap.has_key(year):
cnt = cnt - 1
month = 12
year = year - 1
continue
year_s = self.datemap[year]
if year_s.has_key(month):
if ret_d.has_key(year):
ret_l = ret_d[year]
else:
ret_l = []
ret_d[year] = ret_l
ret_l.append({"year":year,"month":month})
count = count - 1
month = month - 1
if month < 1:
month = 12
year = year - 1
cnt = cnt - 1
ret_x = []
for k in ret_d:
ret_x.append(ret_d[k])

return ret_x
COREBlog.pyへの変更を反映するために、リフレッシュかZopeの再起動をする。
modulesのindex_htmlにあるdtml-varをarchiveからarchive2に変更する。
終わり

Taged with:,,

urihttp://www.everes.net/2005/nov/17/159/

Entry Date:2005-11-17 08:32

Author:makoto

ping url:http://www.everes.net/2005/nov/17/159/tbping/

subscribe:feed with LDR

Add Comment

コメント追加








What's Next
Tags
Blog Archive
Project
  • » pymagnolia

    ma.gnolia.comのAPIを操作するPythonライブラリ。

  • » django-ja

    Djangoと日本の仲間たち。
    Djangoに関するニュースや、「仲間たち」のブログエントリをアグリゲートしています。

  • » rhaco

    PHPのWebフレームワーク。 PHPらしさを失わず直感的に記述できることを目指している。 Djangoと同じく、他のライブラリに依存しない。また、Djangoっぽいテンプレートの作り方も可能。

  • » Tracka

    スモールチーム、家族用の知共有ウェブアプリケーション。
    テキスト、画像、youtube動画、stage6動画等をトラック!

  • » BMO

    BMOは、本、CD、DVD、ゲームに印刷されているバーコードをiSightで読み取り、AmazonのAPIを利用して画像や情報をmacに保存します。iSightのついているmacで利用してください。Leopardと呼ばれているOSX 10.5以上が必要です。 保存した情報は、OSX Leopard(10.5)から搭載されたCover FlowとQuick Lookという仕組みを利用して表示します。