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.