Make aggregated items be internal pages if --aggregateinternal is used.
authorSimon McVittie <http://smcv.pseudorandom.co.uk/>
Sat, 12 Jul 2008 17:15:11 +0000 (18:15 +0100)
committerSimon McVittie <http://smcv.pseudorandom.co.uk/>
Sat, 12 Jul 2008 17:15:11 +0000 (18:15 +0100)
This addresses <http://ikiwiki.info/todo/aggregate_to_internal_pages/>
in a simple way. With this approach, a flag day is required, on which all
users of aggregated pages start to inline them using the internal() pagespec;
after that, the aggregateinternal option can safely be switched on in the
setup file (and the old aggregated pages can be deleted by hand).

IkiWiki/Plugin/aggregate.pm

index b5354a823482e243e3c7d9fdd9ec4a2db6e010eb..4fbcde390d59fd232f9fbfaf63f358259f74b423 100644 (file)
@@ -30,7 +30,10 @@ sub getopt () { #{{{
         eval q{use Getopt::Long};
        error($@) if $@;
         Getopt::Long::Configure('pass_through');
-        GetOptions("aggregate" => \$config{aggregate});
+        GetOptions(
+               "aggregate" => \$config{aggregate},
+               "aggregateinternal!" => \$config{aggregateinternal},
+       );
 } #}}}
 
 sub checkconfig () { #{{{
@@ -595,7 +598,7 @@ sub pagefile ($) { #{{{
 } #}}}
 
 sub htmlfn ($) { #{{{
-       return shift().".".$config{htmlext};
+       return shift().".".($config{aggregateinternal} ? "_" : "").$config{htmlext};
 } #}}}
 
 my $aggregatelock;