If you enable the catalog directive OnFly, setting it to the name of a tag (possibly a UserTag) that can handle its calls, then MiniVend will add items to the basket that are not in the product database.
The OnFly directive accepts a tag name:
OnFly onfly
MiniVend supplies the onfly tag which will work with the descriptions below. If your item code is not
to be named mv_order_item then you must perform a rename in the Autoload routine.
A basic link can be generated like:
[area form="
mv_todo=refresh
mv_order_item=000101
mv_order_fly=description=An on-the-fly item|price=100.01
"]
The form parameter value mv_order_fly can contain any number of fields which will set corresponding parameters in
the item attributes. The fields are separated by the pipe (|) character and contain value-parmeter pairs separated by an = sign. (These are URL-encoded by the [area ...] tag, of course.) You can set a size, color, or any other parameter. If you want to see what the actual
URL will look like, put the above example in a page and study it.
The special attribute mv_price can be used in conjunction with the
CommonAdjust atom $ to set the price for checkout and display.
The [item-list] sub-tag [item-description], when used with an item-list, will use the item attribute description to display in the basket.
If you wish to set up a UserTag to process on-the-fly items, it should accept a call of
usertag(mv_item_code, mv_item_quantity, mv_order_fly)
The mv_item_code and mv_order_fly parameters are required to trigger MiniVend's add_item routine (along with mv_todo=refresh to set the action).
The item will always act as if SeparateItems or mv_separate_items is set.
Multiple items can be ordered at once by stacking the variables. If there
is only one mv_order_item instance, however, you can stack the mv_order_fly
variable so that all are concatenated together as with the | symbol. So the above example could be done as:
[area form="
mv_todo=refresh
mv_order_item=000101
mv_order_fly=description=An on-the-fly item
mv_order_fly=price=100.00
"]
Multiple items would need multiple instances of mv_order_item with a corresponding mv_order_fly for each mv_order_item. You can order both 000101 and 000101 as follows:
[area form="
mv_todo=refresh
mv_order_item=000101
mv_order_fly=description=An on-the-fly item|price=100.00
mv_order_item=000102
mv_order_fly=description=Another on-the-fly item|price=200.00
"]
The following two forms correspond to the above two examples, in order, with the slight refinement of adding a quantity:
<FORM ACTION="[area process]" METHOD=POST>
<INPUT TYPE=hidden NAME=mv_todo VALUE="refresh">
<INPUT TYPE=hidden NAME=mv_order_item VALUE="000101">
Qty: <INPUT SIZE=2 NAME=mv_order_quantity VALUE="1">
<INPUT TYPE=hidden NAME=mv_order_fly
VALUE="description=An on-the-fly item|price=100.00">
<INPUT TYPE=submit VALUE="Order button">
</FORM>
<FORM ACTION="[area process]" METHOD=POST>
<INPUT TYPE=hidden NAME=mv_todo VALUE="refresh">
<INPUT TYPE=hidden NAME=mv_order_item VALUE="000101">
Qty: <INPUT SIZE=2 NAME=mv_order_quantity VALUE="1"><BR>
<INPUT TYPE=hidden NAME=mv_order_fly
VALUE="description=An on-the-fly item|price=100.00">
<INPUT TYPE=hidden NAME=mv_order_item VALUE="000102">
Qty: <INPUT SIZE=2 NAME=mv_order_quantity VALUE="1"><BR>
<INPUT TYPE=hidden NAME=mv_order_fly
VALUE="description=Another on-the-fly item|price=200.00">
<INPUT TYPE=submit VALUE="Order two different with a button">
</FORM>