close
Warning:
Can't synchronize with repository "(default)" (Unsupported version control system "darcs": Can't find an appropriate component, maybe the corresponding plugin was not enabled? ). Look in the Trac log for more information.
- Timestamp:
-
2011-10-10 03:59:07 (13 years ago)
- Author:
-
trac
- Comment:
-
--
Legend:
- Unmodified
- Added
- Removed
- Modified
-
v1
|
v2
|
|
15 | 15 | |
16 | 16 | === Logo === |
17 | | Change the `src` setting to `site/` followed by the name of your image file. The `width` and `height` settings should be modified to match your image's dimensions (the Trac chrome handler uses "`site/`" for files within the project directory `htdocs` and "`common/`" for the common ones). |
| 17 | Change the `src` setting to `site/` followed by the name of your image file. The `width` and `height` settings should be modified to match your image's dimensions (the Trac chrome handler uses "`site/`" for files within the project directory `htdocs` and "`common/`" for the common ones). Note that 'site/' is not a placeholder for your project name, it is the actual prefix that should be used (literally). For example, if your project is named 'sandbox', and the image file is 'red_logo.gif' then the 'src' setting would be 'site/red_logo.gif', not 'sandbox/red_logo.gif'. |
18 | 18 | |
19 | 19 | {{{ |
… |
… |
|
40 | 40 | }}} |
41 | 41 | |
| 42 | Should your browser have issues with your favicon showing up in the address bar, you may put a "?" (less the quotation marks) after your favicon file extension. |
| 43 | |
| 44 | {{{ |
| 45 | [project] |
| 46 | icon = /favicon.ico? |
| 47 | }}} |
| 48 | |
42 | 49 | == Custom Navigation Entries == |
43 | | The new [mainnav] and [metanav] can now be used to customize the text and link used for the navigation items, or even to disable them. |
| 50 | The new [mainnav] and [metanav] can now be used to customize the text and link used for the navigation items, or even to disable them (but not for adding new ones). |
44 | 51 | |
45 | 52 | In the following example, we rename the link to the Wiki start "Home", and hide the "Help/Guide". We also make the "View Tickets" entry link to a specific report . |
… |
… |
|
53 | 60 | }}} |
54 | 61 | |
55 | | |
56 | | == Site Appearance == |
| 62 | See also TracNavigation for a more detailed explanation of the mainnav and metanav terms. |
| 63 | |
| 64 | == Site Appearance == #SiteAppearance |
57 | 65 | |
58 | 66 | Trac is using [http://genshi.edgewall.org Genshi] as the templating engine. Documentation is yet to be written, in the meantime the following tip should work. |
59 | 67 | |
60 | 68 | Say you want to add a link to a custom stylesheet, and then your own |
61 | | header and footer. Create a file {{{/path/to/env/templates/site.html}}} or {{{/path/to/inherit/option/templates_dir/site.html}}}, with contents like this: |
| 69 | header and footer. Save the following content as 'site.html' inside your projects templates directory (each Trac project can have their own site.html), e.g. {{{/path/to/env/templates/site.html}}}: |
62 | 70 | |
63 | 71 | {{{ |
… |
… |
|
69 | 77 | <!--! Add site-specific style sheet --> |
70 | 78 | <head py:match="head" py:attrs="select('@*')"> |
71 | | ${select('*')} |
| 79 | ${select('*|comment()|text()')} |
72 | 80 | <link rel="stylesheet" type="text/css" |
73 | 81 | href="${href.chrome('site/style.css')}" /> |
… |
… |
|
89 | 97 | </html> |
90 | 98 | }}} |
91 | | Note that this references your environment's `htdocs/style.css`. |
| 99 | |
| 100 | Those who are familiar with XSLT may notice that Genshi templates bear some similarities. However, there are some Trac specific features - for example '''${href.chrome('site/style.css')}''' attribute references template placed into environment's ''htdocs/'' In a similar fashion '''${chrome.htdocs_location}''' is used to specify common ''htdocs/'' directory from Trac installation. |
| 101 | |
| 102 | `site.html` is one file to contain all your modifications. It usually works by the py:match (element or attribute), and it allows you to modify the page as it renders - the matches hook onto specific sections depending on what it tries to find |
| 103 | and modify them. |
| 104 | See [http://groups.google.com/group/trac-users/browse_thread/thread/70487fb2c406c937/ this thread] for a detailed explanation of the above example `site.html`. |
| 105 | A site.html can contain any number of such py:match sections for whatever you need to modify. This is all [http://genshi.edgewall.org/ Genshi], so the docs on the exact syntax can be found there. |
| 106 | |
92 | 107 | |
93 | 108 | Example snippet of adding introduction text to the new ticket form (hide when preview): |
… |
… |
|
103 | 118 | }}} |
104 | 119 | |
105 | | If the environment is upgraded from 0.10 and a `site_newticket.cs` file already exists, it can actually be loaded by using a workaroud - providing it contains no ClearSilver processing. In addition, as only one element can be imported, the content needs some sort of wrapper such as a `<div>` block or other similar parent container. The XInclude namespace must be specified to allow includes, but that can be moved to document root along with the others: |
| 120 | This example illustrates a technique of using '''`req.environ['PATH_INFO']`''' to limit scope of changes to one view only. For instance, to make changes in site.html only for timeline and avoid modifying other sections - use ''`req.environ['PATH_INFO'] == '/timeline'`'' condition in <py:if> test. |
| 121 | |
| 122 | More examples snippets for `site.html` can be found at [trac:wiki:CookBook/SiteHtml CookBook/SiteHtml]. |
| 123 | |
| 124 | Example snippets for `style.css` can be found at [trac:wiki:CookBook/SiteStyleCss CookBook/SiteStyleCss]. |
| 125 | |
| 126 | If the environment is upgraded from 0.10 and a `site_newticket.cs` file already exists, it can actually be loaded by using a workaround - providing it contains no ClearSilver processing. In addition, as only one element can be imported, the content needs some sort of wrapper such as a `<div>` block or other similar parent container. The XInclude namespace must be specified to allow includes, but that can be moved to document root along with the others: |
106 | 127 | {{{ |
107 | 128 | #!xml |
… |
… |
|
117 | 138 | Also note that the `site.html` (despite its name) can be put in a common templates directory - see the `[inherit] templates_dir` option. This could provide easier maintainence (and a migration path from 0.10 for larger installations) as one new global `site.html` file can be made to include any existing header, footer and newticket snippets. |
118 | 139 | |
119 | | == Project List == |
120 | | You can use a custom ClearSilver template to display the list of projects if you are using Trac with multiple projects. |
| 140 | == Project List == #ProjectList |
| 141 | |
| 142 | You can use a custom Genshi template to display the list of projects if you are using Trac with multiple projects. |
121 | 143 | |
122 | 144 | The following is the basic template used by Trac to display a list of links to the projects. For projects that could not be loaded it displays an error message. You can use this as a starting point for your own index template. |
… |
… |
|
150 | 172 | Once you've created your custom template you will need to configure the webserver to tell Trac where the template is located (pls verify ... not yet changed to 0.11): |
151 | 173 | |
| 174 | For [wiki:TracModWSGI mod_wsgi]: |
| 175 | {{{ |
| 176 | os.environ['TRAC_ENV_INDEX_TEMPLATE'] = '/path/to/template' |
| 177 | }}} |
| 178 | |
152 | 179 | For [wiki:TracFastCgi FastCGI]: |
153 | 180 | {{{ |
… |
… |
|
158 | 185 | For [wiki:TracModPython mod_python]: |
159 | 186 | {{{ |
| 187 | PythonOption TracEnvParentDir /parent/dir/of/projects |
160 | 188 | PythonOption TracEnvIndexTemplate /path/to/template |
161 | 189 | }}} |
… |
… |
|
178 | 206 | }}} |
179 | 207 | |
| 208 | == Project Templates == |
| 209 | |
| 210 | The appearance of each individual Trac environment (that is, instance of a project) can be customized independently of other projects, even those hosted by the same server. The recommended way is to use a `site.html` template (see [#SiteAppearance]) whenever possible. Using `site.html` means changes are made to the original templates as they are rendered, and you should not normally need to redo modifications whenever Trac is upgraded. If you do make a copy of `theme.html` or any other Trac template, you need to migrate your modifiations to the newer version - if not, new Trac features or bug fixes may not work as expected. |
| 211 | |
| 212 | With that word of caution, any Trac template may be copied and customized. The default Trac templates are located inside the installed Trac egg (`/usr/lib/pythonVERSION/site-packages/Trac-VERSION.egg/trac/templates, .../trac/ticket/templates, .../trac/wiki/templates, ++`). The [#ProjectList] template file is called `index.html`, while the template responsible for main layout is called `theme.html`. Page assets such as images and CSS style sheets are located in the egg's `trac/htdocs` directory. |
| 213 | |
| 214 | However, do not edit templates or site resources inside the Trac egg - installing Trac again can completely delete your modifications. Instead use one of two alternatives: |
| 215 | * For a modification to one project only, copy the template to project `templates` directory. |
| 216 | * For a modification shared by several projects, copy the template to a shared location and have each project point to this location using the `[inherit] templates_dir =` trac.ini option. |
| 217 | |
| 218 | Trac resolves requests for a template by first looking inside the project, then in any inherited templates location, and finally inside the Trac egg. |
| 219 | |
| 220 | Trac caches templates in memory by default to improve performance. To apply a template you need to restart the server. |
| 221 | |
180 | 222 | ---- |
181 | 223 | See also TracGuide, TracIni |