50aaf66be46244148c7cf6c29e4b9c7e9005c3aa
[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 * permalink
63
64   Specifies a permanent link to the page, if different than the page
65   generated by ikiwiki.
66
67 * date
68
69   Specifies the creation date of the page. The date can be entered in
70   nearly any format, since it's parsed by [[!cpan TimeDate]].
71
72 * stylesheet
73
74   Adds a stylesheet to a page. The stylesheet is treated as a wiki link to
75   a `.css` file in the wiki, so it cannot be used to add links to external
76   stylesheets. Example:
77
78         \[[!meta stylesheet=somestyle rel="alternate stylesheet"
79         title="somestyle"]]
80   
81   However, this will be scrubbed away if the 
82   [[!iki plugins/htmlscrubber desc=htmlscrubber]] plugin is enabled,
83   since it can be used to insert unsafe content.
84
85 * openid
86
87   Adds html <link> tags to perform OpenID delegation to an external
88   OpenID server. This lets you use an ikiwiki page as your OpenID.
89
90   By default this will delegate for both `openid` and `openid2`. To only
91   delegate for one, add a parameter such as `delegate=openid`.
92
93   An optional `xrds-location`
94   parameter lets you specify the location of any [eXtensible Resource
95   DescriptorS](http://www.windley.com/archives/2007/05/using_xrds.shtml).
96
97   Example:
98
99         \[[!meta openid="http://joeyh.myopenid.com/"
100         server="http://www.myopenid.com/server"
101         xrds-location="http://www.myopenid.com/xrds?username=joeyh.myopenid.com""]]
102
103 * link
104
105   Specifies a link to another page. This can be used as a way to make the
106   wiki treat one page as linking to another without displaying a user-visible
107   [[ikiwiki/WikiLink]]:
108
109        \[[!meta link=otherpage]]
110
111   It can also be used to insert a html <link> tag. For example:
112
113        \[[!meta link="http://joeyh.myopenid.com/" rel="openid.delegate"]]
114
115   However, this latter syntax won't be allowed if the 
116   [[!iki plugins/htmlscrubber desc=htmlscrubber]] plugin is enabled, since it can be used to
117   insert unsafe content.
118
119 * redir
120
121   Causes the page to redirect to another page in the wiki.
122
123         \[[!meta redir=otherpage]]
124
125   Optionally, a delay (in seconds) can be specified. The default is to
126   redirect without delay.
127
128   It can also be used to redirect to an external url. For example:
129
130         \[[!meta redir="http://example.com/"]]
131
132   However, this latter syntax won't be allowed if the 
133   [[!iki plugins/htmlscrubber desc=htmlscrubber]] plugin is enabled, since it can be used to
134   insert unsafe content.
135
136   For both cases, an anchor to jump to inside the destination page may also be
137   specified using the common `#ANCHOR` syntax.
138
139 * robots
140
141   Causes the robots meta tag to be written:
142
143         \[[!meta robots="index, nofollow"]]
144
145   Valid values for the attribute are: "index", "noindex", "follow", and
146   "nofollow". Multiple comma-separated values are allowed, but obviously only
147   some combinations make sense. If there is no robots meta tag, "index,
148   follow" is used as the default.
149
150   The value is escaped, but its contents are not otherwise checked.
151
152 * guid
153
154   Specifies a globally unique ID for a page. This guid should be a URI
155   (in particular, it can be `urn:uuid:` followed by a UUID, as per
156   [[!rfc 4122]]), and it will be used to identify the page's entry in RSS
157   and Atom feeds. If not given, the default is to use the page's URL as its
158   guid.
159
160   This is mostly useful when a page has moved, to keep the guids for
161   pages unchanged and avoid_flooding_aggregators
162   (see [[!iki tips/howto_avoid_flooding_aggregators]]).
163
164 * updated
165
166   Specifies a fake modification time for a page, to be output into RSS and
167   Atom feeds. This is useful to avoid flooding aggregators that sort by
168   modification time, like Planet: for instance, when editing an old blog post
169   to add tags, you could set `updated` to be one second later than the original
170   value. The date/time can be given in any format that
171   [[!cpan TimeDate]] can understand, just like the `date` field.
172
173 If the field is not one of the above predefined fields, the metadata will be
174 written to the generated html page as a <meta> header. However, this
175 won't be allowed if the [[!iki plugins/htmlscrubber desc=htmlscrubber]] plugin is enabled,
176 since it can be used to insert unsafe content.
177
178 [[!meta robots="noindex, follow"]]