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.
named attributes: [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''.
Outputs the IF if the field in table is non-empty, and the ELSE (if any) otherwise.
NOTE: This tag does not nest with other [if-loop-data ...]
tags.
Outputs the IF if the field in the products table is non-empty, and the ELSE (if any) otherwise.
NOTE: This tag does not nest with other [if-loop-field ...]
tags.
Evaluates to the value of the Accessories database entry for the item.
Set up an alternation sequence. If the loop-increment is divisible by N, the text will be displayed. If an [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]
Terminate the alternation area.
Same as [item-change]
but within loop lists.
Evaluates to the product code for the current item.
Evaluates to the field name fieldname in the arbitrary database table database, for the current item.
Evaluates to the product description (from the products file) for the current item.
The [loop-field ...] tag is special in that it looks in any of the tables
defined as ProductFiles, in that order, for the data, returning the value only if that key is
defined. In most catalogs, where ProductFiles is not defined (i.e. the demo), [loop-field title]
is equivalent to
[loop-data products title]
.
Evaluates to the field name fieldname in the database, for the current item.
Evaluates to the number of the item in the list. Used for numbering items in the list.
Evaluates the output of the MiniVend tags encased inside, and if it evaluates to a numerical non-zero number (i.e. 1, 23, or -1) then the loop iteration will terminate. If the evaluated number is negative, then the item itself will be skipped. If the evaluated number is positive, then the item itself will be shown but will be last on the list.
[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.
Evaluates the output of the MiniVend tags encased inside, and if it evaluates to a numerical non-zero number (i.e. 1, 23, or -1) then the loop will be skipped with no output. Example:
[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.
Evaluates to the price for optional quantity n (from the products file) of the current item, with currency formatting. If the optional ``noformat'' is set, then currency formatting will not be applied.