wiki.zope.jp
NextGenerationSiteMap
   
RecentChanges WikiHelp WikiPractice JumpSearch

HowTo : 次世代サイトマップ

原文(元ネタ)

翻訳者募集中

翻訳ドラフト by aodag

まずは目標を決めようか。私が必要としているサイトマップは以下のようなものだ。 (カレントディレクトリに対して)

図 example1

図 example2

図 example3

以前の <dd>, <dt> タグを乱用したものと比較すると、CSSを使用したインデントは見た目にもきれいだ。

じゃあ、コードに進もうか。 6つのPythonコードがサイトマップにのせるべきフォルダのリストを生成する。 スクリプトはロジックだけを扱う。 見た目に関する能力は一切持たない。 ラッパスクリプトが返すリストに含まれるのは、タイトルなどではなくオブジェクトだ。

最初のスクリプトは、バーチャルホストのルートに置かれる。 そこは、Zopeデータベースのルートフォルダの場合もそうでない場合もあるだろう。

コード getSiteRoot

コード内コメント文:rootをhere/getSiteRootに変更してテストしてみよう。 もしくは"tal:define vhroot="here/getSiteRoot"として、vhrootに対してテストしてみよう。

そして4つのスクリプトがフォルダを探索する。

コード list_top_folders

コード内コメント文:ルートフォルダ上で"menu_entry"プロパティを持つフォルダを探索する。

コード list_parent_folders

コード内コメント文:Find parent folders from the current folder
now allows for virtual site roots

コード list_sibling_folders

コード内コメント文:なし

コード list_child_folders

コード内コメント文:なし

6つ目のスクリプトは先程の4つのスクリプトからの出力を、1つのリストにまとめる。

コード menu_list

コード内コメント文:省略

この時点で、あるフォルダでmenu_listを呼び出せば、表示するのに必要なFolderオブジェクトのリストを得ることができる。

では、これがサイト内のページで使われるstandard_template.ptのサイトマップを定義している部分だ。

コード standard_template.pt

最後のpythonスクリプトのコードは、オブジェクトのデプスをURLに応じて決定するものだ。


コメント、誤訳の指摘などはこちら

Last edited Sun, 10 Sep 2006 20:04:37 +0900 Edit this page