trac にサイドメニューを付けてみる
trac を使ってページが増えてくると、よく使うページへのリンクを Top ページに作ったりしている。それでもいいけど、Top ページに毎回戻るのは手間なので wiki ページ全てにサイドメニューを取り付けてみた。
全てのプロジェクトに反映させるつもりはないので、 trac プロジェクトを作成したディレクトリ(以後 %TracEnvDir% とする)にあるファイルを修正することにした。
1. site_css.cs の修正
まず %TracEnvDir%/templates/site_css.cs を以下のように修正する。
<?cs var:chrome.href ?>/site と書くと %TracEnvDir%/htdocs に対応するらしい。
wiki ページ以外にサイドメニューを表示するつもりはないので wiki.exists でインポートするか決めている。
<?cs if:wiki.exists ?> @import url(<?cs var:chrome.href ?>/site/custome.css); <?cs /if ?>
2. custome.css の作成
%TracEnvDir%/htdocs に以下のような custome.css を作成する。
本来必要なのは #content と div.sidemenu くらいで、あとは見た目を調整しているだけ。
#content { margin-left: 150px; } div.sidemenu { float: left; width: 100px; } #sidemenu ul { border-top: 1px solid #666; list-style-type: none; margin: 0px; padding: 0px; } #sidemenu a { border-left: 1px solid #666; border-right: 1px solid #666; border-bottom: 1px solid #666; display: block; padding: 5px 10px 5px 20px; text-decoration: none; width: 100px; } h1 { border-bottom: 3px solid #666; padding-left:20px; } h2 { border-bottom: 2px solid #666; padding-left:20px; }
3. wiki.cs の修正
%TracEnvDir%/templates/wiki.cs の先頭を以下のように修正する。
追加位置は <div id="content" class="wiki"> の直前でもかまわないはず。
ここで wiki.exists を見るのは、編集中などにサイドメニューを表示させないため。
<?cs include "header.cs" ?> <?cs include "macros.cs" ?> <!-- append start --> <?cs if wiki.exists ?> <?cs include "site_sidemenu.cs" ?> <?cs /if ?> <!-- append end --> <div id="ctxtnav" class="nav">
4. site_sidemenu.cs の作成
最後に %TracEnvDir%/templates に以下のような site_sidemenu.cs を作成する。
<div id="sidemenu" class="sidemenu"> <ul> <li><a href="<?cs var:project.url ?>">Home</a></li> <li><a href="<?cs var:project.url ?>docs/">Documents</a></li> <li><a href="<?cs var:project.url ?>downloads/">Download</a></li> </ul> </div>
以上で wiki ページにサイドメニューが表示されるようになる。