ikiwiki/doc/templates.mdwn

248 lines
6.0 KiB
Markdown

[[Ikiwiki]] uses many templates for many purposes. By editing its templates,
you can fully customise its appearance, and avoid duplicate content.
Ikiwiki uses the HTML::Template module as its template engine. This
supports things like conditionals and loops in templates and is pretty
easy to learn. All you really need to know to modify templates is this:
* To insert the value of a template variable, use `<TMPL_VAR variable>`.
* To make a block of text conditional on a variable being set use
`<TMPL_IF variable>text</TMPL_IF>`.
* To use one block of text if a variable is set and a second if it's not,
use `<TMPL_IF variable>text<TMPL_ELSE>other text</TMPL_IF>`
[[!if test="enabled(template) or enabled(edittemplate)" then="""
## template pages
Template pages are regular wiki pages that are used as templates for other
pages.
"""]]
[[!if test="enabled(template)" then="""
The [[!iki ikiwiki/directive/template desc="template directive"]] allows
template pages to be filled out and inserted into other pages in the wiki.
"""]]
[[!if test="enabled(edittemplate)" then="""
The [[!iki ikiwiki/directive/edittemplate desc="edittemplate directive"]] can
be used to make new pages default to containing text from a template
page, which can be filled out as the page is edited.
"""]]
[[!if test="(enabled(template) or enabled(edittemplate))
and enabled(inline)" then="""
These template pages are currently available:
[[!inline pages="templates/* and !*.tmpl and !templates/*/* and !*/discussion"
feeds=no archive=yes sort=title template=titlepage
rootpage=templates postformtext="Add a new template page named:"]]
"""]]
## template files
Template files are unlike template pages in that they have the extension
`.tmpl`. Template files are used extensively by Ikiwiki to generate html.
They can contain html that would not normally be allowed on a wiki page.
Template files are located in `/usr/share/ikiwiki/templates` by default;
the `templatedir` setting can be used to make another directory be
searched first. Customised template files can also be placed inside the
"templates/" directory in your wiki's source -- files placed there override
ones in the `templatedir`.
Here is a full list of the template files used:
* `page.tmpl` - Used for displaying all regular wiki pages. This is the
key template to customise to change the look and feel of Ikiwiki.
[[!if test="enabled(pagetemplate)" then="""
(The [[!iki ikiwiki/directive/pagetemplate desc="pagetemplate directive"]]
can be used to make a page use a different template than `page.tmpl`.)"""]]
* `rsspage.tmpl` - Used for generating rss feeds for blogs.
* `rssitem.tmpl` - Used for generating individual items on rss feeds.
* `atompage.tmpl` - Used for generating atom feeds for blogs.
* `atomitem.tmpl` - Used for generating individual items on atom feeds.
* `inlinepage.tmpl` - Used for displaying a post in a blog.
* `archivepage.tmpl` - Used for listing a page in a blog archive page.
* `titlepage.tmpl` - Used for listing a page by title in a blog archive page.
* `microblog.tmpl` - Used for showing a microblogging post inline.
* `blogpost.tmpl` - Used for a form to add a post to a blog (and rss/atom links)
* `feedlink.tmpl` - Used to add rss/atom links if `blogpost.tmpl` is not used.
* `aggregatepost.tmpl` - Used by the aggregate plugin to create
a page for a post.
* `searchform.tmpl`, `googleform.tmpl` - Used by the search plugin
and google plugin to add search forms to wiki pages.
* `searchquery.tmpl` - This is a Omega template, used by the
search plugin.
* `comment.tmpl` - Used by the comments plugin to display a comment.
* `change.tmpl` - Used to create a page describing a change made to the wiki.
* `recentchanges.tmpl` - Used for listing a change on the RecentChanges page.
* `autoindex.tmpl` - Filled in by the autoindex plugin to make index pages.
* `autotag.tmpl` - Filled in by the tag plugin to make tag pages.
* `calendarmonth.tmpl`, `calendaryear.tmpl` - Used by ikiwiki-calendar to
make calendar archive pages.
* `editpage.tmpl`, `editconflict.tmpl`, `editcreationconflict.tmpl`,
`editfailedsave.tmpl`, `editpagegone.tmpl`, `pocreatepage.tmpl`,
`editcomment.tmpl` `commentmoderation.tmpl`, `renamesummary.tmpl`,
`passwordmail.tmpl`, `openid-selector.tmpl`, `revert.tmpl` - Parts of ikiwiki's user
interface; do not normally need to be customised.
[[!meta robots="noindex, follow"]]
here is a list of variables used in various tmpl files:
ACTION
ACTIONS
ADDCOMMENTURL
ATOMCOMMENTSURL
ATOMURL
ATTACHMENTS-CLASS
AUTHOR
AUTHORURL
BACKLINKS
BASEURL
BROKENLINKS
BROKENLINKS_CHECKED
CATEGORIES
CATEGORY
CDATE_3339
CDATE_822
CGIURL
COMMENTAUTHOR
COMMENTAUTHORURL
COMMENTID
COMMENTIP
COMMENTOPENID
COMMENTS
COMMENTSLINK
COMMENTSURL
COMMENTUSER
COMMITDATE
COMMITTYPE
CONTENT
COPYRIGHT
CTIME
DEST
DIFF
DIFFURL
DISCUSSIONLINK
DYNAMIC
EDITURL
ENCLOSURE
ERROR
ERROR_MESSAGE
EXTRAFOOTER
FAVICON
FEEDDATE
FEEDDESC
FEEDLINKS
FEEDURL
FIELD-ATTACHMENT
FIELD-DO
FIELD-EDITCONTENT
FIELD-EDITMESSAGE
FIELD-FROM
FIELD-LINK
FIELD-NEWFILE
FIELD-PAGE
FIELD-RCSINFO
FIELD-REMOVE
FIELD-RENAME
FIELD-REV
FIELD-REVERTMESSAGE
FIELD-SELECT
FIELD-SID
FIELD-SUBJECT
FIELD-TYPE
FIELD-UPLOAD
FIRST
FIXEDLINKS
FORCEBASEURL
FORCEBASEURL
form-cancel
FORM-END
FORM-START
FORM-SUBMIT
GETSOURCEURL
GUID
HAVE_ACTIONS
HELPONFORMATTINGLINK
HISTORYURL
HTML5
ID
ISTRANSLATION
JAVASCRIPT
LANG
LANGUAGE
LAST
LENGTH
LICENSE
LINE
LINK
LOCAL_CSS
MASTER
MDATE_3339
MESSAGE
META
MONTH
MORE_BACKLINKS
MTIME
NAME
NAME="ATTACHMENT_LIST"
NAME="ATTACHMENT_LIST"
NAME="CAN_COMMIT"
NAME="FIELD-ATTACHMENT"
NAME="FORM-END"
NAME="PAGE_DIFF"
NAME="PAGE_PREVIEW"
NAME="PAGE_PREVIEW"
NAME="PAGE_SELECT"
NAME=ALLOWAUTHOR
NAME=FIELD-AUTHOR
NAME=FIELD-URL
NAME=USERNAME
NONOPENIDFORM
OPENID_URL
OTHERLANGUAGES
PAGE
PAGE_DIFF
PAGE_PREVIEW
PAGES
PAGESPEC
PAGEURL
PARENTLINKS
PASSWORDURL
PERCENT
PERCENTTRANSLATED
PERMALINK
POSTFORMTEXT
PREFSURL
RECENTCHANGESURL
RELVCS
REMOTE_ADDR
REMOVEURL
REV
REVERTURL
ROOTPAGE
RSSURL
SEARCHACTION
SEARCHFORM
SID
SIDEBAR
SIGNINURL
SIZE
SRC
TAG
TAGNAME
TAGS
TITLE
TYPE
URL
USER
USER_NAME
VERSION
VIEW
WIKINAME
WIKIURL
WMD_PREVIEW
YEAR