summaryrefslogtreecommitdiff
path: root/ikiwiki/directive/meta.mdwn
blob: 8acf2a48725c60c8f6af1546490459dacc0534b9 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
[[!if test="enabled(meta)"
  then="In diesem Wiki ist die Direktive: meta **aktiviert**."
 else="In diesem Wiki ist die Direktive: meta **nicht aktiv**; falls dies gewünscht wird, den Admin benachrichtigen."]]

---
The `meta` directive is supplied by the [[!iki plugins/meta desc=meta]] plugin.

This directive allows inserting arbitrary metadata into the source of a page.
Enter the metadata as follows:

	\[[!meta field="value"]]
	\[[!meta field="value" param="value" param="value"]]

The first form sets a given field to a given value, while the second form
also specifies some additional sub-parameters. You can have only one field
per `meta` directive, use more directives if you want to specify more fields.

The field values are treated as HTML entity-escaped text, so you can include
a quote in the text by writing `"` and so on.

## Supported fields

* title

  Overrides the title of the page, which is generally the same as the
  page name.

  Note that if the title is overridden, a "title_overridden" variable will
  be set to a true value in the template; this can be used to format things
  differently in this case.

  An optional `sortas` parameter will be used preferentially when
  [[ikiwiki/pagespec/sorting]] by `meta(title)`:

	\[[!meta title="The Beatles" sortas="Beatles, The"]]

	\[[!meta title="David Bowie" sortas="Bowie, David"]]

* license

  Specifies a license for the page, for example, "GPL". Can contain
  WikiLinks and arbitrary markup.

* copyright

  Specifies the copyright of the page, for example, "Copyright 2007 by
  Joey Hess". Can contain WikiLinks and arbitrary markup.

* author

  Specifies the author of a page.

  An optional `sortas` parameter will be used preferentially when
  [[ikiwiki/pagespec/sorting]] by `meta(author)`:

	\[[!meta author="Joey Hess" sortas="Hess, Joey"]]

* authorurl

  Specifies an url for the author of a page.

* description

  Specifies a short description for the page. This will be put in
  the html header, and can also be displayed by eg, the [[map]] directive.

* keywords

  Specifies keywords summarizing the contents of the page. This
  information will be put in the html header.  Only letters,
  numbers, spaces and commas are allowed in this string; other
  characters are stripped.  Note that the majority of search
  engines, including Google, do not use information from the
  keywords header.

* permalink

  Specifies a permanent link to the page, if different than the page
  generated by ikiwiki.

* date

  Specifies the creation date of the page. This creates a 
  `<meta name="date" content="...">` header in the HTML output, but also
  modifies the internal `ctime` in the
  [[!iki tips/inside_dot_ikiwiki desc="internal index"]].
  The date can be entered in nearly any format, since it's parsed by
  [[!cpan TimeDate]] but invalid dates yield an error in 3.20180321
  or later.

* stylesheet

  Adds a stylesheet to a page. The stylesheet is treated as a wiki link to
  a `.css` file in the wiki, so it cannot be used to add links to external
  stylesheets. Example:

	\[[!meta stylesheet=somestyle rel="alternate stylesheet"
	title="somestyle"]]
  
  However, this will be scrubbed away if the 
  [[!iki plugins/htmlscrubber desc=htmlscrubber]] plugin is enabled,
  since it can be used to insert unsafe content.

* script

  Adds a script to a page. The script is treated as a wiki link to
  a `.js` file in the wiki, so it cannot be used to add links to external
  scripts. The optional `defer` and `async` keywords can be used to set
  the corresponding HTML4 and HTML5 script options. Example:

	\[[!meta script=somescript defer async]]

  The tag is subject to scrubbing as with the stylesheet and link fields.

* openid

  Adds html &lt;link&gt; tags to perform OpenID delegation to an external
  OpenID server. This lets you use an ikiwiki page as your OpenID.

  By default this will delegate for both `openid` and `openid2`. To only
  delegate for one, add a parameter such as `delegate=openid`.

  An optional `xrds-location`
  parameter lets you specify the location of any [eXtensible Resource
  DescriptorS](http://www.windley.com/archives/2007/05/using_xrds.shtml).

  Example:

	\[[!meta openid="http://joeyh.myopenid.com/"
	server="http://www.myopenid.com/server"
	xrds-location="http://www.myopenid.com/xrds?username=joeyh.myopenid.com"]]

* link

  Specifies a link to another page. This can be used as a way to make the
  wiki treat one page as linking to another without displaying a user-visible
  [[ikiwiki/WikiLink]]:

       \[[!meta link=otherpage]]

  It can also be used to insert a html &lt;link&gt; tag. For example:

       \[[!meta link="http://joeyh.myopenid.com/" rel="openid.delegate"]]

  However, this latter syntax won't be allowed if the 
  [[!iki plugins/htmlscrubber desc=htmlscrubber]] plugin is enabled, since it can be used to
  insert unsafe content.

* enclosure

  Specifies a link to a file to be rendered as an "enclosure" in
  RSS/Atom feeds (and a plain old link in HTML). Useful for
  [[!iki podcast desc=podcasting]].

* redir

  Causes the page to redirect to another page in the wiki.

  	\[[!meta redir=otherpage]]

  The default is to redirect without delay.
  Optionally, a delay (in seconds) can be specified: "delay=10"

  It can also be used to redirect to an external url. For example:

  	\[[!meta redir="http://example.com/"]]

  However, this latter syntax won't be allowed if the 
  [[!iki plugins/htmlscrubber desc=htmlscrubber]] plugin is enabled, since it can be used to
  insert unsafe content.

  For both cases, an anchor to jump to inside the destination page may also be
  specified using the common `#ANCHOR` syntax.

* robots

  Causes the robots meta tag to be written:

        \[[!meta robots="index, nofollow"]]

  Valid values for the attribute are: "index", "noindex", "follow", and
  "nofollow". Multiple comma-separated values are allowed, but obviously only
  some combinations make sense. If there is no robots meta tag, "index,
  follow" is used as the default.

  The value is escaped, but its contents are not otherwise checked.

* guid

  Specifies a globally unique ID for a page. This guid should be a URI,
  and it will be used to identify the page's entry in RSS
  and Atom feeds. If not given, the default is to use the page's URL as its
  guid.

  This is mostly useful when a page has moved, to keep the guids for
  pages unchanged and avoid flooding aggregators
  (see [[!iki tips/howto_avoid_flooding_aggregators]]).

* updated

  Specifies a fake modification time for a page, to be output into RSS and
  Atom feeds. This is useful to avoid flooding aggregators that sort by
  modification time, like Planet: for instance, when editing an old blog post
  to add tags, you could set `updated` to be one second later than the original
  value. The date/time can be given in any format that
  [[!cpan TimeDate]] can understand, just like the `date` field and maps to the
  `<meta name="updated" content="...">` HTML header and internal `mtime` field.

* foaf

  Adds a Friend of a Friend ([FOAF](http://wiki.foaf-project.org/w/Autodiscovery))
  reference to a page.

  Example:

  	\[[!meta foaf=foaf.rdf]]

* name

  Adds a HTML `<meta>` header with this `name` attribute. Its other attributes are
  taken from the other parameters, so for example
  `\[[!meta name="foo" content="bar" x-non-standard-attribute="baz"]]`
  becomes `<meta name="foo" content="bar" x-non-standard-attribute="baz">`. This
  won't be allowed if the [[!iki plugins/htmlscrubber desc=htmlscrubber]] plugin is enabled,
  since it can be used to insert unsafe content.

## Other fields

If the field is not one of the above predefined fields, the metadata will be
written to the generated html page as a &lt;meta&gt; header. For example,
`\[[!meta foo="bar"]]` becomes `<meta name="foo" content="bar">`. As
with `name`, this won't be allowed if the [[!iki plugins/htmlscrubber
desc=htmlscrubber]] plugin is enabled.

This syntax cannot be used for meta headers with unusual names, in
particular names containing `:` such as `flattr:id` and `twitter:card`.
Please use `\[[!meta name="..." content="..."]]` for those headers.

[[!meta robots="noindex, follow"]]