Use !iki to placate t/basewiki_brokenlinks.t.
[ikiwiki.git] / doc / ikiwiki / directive / meta.mdwn
1 The `meta` directive is supplied by the [[!iki plugins/meta desc=meta]] plugin.
2
3 This directive allows inserting arbitrary metadata into the source of a page.
4 Enter the metadata as follows:
5
6         \[[!meta field="value"]]
7         \[[!meta field="value" param="value" param="value"]]
8
9 The first form sets a given field to a given value, while the second form
10 also specifies some additional sub-parameters. You can have only one field
11 per `meta` directive, use more directives if you want to specify more fields.
12
13 The field values are treated as HTML entity-escaped text, so you can include
14 a quote in the text by writing `"` and so on.
15
16 Supported fields:
17
18 * title
19
20   Overrides the title of the page, which is generally the same as the
21   page name.
22
23   Note that if the title is overridden, a "title_overridden" variable will
24   be set to a true value in the template; this can be used to format things
25   differently in this case.
26
27   An optional `sortas` parameter will be used preferentially when
28   [[ikiwiki/pagespec/sorting]] by `meta(title)`:
29
30         \[[!meta title="The Beatles" sortas="Beatles, The"]]
31
32         \[[!meta title="David Bowie" sortas="Bowie, David"]]
33
34 * license
35
36   Specifies a license for the page, for example, "GPL". Can contain
37   WikiLinks and arbitrary markup.
38
39 * copyright
40
41   Specifies the copyright of the page, for example, "Copyright 2007 by
42   Joey Hess". Can contain WikiLinks and arbitrary markup.
43
44 * author
45
46   Specifies the author of a page.
47
48   An optional `sortas` parameter will be used preferentially when
49   [[ikiwiki/pagespec/sorting]] by `meta(author)`:
50
51         \[[!meta author="Joey Hess" sortas="Hess, Joey"]]
52
53 * authorurl
54
55   Specifies an url for the author of a page.
56
57 * description
58
59   Specifies a short description for the page. This will be put in
60   the html header, and can also be displayed by eg, the [[map]] directive.
61
62 * keywords
63
64   Specifies keywords summarizing the contents of the page. This
65   information will be put in the html header.  Only letters,
66   numbers, spaces and commas are allowed in this string; other
67   characters are stripped.  Note that the majority of search
68   engines, including Google, do not use information from the
69   keywords header.
70
71 * permalink
72
73   Specifies a permanent link to the page, if different than the page
74   generated by ikiwiki.
75
76 * date
77
78   Specifies the creation date of the page. The date can be entered in
79   nearly any format, since it's parsed by [[!cpan TimeDate]].
80
81 * stylesheet
82
83   Adds a stylesheet to a page. The stylesheet is treated as a wiki link to
84   a `.css` file in the wiki, so it cannot be used to add links to external
85   stylesheets. Example:
86
87         \[[!meta stylesheet=somestyle rel="alternate stylesheet"
88         title="somestyle"]]
89   
90   However, this will be scrubbed away if the 
91   [[!iki plugins/htmlscrubber desc=htmlscrubber]] plugin is enabled,
92   since it can be used to insert unsafe content.
93
94 * script
95
96   Adds a script to a page. The script is treated as a wiki link to
97   a `.js` file in the wiki, so it cannot be used to add links to external
98   scripts. The optional `defer` and `async` keywords can be used to set
99   the corresponding HTML4 and HTML5 script options. Example:
100
101         \[[!meta script=somescript defer async]]
102
103   The tag is subject to scrubbing as with the stylesheet and link fields.
104
105 * openid
106
107   Adds html <link> tags to perform OpenID delegation to an external
108   OpenID server. This lets you use an ikiwiki page as your OpenID.
109
110   By default this will delegate for both `openid` and `openid2`. To only
111   delegate for one, add a parameter such as `delegate=openid`.
112
113   An optional `xrds-location`
114   parameter lets you specify the location of any [eXtensible Resource
115   DescriptorS](http://www.windley.com/archives/2007/05/using_xrds.shtml).
116
117   Example:
118
119         \[[!meta openid="http://joeyh.myopenid.com/"
120         server="http://www.myopenid.com/server"
121         xrds-location="http://www.myopenid.com/xrds?username=joeyh.myopenid.com"]]
122
123 * link
124
125   Specifies a link to another page. This can be used as a way to make the
126   wiki treat one page as linking to another without displaying a user-visible
127   [[ikiwiki/WikiLink]]:
128
129        \[[!meta link=otherpage]]
130
131   It can also be used to insert a html <link> tag. For example:
132
133        \[[!meta link="http://joeyh.myopenid.com/" rel="openid.delegate"]]
134
135   However, this latter syntax won't be allowed if the 
136   [[!iki plugins/htmlscrubber desc=htmlscrubber]] plugin is enabled, since it can be used to
137   insert unsafe content.
138
139 * enclosure
140
141   Specifies a link to a file to be rendered as an "enclosure" in
142   RSS/Atom feeds (and a plain old link in HTML). Useful for
143   [[!iki podcast desc=podcasting]].
144
145 * redir
146
147   Causes the page to redirect to another page in the wiki.
148
149         \[[!meta redir=otherpage]]
150
151   The default is to redirect without delay.
152   Optionally, a delay (in seconds) can be specified: "delay=10"
153
154   It can also be used to redirect to an external url. For example:
155
156         \[[!meta redir="http://example.com/"]]
157
158   However, this latter syntax won't be allowed if the 
159   [[!iki plugins/htmlscrubber desc=htmlscrubber]] plugin is enabled, since it can be used to
160   insert unsafe content.
161
162   For both cases, an anchor to jump to inside the destination page may also be
163   specified using the common `#ANCHOR` syntax.
164
165 * robots
166
167   Causes the robots meta tag to be written:
168
169         \[[!meta robots="index, nofollow"]]
170
171   Valid values for the attribute are: "index", "noindex", "follow", and
172   "nofollow". Multiple comma-separated values are allowed, but obviously only
173   some combinations make sense. If there is no robots meta tag, "index,
174   follow" is used as the default.
175
176   The value is escaped, but its contents are not otherwise checked.
177
178 * guid
179
180   Specifies a globally unique ID for a page. This guid should be a URI,
181   and it will be used to identify the page's entry in RSS
182   and Atom feeds. If not given, the default is to use the page's URL as its
183   guid.
184
185   This is mostly useful when a page has moved, to keep the guids for
186   pages unchanged and avoid flooding aggregators
187   (see [[!iki tips/howto_avoid_flooding_aggregators]]).
188
189 * updated
190
191   Specifies a fake modification time for a page, to be output into RSS and
192   Atom feeds. This is useful to avoid flooding aggregators that sort by
193   modification time, like Planet: for instance, when editing an old blog post
194   to add tags, you could set `updated` to be one second later than the original
195   value. The date/time can be given in any format that
196   [[!cpan TimeDate]] can understand, just like the `date` field.
197
198 * foaf
199
200   Adds a Friend of a Friend ([FOAF](http://wiki.foaf-project.org/w/Autodiscovery))
201   reference to a page.
202
203   Example:
204
205         \[[!meta foaf=foaf.rdf]]
206
207 If the field is not one of the above predefined fields, the metadata will be
208 written to the generated html page as a <meta> header. However, this
209 won't be allowed if the [[!iki plugins/htmlscrubber desc=htmlscrubber]] plugin is enabled,
210 since it can be used to insert unsafe content.
211
212 [[!meta robots="noindex, follow"]]