agoara cart install
[Agora Main Menu] [Support Main Menu]
CONTEMPORARY DIGITAL MARKETING
Site Design, Deployment & Management
Hosting Design Evaluation Contact


TEXT FILES

  • agorascript
  • html_Readme
  • CHANGES v4.0K
  • codehook
  • email
  • historical_info
  • multiple_gateways
  • NETSCAPE_MSIE
  • options_files
  • othertaxinfo
  • parsed_HTML
  • server-side_cookies
  • shipping
  • subcategories
  • using_UPS
  • variable_options
  • wrapper_readme
  • Parsed HTML and .inc files -- How agora.cgi displays things
    -----------------------------------------------------------
    Steve Kneizys
    (Copyright 2000)
    20-FEB-2000
    06-JAN-2001 updated
    13-JUL-2001 updated
    26-JAN-2002 updated
    See the variable options file in the DOCS directory as well!

    Having agora.cgi display items for you:  productPage.inc files:
    ---------------------------------------------------------------

    You can run agorascript from inside productPage.inc files, as well header
    and footer files.  See the agorascript.txt file in the DOCS directory for
    more information.

    The productPage.inc files determine how agora.cgi presents the data when
    it does a database lookup.  There are a couple different productPage.inc
    files that are shipped with agora.cgi that you may use as a starting point
    for your store, should you deecide to do a databaase-driven store.

    On the sample store, if you click on the category PERL, it browses the
    items in the category PERL.  It uses the default productPage.inc file
    found in the html/html-templates directory, displaying the possible
    options, qty field, add-to-cart button, picture, name, price, and
    description.  However, if you do a search, it displays things in a much
    simpler fashion, giving the user the option to display each item or its
    category in a fashion almost identical to clicking on a category link.  It
    is able to use a different productPage.inc file by including the hidden
    field "ppinc" in the form used for the search.  

    Here is how "On-The-Fly Page Generation" works.  If there is a field named
    "ppinc", then the value is used to search for the proper productPage.inc
    file.  If the syntax used is:

     <A HREF="agora.cgi?cart_id=%%cart_id%%&xm=on&p_id=10&ppinc=spec>
     Spec Sheet</a>

    Then item 10 is looked up (exact_match=on is the same as xm=on),
    and the productPage.inc file used is actually:

           productPage-spec.inc

    The program inserts a dash, followed by the name given in the ppinc=
    argument, and places that in the name just before the ".inc" part.  If
    that files is not found, the default file productPage.inc is used.

    Also, you may override the value of $sc_max_db_rows_returned that is set
    in the manager program under "Program Settings" by using the field name
    "maxp".  For example:

     <A HREF="agora.cgi?cart_id=%%cart_id%%&xm=on&keywords=memory&maxp=30>
     Show Me the word memory in the database with max 30 records</a>

    Shows items in the database with the word "memory" in them, 30 records
    at a time.

    It is not required to use multiple productPage.inc files.  If only
    one productPage.inc file is there it will be used for everything.  
    However, having multiple files adds great flexibility to the display
    of your pages.

    At runtime, various variables are substituted into the productPage.inc
    file.  The list of possible %% tokens is:

    Meta-information:
      %%URLofImages%%
      %%scriptURL%%
      %%cart_id%%
      %%agoracgi_ver%%

    Used to preserve "state" of agoracgi, preserving page displayed, cart_id,
    product, exact case/match, etc.:
      %%make_hidden_fields%% for FORMS
      %%href_fields%% for creating URL's

    Taken from the form data submitted to agora.cgi to search for/lookup
    items from the database:
      %%ppinc%%
      %%maxp%%
      %%product%% (not the same as the database value, this is a category
                   or partial category name)
      %%p_id%%    (not the same as the database value, this is the partial
                   or exact product ID you are looking up)
      %%keywords%%
      %%next%%
      %%exact_match%% exact_match=on means it matches on word boundaries
      %%exact_case%% exact_case=on means it matches the case of the word
      %%form_user1%% similar to keywords, search the user field 1 with user1=
      %%form_user2%% ditto, field 2
      %%form_user3%%   "     "    3
      %%form_user4%%   "     "    4
      %%form_user5%%   "     "    5

    Database fields for display of the database item:
      %%prodID%% (%%ProductID%% or %%Product_ID%% work too!)
      %%CategoryID%%
      %%price%% (with the currency symbol)
      %%cost%% (without the currency symbol)
      %%name%%
      %%image%%
      %%description%%
      %%shippingPrice%%,%%shipping%%,%%shippingWeight%% (are all the same thing)
      %%userFieldOne%%
      %%userFieldTwo%%
      %%userFieldThree%%
      %%userFieldFour%%
      %%userFieldFive%%
      %%optionFile%% (parsed and prepared OPTIONS file contents)
      %%itemID%%/ (special "parsed" and "prepared" variable, placed into cart

    Tokens to help generate options on automatically generated pages:
      %%AutoOptionNo%% -- generates opt # at the time the product is displayed
                          (not recommended to mix with ones that have numbers,
                          and you cannot use with variable options that rely
                          on agorascript.)

      %%Load_Option_File <comma sep list of options files>%% -- can be used
                          inside options files too.

    There is another %% token, the %%eval()%% token, that adds a math function
    (actually a perl eval function, can be things other than math!) to product
    page inc files.  After the other %% tokens are substituted, the %%eval()%%
    function will be executed.  If you insert a complex token such as:

    %%eval(%%cost%% * 5)%%

    first it will substitute the price, then evaluate the expression.  
    If the price is 3.00, then the entire expression is evaluated internally
    first to be

    %%eval(3.00 * 5)%%

    then the answer when the math is actually done is

    15

    and that is what will be displayed on the web browser.  You may
    also use these tokens within options HTML code, so the cost of
    the option depends on the price of the item.

    You can re-use the last value calculated, so that if you calculate
    the cost of an option then desire to display it, you do not have
    to do the calculation twice.  Here is an example that sets a option
    cost based on the actual price:

      <SELECT NAME = "option|%%AutoOptionNo%%|%%PRODUCT_ID%%">
        <OPTION VALUE = "|">Extended Warranty
        <OPTION
    VALUE = "1 Yr Ext. Warr.|%%eval(&format_price(0.1*%%cost%%))%%"
    >1 Year (%%eval(&display_price($myans))%%)
        <OPTION
    VALUE = "3 Yr Ext. Warr.|%%eval(&format_price(0.25*%%cost%%))%%"
    >3 Years (%%eval(&display_price($myans))%%)
      </SELECT>

    Notice that the $myans variable holds the result of the previous
    calculation, and you can then use that value in the next eval, in
    this example we turn it into a display price.  When putting something like
    this in an options file, the actual math will be done at the time the
    product page inc file is generating the browser HTML.

    The %%eval()%% token has it's limitations.  More complex evaluations
    should be done with agorascript.

    Parsed HTML pages and Header and Footer .inc files:
    ---------------------------------------------------
    When running agora.cgi with a simple URL like:

      http://www.yourdomain.com/cgi-bin/demacart/agora.cgi

    the program starts by displaying the file frontpage.html in the html/main
    directory.  All of the pages in the html/main and html/pages directories
    should only be displayed throught the agora.cgi program, never displayed
    to the customer directly.  The files in the html/main directory are
    special, the software displays them at startup and when completing the
    order.  The files in the html/pages directory may be displayed using the
    syntax:

      http://www.yourdomain.com/cgi-bin/demacart/agora.cgi?page=License.html

    When agora.cgi parses the file, it looks for several things.  One thing is
    it looks for <!--agorascript tags.  If it finds them and you have
    turned on agorascript in the manager program then it will execute the
    script either before or after replacement of %%tokens%% found on the page,
    depending on if the agorascript tag ends in -pre or -post.  (For more
    information on agorascript, see the agorascript.txt file in the DOCS
    directory.)  Some things, such as "cart_id=", do not need a %%CartID%%
    token after them, as the script will place the cart id after it without
    the token (but you can place it there if you desire.)  The %%tokens%% are
    replaced with the runtime values. Things such as the cart_id, your
    script's URL, and the path to your images can be substituted for the %%
    tokens.  Here is a list of the tokens that are substituted for pages
    displayed (many have already been defined):

       %%cart_id%%      The $cart_id which identifies the shopping cart   
       %%date%%         The cuurent date
       %%page%%         The name of the page beind displayed
       %%URLofImages%%  The URL of Images as set in the manager.cgi program
       %%agoracgi_ver%% Which version of the script you are running
       %%scriptURL%%
       %%href_fields%%
       %%make_hidden_fields%%
       %%ppinc%%
       %%maxp%%
       %%product%%
       %%p_id%%
       %%keywords%%
       %%next%%
       %%exact_match%%
       %%exact_case%%

    Using productPage.inc files in Static Pages
    -------------------------------------------

    Sometimes you want to use a certain ppinc file to display a few
    items from the product database, such as specials or items from
    a certain category, and desire to do it on a static page.  The
    best way to do this is to 'hard code' your query in agorascript.
    Here is an example that will run on the sample store:

      <table width="100%" cellspacing=0 cellpadding=0 border=0>
      <tr><td>
      <!--agorascript-pre
      { local (%save_data) = %form_data;
      local($body_html,$prod_message,$status,$total_row_count);
      { local (%form_data);
      local($main_program_running)='no';
      undef(%form_data);
      # search criteria and other specs go here
      $form_data{'maxp'}=4;
      $form_data{'ppinc'}='4a';
      $form_data{'p'}='html';
      &alias_and_override;
      ($body_html,$prod_message,$status,$total_row_count) =
            &create_html_page_from_db_body;
      }
      %form_data = %save_data;
      return "$body_html";
      } -->
      </td></tr></table>

    If you are flaging specials in user fields, for example, just change
    the $form-data{'p'} line to specify a user field and what to expect
    to see there.  

    ^ TOP || < Back