Bon, au final, ça surprend mais ça ne casse pas 3 pattes à un canard. Histoire d'aider ceux qui voudraient appréhender la customisation de Trac, je vous donne mon site.html commenté :

  1. <html xmlns="http://www.w3.org/1999/xhtml"
  2. xmlns:py="http://genshi.edgewall.org/"
  3. py:strip="">
  4.  
  5. <!--! Add site-specific style sheet -->
  6. <head py:match="head" py:attrs="select('@*')">
  7. ${select('*|comment()|text()')}
  8. <!-- Là, je rajoute ma CSS perso (dans htdocs) en plus des autres champs de head -->
  9. <link rel="stylesheet" type="text/css" href="${href.chrome('site/style.css')}" />
  10. </head>
  11. <body py:match="body">
  12. <div id="page">
  13. <div id="top">
  14. <div class="wrapped">
  15.  
  16. <!-- Login et préférences... -->
  17. ${navigation('metanav')}
  18.  
  19. <!-- Formulaire de recherche... -->
  20. <form id="search" action="${href.search}" method="get">
  21. <div py:if="'SEARCH_VIEW' in perm">
  22. <label for="q">Search:</label>
  23. <input type="text" id="q" name="q" size="10" accesskey="f" value="Rechercher" />
  24. </div>
  25. </form>
  26.  
  27. <!-- Là on va se servire dans trac.ini -->
  28. <h1><span><a href="${chrome.logo.link}">${project.name}</a></span></h1>
  29. <p id="blogdesc">${project.descr}</p>
  30. </div>
  31. </div>
  32. <div id="navigation">
  33.  
  34. <!-- Le menu principale -->
  35. <div class="wrapped">
  36. <ul>
  37. <li py:for="idx, item in enumerate(chrome.nav['mainnav'])" class="${classes(first_last(idx, chrome.nav['mainnav']), active=item.active)}">
  38. ${item.label}
  39. </li>
  40. </ul>
  41. <br class="clear"/>
  42. </div>
  43. </div>
  44.  
  45. <!-- Contenu -->
  46. <div id="inner">
  47. <div id="wrapper">
  48. ${select('*[@id="main"]|text()')}
  49. </div>
  50. </div>
  51.  
  52. <!-- Pied de page -->
  53. <div id="footer" xml:lang="en">
  54. <div class="wrapped">
  55. <p class="left">
  56. Powered by <a href="${href.about()}"><strong>Trac ${trac.version}</strong></a> by <a href="http://www.edgewall.org/">Edgewall Software</a><br />
  57. Basé sur le thème Emplode par <a href="http://arcsin.se/">Arcsin</a>
  58. </p>
  59. <p class="right">${chrome.footer}</p>
  60. </div>
  61. </div>
  62.  
  63. </div>
  64. </body>
  65. </html>

Maintenant il y a plus qu'à faire pareil sur le Trac de Fedora-Fr...

Comme j'étais parti sur ma lancée, j'ai aussi refait le design de mon profils Twitter.