Edgewall Software

Changes between Version 58 and Version 59 of TracInterfaceCustomization


Ignore:
Timestamp:
Dec 9, 2008, 5:31:23 PM (11 years ago)
Author:
techtonik <techtonik@…>
Comment:

integrate osimons's comments from http://groups.google.com/group/trac-users/browse_thread/thread/8a6eba8630cd8fed/504c034a88ccd295?lnk=gst&q=site.html#504c034a88ccd295

Legend:

Unmodified
Added
Removed
Modified
  • TracInterfaceCustomization

    v58 v59  
    6060
    6161Say you want to add a link to a custom stylesheet, and then your own
    62 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:
     62header 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}}}:
    6363
    6464{{{
     
    9090</html>
    9191}}}
    92 Note that this references your environment's `htdocs/style.css`.
     92
     93Those who 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.
     94
     95site.html is one file to contain all your modifications. It usually works by the py:match (element of 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
     96and modify them. 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.
     97
    9398
    9499Example snippet of adding introduction text to the new ticket form (hide when preview):
     
    103108</form>
    104109}}}
     110
     111This 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.
    105112
    106113If 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: