incomplete aggregation (no bodies)
[ikiwiki] / doc / plugins / aggregate.mdwn
1 [[!template id=plugin name=aggregate author="[[Joey]]"]]
2 [[!tag type/useful]]
3
4 This plugin allows content from other feeds to be aggregated into the
5 wiki. To specify feeds to aggregate, use the
6 [[ikiwiki/directive/aggregate]] [[ikiwiki/directive]].
7
8 New users of aggregate should enable the `aggregateinternal => 1` option in the
9 .setup file. If you don't do so, you will need to enable the [[html]] plugin
10 as well as aggregate itself, since feed entries will be stored as HTML.
11
12 The [[meta]] and [[tag]] plugins are also recommended. The
13 [[htmltidy]] plugin is suggested, since feeds can easily contain html
14 problems, some of which tidy can fix.
15
16 You will need to run ikiwiki periodically from a cron job, passing it the
17 --aggregate parameter, to make it check for new posts. Here's an example
18 crontab entry:
19
20         */15 * * * * ikiwiki --setup my.wiki --aggregate --refresh
21
22 Alternatively, you can allow `ikiwiki.cgi` to trigger the aggregation. You
23 should only need this if for some reason you cannot use cron, and instead
24 want to use a service such as [WebCron](http://webcron.org). To enable
25 this, turn on `aggregate_webtrigger` in your setup file. The url to
26 visit is `http://whatever/ikiwiki.cgi?do=aggregate_webtrigger`. Anyone
27 can visit the url to trigger an aggregation run, but it will only check
28 each feed if its `updateinterval` has passed.
29
30 ## internal pages and `aggregateinternal`
31
32 This plugin creates a page for each aggregated item. 
33
34 If the `aggregateinternal` option is enabled in the setup file (which is
35 recommended), aggregated pages are stored in the source directory with a
36 "._aggregated" extension. These pages cannot be edited by web users, and
37 do not generate first-class wiki pages. They can still be inlined into a
38 blog, but you have to use `internal` in [[PageSpecs|IkiWiki/PageSpec]],
39 like `internal(blog/*)`.
40
41 For backward compatibility, the default is that these pages have the
42 ".html" extension, and are first-class wiki pages -- each one generates
43 a separate HTML page in the output, and they can even be edited.
44
45 That turns out to not be ideal for aggregated content, because publishing
46 files for each of those pages is a waste of disk space and CPU, and you
47 probably don't want to allow them to be edited. So, there is an alternative
48 method that can be used (and is recommended), turned on by the
49 `aggregateinternal` option in the setup file.
50
51 If you are already using aggregate and want to enable `aggregateinternal`,
52 you should follow this process:
53
54 1. Update all [[PageSpecs|ikiwiki/PageSpec]] that refer to the aggregated
55    pages -- such as those in inlines. Put "internal()" around globs 
56    in those PageSpecs. For example, if the PageSpec was `foo/*`, it should
57    be changed to `internal(foo/*)`. This has to be done because internal
58    pages are not matched by regular globs.
59 2. Turn on `aggregateinternal` in the setup file.
60 3. Use [[ikiwiki-transition]] to rename all existing aggregated `.html`
61    files in the srcdir. The command to run is
62    `ikiwiki-transition aggregateinternal $setupfile`,
63 4. Refresh the wiki. (`ikiwiki -setup your.setup -refresh`)