thinking loud
[ikiwiki] / doc / ikiwiki / blog.mdwn
1 [[!meta robots="noindex, follow"]]
2 [[!if test="enabled(inline)"
3      then="This wiki has the inline plugin **enabled**."
4      else="This wiki has the inline plugin **disabled**."]]
5
6 [[!if test="enabled(inline)"
7      then="You can"
8      else="If this wiki had the inline plugin enabled, you could"]]
9 turn any page on this wiki into a weblog by using the `inline`
10 [[PreProcessorDirective]]. For example:
11
12         \[[!inline pages="blog/* and !*/Discussion" show="10" rootpage="blog"]]
13
14 Any pages that match the specified [[PageSpec]] (in the example, any
15 [[SubPage]] of "blog") will be part of the blog, and the newest 10
16 of them will appear in the page. Note that if files that are not pages
17 match the [[PageSpec]], they will be included in the feed using RSS
18 enclosures, which is useful for podcasting.
19
20 The optional `rootpage` parameter tells the wiki that new posts to this blog
21 should default to being [[SubPage]]s of "blog", and enables a form at the
22 top of the blog that can be used to add new items.
23
24 If you want your blog to have an archive page listing every post ever made
25 to it, you can accomplish that like this:
26
27         \[[!inline pages="blog/* and !*/Discussion" archive="yes"]]
28
29 You can even create an automatically generated list of all the pages on the
30 wiki, with the most recently added at the top, like this:
31
32         \[[!inline pages="* and !*/Discussion" archive="yes"]]
33
34 If you want to be able to add pages to a given blog feed by tagging them,
35 you can do that too. To tag a page, just make it link to a page or pages 
36 that represent its tags. Then use the special `link()` [[PageSpec]] to match
37 all pages that have a given tag:
38
39         \[[!inline pages="link(life)"]]
40
41 Or include some tags and exclude others:
42
43         \[[!inline pages="link(debian) and !link(social)"]]
44
45 ## usage
46
47 There are many parameters you can use with the `inline`
48 directive. These are the commonly used ones:
49
50 * `pages` - A [[PageSpec]] of the pages to inline.
51 * `show` - Specify the maximum number of matching pages to inline.
52   Default is 10, unless archiving, when the default is to show all.
53   Set to 0 to show all matching pages.
54 * `archive` - If set to "yes", only list page titles and some metadata, not
55   full contents.
56 * `description` - Sets the description of the rss feed if one is generated.
57   Defaults to the name of the wiki.
58 * `skip` - Specify a number of pages to skip displaying. Can be useful
59   to produce a feed that only shows archived pages.
60 * `postform` - Set to "yes" to enable a form to post new pages to a
61   [[blog]].
62 * `postformtext` - Set to specify text that is displayed in a postform.
63 * `rootpage` - Enable the postform, and allows controling where
64   newly posted pages should go, by specifiying the page that
65   they should be a [[SubPage]] of.
66
67 Here are some less often needed parameters:
68
69 * `actions` - If set to "yes" add links to the bottom of the inlined pages 
70   for editing and discussion (if they would be shown at the top of the page
71   itself).
72 * `rss` - controls generation of an rss feed. If the wiki is configured to
73   generate rss feeds by default, set to "no" to disable. If the wiki is
74   configured to `allowrss`, set to "yes" to enable.
75 * `atom` - controls generation of an atom feed. If the wiki is configured to
76   generate atom feeds by default, set to "no" to disable. If the wiki is
77   configured to `allowatom`, set to "yes" to enable.
78 * `feeds` - controls generation of all types of feeds. Set to "no" to
79   disable generating any feeds.
80 * `template` - Specifies the template to fill out to display each inlined
81   page. By default the `inlinepage` template is used, while
82   the `archivepage` template is used for archives. Set this parameter to
83   use some other, custom template, such as the `titlepage` template that
84   only shows post titles. Note that you should still set `archive=yes` if
85   your custom template does not include the page content.
86 * `raw` - Rather than the default behavior of creating a [[blog]],
87   if raw is set to "yes", the page will be included raw, without additional
88   markup around it, as if it were a literal part of the source of the 
89   inlining page.
90 * `sort` - Controls how inlined pages are sorted. The default, "age" is to
91   sort newest created pages first. Setting it to "title" will sort pages by
92   title, and "mtime" sorts most recently modified pages first.
93 * `reverse` - If set to "yes", causes the sort order to be reversed.
94 * `feedshow` - Specify the maximum number of matching pages to include in
95   the rss/atom feeds. The default is the same as the `show` value above.
96 * `feedonly` - Only generate the feed, do not display the pages inline on
97   the page.
98 * `quick` - Build archives in quick mode, without reading page contents for
99   metadata. By default, this also turns off generation of any feeds.
100 * `timeformat` - Use this to specify how to display the time or date for pages
101   in the blog. The format string is passed to the strftime(3) function.
102 * `feedpages` - A [[PageSpec]] of inlined pages to include in the rss/atom
103   feeds. The default is the same as the `pages` value above, and only pages
104   matches by that value are included, but some of those can be excluded by
105   specifying a tighter [[PageSpec]] here.
106 * `guid` - If a URI is given here (perhaps a UUID prefixed with `urn:uuid:`),
107   the Atom feed will have this as its `<id>`. The default is to use the URL
108   of the page containing the `inline` directive.