Loop lists can be used to construct arbitrary lists based on the contents
of a database field or other value. The [tag each table] [/tag]
construct uses the same interior tags, but iterates over every key of a
particular database table.
Both can be sorted with [sort table:field:mod -start +number]
modifiers. See SORTING.
[loop with="-a"* arg="item item item" search="se=whatever"]
HTML example:
<TABLE><TR MV="loop 1 2 3"><TD>[loop-code]</TD></TR></TABLE>
Returns a string consisting of the
LIST, repeated for every item in a comma-separated or
space-separated list. Operates in the same fashion as the [item-list]
tag, except for order-item-specific values. Intended to pull multiple
attributes from an item modifier -- but can be useful for other things,
like building a pre-ordained product list on a page.
Loop lists can be nested reliably in MiniVend 3.06 by using the with=``tag'' parameter. New syntax:
[loop arg="A B C"] [loop with="-a" arg="[loop-code]1 [loop-code]2 [loop-code]3"] [loop with="-b" arg="X Y Z"] [loop-code-a]-[loop-code-b] [/loop] [/loop] [/loop]
An example in the old syntax:
[compat] [loop 1 2 3] [loop-a 1 2 3 ] [loop-b 1 2 3] [loop-code].[loop-code-a].[loop-code-b] [/loop-b] [/loop-a] [/loop] [/compat]
All loop items in the inner loop-a loop need to have the with
value appended, i.e. [loop-field-a name]
, [loop-price-a]
, etc. Nesting is arbitrarily large, though it will be slow for many
levels.
You can do an arbitrary search with the search=``args'' parameter, just as in a one-click search:
[loop search="se=Americana/sf=category"] [loop-code] [loop-field title] [/loop]
The above will show all items with a category containing the whole world ``Americana'', and will work the same in both old and new syntax.
NOTE: This tag does not nest with other [if-loop-data ...]
tags.
NOTE: This tag does not nest with other [if-loop-field ...]
tags.
[on-change]
but within loop lists.
[loop-last][calc] return -1 if '[loop-field weight]' eq ''; return 1 if '[loop-field weight]' < 1; return 0; [/calc][/loop-last]
If this is contained in your [loop list]
and the weight field is empty, then a numerical -1
will be output from the [calc][/calc]
tags; the list will end and the item will not be shown. If the product's weight field is less than 1, a numerical 1 is
output. The item will be shown, but will be the last item shown.
[loop-next][calc][loop-field weight] < 1[/calc][/loop-next]
If this is contained in your [loop list]
and the product's weight field is less than 1, then a numerical 1
will be output from the
[calc][/calc]
operation. The item will not be shown.