A bit about "simple"

### Index Up << >>

## A bit about "simple"

The simple catalog really isn't. It is a fairly full-featured demonstration of MiniVend capabilities, though not nearly all of its features are used there.

It uses the `Variable` feature extensively to simplify hand page editing. Basically speaking, a `Variable` is a define that allows you to substitute text for a simple __VARIABLE__ string in your page.

For example, in the simple demo, this is a complete page with the standard layout:

        __LOGOBAR__
        __MENUBAR__
        __LEFTSIDE__

            This is your content.

        __RIGHTSIDE__
        __MENUBOTTOM__
        __COPYRIGHT__

The way this looks on the page, roughly, is:

        +--------------------------------------------------------+
        |   __LOGOBAR__                                          |
        |--------------------------------------------------------+
        |   __MENUBAR__                                          |
        |--------------+-------------------------+---------------+
        |              |                         |               |
        | __LEFTSIDE__ |   This is your content  | __RIGHTSIDE__ |
        |              |                         |               |
        |              |                         |               |
        +--------------+-------------------------+---------------+
        |   __MENUBOTTOM__                                       |
        |--------------------------------------------------------+
        |   __COPYRIGHT__                                        |
        +--------------------------------------------------------+

The __RIGHTSIDE__ is simply defined to be empty, closing table HTML in most cases, so it really is this in most pages:

        +--------------------------------------------------------+
        |   __LOGOBAR__                                          |
        |--------------------------------------------------------+
        |   __MENUBAR__                                          |
        |--------------+-----------------------------------------+
        |              |                                         |
        | __LEFTSIDE__ |   This is your content                  |
        |              |                                         |
        |              |                                         |
        +--------------+-----------------------------------------+
        |   __MENUBOTTOM__                                       |
        |--------------------------------------------------------+
        |   __COPYRIGHT__                                        |
        +--------------------------------------------------------+

The variables are defined in `catalog.cfg`, and come from files in the config directory. There are conditional templates with some different color schemes.

Once you get used to using this method, it can be quite convenient. But you may certainly choose to use your own method, perhaps one based on an HTML editor. MiniVend can coexist with some editors; ones that have a <NOTOUCH> </NOTOUCH> or <NOEDIT> </NOEDIT> pair to define areas that should not be ``masterminded'' by the editor are best.

Bear in mind that this templating method and database layout of the simple catalog is a loose suggestion on how your catalog might be organized. Many users decide to do their own database structure for product display. What you can do is more limited by your imagination than anything.

Yet most users stick with the userdb and checkout strategies employed in the catalog. This is because they have been developed over a period of years and work. Still, these can be customized; you can make it operate like Amazon or another site if you wish.

As stated before, MiniVend catalogs are all about the database. The simple demo has several tables:

area
  A table designed to implement a dynamic navigation bar. It is read and parsed to display the areas `Galleries`, `Other Stuff`, and `Links` as distributed. Simply by changing the contents of the area table you can change the left side navigation bar. The value of the field selector is used to search the cat table to find which categories belong in each area.

cat
  The product structure of simple follows a single-level categorization. Categories are listed in the cat database table. The cat table is designed to allow you to display meta-information about each category when it is displayed. The fields are:

code
  The category code. Must be unique.

area
  The area this category should be displayed in.

selector
  The selector that is used to scan the products table for products in the category.

name
  A label to display, so that you don't have to live with the code or selector.

banner_text
  Text to display in a banner or heading.

subs
  Placeholder in the demo; intended to allow selection of certain subcategories within the category.

sort
  The sort order if you don't want alphanumeric on name.

url
  A URL to link to instead of the default search in the products database.

country
  A list of countries; used to build select boxes and select shipping modes based on countries.

inventory
  Two fields; code and quantity. Minivend's demo will decrement the quantity based on the sale. That is easy; your method of keeping inventory current is the hard part. It might make sense to add a field with the usual shipping time of the product; something like ``ships within 24 hours'', or ``back ordered; allow 2-4 weeks for delivery''.

pricing
  A database that works in conjunction with the `CommonAdjust` directive to allow quantity pricing, either for one product or for a group of products (sometimes known as mix-and-match). The fields `q2,q5,q10,etc.` are for the quantity levels; the `price_group` field selects the mix-and-match category for the product.

products
  The main product table. This is where you store your product information. You can add, delete, or ignore fields as you choose. Field by field:

sku
  The unique identifier for the product. Though theoretically it can contain most any character, you should use only characters of the class `A-Z a-z 0-9 _ -` if you want to be easily compatible with SQL databases and URL encoding. Other characters can cause problems; a slash ( `/`) can interfere with URLs and filenames; a colon (`:`) can interfere with database representations (or file names on some operating systems); and there are other possible compatibility situations with other characters.

description
  A short description for the product, used for displaying in the shopping cart, receipt, and order report. Keep it short.

title
  This is somewhat catalog-specific since it applies to art. However, it would also apply to books, CDs, or other items.

artist
  This is somewhat catalog-specific since it applies to art. However, it would also apply to CDs, or some other items. You can change it to anything if you remember to change the field names in your catalog pages to match; to do so look for all occurences of the string ``artist'' in the pages, `special_pages`, and etc directories.

comment
  A long description of the product. If you use the Minivend internal database, the field size is unlimited; if you use another type of database then you will be dependent on the field type you select.

display
  Catalog-specific to show the museum the art work is displayed at. You can use or delete this field as you wish.

image
  The image filename for the product. Many people add a `thumb` field to contain the name of a small image for search list display.

price
  The quantity-one price of the product.

category
  The category used for selection in lists. It is possible to place a product in more than one category, though you will have some display and banner heading decisions to make based upon this. You can use embedded Perl or other methods to deal with this.

nontaxable
  If set to `1`, the product is not taxable and its price will not be used in a salestax calculation.

weight
  A numeric value of the weight, used for determining shipping costs. Normally in pounds, but can be anything your shipping routines will handle.

size
  A comma-separated list of options as used in `Accessories`. See the `flypage.html` and `ord/basket.html` pages for examples of how it is used.

color
  A comma-separated list of options as used in `Accessories`. See the `flypage.html` and `ord/basket.html` pages for examples of how it is used.

related
  Used in the demo to display ``upsells'', meaning opportunities to purchase an additional item when you purchase this one. Contains a list of SKUs to be offered.

featured
  As used in this demo, the only value that means anything is `front`. If that is contained in the field, this product will possibly be featured on the front page via random selection. See the `index.html` page for how it integrates with `[loop search=something random=3]`.

orderline
  Every line item that is actually ordered is detailed in this table. See the page `query/check_orders.html` for how it might be used; see `etc/report` for how it is added to.

transactions
  Each individual customer order is detailed in this table. See the page `query/check_orders.html` for how it might be used; see `etc/report` for how it is added to.

userdb
  The user database used for maintaining customer address information, account information, preferences, and more. See `UserDB`.

### Index Up << >>