summaryrefslogtreecommitdiff
path: root/doc/ikiwiki/directive/inline.mdwn
blob: 9c55e07c2ec95805c51f4fed1b1265ad27b51b6d (plain)

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

This is a directive that allows including one wiki page inside another. The most common use of inlining is generating blogs and RSS or Atom feeds.

Example:

\[[!inline pages="blog/* and !*/Discussion" show="10" rootpage="blog"]]

Any pages that match the specified [[PageSpec]] (in the example, any [[SubPage]] of "blog") will be part of the blog, and the newest 10 of them will appear in the page. Note that if files that are not pages match the [[PageSpec]], they will be included in the feed using RSS enclosures, which is useful for podcasting.

The optional rootpage parameter tells the wiki that new posts to this blog should default to being [[SubPages|SubPage]] of "blog", and enables a form at the top of the blog that can be used to add new items.

If you want your blog to have an archive page listing every post ever made to it, you can accomplish that like this:

\[[!inline pages="blog/* and !*/Discussion" archive="yes"]]

You can even create an automatically generated list of all the pages on the wiki, with the most recently added at the top, like this:

\[[!inline pages="* and !*/Discussion" archive="yes"]]

If you want to be able to add pages to a given blog feed by tagging them, you can do that too. To tag a page, just make it link to a page or pages that represent its tags. Then use the special link() [[PageSpec]] to match all pages that have a given tag:

\[[!inline pages="link(life)"]]

Or include some tags and exclude others:

\[[!inline pages="link(debian) and !link(social)"]]

usage

There are many parameters you can use with the inline directive. These are the commonly used ones:

  • pages - A [[PageSpec]] of the pages to inline.
  • show - Specify the maximum number of matching pages to inline. Default is 10, unless archiving, when the default is to show all. Set to 0 to show all matching pages.
  • archive - If set to "yes", only list page titles and some metadata, not full contents.
  • description - Sets the description of the rss feed if one is generated. Defaults to the name of the wiki.
  • skip - Specify a number of pages to skip displaying. Can be useful to produce a feed that only shows archived pages.
  • postform - Set to "yes" to enable a form to post new pages to a blog.
  • postformtext - Set to specify text that is displayed in a postform.
  • rootpage - Enable the postform, and allows controling where newly posted pages should go, by specifiying the page that they should be a [[SubPage]] of.

Here are some less often needed parameters:

  • actions - If set to "yes" add links to the bottom of the inlined pages for editing and discussion (if they would be shown at the top of the page itself).
  • rss - controls generation of an rss feed. If the wiki is configured to generate rss feeds by default, set to "no" to disable. If the wiki is configured to allowrss, set to "yes" to enable.
  • atom - controls generation of an atom feed. If the wiki is configured to generate atom feeds by default, set to "no" to disable. If the wiki is configured to allowatom, set to "yes" to enable.
  • feeds - controls generation of all types of feeds. Set to "no" to disable generating any feeds.
  • emptyfeeds - Set to "no" to disable generation of empty feeds. Has no effect if rootpage or postform is set.
  • template - Specifies the template to fill out to display each inlined page. By default the inlinepage template is used, while the archivepage template is used for archives. Set this parameter to use some other, custom template, such as the titlepage template that only shows post titles or the microblog template, optimised for microblogging. Note that you should still set archive=yes if your custom template does not include the page content.
  • raw - Rather than the default behavior of creating a blog, if raw is set to "yes", the page will be included raw, without additional markup around it, as if it were a literal part of the source of the inlining page.
  • sort - Controls how inlined pages are sorted. The default, "age" is to sort newest created pages first. Setting it to "title" will sort pages by title, and "mtime" sorts most recently modified pages first. If [[!cpan Sort::Naturally]] is installed, sort can be set to "title_natural" to sort by title with numbers treated as such ("1 2 9 10 20" instead of "1 10 2 20 9").
  • reverse - If set to "yes", causes the sort order to be reversed.
  • feedshow - Specify the maximum number of matching pages to include in the rss/atom feeds. The default is the same as the show value above.
  • feedonly - Only generate the feed, do not display the pages inline on the page.
  • quick - Build archives in quick mode, without reading page contents for metadata. By default, this also turns off generation of any feeds.
  • timeformat - Use this to specify how to display the time or date for pages in the blog. The format string is passed to the strftime(3) function.
  • feedpages - A [[PageSpec]] of inlined pages to include in the rss/atom feeds. The default is the same as the pages value above, and only pages matched by that value are included, but some of those can be excluded by specifying a tighter [[PageSpec]] here.
  • guid - If a URI is given here (perhaps a UUID prefixed with urn:uuid:), the Atom feed will have this as its <id>. The default is to use the URL of the page containing the inline directive.
  • feedfile - Can be used to change the name of the file generated for the feed. This is particularly useful if a page contains multiple feeds. For example, set "feedfile=feed" to cause it to generate page/feed.atom and/or page/feed.rss. This option is not supported if the wiki is configured not to use usedirs.
  • pagenames - If given instead of pages, this is interpreted as a space-separated list of links to pages (with the same [[SubPage/LinkingRules]] as in a [[ikiwiki/WikiLink]]), and they are inlined in exactly the order given: the sort and pages parameters cannot be used in conjunction with this one.

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

A related directive is the [[ikiwiki/directive/edittemplate]] directive, which allows default text for a new page to be specified.