Changes between Version 1 and Version 2 of TracInterfaceCustomization
- Timestamp:
- Aug 13, 2014, 12:08:17 AM (10 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
TracInterfaceCustomization
v1 v2 1 1 = Trac のインタフェースをカスタマイズする = #CustomizingtheTracInterface 2 2 [[TracGuideToc]] 3 [[PageOutline]] 3 4 4 5 == イントロダクション == #Introduction … … 15 16 16 17 === ロゴ === #Logo 17 `src` の設定を `site/` に続く画像ファイルの名前に変更してください。 `width` と `height` は画像ファイルにあわせて設定を変更してください。(Trac の chrome ハンドラはプロジェクトのディレクトリ `htdocs` と "`common/`" の中のファイル用に "`site/`" を使用します。)18 `src` の設定を `site/` に続く画像ファイルの名前に変更してください。 `width` と `height` は画像ファイルにあわせて設定を変更してください。(Trac の chrome ハンドラはプロジェクトのディレクトリ `htdocs` の中のファイル用に "`site/`" を使用し、Trac インストール時に作成された共通のディレクトリ `htdocs` 用に "`common/`" を使用します。) Note: 'site/' はプロジェクト名の代わりに使っているのではなく、文字通り使用されるべき実際のプレフィクスです。例えば、プロジェクトに 'sandbox' という名前を付け、イメージファイルが 'red_logo.gif' である場合、 'src' には 'sandbox/red_logo.gif' ではなく、 'site/red_logo.gif' を設定します。 18 19 19 20 {{{ … … 26 27 27 28 === アイコン === #Icon 28 アイコンは `.gif` か `.ico` 形式の 16x16の画像である必要があります。 `icon` の設定を `site/` に続くアイコンファイルの名前に変更してください。アイコンは通常、サイトの URL の横や、 `ブックマーク` メニューに表示されます。29 アイコンは `.gif` か `.ico` 形式の 32x32 の画像である必要があります。 `icon` の設定を `site/` に続くアイコンファイルの名前に変更してください。アイコンは通常、サイトの URL の横や、 `ブックマーク` メニューに表示されます。 29 30 30 31 {{{ … … 40 41 }}} 41 42 43 ブラウザのアドレスバーでのアイコン表示に問題がある場合、アイコンのファイル拡張子の後に "?" (クエスチョンマーク) を置くと回避できることがあります。 44 45 {{{ 46 [project] 47 icon = /favicon.ico? 48 }}} 49 42 50 == ナビゲーション項目のカスタマイズ == #CustomNavigationEntries 43 51 [mainnav] と [metanav] を使用すると、ナビゲーション項目に使用されるテキストとリンクをカスタマイズしたり、無効化することができます (新規項目を追加することはできません)。 44 52 45 以下の例では、 Wiki のスタートページへのリンク名を "Home" に変更して、 " Help/Guide" を非表示にします。さらに、 "View Tickets" エントリを特定のレポートにリンクさせます。53 以下の例では、 Wiki のスタートページへのリンク名を "Home" に変更して、 "!Help/Guide" を非表示にします。さらに、 "View Tickets" エントリを特定のレポートにリンクさせます。 46 54 {{{ 47 55 [mainnav] … … 60 68 61 69 カスタムスタイルシートへのリンクや、独自のヘッダやフッタを追加したい場合、 62 以下のようなの内容ファイルを、プロジェクトの templates ディレクトリに 'site.html' という名前で作成してください (各 Trac プロジェクトは独自の内容の site.htmlを持つことができます)。{{{/path/to/env/templates/site.html}}} の例:70 以下のようなの内容ファイルを、プロジェクトの `templates/` ディレクトリに `site.html` という名前で作成してください (各 Trac プロジェクトは独自の内容の `site.html` を持つことができます)。{{{/path/to/env/templates/site.html}}} の例: 63 71 64 72 {{{ … … 91 99 }}} 92 100 93 XSLT に慣れ親しんだ人であれば、 Genshi テンプレートには類似点があるのに気付くかもしれません。しかしながら Trac 固有の機能もあります。例えば '''${href.chrome('site/style.css')}''' は Environment に含まれる ''htdocs/'' にあるファイルへの参照の属性に置き換えられます。 '''${chrome.htdocs_location}''' は似ていますが、 Trac インストール時に作成された共通の ''htdocs/'' ディレクトリを指定するために使用します。 94 95 site.html はサイト固有のすべての変更を含んでいる一つのファイルです。通常は、要素 (element) または属性 (attribute) として py:match を使用することでレンダリングされるページを変更することができるようになります。 py:match は特定のセクションに依存した記載が行われており、ページを検索してマッチした箇所を変更します。 96 site.html には変更を行うための py:match セクションをいくつでも記載することができます。これらはすべて [http://genshi.edgewall.org/ Genshi] の文法に沿って行います。ドキュメントや詳細なシンタックスは前述のリンクを参考にしてください。 101 XSLT に慣れ親しんだ人であれば、 Genshi テンプレートには類似点があるのに気付くかもしれません。しかしながら Trac 固有の機能もあります。例えば `${href.chrome('site/style.css')}` は Environment に含まれる `htdocs/` にある CSS ファイルへの参照の属性に置き換えられます。 同様に、 `${chrome.htdocs_location}` は Trac インストール時に作成された共通の `htdocs/` ディレクトリを指定するために使用します。しかし [[TracIni#trac-config|[trac] htdocs_location]] のコンフィグを設定することで、ディレクトリ位置を指定しなおすことができます。 102 103 `site.html` はサイト固有のすべての変更を含んでいる一つのファイルです。通常は、特定のセクション上で `py:match` を要素 (element) または属性 (attribute) として使用することで、カスタマイズしようとしているページを 104 思い通りにレンダリングすることができます。 105 [http://groups.google.com/group/trac-users/browse_thread/thread/70487fb2c406c937/ メーリングリスト] には上記の例の `site.html` について解説されていますので、参照してください。 106 `site.html` には変更を行うための `py:match` セクションをいくつでも記載することができます。これらはすべて Genshi の文法に沿って行います。[http://genshi.edgewall.org/wiki/Documentation/xml-templates.htmlドキュメントや詳細なシンタックス] を参考にしてください。 97 107 98 108 99 109 チケット登録のフォームに導入テキストを表示する (プレビューが非表示のとき) 場合は、次の例を追加してください: 100 110 101 {{{ 102 #!xml 111 {{{#!xml 103 112 <form py:match="div[@id='content' and @class='ticket']/form" py:attrs="select('@*')"> 104 113 <py:if test="req.environ['PATH_INFO'] == '/newticket' and (not 'preview' in req.args)"> 105 114 <p>Please make sure to search for existing tickets before reporting a new one!</p> 106 115 </py:if> 107 ${select('*')} 116 ${select('*')} 108 117 </form> 109 118 }}} 110 119 111 この例では '''`req.environ['PATH_INFO']`''' を使用して、特定のビューだけで変更が行われるようにスコープを限定しています。例えば site.html でタイムラインだけで変更を行い、他のセクションには影響を及ぼしたくない場合は、 ''`req.environ['PATH_INFO'] == '/timelime'`'' を <py:if> での test に記載します。 120 この例では `req.environ['PATH_INFO']` を使用して、特定のビューだけで変更が行われるようにスコープを限定しています。例えば `site.html` でタイムラインだけで変更を行い、他のセクションには影響を及ぼしたくない場合は、 `req.environ['PATH_INFO'] == '/timelime'` を `<py:if>` の test 属性に記載します。 121 122 より多くの `site.html` の例が [trac:CookBook/SiteHtml CookBook/SiteHtml] で見ることができます。 123 124 `style.css` の例は [trac:CookBook/SiteStyleCss CookBook/SiteStyleCss] で見ることができます。 112 125 113 126 0.10 からアップグレードされた Environment で、かつ `site_newticket.cs` ファイルが既に存在している場合は、ワークアラウンドすることによってテンプレートをロードすることができます - !ClearSilver の処理が含まれていない場合に限ります (訳注: `<?cs?>` が含まれていない場合) 。また、この場合はただ一つの要素 (element) だけがインポートされるので、コンテンツはある種のラッパー (`<div>` ブロックやそれに似た親コンテナ) を必要とします。インクルードするためには XInclude の名前空間を指定しなければなりませんが、ドキュメントルート以外にも置くことができます: … … 116 129 <form py:match="div[@id='content' and @class='ticket']/form" py:attrs="select('@*')" 117 130 xmlns:xi="http://www.w3.org/2001/XInclude"> 118 <py:if test="req.environ['PATH_INFO'] == '/newticket' and (not 'preview' in req.args)"> 131 <py:if test="req.environ['PATH_INFO'] == '/newticket' and (not 'preview' in req.args)"> 119 132 <xi:include href="site_newticket.cs"><xi:fallback /></xi:include> 120 133 </py:if> 121 ${select('*')} 134 ${select('*')} 122 135 </form> 123 136 }}} 124 137 125 また、共通のテンプレートディレクトリに、 `site.html` (その名前にも関わらず) を置くことができます - `[inherit] templates_dir`オプションを参照してください。新しく、一個のグローバルな `site.html` ファイルに、ヘッダ, フッタ, チケット作成時の tips を組み込むことで、簡単なメンテナンス (および、大きなインストールを行った 0.10 からのバージョンアップのための移行パス) を提供しています。138 また、共通のテンプレートディレクトリに、 `site.html` (その名前にも関わらず) を置くことができます - [[TracIni#inherit-section|[inherit] templates_dir]] オプションを参照してください。新しく、一個のグローバルな `site.html` ファイルに、ヘッダ, フッタ, チケット作成時の tips を組み込むことで、簡単なメンテナンス (および、大きなインストールを行った 0.10 からのバージョンアップのための移行パス) を提供しています。 126 139 127 140 == プロジェクトリスト == #ProjectList … … 159 172 カスタムテンプレートを使用する場合、 Web サーバにテンプレートのロケーションの設定を読み込ませる必要があります (確かめてみてください ... まだ 0.11 向けに変更していません): 160 173 174 [wiki:TracModWSGI mod_wsgi] 用: 175 {{{ 176 os.environ['TRAC_ENV_INDEX_TEMPLATE'] = '/path/to/template' 177 }}} 178 161 179 [wiki:TracFastCgi FastCGI] 用: 162 180 {{{ … … 188 206 }}} 189 207 190 == プロジェクトテンプレート == # 208 == プロジェクトテンプレート == #ProjectTemplates 191 209 192 210 個々の Trac Environment (プロジェクトのインスタンス) の外観は、同じサーバにホストされている他のプロジェクトとは独立してカスタマイズできます。推奨するのは `site.html` テンプレート ([#SiteAppearance サイトの外観] 参照) を使う方法です。どのような場合でも可能な限り、この方法にしてください。 `site.html` を使う場合、変更はオリジナルのテンプレートがレンダリングした結果に対して適用されるので、 Trac を今後アップグレードした後も、通常はカスタマイズをそのまま使い続けることができます。 `theme.html` や他の Trac のテンプレートのコピーを作成する方法の場合、新しい Trac の機能追加や不具合修正の結果、動かなくなってしまったカスタマイズを新しいバージョンに移行する必要があるかもしれません。 … … 195 213 196 214 しかし、 Trac egg 内部のテンプレートやサイトのリソースは編集しないでください。 Trac を再インストールしたときに、カスタマイズの内容が完全に失われてしまいます。代わりに、以下に挙げる方法のいずれかを使ってください: 197 * カスタマイズが単独のプロジェクトに閉じているのであれば、テンプレートをプロジェクトの `templates` ディレクトリにコピーしてください 。198 * カスタマイズが複数のプロジェクトに渡るものであるなら、テンプレートを共有のロケーションにコピーし、各プロジェクトからは trac.ini の `[inherit] templates_dir =` オプションで、その位置を指定してください 。215 * カスタマイズが単独のプロジェクトに閉じているのであれば、テンプレートをプロジェクトの `templates` ディレクトリにコピーしてください 216 * カスタマイズが複数のプロジェクトに渡るものであるなら、テンプレートを共有のロケーションにコピーし、各プロジェクトからは trac.ini の `[inherit] templates_dir =` オプションで、その位置を指定してください 199 217 200 218 Trac は以下の順序で、テンプレートファイルを探します。まず、プロジェクトの内部を探し、存在しなければ inherit で指定された場所、最後に Trac egg の内部を探します。 201 219 202 220 Trac は通常、パフォーマンスを向上させるために、テンプレートをメモリ上にキャッシュします。変更したテンプレートを適用するためには、 サーバプロセスの再起動が必要です。 221 203 222 ---- 204 See also TracGuide, TracIni223 See also: TracGuide, TracIni