Loop lists can be used to construct arbitrary lists based on the contents of a database field, a search, or other value (like a fixed list).
Loop accepts a search parameter which will do one-click searches on a database table (or file).
To iterate over all keys in a table, use the idiom ([loop search="ra=yes/ml=9999"] [/loop]
. ra=yes
sets mv_return_all
, which means ``match everything''. The ml=9999
limits matches to that many records -- you normally don't want to use that many, but it is a reasonable default maximum. If you want to not use the text file for searching a Minivend
DBM database, don't forget to use
st=db
(mv_searchtype).
Both can be sorted with [sort table:field:mod -start +number]
modifiers. See SORTING.
[loop prefix=label* list="item item item"* search="se=whatever"*]
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 by using different prefixes:
[loop prefix=size list="Small Medium Large"] [loop prefix=color list="Red White Blue"] [color-code]-[size-code]<BR> [/loop] <P> [/loop]
This will output:
Red-Small White-Small Blue-Small Red-Medium White-Medium Blue-Medium Red-Large White-Large Blue-Large
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''.
NOTE: This tag does not nest with other [if-loop-data ...]
tags.
NOTE: This tag does not nest with other [if-loop-field ...]
tags.
[else]NOT DIVISIBLE TEXT[/else]
is present, then the
NOT
DIVISIBLE
TEXT will be displayed.
For example:
[loop-alternate 2]EVEN[else]ODD[/else][/loop-alternate] [loop-alternate 3]BY 3[else]NOT by 3[/else][/loop-alternate]
[item-change]
but within loop lists.
[loop-field title]
is equivalent to
[loop-data products title]
.
Evaluates to the field name fieldname in the database, for the current item.
[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.