Index  Up  <<  >>  


LOOP and TAG EACH

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 item item item] LIST [/loop]
named attributes: [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.

[if-loop-data table field] IF [else] ELSE [/else][/if-loop-field]
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.

[if-loop-field field] IF [else] ELSE [/else][/if-loop-field]
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.

[loop-accessories]
Evaluates to the value of the Accessories database entry for the item.

[loop-change marker]
Same as [on-change] but within loop lists.

[loop-code]
Evaluates to the product code for the current item.

[loop-data database fieldname]
Evaluates to the field name fieldname in the arbitrary database table database, for the current item.

[loop-description]
Evaluates to the product description (from the products file) for the current item.

[loop-field fieldname]
Evaluates to the field name fieldname in the database, for the current item.

[loop-increment]
Evaluates to the number of the item in the list. Used for numbering items in the list.

[loop-last]tags[/loop-last]
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.

[loop-next]tags[/loop-next]
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.

[loop-price n* noformat*]
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.


Index  Up  <<  >>