[pmwiki-users] PAGELIST / Math / summatory
Eemeli Aro
eemeli at gmail.com
Thu Sep 3 13:26:16 CDT 2009
2009/9/3 edwin marte <edwin.marte at leidba.com>:
> What I have is SomeGroup, wich have page1, page2, page3, etc. Every page
> have a page variable let's say called DATA.
>
> So if we have let's say:
>
> {SomeGroup.page1$:DATA} =10
> {SomeGroup.page2$:DATA} =20
> {SomeGroup.page3$:DATA} =15
>
> I want to be able to build a pagelist for giving me Total:45
>
> Any Ideas?
This is a bit tricky, but entirely possible using templated pagelists
and markup expressions.
The tricky part is due to markup expressions being handled before
pagelists, so you can't include a (:pagelist:) inside a {(markup
expression)}. However, after pagelists are generated their contents
are passed through the rendering again, so you can build a pagelist
template that'll produce a valid markup expression to do your variable
addition. The second tricky part comes from markup expressions needing
to be on a single line.
For the following to work, you'll need {(math)} from
<http://www.pmwiki.org/wiki/Cookbook/MarkupExpressionSamples#math>.
First, the template needs to be defined somewhere:
[[#datasum]](:template first:){(math 0(:template
each:)+0{=$:DATA}(:template last:) )}
[[#datasumend]]
In case that's mangled in the mailing, the above needs to be on
exactly two rows, each started by '[[#datasum'. The extra 0's are
necessary for handling pages that don't have $:DATA set to some value.
And then you can use the following pagelist to get the sum:
(:pagelist fmt=#datasum group=SomeGroup:)
Alternatively, the MarkupExpresssionSamples page also has {(sum)},
with which the template should be:
[[#datasum]](:template first:){(sum (:template
each:){=$:DATA}(:template last:) )}
[[#datasumend]]
eemeli
More information about the pmwiki-users
mailing list