If multiple catalogs are to be run, each must have a catalog.cfg
file located in the catalog base directory. It contains most of the
configurable parameters for MiniVend -- each is independent from catalog to
catalog.
In the catalog configuration file, the directives MailOrderTo and VendURL are required. They are not defined with defaults, and no catalog will operate unless and until they are set with a value.
Many powerful procedures are available in the catalog.cfg file. First, you
can set a Variable
and use its results in a subsequent configuration setting if ParseVariables
is on:
Variable SERVER_NAME www.minivend.com Variable CGI_URL /cgi-bin/demo ParseVariables Yes VendURL http://__SERVER_NAME____CGI_URL__ ParseVariables No
You can define values in multiline form by using the <<HERE document method:
Variable MYSTUFF <<EOF This is my stuff, and I am pretty proud of it. EOF
As with all here documents, the terminating string must be the ONLY THING ON THE LINE. No leading or trailing characters are allowed, even whitespace.
You can pull a value from a file with <file:
Variable MYSTUFF <file
This works well for includes that must be of the highest possible performance -- they can be simply placed in a page with __VARIABLE__.
You can set common settings in one file:
#include common.cfg
Or all files in one directory
#include usertag/*
You can use #ifdef / #endif and #ifndef / #endif pairs:
Variable ORDERS_TO email_address #ifdef ORDERS_TO ParseVariables Yes MailOrderTo __ORDERS_TO__ ParseVariables No #endif #ifdef ORDERS_TO =~ /foo.com/ # Send all orders at foo.com to one place now # Set ORDERS_TO to stop default setting Variable ORDERS_TO 1 MailOrderTo orders@foo.com #endif #ifdef ORDERS_TO eq 'nobody@nowhere.com' # Better change to something else, set ORDERS_TO to stop default Variable ORDERS_TO 1 MailOrderTo someone@somewhere.com #endif #ifndef ORDERS_TO #Needs to go somewhere.... MailOrderTo webmaster@localhost #endif
You can set up almost any configuration variable to be tied to a subroutine
if you have the Tie::Watch module installed. It uses a notation like the
<<
HERE document, but <&HERE
is the notation. See MiniVend Programming
for details.