Sunteți pe pagina 1din 236

PDG Commerce 4.

0
Technical Reference Guide

PDG Software, Inc. 1751 Montreal Circle, Suite B Tucker, Georgia 30084-6802
Copyright 1998 - 2005 PDG Software, Inc.; All rights reserved. PDG Software, Inc. (PDG Software) retains all ownership rights to the software programs (referred to herein as Software) offered by PDG Software and related documentation. Use of the Software and related documentation is governed by the license agreement accompanying the Software and applicable copyright law. THIS DOCUMENTATION IS PROVIDED AS-IS WITHOUT WARRANTY OF ANY KIND. IN NO EVENT SHALL PDG SOFTWARE BE LIABLE FOR ANY LOSS OF PROFITS, LOSS OF BUSINESS, LOSS OF USE OR DATA, INTERRUPTION OF BUSINESS, OR FOR INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY KIND, ARISING FROM ANY ERROR IN THIS DOCUMENTATION. PDG Software, Inc. http://www.pdgsoft.com

June, 2005

Contents
Chapter 1 Chapter 2 Introduction CGI and Cookies 9 11

A Note About Cookie Usage ..............................................................................12

Chapter 3 Chapter 4

Country List HTML Template Files

13 27

New Functions in PDG Commerce ....................................................................28 Include and CGI Tags .........................................................................................32 Universal Tags ....................................................................................................33 Basket Template File ..........................................................................................40 AddItem Template File .......................................................................................59 Inventory Option Template File .........................................................................62 Item Template File..............................................................................................62 MultiAdd Template File .....................................................................................80 Checkout Template File......................................................................................83 Verify Template File...........................................................................................96 ThankYou Template File ..................................................................................114 DenyCredit Template File ................................................................................129 AcceptCredit Template File..............................................................................131 Search Results Template...................................................................................131 Templates Specific to Internet Payment Services.............................................142 Category Template............................................................................................142 ShipCompare Template ....................................................................................144 Verify - Inventory Error Template....................................................................146 Error Template ..................................................................................................147 Anonymous Checkout Template File ...............................................................148 UPS Track Template File .................................................................................149 UPS Tracking Result Template File .................................................................149 UPS Address Validation Template File............................................................150

Email Templates ...............................................................................................151 SSL Templates ..................................................................................................152 Empty Templates ..............................................................................................153 Site Design Templates ......................................................................................154 User Database Templates..................................................................................155 User Database Template Tags ..........................................................................163 Multiple Shipping Templates............................................................................166 Multiple Shipping Template Tags ....................................................................174

Chapter 5

PDG Commerce Actions

177

Pricing Category Code......................................................................................178 Search Action....................................................................................................178 PreAdd Action ..................................................................................................181 MultiPreAdd Action .........................................................................................183 Add Action........................................................................................................184 MultiAdd Action...............................................................................................187 MAdd.[#] Action ..............................................................................................190 OptFullAdd Action ...........................................................................................192 OAdd Action.....................................................................................................195 Remove Action .................................................................................................196 RemoveAll Action ............................................................................................196 Display Action ..................................................................................................197 Recalc Action....................................................................................................198 Return Action....................................................................................................199 Checkout Action ...............................................................................................199 Verify Action ....................................................................................................200 BuyIt Action .....................................................................................................207 ListCategories Action .......................................................................................215 Login Action .....................................................................................................216 UPS Tracking Action........................................................................................217 Register Action .................................................................................................219 NewGuest Action..............................................................................................220 Logout Action ...................................................................................................221 SetBasket Action...............................................................................................221 RegisterNewUser Action ..................................................................................221 DisplayUser Action...........................................................................................223 UpdateCustDetails Action ................................................................................223 UpdateContact Action.......................................................................................224 AddNewContact Action....................................................................................226 RemoveContact Action.....................................................................................226 SplitAddress Action ..........................................................................................226 UseShipForBill Action .....................................................................................227

UseBillForShip Action .....................................................................................227 EmailAccountInfo Action.................................................................................227 Commerce Action Examples ............................................................................228

Chapter 6

Softgood Data Tags

231

!---INVOICE---.................................................................................................231 !---SKU--- .........................................................................................................231 !---QTY--- .........................................................................................................232 !---SCRIPT-NAME--- ......................................................................................232 !---DELIVERPAYLOAD--- .............................................................................232 !---EXEC---.......................................................................................................232

Chapter 1

Introduction
What is the Technical Reference Guide?

his guide has been prepared for use by technical support staff, or advanced users, who may need technical information about PDG Commerce. The Technical Reference Guide will help you with customizing certain areas of your PDG Commerce. It should also give you a better understanding as to how PDG Commerce works. This guide is intended for users of PDG Commerce who have an advanced understanding of how Web sites work, such as Web masters, site administrators and IT professionals. This Technical Reference Guide assumes that you have already read the PDG Commerce User Guide. The PDG Commerce Technical Reference Guide is divided into six chapters:
Introduction CGI and Cookies Country List HTML Template Files Cart Actions Softgoods

At PDG we want to make sure that you get the most out of our software. That is why weve provided this and other manuals to help you better understand our products many features. Other guides you may find useful are:
PDG Commerce Installation Guide PDG Commerce Upgrade Guide PDG Commerce User Guide PDG Create Database Utility Guide

PDG Commerce 4.0 -- Technical Reference Guide

Chapter 1 -- Introduction

PDG External Data Wizard Guide PDG Key Manager Guide PDG Permissions Guide Dreamweaver Component Guide FrontPage Component Guide NetObjects Component Guide

10

PDG Commerce 4.0 -- Technical Reference Guide

Chapter 2

CGI and Cookies


What is CGI?

he Common Gateway Interface (known as CGI) is a standard method of writing software that can receive data from a Web server. CGI programs are programs written to receive data from a Web server in order to perform additional processing on the data. This processing can be implemented to store the information, perform some operation on the data, and/or return results of the operation back to the Web server to be sent to the end user. CGI programs allow Webmasters and Web site owners to extend their Web site's functionality beyond traditional HTML. Because CGI programs are software programs, they must be written and developed. CGI programs can be written in almost any language: C, C++, Basic, Shell script (for Unix users), Perl (for Unix users and, now, a growing segment of NT users), and other languages as well. Typically, CGI programs are custom developed for a Web site, meeting the exact requirements dictated by the Webmaster. However, there is a growing collection of pre-made CGI programs. Pre-made CGI programs offer advantages and disadvantages over custom CGI programs. Pre-made CGI programs may not fit every requirement needed or dictated by a Webmaster. However, pre-made CGI programs are usually tested more thoroughly and are used by more than just one Web site. Pre-made CGI programs may also be backed by a company, with technical support and/or money back guarantees. PDG Commerce is the latter. PDG Commerce is a pre-made and prepackaged CGI program.

PDG Commerce 4.0 -- Technical Reference Guide

11

Chapter 2 -- CGI and Cookies

A Note About Cookie Usage


PDG Commerce uses cookies, which have been used controversially by some Web sites to obtain marketing information without the visitor's knowledge. PDG Commerce uses cookies so that a customer's cart can be remembered between visits. No other information is used in the cookie for any purpose. Customers and Web site administrators may verify this with any of the popular cookie administration programs currently available on the market. Under no circumstance can a cookie load or execute a virus on your system, nor can it read and send files or data through the Internet. A wealth of information on cookies can be found at Cookie Central, at http://www.cookiecentral.com. This site contains valuable and meaningful information on cookies, and lists all of the details of cookies, including what they are, what they do, and what they cannot do. Also realize that cookies are used extensively on some very popular and large Web stores, including Amazon.com. By using cookies, they are better able to serve their customers and increase business and revenue.

12

PDG Commerce 4.0 -- Technical Reference Guide

Chapter 3

Country List

he following table provides the complete list of countries that PDG Commerce recognizes for its various operations and actions. These codes are used in all shipping & handling rules, as well as for UPS and USPS pricing of international shipments. The Index is used for the Default_Country Key found in the Shopper.conf file.

Code 1 2 3 4 5 6 7 8 9 10 11 12 14 15 16 17

Country Abu Dhabi (United Arab Emirates) Admiralty Islands (Papua New Guinea) Afganistan Aitutaki (Cook Islands) (New Zealand) Ajman (United Arab Emirates) Aland Island (Finland) Albania Alderney, Channel Islands (Great Britain) Algeria Alhucemas (Spain) Alofi Island (New Caledonia) Andaman Islands (India) Andorra Angola Anguilla Anjouan (Comoros)

PDG Commerce 4.0 Technical Reference Guide

13

Chapter 3 -- Country List

Code 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54

Country Annobon Island (Equitorial Guinea) Antigua & Barbuda Argentia Armenia Aruba Ascension Astypalaia (Greece) Atafu (Western Samoa) Australia Austria Avarua (New Zealand) Azerbaijan Azores Bahamas Bahrain Balearic Islands (Spain) Baluchistan (Pakistan) Bangladesh Banks Island (Vanuatu) Barbados Barbuda (Antigua & Barbuda) Barthelemy (Guadeloupe) Belarus Belgium Belize Benin Bermuda Bhutan Bismark Archipelago (Papua New Guinea) Bolivia Bonaire (Netherlands Antilles) Borabora (French Polynesia) Borneo (Kalimantan) (Indonesia) Borneo (North) (Malaysia) Bosnia-Herzegovina Botswana Bougainville (Papua New Guinea)

14

PDG Commerce 4.0 -- Technical Reference Guide

Chapter 3 -- Country List

Code 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91

Country Bourbon (Reunion) Brazil British Guiana (Guyana) British Honduras (Belize) British Virgin Islands Brunei Darussalam Buka (Papua New Guinea) Bulgaria Burkina Faso Burma Burundi Caicos Islands (Turks & Caicos Islands) Cambodia Cameroon Canada Canary Islands (Spain) Canton Island (Kiribati) Cape Verde Cayman Islands Central African Republic Ceuta (Spain) Ceylon (Sri Lanka) Chad Chaferinas Islands (Spain) Chalki (Greece) Channel Islands (Jersey, Guernsey, Alderney and Sark) (Great Britain) Chile China Christmas Island (Australia) Christmas Island (Kiribati) Cocos Island (Australia) Columbia Comoros Congo (Brazzaville), Republic of the Congo, Democratic Republic of the Cook Islands (New Zealand) Corisco Island (Equitorial Guinea)
PDG Commerce 4.0 -- Technical Reference Guide 15

Chapter 3 -- Country List

Code 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128

Country Corsica (France) Costa Rica Cote dIvoire (Ivory Coast) Crete (Greece) Croatia Cuba Cumino Island (Malta) Curacao (Netherland Antilles) Cyjrenaica (Libia) Cyprus Czech Republic Dahomey (Benin) Damao (India) Danger Islands (New Zealand) Denmark Desirade Island (Guadeloupe) Diu (India) Djibouti Dodecanese Ilands (Greece) Doha (Qatar) Dominica Dominican Republic Dubai (United Arab Emirates) East Timor (Indonesia) Ecuador Egypt Eire (Ireland) El Salvador Ellice Islands (Tuvalu) Elobey Islands (Equitorial Guinea) Enderbury Islands (Kiribati) England (Great Britain and Northern Ireland) Equitorial Guinea Eritrea Estonia Ethopia Fakaofo (Western Samoa)

16

PDG Commerce 4.0 -- Technical Reference Guide

Chapter 3 -- Country List

Code 129 130 131 132 133 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 166 167

Country Falkland Islands Fanning Island (Kiribati) Faroe Islands Fernando Po (Equitorial Guinea) Fezzan (Libya) Fiji Finland Formosa (Taiwain) France French Guiana French Oceania (French Polynesia) French Polynesia French Somaliland (Djibouti) French Territory of the Afars and Issas (Djibouti) French West Indies (Guadeloupe) Friendly Islands (Tonga) Fujairah (United Arab Emirates) Futuna (Wallis and Futuna Islands) Gabon Gambia Gambier (French Polynesia) Georgia, Republic of Germany Ghana Gilbraltar Gilbert Islands (Kiribati) Goa (India) Gozo Island (Malta) Grand Comoro (Comoros) Great Britain and Northern Ireland Greece Greenland Grenada Gernadines (St. Vincent & the Grenadines) Guadeloupe Guatemala Guernsey, Channel Islands (Great Britain)
PDG Commerce 4.0 -- Technical Reference Guide 17

Chapter 3 -- Country List

Code 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204

Country Guinea Guinea-Bissau Guyana Hainan Island (China) Haiti Hashemite Kingdom (Jordan) Hervey (Cook Islands) (New Zealand) Hivaoa (French Polynesia) Holland (Netherlands) Honduras Hong Kong Huahine (French Polynesia) Huan Island (New Caledonia) Hungary Iceland India Indonesia Iran Iraq Ireland Irian Barat (Indonesia) Isle of Man (Great Britain) Isle of Pines (New Caledonia) Isle of Pines, West Indies (Cuba) Israel Italy Jamaica Japan Jersey (Channel Islands) (Great Britain) Johore (Malaysia) Jordan Kalymnos (Greece) Kampuchea (Cambodia) Karpathos (Greece) Kassos (Greece) Kastellorizon (Greece) Kazakhstan

18

PDG Commerce 4.0 -- Technical Reference Guide

Chapter 3 -- Country List

Code 205 206 207 208 209 210 211 212 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242

Country Kedah (Malaysia) Keeling Islands (Australia) Kelantan (Malaysia) Kenya Kiribati Korea, Democratic Peoples Republic of (North Korea) Korea, Republic of (South Korea) Kos (Greece) Kowloon (Hong Kong) Kuwait Kyrgyzstan Labrador (Canada) Labuan (Malaysia) Laos Latvia Lebanon Leipsos (Greece) Leros (Greece) Les Saints Island (Guadeloupe) Lesotho Liberia Libya Liechtenstein Lithuania Lord Howe Island (Australia) Loyalty Islands (New Caledonia) Luxemburg Macao Macau (Macao) Macedonia, Republic of Madagascar Maderia Islands (Portugal) Madeira Islands Malacca (Malaysia) Malagasy Republic (Madagascar) Malawi Malaya (Malaysia)
PDG Commerce 4.0 -- Technical Reference Guide 19

Chapter 3 -- Country List

Code 243 244 245 246 247 248 249 250 251 252 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279

Country Malaysia Maldives Mali Malta Manahiki (New Zealand) Manchuria (China) Mangaia (Cook Islands) (New Zealand) Manuai (Cook Islands) (New Zealand) Marie Galante (Guadeloupe) Marquesas Islands (French Polynesia) Martinique Mauke (Cook Islands) (New Zealand) Mauritania Mauritius Mayotte (France) Melilla (Spain) Mexico Miquelon (St. Pierre and Miquelon) Mitiaro (Cook Islands) (New Zealand) Moheli (Comoros) Moldova Monaco (France) Mongolia Montserrat Moorea (French Polynesia) Morocco Mozambique Muscat (Oman) Myanmar (Burma) Namibia Nansil Islands (Ryukyu Islands) (Japan) Nauru Negri Sembilan (Malaysia) Nepal Netherlands Netherlands Antilles

20

PDG Commerce 4.0 -- Technical Reference Guide

Chapter 3 -- Country List

Code 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 300 301 302 303 304 305 306 307 308 309 311 312 313 314 315 316

Country Netherlands West Indies (Netherlands Antilles) Nevis (St. Christopher and Nevis) New Britain (Papua New Guinea) New Caledonia New Hanover (Papua New Guinea) New Hebrides (Vanuatu) New Ireland (Papua New Guinea) New South Wales (Australia) New Zealand Newfoundland (Canada) Nicaragua Niger Nigeria Nissiros (Greece) Niue (New Zealand) Norfolk Island (Australia) North Borneo (Malaysia) North Korea (Korea, Democratic Peoples Republic of) Northern Ireland (Great Britain and Northern Ireland) Norway Nukahiva (French Polynesia) Nukunonu (Western Samoa) Nyasaland (Malawi) Ocean Island (Kiribati) Okinawa (Ryukyu Islands) (Japan) Oman Pahang (Malaysia) Pakistan Palmerston (Avarua) (New Zealand) Panama Papua New Guinea Paraguay Parry (Cook Islands) (New Zealand) Patmos (Greece) Pemba (Tanzania)

PDG Commerce 4.0 -- Technical Reference Guide

21

Chapter 3 -- Country List

Code 317 318 319 320 321 322 323 324 325 326 327 328 329 331 332 333 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 351 352 353 354 356 357

Country Penang (Malaysia) Penghu Iaslands (Taiwan) Penon de Velez de la Gomera (Spain) Penrhyn (Tongareva) (New Zealand) Perak (Malaysia) Perlis (Malaysia) Persia (Iran) Peru Pscadores Islands (Taiwan) Petite Terre (Guadeloupe) Philippines Pitcairn Island Poland Portugal Province Wellesley (Malaysia) Pukapuka (New Zealand) Qutar Queensland (Australia) Quemoy (Taiwan) Raiatea (French Polynesia) Rakaanga (New Zealand) Rapa (French Polynesia) Rarotonga (Cook Islands) (New Zealand) Ras al Kaimah (United Arab Emirates) Redonda (Antigua & Barbuda) Reunion Rhodesia (Zimbabwe) Rio Muni (Equitorial Guinea) Rodos (Greece) Rodrigues (Mauritius) Romania Russia Rwanda Saba (Netherlands Antilles) Sabah (Malaysia) Saint Bartholomew (Guadeloupe) Saint Christopher (St. Kitts) and Nevis

22

PDG Commerce 4.0 -- Technical Reference Guide

Chapter 3 -- Country List

Code 359 360 362 363 364 365 366 367 369 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398

Country Saint Eustatius (Netherlands Antilles) Saint Helena Saint Kitts (St. Christopher and Nevis) Saint Lucia Saint Maarten (Netherlands Antilles) Saint Martin (French part) (Guadeloupe) Saint Martin (Netherlands part) (Netherlands Antilles) Saint Pierre and Miquelon Saint Vincent & the Grenadines Salvador (El Salvador) San Marino Santa Cruz Islands (Soloman Island) Sao Tome and Principe Sarawak (Malaysia) Sark, Channel Islands (Great Britain) Saudi Arabia Savage Island (Niue) (New Zealand) Savaii Island (British) (Western Samoa) Scotland (Great Britain and Northern Ireland) Selangor (Malaysia) Senegal Serbia-Montenegro Seychelles Sharja (United Arab Emirates) Shikoku (Japan) Siam (Thailand) Sierra Leone Sikkim (India) Singapore Slovak Republic Slovenia Society Islands (French Polynesia) Solomon Islands Somali Democratic Republic (Somalia) Somalia Somaliland (Somalia) South Africa
PDG Commerce 4.0 -- Technical Reference Guide 23

Chapter 3 -- Country List

Code 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 429 430 431 432 433 434 435 436

Country South Australia (Australia) South Georgia (Falkland Islands) South Korea (Korea, Republic of) South-West Africa (Namibia) Spain Spitzbergen (Norway) Sri Lanka Ste. Marie de Madagascar (Madagascar) Sudan Suriname Suwarrow Islands (New Zealand) Swan Islands (Honduras) Swaziland Sweden Switzerland Symi (Greece) Syrian Arab Republic Tahaa (French Polynesia) Tahiti (French Polynesia) Taiwan Tajikistan Tanzania Tasmania (Australia) Tchad (Chad) Thailand Thursday Island (Australia) Tibet (China) Tilos (Greece) Timor (Indonesia) Tobago (Trinidad & Tobago) Togo Tokelau (Union) Group (Western Samoa) Tonga Tongareva (New Zealand) Tori Shima (Ryukyu Islands) (Japan) Torres Island (Vanuatu) Tortola

24

PDG Commerce 4.0 -- Technical Reference Guide

Chapter 3 -- Country List

Code 437 438 439 440 441 442 443 445 446 447 448 449 450 451 452 453 454 455 456 458 459 461 462 464 465 466 467 468 469 472 473 474 475 476 477 479 480

Country Trans-Jordan (Hashemite Knigdom) (Jordan) Transkei (South Africa) Trengganu (Malaysia) Trinidad & Tobago Tripolitania (Libya) Tristan da Cunha Trucial States (United Arab Emirates) Tuamotou (French Polynesia) Tubuai (French Polynesia) Tunisia Turkey Turkmenistan Turks & Caicos Islands Tuvalu Uganda Ukraine Umm al Quaiwain (United Arab Emirates) Umm Said (Qatar) Union Group (Western Samoa) United Arab Emirates Upolu Island (Western Samoa) United States of America Uruguay Uzbekistan Vanuatu Vatican City Venezuela Victoria (Australia) Vietnam Wales (Great Britain and Northern Ireland) Wallis & Futuna Islands Wellesley, Province (Malaysia) West New Guinea (Indonesia) Western Australia (Australia) Western Samoa Yemen Zafarani Islands (Spain)

PDG Commerce 4.0 -- Technical Reference Guide

25

Chapter 3 -- Country List

Code 482 483

Country Zambia Zanzibar (Tanzania)

26

PDG Commerce 4.0 -- Technical Reference Guide

Chapter 4

HTML Template Files

hen customers shop within your Web store, PDG Commerce displays information about products and orders using HTML templates. Although PDG Commerce comes with default HTML templates for you to use, the information provided in this chapter will aid you in creating your own templates, or modifying the existing default templates.

The HTML templates used within PDG Commerce are very similar to normal HTML pages with one exception: the HTML template files have, embedded in them, special tags which carry the functionality of PDG Commerce. When PDG Commerce encounters these tags, it replaces the tag with the corresponding information concerning the customer's cart or order. The information that PDG Commerce displays depends on the tag used. There are many different HTML templates that can be used by PDG Commerce:
Basket template Basket Empty template Add Item template Item template MultiAdd template Checkout template Verify template Alternate SSL Checkout template Alternate SSL Verify template Thank You template Deny Credit template (when PDG Commerce is configured to interact with Internet payment services)

PDG Commerce 4.0 -- Technical Reference Guide

27

Chapter 4 -- HTML Template Files

Accept Credit template (when PDG Commerce is configured to interact with Internet payment services) Templates related to a specific Internet payment service SSL Thank You template Search Results template Search Results Empty template Category template ShipCompare template (for use with UPS or USPS when comparing rates) Verify - Inventory Error template Error template Anonymous Checkout template Alternate SSL Anonymous Checkout template UPS Track template UPS Tracking Result template UPS Address Validation template HTML Email Templates

There are literally dozens of tags that can be used within these templates many of which are interchangeable. We will discuss which tags may be used when each template is covered in this chapter. First, lets go over some new sets of tags that have been implemented for PDG Commerce.

New Functions in PDG Commerce


PDG Commerce allows you to format certain pages in your Web store in new ways. HTML templates which display multiple products, such as the Search Results template, can now incorporate the MultiAdd and OptFullAdd actions. Imagine showing your customers all of the option selections for a single product and allowing them to simply enter quantities and add them all to their carts with a single click. PDG Commerce has enabled this and other new functions through the use of the following four pairs of tags:
REPEAT Tags REPEAT NUMBER Tags OPTIONS Tags SEARCH ROW Tags RECIPIENT Tags

We will now discuss the usage of each of these sets of tags as well as what templates they may be used in. For a list of the tags that can be used between these new sets of tags, see the section for the corresponding HTML Template.

28

PDG Commerce 4.0 -- Technical Reference Guide

Chapter 4 -- HTML Template Files

REPEAT Tags
<!---BEGIN_REPEAT---> and <!---END_REPEAT---> These tags are to be used when displaying a list of different products for which you want to display the same type of information. We will call these the REPEAT tags, for convenience sake. The most common occurrence of the REPEAT tags will be in the Basket template. These tags may also appear on the MultiAdd template or between the SEARCH ROW tags which appear on the Search Results template. The way these tags may be used will be explained in greater detail in each templates section in this chapter. Instead of using the standard Basket Template tags, you can now format the output and look of the Basket template using the REPEAT tags. Any information that is called between the REPEAT tags will be called for all of the items in the customers cart until no products are left. Inserting an HTML table row between these tags will cause your customers cart to be formatted nicely in a HTML table. Once you have formatted the output of the basket, you can use the standard Basket Template tags outside of the REPEAT tags to call the orders total, discount information, etc. For example:
<!---BEGIN_REPEAT---> [product data] <!---END_REPEAT---> <!---SUBTOTAL---> <!---ADD_SHIPPING_TOTAL--->

This syntax in the Basket template would yield the customers current cart (see the Basket HTML Template section below for a list of the Basket Repeat tags) followed by the subtotal of all of the items, and finally, any additional shipping charges incurred by any of the items in the order. The product data that will be displayed for each product in the basket comes from the Basket Repeat template tags, while these last two items are called by the standard Basket Template tags. The Search Results template file also utilizes repeating style tags. These are <!---BEGIN_SEARCH_ROW---> and <!---END_SEARCH_ROW--->. For a list of tags that can be used between these REPEAT-style tags, see the section corresponding to the HTML template with which you are working.

PDG Commerce 4.0 -- Technical Reference Guide

29

Chapter 4 -- HTML Template Files

REPEAT ITEM Tags


The REPEAT ITEM tags perform the same function as the REPEAT tags on a Search Results or Multiadd page. The <!---BEGIN_REPEAT_ITEM---> tag replaces the <!---BEGIN_REPEAT---> tag, and it does not generate the hidden input fields for msku#. Instead, an additional tag exists to input the hidden msku# fields. The <!---SKU_INPUT---> tag must be entered within the <!---BEGIN_REPEAT_ITEM---> and <!---END_REPEAT---> tags to generate the appropriate hidden input fields to perform the multiadd function. The following is an example of the REPEAT ITEM tags:
<!---BEGIN_REPEAT_ITEM---> [product data] <!----SKU_INPUT---> <!---END_REPEAT--->

REPEAT NUMBER Tags


<!---BEGIN_REPEAT[x]---> and <!---END_REPEAT[y]---> These tags are to be used when you want to display several instances of the same product on a single page. These tags will generally be utilized in the Item template, and called into the Add Item template, when you want to allow a customer to add several different option combinations of the same product to their cart with a single click. When using the REPEAT NUMBER tags, the [x] and [y] must be replaced with non-negative integers where x < y. These numbers are used to tell PDG Commerce how many instances of the product to display. The REPEAT NUMBER tags allow you to create a page on your Web store with a complete product display and Add button for each number between x and y, inclusive. For example:
<!---BEGIN_REPEAT[0]---> [data] <!---END_REPEAT[3]--->

The data that falls between the REPEAT NUMBER tags will be repeated four times (0,1,2,3). These numbers only serve as indexes for PDG Commerce to distinguish the product instances on the page. For each instance on the page, then, a customer can select different options and quantities and add them all to to their basket with a single click.

30

PDG Commerce 4.0 -- Technical Reference Guide

Chapter 4 -- HTML Template Files

Please see the Item template section to see which tags may be used between the REPEAT NUMBER tags.

OPTIONS Tags
<!---BEGIN_OPTIONS---> and <!---END_OPTIONS---> These tags are used for displaying the options for your Web stores products in a more streamlined manner. The OPTIONS tags can be used in either the Basket template, to display the selected options for items in the basket, or the Item template, to display options available in the multi-add outputs. For more information on how to use the OPTIONS tags, see the sections on the respective templates.

SEARCH ROW Tags


<!---BEGIN_SEARCH_ROW---> and <!---END_SEARCH_ROW---> These tags are used exclusively on the Search Results template. The SEARCH ROW tags are implemented for formatting the Search Results page in a number of different ways. In order to indicate how many search results will appear on each page and in each row on that page, refer to the Search Settings section in the PDG Commerce User Guide. These settings are kept in the Merchant Administrator. The REPEAT tags (embedded in the SEARCH ROW tags) will determine the output for each product on the Search Results template. The SEARCH ROW tags themselves can be used to determine how the information is formatted on the Search Results page. See the Search Results template section in this chapter for more information.

RECIPIENT Tags
<!---BEGIN_RECIPIENT---> and <!---END_RECIPIENT---> These tags are to be used when displaying or requesting information for multiple shipping recipients. We will call these the RECIPIENT tags, for convenience. These tags can be used on any template used during the checkout process for a multiple shipment order. Instead of using the standard Basket Template tags, you can now display carts for multiple shipping receipients using the RECIPIENT tags. Any information that is called between the RECIPIENT tags will be called for each recipients cart until no recipients are left. You can use the standard Basket Template repeat tags inside of the RECIPIENT tags to call the product information for each recipients basket.

PDG Commerce 4.0 -- Technical Reference Guide

31

Chapter 4 -- HTML Template Files

The RECIPIENT tags may also be used by the Checkout, SSL Checkout, Verify, SSL Verify, ThankYou, SSL ThankYou, and CreditAccept pages for multiple shipping recipients.

Include and CGI Tags


You can include html, text, or other files in your PDG Commerce templates, much like an include within a server-side html page. This allows for common elements of your web store, such as a navigation bar, header, or footer, to be included throughout your web store templates. The format for this tag is <!---#INCLUDE [filename]--->, where [filename] is the name of the file to be included. The file must be located in your web stores document filespace, and specifically not within the PDG_Commerce folder. You can include subfolder information within the filename, however any filename that tries to traverse up folders will be ignored. Note that this only takes a file and embeds its contents verbatim into the template. It does not execute any programs or scripts. You can instruct PDG Commerce to retrieve information from a webserver (your own or another) to be embedded in a template. This allows you to embed another web page that contains server-side scripting, such as asp or php, into your templates. The format for this tag is <!---#CGI [url]--->, where [url] is the URL, complete or partial, to the cgi program or document to be retrieved from the webserver. The cgi program can be on a regular server, or on an SSL secured server. Here are some valid CGI examples: <!---#CGI http://www.somewhere.com/cgi/something.cgi---> This retrieves the output of the cgi program something.cgi from www.somewhere.com. <!---#CGI /cgi-bin/cgi-prog?name1=value1---> This retrieves the output of the cgi program cgi-prog from your web server, passing name1=value1 to the cgi program. <!---#CGI https://www.yourstore.com/cgi/secured.cgi---> This retrieves the output of the cgi program secured.cgi from www.yourstore.com via an SSL connection. <!---#CGI /footer.asp---> This retrieves the output of the asp page footer.asp from your web server. The web server will execute any asp code in the page. Note: If you execute scripts, embedding their output in a template, using the CGI tag, then please keep in mind that any HTML header information, such as setting cookies, will be ignored by PDG Commerce.

32

PDG Commerce 4.0 -- Technical Reference Guide

Chapter 4 -- HTML Template Files

Universal Tags
PDG Commerce has template tags that can be inserted into any of your Web stores dynamic templates. These tags call information about the customers current cart that can be displayed on PreAdd pages, the Basket page or any other page in your Web store that is generated via template. The Universal tags that come with PDG Commerce are:
!---SCRIPTNAME--!---SEC_SCRIPTNAME--<!---CURRENT_SUBTOTAL---> <!---CURRENT_ITEMS_NUM---> <!--ITEMRETURNURL---> !---SHOPSOMEMORE_LINK--!---#INCLUDE : This is discussed in detail earlier in this chapter. !---#CGI : This is discussed in detail earlier in this chapter. <!---ADD_WHOLE_PAGE_LINK---> !---USERNAME--!---USERMSG--!---HEADER--!---FOOTER--!---START_REGISTER_LINK--!---STATE_LIST--!---COUNTRY_LIST--!---FULL_URL--!---SEC_FULL_URL <!---LIST_CATEGORIES <!---STYLE_SHEET---> <!---DISPLAY_TEMPLATE <!---SITE_LOGO---> <!---SITE_TEXT--->

We will now cover these tags in detail.

!---SCRIPTNAME--This tag tells PDG Commerce to replace it with the location of PDG Commerces commerce executable. This tag can be used to call commerce from any one of your Web stores templates or static pages. This tag will generally fall inside of an HTML form tag, but may also be used with the href tag as well. Below are two examples of how this tag may be used:
PDG Commerce 4.0 -- Technical Reference Guide 33

Chapter 4 -- HTML Template Files

<form method=POST action="!---SCRIPTNAME---"> <input type=submit name="display" value="View My Cart"> </form> <a href="!---SCRIPTNAME---?display=action">View My Cart</a>

The first example would produce a button on your page that, when clicked, would call PDG Commerce to display the customers current cart. The second example would create a text link that calls PDG Commerce to display the customers current cart.

!---SEC_SCRIPTNAME--This tag tells PDG Commerce to replace it with the location of your PDG Commerces secure commerce executable. This tag can be used to call your secure commerce from any one of your Web stores templates or static pages. This tag will generally fall inside of an HTML form tag, but may also be used with the href tag as well. Below are two examples of how this tag may be used:
<form method=POST action="!---SEC_SCRIPTNAME---"> <input type=submit name="checkout" value="Secure Checkout"> </form> <a href="!---SEC_SCRIPTNAME---?checkout=action">Secure Checkout </a>

The first example would produce a button on your page that, when clicked, would call PDG Commerce to proceed to your Web stores secure checkout page. The second example would create a text link that calls PDG Commerce to proceed to your Web stores secure checkout page.

<!---CURRENT_SUBTOTAL---> Tag
This tag can be used to display the subtotal of all of the items in the customers current cart. This subtotal only includes the price of the products (and any applicable options) that are in the customers cart. Sales tax, shipping charges and product discounts are not included in this value. The tag must appear in the template as:
<!---CURRENT_SUBTOTAL--->

Note: This tag may be appended with a C, <---CURRENT_SUBTOTALC--->. PDG Commerce will replace this tag with the current cart subtotal converted to the secondary currency.

34

PDG Commerce 4.0 -- Technical Reference Guide

Chapter 4 -- HTML Template Files

<!---CURRENT_ITEMS_NUM---> Tag
This tag can be used to display the total number of items in the customers current cart. This total includes all quantities of all products that are in the customers cart. The tag must appear in the template as:
<!---CURRENT_ITEMS_NUM--->

!---SHOPSOMEMORE_LINK--- Tag
This tag is replaced by a Shop Some More button. Please note that this tag is replaced with all the code to display the button as defined in the Merchant Administrator as well as the URL. The tag must appear in the template as:
!---SHOPSOMEMORE_LINK---

<!---ITEMRETURNURL---> Tag
This tag is replaced by a hidden field. It informs PDG Commerce of the reference page for the shopper. The reference page is the page which was being viewed prior to the AddItem page. Note that any URL entered into the Destination of Shop Some More Button field in the Cart Options section of the Merchant Administrator will override this reference page identifier. However, if the page was created dynamically, the user will be returned to the last statically created page. The tag must appear in the template file as:
<!---ITEMRETURNURL--->

<!---ADD_WHOLE_PAGE_LINK--->
This tag is applicable to Search Result templates, and to all of the MultiAdd templates - both for adding multiple products at once, and adding multiple option combinations for a single product. This tag adds a submit button that allows everything on the page with a quantity greater than zero to be added. The tag must appear in the template as:
!---ADD_WHOLE_PAGE_LINK---

<!---USERNAME--->
This tag is replaced with the users Login ID for the PDG Commerce webstore. If the user is browsing the store anonymously (not logged in), then this tag is replaced with Guest. The tag must appear in the template as:
!---USERNAME---

PDG Commerce 4.0 -- Technical Reference Guide

35

Chapter 4 -- HTML Template Files

<!---USERMSG--->
This tag is used to display a customized message that contains the customers User ID. Inside this tag, you can place text that will be displayed. If the text contains [USER], this is replaced with the customers User ID. If the user is browsing the store anonymously (not logged in), then the text [USER] is replaced with Guest. An example of this tag might be:
<!---USERMSG Welcome, [USER], Thank you for shopping with us today. --->

<!---HEADER--->
This tag is used to display the header file whose filename is specified in the Templates section of the Merchant Administrator. Include this tag on any custom PDG Commerce template that you want to display your header file. The tag must appear in the templates as:
<!---HEADER--->

<!---FOOTER--->
This tag is used to display the footer file whose filename is specified in the Templates section of the Merchant Administrator. Include this tag on any custom PDG Commerce template that you want to display your footer file. The tag must appear in the templates as:
<!---FOOTER--->

<!---START_REGISTER_LINK--->
This tag is used to display a link to the Registration template. Include this tag on any page on which you wish to provide your customers with an opportunity to register as a new user with your Web store. The tag must appear in the templates as:
<!---START_REGISTER_LINK--->

<!---STATE_LIST--->
This tag is replaced by a drop down menu of the states entered in the StateList.txt file, located in the PDG_Commerce folder. This tag may be used for the billing state list and the shipping state list. The tag must appear in the template file as:

36

PDG Commerce 4.0 -- Technical Reference Guide

Chapter 4 -- HTML Template Files

<select name=billstate> <!---STATE_LIST---> </select> or <select name=shipstate> <!---STATE_LIST---> </select>

<!---COUNTRY_LIST--->
This tag is used to display a drop down menu containing all of the countries specified in the International section of your Merchant Administrator. For more information on editing the country list, see the International Settings section of the PDG Commerce User Guide. The tag must appear in the templates as:
<!---COUNTRY_LIST--->

!---FULL_URL--- Tag
This tag tells PDG Shopping Cart to replace it with your web sites domain name. This tag can be used on any one of your Web stores templates. This tag may be used inside of an HTML form tag and with the href tag. Below are two examples of how this tag may be used:
<form method=POST action="!---FULL_URL---!---SCRIPTNAME---"> <input type=submit name="checkout" value="Checkout"> </form> <a href=!---FULL_URL---/index.html>Home</a>

The first example would produce a button on your page that, when clicked, would call PDG Shopping Cart to proceed to your Web stores checkout page. The second example would display a link to your web sites index page. In both cases, PDG Shopping Cart would use the absolute url path instead of a relative path.

!---SEC_FULL_URL--- Tag
This tag tells PDG Shopping Cart to replace it with your web sites secure domain name. This tag can be used on any one of your Web stores templates. This tag may be used inside of an HTML form tag and with the href tag. Below is an example of how this tag may be used:
<a href=!---SEC_FULL_URL---/index.html>Home</a>

This example would display a link to your web sites secure index page, using the absolute url path to the secure web site instead of a relative path.
PDG Commerce 4.0 -- Technical Reference Guide 37

Chapter 4 -- HTML Template Files

<!---LIST_CATEGORIES Tag
This tag will be replaced by either the default or specified template to perform a list categories action, and the template will be displayed within the page containing this tag. For example, including this tag in a column on the page will use the template to display your PDG Shopping Carts category list in that column. When using this tag, you may either specify a template to display, or use only the tag to display the default Category template entered in the Cart Administrator. If specifying a template in the tag, the path is assumed to be relative to the web sites root directory. The tag must appear in the template files in one of the following ways:
<!---LIST_CATEGORIES---> <!---LIST_CATEGORIES PDGTemplates/CategoryList.html--->

<!---STYLE_SHEET---> Tag
When not using Site Design mode, this tag will be replaced with the contents of the pdgstyles.css style sheet file located in the PDG_Cart folder. You may create this file then include this tag on your templates to automatically import your style sheet. The tag must appear in the template file as:
<!---STYLE_SHEET--->

<!---DISPLAY_TEMPLATE---> Tag
This tag will be replaced by a hidden input field in a form that will pass a specific template to be used to display the following page. For example, if you want to display a different template for a single search, but leave the default template for all other searches, you could include this tag in the search form and specify the template to be used. The path is assumed to be relative to the web sites root directory. The tag must appear in the template file as:
<!---DISPLAY_TEMPLATE PDGTemplates/SearchResult2.html--->

<!---SITE_LOGO---> Tag
This tag will be replaced by the image specified in the Web Site Logo field of the Cart Options. The tag must appear in the template file as:
<img src=!---SITE_LOGO--->

38

PDG Commerce 4.0 -- Technical Reference Guide

Chapter 4 -- HTML Template Files

<!---SITE_TEXT---> Tag
This tag will be replaced by the text entered in the Web Site Text field of the Cart Options. The tag must appear in the template file as:
<!---SITE_TEXT--->

LOGGED IN Tags
<!---IF_LOGGED_IN---> and <!---END_IF_LOGGED_IN---> These tags are to be used when displaying information that is only applicable when a customer is logged in to your web store. We will call these the LOGGED IN tags, for convenience. These tags can be used on any template displayed by the Commerce program. When the customer is logged in, you can provide specific options such as a 'Log Out' button, or a link to update their information. Any code that is entered between these two tags will be displayed only when the user is currently logged in. Any universal tags may be used within the <!--IF_LOGGED_IN---> and <!---END_IF_LOGGED_IN---> tags. The following example demonstrates a possible use of these tags:
<!---IF_LOGGED_IN---> <a href="!---SCRIPTNAME---?displayuser=action">Update Information </a> <br> <a href="!---SCRIPTNAME---?logout=action"><img src="/images/ logout.gif" border=0></a> <!---END_IF_LOGGED_IN--->

NOT LOGGED IN Tags


<!---IF_NOT_LOGGED_IN---> and <!---END_IF_NOT_LOGGED_IN ---> These tags are to be used when displaying information that is only applicable when a customer is not currently logged in to your web store. We will call these the NOT LOGGED IN tags, for convenience. These tags can be used on any template displayed by the Commerce program. When the customer is not logged in, you can provide specific options such as a 'Log In' or Register button. Any code that is entered between these two tags will be displayed only when the user is not currently logged in. Any universal tags may be used within the <!---IF_NOT_LOGGED_IN---> and <!--END_IF_NOT_LOGGED_IN---> tags The following example demonstrates a possible use of these tags:

PDG Commerce 4.0 -- Technical Reference Guide

39

Chapter 4 -- HTML Template Files

<!---IF_NOT_LOGGED_IN---> <a href="!---SCRIPTNAME---?login=action"><img src="/images/ login.gif" border=0></a> <br> <a href="!---SCRIPTNAME---?register=action><img src="/images/register.gif" border=0></a> <!---END_IF_NOT_LOGGED_IN--->

Basket Template File


The Basket Template File is used when PDG Commerce is called upon to display the contents of the customer's cart to the customer. The Basket Template File is essentially an HTML Web page. However, before PDG Commerce sends it to the customer, it searches the HTML template file for special tags. When a tag is encountered, it is replaced with the appropriate information before being sent to the customers browser. After receiving and processing the Display action, PDG Commerce uses the Basket HTML template file to display the resulting cart. The following are the standard Basket Template tags:
<!---BASKET---> <!---DISPLAYCART---> <!---ADDITEMMSG---> <!---ADDITEMDATA---> <!---REMOVEALLMSG---> <!---SUBTOTAL---> <!---WEIGHT_TOTAL---> <!---NUM_ITEMS---> <!---ORDER_SUBTOTAL_DISC---> <!---PROD_CAT_QTY_DISC---> <!---BONUS_PT_TOTAL---> <!---ADD_SHIPPING_TOTAL---> !---SEC_SCRIPTNAME--<!---SEC_FORCE_DATA---> !---CHECKOUT_LINK--!---SECURE_CHECKOUT_LINK--!---REMOVE_ALL_LINK--!---RECALC_LINK--!---TRACK_ORDER_SUBMIT---

40

PDG Commerce 4.0 -- Technical Reference Guide

Chapter 4 -- HTML Template Files

PDG Commerce also accommodates the REPEAT and OPTIONS tags in the Basket HTML template file. See the end of this Basket Template File section for more information on how these new tags may be used in the Basket template file. PDG Commerce is given the location of this template file through its key in the Shopper.Conf file. For more information on Shopper.Conf, you will need to contact PDG. A sample Basket Template File is included with PDG Commerce. The following is an example of the standard Basket template which displays the customers cart using the <!---BASKET---> tag. See the figure below for an example of a customized Basket template.

Standard Basket Display

<!---BASKET---> Tag
This tag tells PDG Commerce to replace the tag with the contents of the customer's current cart. This output is formatted in a table. PDG Commerce also embeds calls back to itself in the output which allow users to remove items, change the quantities of items, remove all of the items, to proceed with purchasing the items in their cart, or to return to shopping. These calls are in the form of buttons on the bottom of the page. Because PDG Commerce displays the contents of the customer's cart in a table, the customer's Web browser must be capable of displaying tables. The tag must have its own line in the template file, and must appear as:
<!---BASKET--->

Note: When PDG Commerce encounters the <!---BASKET---> tag, it displays all of the product and order information. If this tag is used to display the customers cart, the use of the REPEAT tags (and subsequently the Repeat Basket template tags) will not be necessary. Likewise, if you plan on customizing you Basket template with the REPEAT tags, the <!---BASKET---> tag will not be necessary.

PDG Commerce 4.0 -- Technical Reference Guide

41

Chapter 4 -- HTML Template Files

<!---DISPLAYCART---> Tag
This tag works essentially the same way as the <!---BASKET---> tag. See above for an explanation. For consistencys sake, it is recommended that you use either one or the other, and not both for displaying your customers cart. The tag must have its own line in the template file, and must appear as:
<!---DISPLAYCART--->

<!---ADDITEMMSG---> Tag
This tag tells PDG Commerce to replace the tag with a special message only when items are added to the basket. If items are not being added to the basket, then this tag is ignored. The text to be displayed should be embedded in the tag, after the ADDITEMMSG and a colon. The tag must appear in the template file as:
<!---ADDITEMMSG:[text]--->

In the above example, [text] is the message to be displayed on the Basket page only if items are being added to the Cart. This tag is only processed if the item was added as a result of an Add action, and not of a MultiAdd action.

<!---ADDITEMDATA---> Tag
This tag tells PDG Commerce to replace the tag with a description and quantity of what items are being added to the cart. If items are not being added to the cart when it is called to be displayed, then this tag is ignored. The tag must appear in the template file as:
<!---ADDITEMDATA--->

An example of the above two tags used in conjunction might be:


<!---ADDITEMMSG:The following has been added to your Cart: ---><br> <!---ADDITEMDATA--->

This tag is only processed if the item was added as a result of an Add action, and not of a MultiAdd action.

42

PDG Commerce 4.0 -- Technical Reference Guide

Chapter 4 -- HTML Template Files

<!---REMOVEALLMSG---> Tag
This tag tells PDG Commerce to replace the tag with a special message only when the cart is being emptied. If the cart is not being emptied, then this tag is ignored. The tag must appear in the template file as:
<!---REMOVEALLMSG:[text]--->

In the above example, [text] is the message that is to be displayed only if the cart is being emptied.

<!---SUBTOTAL---> Tag
This tag tells PDG Commerce to replace the tag with the cost of all of the products in the current cart before sales tax or shipping is applied. This calculation may be used in determining any additional shipping costs or discounts if these have been specified in the Shipping Rules section of the Merchant Administrator (see the PDG Commerce User Guide for more information). The tag must appear in the template file as:
<!---SUBTOTAL--->

<!---WEIGHT_TOTAL---> Tag
This tag tells PDG Commerce to replace the tag with the total weight of the order. This is done by adding the weights of all of the quantities of each product in the order. This calculation may be used to determine shipping costs if weight tables have been specified in the Shipping Rules section of the Merchant Administrator (see the PDG Commerce User Guide for more information). The tag must appear in the template file as:
<!---WEIGHT_TOTAL--->

<!---NUM_ITEMS---> Tag
This tag tells PDG Commerce to replace the tag with the total number of items in the order. This is done by adding the quantities of all of the products in the order. This calculation may be used in determining any additional shipping costs or discounts if specified in the Shipping Rules section of the Merchant Administrator (see the PDG Commerce User Guide for more information). The tag must appear in the template file as:
<!---NUM_ITEMS--->

PDG Commerce 4.0 -- Technical Reference Guide

43

Chapter 4 -- HTML Template Files

<!---ORDER_SUBTOTAL_DISC---> Tag
This tag tells PDG Commerce to replace the tag with whatever subtotal-based discount may be applied to the order. This calculation is made depending upon the discounts that you defined with the Merchant Administrator. If no discount applies to the order, then this tag is replaced with 0.0. The tag must appear in the template file as:
<!---ORDER_SUBTOTAL_DISC--->

<!---PROD_CAT_QTY_DISC---> Tag
This tag will display all product category quantity discounts applied to the order. Each product category quantity discount will be displayed with the label Discount for Ordering X Products From A000, where X is the number of products ordered from category A000. The tag must appear in the template file as:
<!---PROD_CAT_QTY_DISC--->

<!---BONUS_PT_TOTAL---> Tag
This tag tells PDG Commerce to replace the tag with the total number of bonus or frequent shopper points accumulated for the order. If no bonus points are earned from the current order, then this tag is replaced with 0.0. The tag must appear in the template file as:
<!---BONUS_PT_TOTAL--->

<!---ADD_SHIPPING_TOTAL---> Tag
This tag tells PDG Commerce to replace the tag with any additional shipping charges that may have been applied to any of the products in the cart. This includes additional shipping charges for all quantities of all applicable products. If no additional shipping charges are incurred from any of the products on the order, PDG Commerce will replace this tag with 0.0. The tag must appear in the template file as:
<!---ADD_SHIPPING_TOTAL--->

44

PDG Commerce 4.0 -- Technical Reference Guide

Chapter 4 -- HTML Template Files

!---SEC_SCRIPTNAME--- Tag
This tag tells PDG Commerce to replace the tag with the URL of the PDG Commerce on the secure server. The tag must appear in the template file as:
!---SEC_SCRIPTNAME---

<!---SEC_FORCE_DATA---> Tag
This tag tells PDG Commerce to replace the tag with the cookie information that needs to be passed to your secure server/directory in order to perform a secure checkout. This tag is necessary if you wish to offer a secure checkout option from your custom Basket HTML template, and the secure server or secure cgi-path is different from its non-secure counterpart. The tag must appear in the template file as:
<!---SEC_FORCE_DATA--->

<!---CHECKOUT_LINK---> Tag
This tag is replaced with the code for a CheckOut button. Please note that this is the complete code for displaying the button image as defined in the Merchant Administrator as well as the proper form value. The tag must appear in the template file as:
<!---CHECKOUT_LINK--->

<!---SECURE_CHECKOUT_LINK---> Tag
This tag is replaced with the code for a Secure CheckOut button. Please note that this is the complete code for displaying the button image as defined in the Merchant Administrator as well as the proper form value. The tag must appear in the template file as:
<!---SECURE_CHECKOUT_LINK--->

<!---REMOVE_ALL_LINK---> Tag
This tag is replaced with the code for a Remove All button, which will remove all items from the basket when clicked. Please note that this is the complete code for displaying the button image as defined in the Merchant Administrator as well as the proper form value. The tag must appear in the template file as:
<!---REMOVE_ALL_LINK--->

PDG Commerce 4.0 -- Technical Reference Guide

45

Chapter 4 -- HTML Template Files

<!---RECALC_LINK---> Tag
This tag is replaced with the code for a Recalc button, which will recalculate the totals (subtotal, weight, etc.) for the items in the basket when clicked. Please note that this is the complete code for displaying the button image as defined in the Merchant Administrator as well as the proper form value. The tag must appear in the template file as:
<!---RECALC_LINK--->

<!---TRACK_ORDER_SUBMIT---> Tag
This tag is available on the template if Site Design is enabled. Please see the PDG Software Site Design guide for further information on this tag.

REPEAT Tags
In addition to the standard Basket Template tags, the Basket HTML Template file can also use the REPEAT tags. If you are planning on customizing the layout of the Basket template, you will need to employ the REPEAT tags. These consist of two tags, <!---BEGIN_REPEAT---> and <!---END_REPEAT--->, between which all of the tags for displaying each product in the basket will be placed. Any information that falls between the REPEAT tags in the Basket HTML template will be repeated for each item in the customers cart, until no items are left. These tags must have their own lines in the template file, and must appear as:
<!---BEGIN_REPEAT---> [product data] <!---END_REPEAT--->

The product data comes from the Repeat Basket tags which are explained below. For more information on how the REPEAT tags work and how they may be used, see the beginning of this chapter.

46

PDG Commerce 4.0 -- Technical Reference Guide

Chapter 4 -- HTML Template Files

While the tags will be explained below, here is an example of a Basket template customized using the REPEAT and Repeat Basket tags:

Customized Basket Template Display

The tags that are allowed to be used between the REPEAT tags in the Basket HTML template will be called the Basket Repeat tags. They are as follows: !---ROW_COLOR--- Tag This tag is replaced by the appropriate background color for the row if Row Coloring is enabled in the Templates section of your Commerce Administrator. Please see the PDG Commerce User Guide or PDG Commerce Design Guide (if using Site Design mode) for information on configuring row coloring. This tag should be placed in all table cell fields within the REPEAT tags on the Basket page. There should be a single space before and after the tag. The tag must appear in the template file as:
<td !---ROW_COLOR--- >

<!---SKU---> Tag This tag is replaced by the SKU or Product Code for the selected product. The tag must appear in the template file, between the REPEAT tags, as:
<!---SKU--->

<!---QTY---> Tag This tag is replaced by a text field displaying the quantity of the selected product that is currently in the basket. Note that this is a form field that can be modified by the customer from the Basket page. The tag must appear in the template file, between the REPEAT tags, as:
<!---QTY--->

PDG Commerce 4.0 -- Technical Reference Guide

47

Chapter 4 -- HTML Template Files

<!---QTY_BUTTON---> Tag This tag is replaced by a recalculate button that cues PDG Commerce to refigure the price of the order depending upon the updated quantity in the field created by the <!---QTY---> tag, as explained above. The tag must appear in the template file, between the REPEAT tags, as:
<!---QTY_BUTTON--->

<!---INDEX---> Tag This tag is replaced with the Basket index number assigned by PDG Commerce for the corresponding product. This number is generally used internally and should not be embedded in your Basket template. However if you do decide to display the index number, the tag must appear in the template file, between the REPEAT tags, as:
<!---INDEX--->

<!---BASEPRICE---> Tag This tag is replaced by the unit price, modified with any changes due to customer category discounting, for the selected product as it was entered into your Merchant Administrator (see Maintaining Products in the PDG Commerce User Guide for more information). The tag must appear in the template file, between the REPEAT tags, as:
<!---BASEPRICE--->

Note: This tag may be appended with a C, <---BASEPRICEC--->. PDG Commerce will replace this tag with the unit price converted to the secondary currency. <!---QTYPRICE---> Tag This tag is replaced by the total price of the selected product being ordered. This value is calculated by multiplying the base or unit price by the quantity of the product being ordered. The tag must appear in the template file, between the REPEAT tags, as:
<!---QTYPRICE--->

Note: This tag may be appended with a C, <---QTYPRICEC--->. PDG Commerce will replace this tag with the quantity price converted to the secondary currency. <!---BASEAMOUNT---> Tag This tag is replaced by the unit price for the product including any selected options. If there are no charges applied to any of the selected options, this

48

PDG Commerce 4.0 -- Technical Reference Guide

Chapter 4 -- HTML Template Files

amount will reflect the same as <!---BASEPRICE--->. The tag must appear in the template file, between the REPEAT tags, as:
<!---BASEAMOUNT--->

Note: This tag may be appended with a C, <---BASEAMOUNTC--->. PDG Commerce will replace this tag with the base amount converted to the secondary currency. <!---QTYAMOUNT---> Tag This tag is replaced by the total price for the all of the products with their selected options. This value is calculated by multiplying the products price including the selected options by the quantity ordered. The tag must appear in the template file, between the REPEAT tags, as:
<!---QTYAMOUNT--->

Note: This tag may be appended with a C, <---QTYAMOUNTC--->. PDG Commerce will replace this tag with the quantity amount converted to the secondary currency. <!---BASEADDONS---> Tag This tag is replaced by the cost of any add-ons or options that may have been included with the selected product. If there are no charges that apply to any of the selected options for the given product, then this tag is 0.0. The tag must appear in the template file, between the REPEAT tags, as:
<!---BASEADDONS--->

Note: This tag may be appended with a C, <---BASEADDONSC--->. PDG Commerce will replace this tag with the add-on cost converted to the secondary currency. <!---QTYADDONS---> Tag This tag is replaced by the cost of all of the add-ons or options for the selected product. This value is figured by multiplying the base add-on price by the number of add-ons being ordered (i.e. the quantity of the product being ordered with the add-on). If there are no charges that apply to any of the selected options for the given product, then this tag is 0.0. The tag must appear in the template file, between the REPEAT tags, as:
<!---QTYADDONS--->

Note: This tag may be appended with a C, <---QTYADDONSC--->. PDG Commerce will replace this tag with the quantity add-on price converted to the secondary currency.

PDG Commerce 4.0 -- Technical Reference Guide

49

Chapter 4 -- HTML Template Files

<!---BASEDISCOUNT---> Tag This tag is replaced by the per unit discount incurred by the selected product when a valid quantity has been ordered. The valid quantity is determined by discount tiers created in the Merchant Administrator. If there is no discount, then this tag is 0.0. The tag must appear in the template file, between the REPEAT tags, as:
<!---BASEDISCOUNT--->

Note: This tag may be appended with a C, <---BASEDISCOUNTC--->. PDG Commerce will replace this tag with the products base discount converted to the secondary currency. <!---QTYDISCOUNT---> Tag This tag is replaced by the total discount that may be incurred due to the quantity of the selected product ordered. These discounts are configured in the Product configuration section of the Merchant Administrator (See Maintaining Products in the PDG Commerce User Guide). If there is no quantity discount that applies, then this tag is 0.0. The tag must appear in the template file, between the REPEAT tags, as:
<!---QTYDISCOUNT--->

Note: This tag may be appended with a C, <---QTYDISCOUNTC--->. PDG Commerce will replace this tag with the orders quantity discount converted to the secondary currency. <!---KEY---> Tag This tag is replaced by the specific SKU or product code, without any option suffixes, for the selected product. The tag must appear in the template file, between the REPEAT tags, as:
<!---KEY--->

<!---DESC---> Tag This tag is replaced by the products one-line description as defined in the Product Definition in the Merchant Administrator. The tag must appear in the template file, between the REPEAT tags, as:
<!---DESC--->

50

PDG Commerce 4.0 -- Technical Reference Guide

Chapter 4 -- HTML Template Files

<!---UNITOFMEASURE---> Tag This tag is replaced with the unit of measurement associated with the value for the selected products weight. The tag must appear in the template file, between the REPEAT tags, as:
<!---UNITOFMEASURE--->

<!---BASEWEIGHT---> Tag This tag is replaced with the numerical value for the selected products weight. If the product has no weight, it is replaced with 0.0. The tag must appear in the template file, between the REPEAT tags, as:
<!---BASEWEIGHT--->

<!---QTYWEIGHT---> Tag This tag is replaced by the total weight of the given product being ordered. This value is calculated by multiplying the products base weight by the quantity of the product being ordered. If the product has no weight, it is replaced with 0.0. The tag must appear in the template file, between the REPEAT tags, as:
<!---QTYWEIGHT--->

<!---THUMB---> Tag This tag is replaced with the thumbnail image URL for the given product. As this is a URL, it should appear in an HTML image tag. If there is not an image specified for a product, this tag will display the transparent.gif image. If the transparent.gif image is not found in the CommConfig folder on the site, a broken image link will be displayed. The THUMB tag must appear in the template file, between the REPEAT tags, and can appear in the following scenario:
<img src=!---THUMB--->

<!---IMG---> Tag This tag is replaced by the image for the given product. If there is not an image specified for a product, this tag will display the transparent.gif image. If the transparent.gif image is not found in the CommConfig folder on the site, a broken image link will be displayed. The tag must appear in the template file, between the REPEAT tags, as:
<img src=!---IMG--->

<!---IMAGE---> Tag This tag is replaced by the image for the given product. This tag works the same as the <!---IMG---> tag explained above. It is recommended that you
PDG Commerce 4.0 -- Technical Reference Guide 51

Chapter 4 -- HTML Template Files

only use one of these conventions, not both. If there is not an image specified for a product, this tag will display the transparent.gif image. If the transparent.gif image is not found in the CommConfig folder on the site, a broken image link will be displayed. The tag must appear in the template file, between the REPEAT tags, as:
<img src=!---IMAGE--->

<!---BASE_ADD_SHIPPING---> Tag This tag is replaced by any additional shipping charge that is incurred by the product itself. If there is no additional shipping charge associated with the product, then this tag is ignored. The tag must appear in the template file, between the REPEAT tags, as:
<!---BASE_ADD_SHIPPING--->

<!---QTY_ADD_SHIPPING---> Tag This tag is replaced by the total shipping charges incurred from ordering this product. This value can be calculated by multiplying the additional shipping charge associated with the given product by the quantity of the product ordered. If there is no additional shipping charge associated with the product, then this tag is ignored. The tag must appear in the template file, between the REPEAT tags, as:
<!---QTY_ADD_SHIPPING--->

<!---USERDEF#---> Tag This tag is replaced by any User Defined data that you may have entered for the given product. The # (0-9) indicates which user defined field to display. If there is no user defined data for the given field, then this tag is ignored. The tag must appear in the template file, between the REPEAT tags, as:
<!---USERDEF1--->

Note: There may be as many as ten (0-9) of these tags in your Basket HTML template file. <!---REMOVE_BUTTON---> Tag This tag is replaced by a Remove button for the selected product. When the customer clicks this button, the cart is re-displayed with all quantities of the selected product removed from the basket. The tag must appear in the template file, between the REPEAT tags, as:
<!---REMOVE_BUTTON--->

52

PDG Commerce 4.0 -- Technical Reference Guide

Chapter 4 -- HTML Template Files

<!---DESC_OPT---> Tag This tag is replaced with the option description for the product in the basket. There will be a line break after each option description. The tag must appear in the template file, between the REPEAT tags, as:
<!---DESC_OPT--->

<!---VALUEOPT---> Tag This tag is replaced by the option selections for the selected product in the basket. There will be a line break after each option selection. The tag must appear in the template file, between the REPEAT tags, as:
<!---VALUEOPT--->

<!---ORIGINAL_PRICE---> Tag This tag is replaced by the original price of the current product, before any product discounting, in the basket. If no discount is applied to the order, this tag is ignored. The tag must appear in the template file, between the REPEAT tags, as:
<!---ORIGINAL_PRICE--->

<!---TEXT_ORIGINAL_PRICE---> Tag This tag is replaced by the original price of the current product, before any product discounting, in the basket, with the label Original Price:. If no discount is applied to the order, this tag is ignored. The tag must appear in the template file, between the REPEAT tags, as:
<!---TEXT_ORIGINAL_PRICE--->

<!---DISCOUNT_AMOUNT---> Tag This tag is replaced by the discounted amount of the current product in the basket. The tag must appear in the template file, between the REPEAT tags, as:
<!---DISCOUNT_AMOUNT--->

<!---TEXT_DISCOUNT_AMOUNT---> Tag This tag is replaced by the discount amount of the current product in the basket, with the label Discount Of:. The tag must appear in the template file, between the REPEAT tags, as:
<!---TEXT_DISCOUNT_AMOUNT--->

PDG Commerce 4.0 -- Technical Reference Guide

53

Chapter 4 -- HTML Template Files

!---MIN_QTY--- Tag This tag is replaced by the minimum quantity that can be ordered of the item. This value is set in the Merchant Administrator. If there is no minimum quantity, this tag is replaced with 0. The tag must appear in the template file as:
!---MIN_QTY---

<!---MIN_QTY_TEXT---> Tag This tag is used to display a customized message that contains the minimum quantity of the item that can be ordered. If there is no minimum quantity for the item, then this tag is ignored (instead of being replaced with 0). Inside the tag, you place text that will be displayed. If the text contains [VALUE], this is replaced with the minimum quantity. The tag must appear in the template file as:
<!---MIN_QTY_TEXT You must order at least [VALUE] units to buy this. -->

!---MAX_QTY--- Tag This tag is replaced by the maximum quantity that can be ordered of the item. This value is set in the Merchant Administrator. If there is no maximum quantity, this tag is replaced with 0. The tag must appear in the template file as:
!---MAX_QTY---

<!---MAX_QTY_TEXT---> Tag This tag is used to display a customized message that contains the maximum quantity of the item that can be ordered. If there is no maximum quantity for the item, then this tag is ignored (instead of being replaced with 0). Inside the tag, you place text that will be displayed. If the text contains [VALUE], this is replaced with the maximum quantity. The tag must appear in the template file as:
<!---MAX_QTY_TEXT Only [VALUE] units per order. --->

<!---GIFT_CERT_KEY---> Tag This tag is used to display a unique gift certificate ID code for each gift certificate purchased. This key will be required to identify the gift certificate when it is used to purchase a later order. The tag must appear in the template file as:
<!---GIFT_CERT_KEY--->

54

PDG Commerce 4.0 -- Technical Reference Guide

Chapter 4 -- HTML Template Files

<!---PRICE_WITH_ITEM_DISC---> Tag This tag is replaced by the product quantity discount, if any can be applied for this product. If there is no product quantity discount for the item, then this tag is ignored. If a discount exists, the amount displayed will be the amount discounted per unit of the product. The tag must appear in the template file as:
<!---PRICE_WITH_ITEM_DISC--->

<!---QTY_PRICE_WITH_ITEM_DISC---> Tag This tag is replaced with the total product quantity discount, if any can be applied for this product. This value can be calculated by multiplying the quantity discount associated with the given product by the quantity of the product ordered. If there is no product quantity discount for the item, then this tag is ignored. The tag must appear in the template file as:
<!---QTY_PRICE_WITH_ITEM_DISC--->

<!---INV---> Tag PDG Commerce replaces this tag with the current inventory for the product displayed. If inventory is being tracked by product options for the selected product, this tag will be replaced by a link that reads Display Inventory by Options. This link will open an inventory status page, which uses the AddItem template. If there are none of the selected product in stock, the proper message regarding backorders will be displayed. If inventory is not being tracked for the selected product, this tag is ignored. The tag must appear in the template file as:
<!---INV--->

<!---INVOPT---> Tag This tag is replaced by the current inventory for the selected product. If inventory is being tracked by options, then the current number of items in stock with the specified options will be displayed. If there is no available inventory in stock, the proper message regarding backorders will be displayed. The tag must appear in the template file as:
<!---INVOPT--->

<!---CROSS_SALE---> Tag This tag will display links for all items listed in the Cross Sale section of the products details in the Merchant Administrator. The text for the link will be the linked products one line description if no link text was entered in the Cross Sale section. The tag must appear in the template file as:
<!---CROSS_SALE--->

PDG Commerce 4.0 -- Technical Reference Guide

55

Chapter 4 -- HTML Template Files

<!---UP_SALE---> Tag This tag will display links for all items listed in the Up Sale section of the products details in the Merchant Administrator. The text for the link will be the linked products one line description if no link text was entered in the Up Sale section. The tag must appear in the template file as:
<!---UP_SALE--->

<!---REMOVE_SUBMIT---> Tag This tag will be replaced by the Remove Button image specified in the Buttons section of your Cart Administrator. The tag must appear in the template file as:
<!---REMOVE_SUBMIT--->

<!---QTY_INPUT---> Tag This tag will be replaced by an input field that allows the customer to enter a quantity amount for each product. The tag must appear in the template file as:
<!---QTY_INPUT--->

RECIPIENT Tags
In addition to the standard Basket Template tags, the Basket HTML Template file can also use the RECIPIENT tags. If you are planning on customizing the layout of the Basket template, and you allow customers to ship a single order to multiple recipients, you will need to employ the RECIPIENT tags. These consist of two tags, <!---BEGIN_RECIPIENT---> and <!--END_RECIPIENT--->, between which all of the tags for displaying each recipients basket will be placed. Any information that falls between the RECIPIENT tags in the Basket HTML template will be repeated for each recipients cart until no recipients are left. You can use the standard Basket Template repeat tags inside of the RECIPIENT tags to call the product information for each recipients basket. In addition to the Basket repeat tags, you may also use the following tags within the RECIPIENT tags: <!---FRIENDLYNAME---> Tag This tag will display the friendly name entered for the current recipient. The tag must appear in the template file as:
<!---FRIENDLYNAME--->

56

PDG Commerce 4.0 -- Technical Reference Guide

Chapter 4 -- HTML Template Files

<!---SUBTOTAL---> Tag This tag will display the subtotal of the current recipients basket. The tag must appear in the template file as:
<!---SUBTOTAL--->

OPTIONS Tags
If you are planning on customizing the layout of the Basket template, you will need to employ the REPEAT tags. See above if you have not already done so. In order to display options for a product using the REPEAT tags, you must also use the OPTIONS tags inside of the REPEAT tags. These consist of two tags, <!---BEGIN_OPTIONS---> and <!---END_OPTIONS--->, between which all of the tags for displaying the preselected options will be placed. Any information that falls between the OPTIONS tags in the Basket HTML template calls the specific option information that has been selected by the customer for the corresponding product. The information that is called is repeated for all of the available options for the given product. These tags must appear in the HTML template file as:
<!---BEGIN_OPTION---> [option data] <!---END_OPTION--->

The option data comes from the Basket Options tags that work with the OPTIONS tags within the Basket HTML template in which they are embedded. For more information on how the OPTIONS tags work, see the beginning of this chapter. The tags that are allowed to be used between the OPTIONS tags in the Basket HTML template are as follows: <!---DESC---> Tag This tag is replaced by the name of the option for the given product. The tag must appear in the template file, between the OPTIONS tags, as:
<!---DESC--->

<!---VALUE---> Tag This tag is replaced by the customer-selected value for the corresponding option of the given product. The tag must appear in the template file, between the OPTIONS tags, as:
<!---VALUE---> PDG Commerce 4.0 -- Technical Reference Guide 57

Chapter 4 -- HTML Template Files

<!---PRICE---> Tag This tag is replaced with the cost reflected by the particular option selection for the given product. If there is no additional cost for the option selection, then this tag is replaced with 0.00. The tag must appear in the template file, between the OPTIONS tags, as:
<!---PRICE--->

<!---MNGRMTEXT---> Tag If the particular product option is for custom monogramming, this tag is replaced by the text selected by the customer to be monogrammed or engraved on the selected product. If there is no monogramming, then this tag is ignored. The tag must appear in the template file, between the OPTIONS tags, as:
<!---MNGRMTEXT--->

<!---NON_ZERO_PRICE---> Tag This tag is replaced with the cost reflected by the particular option selection for the given product. If there is no additional cost for the option selection, then this tag is ignored. The tag must appear in the template file, between the OPTIONS tags, as:
<!---NON_ZERO_PRICE--->

<!---NON_ZERO_QTYPRICE---> Tag This tag is replaced by the total price of the selected option being ordered. This value is calculated by multiplying the price of the option selection by the quantity of the product being ordered. If there is no additional cost for the option selection, then this tag is ignored. The tag must appear in the template file, between the OPTIONS tags, as:
<!---NON_ZERO_QTYPRICE--->

<!---NON_ZERO_PRICEC---> Tag This tag is replaced with the secondary currency cost reflected by the particular option selection for the given product. If there is no additional cost for the option selection, then this tag is ignored. The tag must appear in the template file, between the OPTIONS tags, as:
<!---NON_ZERO_PRICEC--->

<!---NON_ZERO_QTYPRICEC---> Tag This tag is replaced by the secondary currency cost of the total price of the selected option being ordered. This value is calculated by multiplying the
58 PDG Commerce 4.0 -- Technical Reference Guide

Chapter 4 -- HTML Template Files

price of the option selection by the quantity of the product being ordered. If there is no additional cost for the option selection, then this tag is ignored. The tag must appear in the template file, between the OPTIONS tags, as:
<!---NON_ZERO_QTYPRICEC--->

AddItem Template File


The AddItem Template File is used when PDG Commerce needs to obtain quantity and option information from a user after receiving the PreAdd action. For more information on the PreAdd action, please refer to the chapter regarding PDG Commerce Actions of this Technical Reference Guide. The AddItem Template File is also used when PDG Commerce displays inventory option tracking information, from a link created by the <!---INV---> tag. The AddItem Template File is essentially an HTML Web page. However, before PDG Commerce sends it to the customer, it searches the HTML Template File for special tags. When a tag is encountered, it is replaced with the appropriate information before being sent to the customers Web browser. The following are the standard AddItem Template tags (and are case-sensitive):
<!---ITEM---> <!---UnitPriceRecalcScript---> <!---OPTIONPRICECALCSCRIPT---> <!---SKU---> <!---DESC--->

Note: The <---UnitPriceRrcalcScript---> and <!---OPTIONPRICECALCSCRIPT---> tags may cause run-time errors when used in conjunction with customized Item templates that utilize the REPEAT, REPEAT NUMBER or OPTIONS tags. This tag only works with the standard Item template style. The <!---ITEM---> tag adds functionality to the AddItem template by embedding the Item template in the AddItem template. When using the AddItem page to display inventory, the <!---ITEM---> tag will be replaced by a table displaying the inventory status of each option combination of the item. A sample AddItem Template File is included with PDG Commerce.

PDG Commerce 4.0 -- Technical Reference Guide

59

Chapter 4 -- HTML Template Files

<!---ITEM---> Tag
PDG Commerce replaces this tag with selectable information about the product to be added. The <!---ITEM---> tag is replaced with data that is displayed in the Item HTML template. What the Item template can display includes, but is not limited to, the following:
[Item description] [Item price] Enter quantity: [Edit box for quantity] Option 1 description: [Pull-down box with selections for option 1] [More options...] [Submit button with the ADD action]

For more information, see the following section on the Item Template File. The tag must have its own line in the template file, and must appear as:
<!---ITEM--->

<!---UnitPriceRecalcScript---> Tag
This tag gets inserted between the head (<head>,</head>) tags and tells PDG Commerce to replace the tag with a dynamically created JavaScript function which enables the real-time price recalculation based on the options that the customer selects on the AddItem page. When this script is inserted, the pricing on the AddItem page will automatically reflect that of any options changed by the customer. Note that this script updates the unit price for the options selected. The displayed price will not change if the quantity ordered field is changed. There is also additional Javascript support functions in the AddItem and Item templates for this tag, which are staticially written in these templates. For this tag to operate properly, these Javascript functions need to be in the AddItem and Item templates as well. Note: This tag is case-sensitive. The JavaScripts located in the default template must remain there. If you create your own template, these scripts must be present if you wish for real-time price calculations on your catalog pages. The tag must appear in head section of the template file as:
<!---UnitPriceRecalcScript--->

60

PDG Commerce 4.0 -- Technical Reference Guide

Chapter 4 -- HTML Template Files

<!---OPTIONPRICECALCSCRIPT---> Tag
This tag gets inserted between the head (<head>,</head>) tags and tells PDG Commerce to replace the tag with a dynamically created JavaScript function which enables the real-time price recalculation based the option(s) that the customer selects on the AddItem page. When this script is inserted, the pricing on the AddItem page will automatically reflect that of any added cost incurred by options chosen by the customer. This script, unlike the UnitPriceRecalcScript tag, also inserts Javascript code to prevent invalid option combinations for the product, as defined in the Merchant Administrator. The JavaScripts located in the default template must remain there. If you create your own template, these scripts must be present if you wish for real-time price calculations on your catalog pages. The tag must appear in head section of the template file as:
<!---OPTIONPRICECALCSCRIPT--->

<!---SKU---> Tag
PDG Commerce replaces this tag with the sku number or product code of the item being displayed. The tag must appear in the template file as:
<!---SKU--->

<!---DESC---> Tag
PDG Commerce replaces this tag with the one-line description (name) of the item that you entered when initially setting up the product in your Merchant Administrator. The tag must appear in the template file as:
<!---DESC--->

Secondary Currency Calculation


If you want the secondary currency to be calculated on your products Item pages, you need to alter the FormatEuro JavaScript used on the AddItem.html template file. If your secondary currency is Euros, you do not need to make any changes. If you are using a different secondary currency, open your AddItem template in an HTML editor. Find the end of the FormatEuro JavaScript, which reads as follows:
valStr = "" + valInt + "." + valFracStr + " EU";

Change the value EU to the label of the currency you will be displaying as your secondary value.

PDG Commerce 4.0 -- Technical Reference Guide

61

Chapter 4 -- HTML Template Files

Inventory Option Template File


The Inventory Option Template File will display the available option combinations for the current product, as well as how many items are available for purchase for each possible option combination. Before PDG Shopping Cart sends the Inventory Option Template to the customer, it searches the HTML Template File for special tags. When a tag is encountered, it is replaced with the appropriate information before being sent to the customers Web browser. The following is the standard Inventory Option Tag:

<!---OPTION_INVENTORY--->

PDG Shopping Cart is given the location of this template file from the directory and template name specified in the Templates section of the Merchant Administrator (which stores a key in the Shopper.Conf file). For more information on entering files in the Templates section, refer to the PDG Commerce User Guide. PDG Shopping Cart is given the location of this template file from the directory and template name specified in the Templates section of the Merchant Administrator (which stores a key in the Shopper.Conf file). For more information on entering files in the Templates section, refer to the PDG Commerce User Guide.

<!---OPTION_INVENTORY---> Tag
This tag is replaced by a formatted table containing all possible option combinations for the product, and how many of each combination are currently in stock. The tag must appear in the template file as:
<!---OPTION_INVENTORY--->

Item Template File


The Item Template File is used to customize PDG Commerces output for the item on the AddItem template. Essentially, this is an HTML document which gets inserted into the AddItem template.

62

PDG Commerce 4.0 -- Technical Reference Guide

Chapter 4 -- HTML Template Files

As with all other templates, before it is sent to the customer, PDG Commerce searches the Item template for special tags. When a tag is encountered, it is replaced with the appropriate information before being sent to the customers Web browser. The following are the standard Item Template tags:
<!---SKU---> <!---DESC---> <!---UNITOFMEASURE---> <!---PRICE---> <!---TEXT---> <!---INV---> <!---WEIGHT---> <!---BONUSPOINT---> <!---IMAGE---> <!---THUMB---> <!---ITEMOPT---> <!---ITEMOPT#---> <!---DESC_OPT---> <!---DESC_OPT#---> <!---VALUEOPT---> <!---VALUEOPT#---> <!---ITEMRETURNURL---> <!---ITEMRECALCFIELD---> <!---USERDEF---> <!---INVOPT---> !---ORIGINAL_PRICE--!---TEXT_ORIGINAL_PRICE--!---DISCOUNT_AMOUNT--!---TEXT_DISCOUNT_AMOUNT--!---MIN_QTY--!---MAX_QTY--!---MIN_QTY_TEXT--!---MAX_QTY_TEXT--<!---ADD_LINK---> <!---SHOPSOMEMORE_LINK---> <!---CROSS_SALE---> <!---UP_SALE---> <!---RECIPIENT_SELECT_OPTIONS---> <!---RECIPIENT_SELECT_TABLE---> <!---MULTISHIP_ADD_LINK---> <!---NUMBER_OF_RECIPIENTS--->

PDG Commerce 4.0 -- Technical Reference Guide

63

Chapter 4 -- HTML Template Files

<!---RECIPIENT_SELECT--->

PDG Commerce comes with a sample Item template file. Below is an example of how this template will be displayed. For information on how to customize this display, see the REPEAT NUMBER Tags section below.

Sample Item Template Display

<!---SKU---> Tag
PDG Commerce replaces this tag with the SKU or product code of the item being displayed. The tag must appear in the template file as:
<!---SKU--->

<!---DESC---> Tag
PDG Commerce replaces this tag with the One-line description (name) of the item that you entered when initially setting up the product in your Merchant Administrator. The tag must appear in the template file as:
<!---DESC--->

<!---UNITOFMEASURE---> Tag
This tag is replaced with the unit of measurement associated with the quantity for the selected product. This can be units, or boxes, or pairs, or yards, for example. The tag must appear in the template file as:
<!---UNITOFMEASURE--->

64

PDG Commerce 4.0 -- Technical Reference Guide

Chapter 4 -- HTML Template Files

<!---WEIGHT---> Tag
PDG Commerce replaces this tag with the weight value assigned to the product during its setup. The tag must appear in the template file as:
<!---WEIGHT--->

<!---PRICE---> Tag
PDG Commerce replaces this tag with the unit price of the indicated product. The tag must appear in the template file as:
<!---PRICE--->

Note: This tag may be appended with a C, <---PRICEC--->. PDG Commerce will replace this tag with the unit price converted to the secondary currency.

<!---TEXT---> Tag
PDG Commerce replaces this tag with the product text, or detailed description, of the item being displayed. The tag must appear in the template file as:
<!---TEXT--->

<!---INV---> Tag
PDG Commerce replaces this tag with the current inventory for the product being displayed. If inventory is being tracked by product options for the selected product, this tag will be replaced by a link that reads Display Inventory by Options. This link will open an inventory status page, which uses the AddItem template. If there is none of the selected product in stock, the proper message regarding backorders will be displayed. If inventory is not being tracked for the selected product, this tag is ignored. The tag must appear in the template file as:
<!---INV--->

<!---BONUSPOINT---> Tag
PDG Commerce replaces this tag with the bonus point (frequent shopper points) value of the item being displayed. The tag must appear in the template file as:
<!---BONUSPOINT--->

PDG Commerce 4.0 -- Technical Reference Guide

65

Chapter 4 -- HTML Template Files

<!---IMAGE---> Tag
PDG Commerce replaces this tag with the image URL associated with the selected item. If there is not an image specified for a product, this tag will display the transparent.gif image. If the transparent.gif image is not found in the CommConfig folder on the site, a broken image link will be displayed. The tag should appear in the template file as:
<img src=!---IMAGE--->

<!---THUMB---> Tag
PDG Commerce replaces this tag with the thumbnail image URL associated with the selected item. If there is not an image specified for a product, this tag will display the transparent.gif image. If the transparent.gif image is not found in the CommConfig folder on the site, a broken image link will be displayed. The tag must appear in the template file as:
<img src=---THUMB--->

<!---ITEMOPT---> Tag
This tag is replaced by the option labels and selection menus for the options associated with the selected product. The tag must appear in the template file as:
<!---ITEMOPT--->

<!---ITEMOPT#---> Tag
PDG Commerce replaces this tag with the option label and selection menu for the option # appearing in your Commerce Administrator. The index numbers for the options begin at zero, so the first option would be <!---ITEMOPT0-->, the second option would be <!---ITEMOPT1--->, and so on. The tag must appear in the template file as:
<!---ITEMOPT#--->

The item descriptions and selection boxes will be displayed in the following manner:

Product Option Selection Displays on the Item Template

66

PDG Commerce 4.0 -- Technical Reference Guide

Chapter 4 -- HTML Template Files

<!---DESC_OPT---> Tag
This tag is replaced by the option descriptions associated with the selected product. There will be a line break after each option description. The tag must appear in the template file as:
<!---DESC_OPT--->

<!---DESC_OPT#---> Tag
PDG Commerce replaces this tag with the option label for the option # appearing in your Commerce Administrator. The index numbers for the options begin at zero, so the <!---DESC_OPT0---> tag will display the option label for the first option, the <!---DESC_OPT1---> tag will display the option label for the second option, and so on. The tag must appear in the template file as:
<!---DESC_OPT#--->

<!---VALUEOPT---> Tag
This tag is replaced by the option selection drop down menus associated with the selected product. There will be a line break after each option description. The tag must appear in the template file as:
<!---VALUEOPT--->

<!---VALUEOPT#---> Tag
PDG Commerce replaces this tag with the option selection drop down menu for the option # appearing in your Commerce Administrator. The index numbers for the options begin at zero, so the <!---VALUEOPT0---> tag will display the option selection drop down menu for the first option, the <!--VALUEOPT1---> tag will display the option selection drop down menu for the second option, and so on. The tag must appear in the template file as:
<!---VALUEOPT#--->

<!---ITEMRETURNURL---> Tag
This tag is replaced by a hidden field. It informs PDG Commerce of the reference page for the shopper. The reference page is the page which was being viewed prior to the AddItem page. Note that any URL entered into the Destination of Shop Some More Button field in the Cart Options section of the Merchant Administrator will override this reference page identifier. However, if the page was created dynamically, the user will be returned to the last statically created page.

PDG Commerce 4.0 -- Technical Reference Guide

67

Chapter 4 -- HTML Template Files

The tag must appear in the template file as:


<!---ITEMRETURNURL--->

<!---ITEMRECALCFIELD---> Tag
This tag is replaced by the current price of the product, with the price modified appropriately to reflect any price changes by option. The tag must appear in the template file as:
<!---ITEMRECALCFIELD--->

<!---USERDEF#---> Tag
This tag is replaced by any User Defined data that may be associated with the particular product. The # (0-9) indicates which user defined field to display for the selected product. If there is no user defined data for the given field, then this tag will be ignored. The tag must appear in the template file as:
<!---USERDEF#--->

<!---INVOPT---> Tag
This tag is replaced by the current inventory for the selected product. If inventory is being tracked by options, then this value will be displayed. If there is no available inventory in stock, the proper message regarding backorders will be displayed. The tag must appear in the template file as:
<!---INVOPT--->

!---ORIGINAL_PRICE--- Tag
This tag is replaced by the original price of the item before any discounting. If no discount is applied to the product, this tag is ignored. The tag must appear in the template file as:
<---ORIGINAL_PRICE--->

!---TEXT_ORIGINAL_PRICE--- Tag
This tag is replaced by the original price of them before any discounting, with the label Original Price:. If no discount is applied to the product, this tag is ignored. The tag must appear in the template file as:
!---TEXT_ORIGINAL_PRICE---

68

PDG Commerce 4.0 -- Technical Reference Guide

Chapter 4 -- HTML Template Files

!---DISCOUNT_AMOUNT--- Tag
This tag is replaced by the discounted amount of the item. The tag must appear in the template file as:
!---DISCOUNT_AMOUNT---

!---TEXT_DISCOUNT_AMOUNT--- Tag
This tag is replaced by the discounted amount of the item, with the label Discount Of:. The tag must appear in the template file as:
!---TEXT_DISCOUNT_AMOUNT---

!---MIN_QTY--- Tag
This tag is replaced by the minimum quantity that can be ordered of the item. This value is set in the Merchant Administrator. If there is no minimum quantity, this tag is replaced with 0. The tag must appear in the template file as:
!---MIN_QTY---

<!---MIN_QTY_TEXT---> Tag
This tag is used to display a customized message that contains the minimum quantity of the item that can be ordered. If there is no minimum quantity for the item, then this tag is ignored (instead of being replaced with 0). Inside the tag, you place text that will be displayed. If the text contains [VALUE], this is replaced with the minimum quantity. The tag must appear in the template file as:
<!---MIN_QTY_TEXT You must order at least [VALUE] units to buy this. -->

!---MAX_QTY--- Tag
This tag is replaced by the maximum quantity that can be ordered of the item. This value is set in the Merchant Administrator. If there is no maximum quantity, this tag is replaced with 0. The tag must appear in the template file as:
!---MAX_QTY---

<!---MAX_QTY_TEXT---> Tag
This tag is used to display a customized message that contains the maximum quantity of the item that can be ordered. If there is no maximum quantity for
PDG Commerce 4.0 -- Technical Reference Guide 69

Chapter 4 -- HTML Template Files

the item, then this tag is ignored (instead of being replaced with 0). Inside the tag, you place text that will be displayed. If the text contains [VALUE], this is replaced with the maximum quantity. The tag must appear in the template file as:
<!---MAX_QTY_TEXT Only [VALUE] units per order. --->

!---ADD_LINK--- Tag
This tag displays the Add to Cart button. The tag must appear in the template file as:
<!---ADD_LINK--->

!---SHOPSOMEMORE_LINK--- Tag
This tag displays the Shop Some More button. The tag must appear in the template file as:
<!---SHOPSOMEMORE_LINK--->

!---CROSS_SALE--- Tag
This tag will display links for all items listed in the Cross Sale section of the products details in the Merchant Administrator. The text for the link will be the linked products one line description if no link text was entered in the Cross Sale section. The tag must appear in the template file as:
<!---CROSS_SALE--->

!---UP_SALE--- Tag
This tag will display links for all items listed in the Up Sale section of the products details in the Merchant Administrator. The text for the link will be the linked products one line description if no link text was entered in the Up Sale section. The tag must appear in the template file as:
<!---UP_SALE--->

70

PDG Commerce 4.0 -- Technical Reference Guide

Chapter 4 -- HTML Template Files

!---RECIPIENT_SELECT_OPTIONS--- Tag
This tag will display a selection drop down menu containing all available friendly names for multiple shipping recipients that have been previously saved by the current customer, if the customer is logged in. The tag must appear in the template file as:
<select name=singlerecipient><!---RECIPIENT_SELECT_OPTIONS---> </select>

!---RECIPIENT_SELECT_TABLE--- Tag
This tag will display a vertical table allowing the customer to either choose from a drop down menu of saved recipient selections or enter a new recipient name and specify a quantity of the product to add to the cart for that recipient. By default, this table displays fields to enter two recipients. If the customer enters a larger number of recipients in the numrecipients input field and clicks the Redraw Recipient Table button, this tag will display the same fields to specify the recipient name and quantity, but it will display enough fields to enter the number of recipients requested by the customer. The tag must appear in the template file as:
<!---RECIPIENT_SELECT_TABLE--->

!---MULTISHIP_ADD_LINK--- Tag
This tag will display an Add to Cart button that will add the products entered in either the table displayed by the <!--RECIPIENT_SELECT_TABLE---> tag or the table displayed by the <!--RECIPIENT_SELECT---> tag. This tag creates a button that performs a mshipadd action. If a single recipient is specified, the <!---ADD_LINK---> button will be used instead of the <!---MULTISHIP_ADD_LINK---> button and will perform an add action. The tag must appear in the template file as:
<!---MULTISHIP_ADD_LINK--->

!---NUMBER_OF_RECIPIENTS--- Tag
This tag will accept a value for the number of recipients entry fields that the customer wants to appear on the page. When the recipient table is redrawn, the number entered in this field will indicate how many recipient name entry fields and quantity entry fields should be displayed on the page. The tag must appear in the template file as:
<input type=text name=numrecipients value="!--NUMBER_OF_RECIPIENTS---">

PDG Commerce 4.0 -- Technical Reference Guide

71

Chapter 4 -- HTML Template Files

The number of recipient entry fields to be displayed on the page may also be set in the link to the Item page, for example:
http://www.webstorename.com/cgi-bin/commerce?preadd=action&key=A0001&numrecipients=4

!---RECIPIENT_SELECT--- Tag
This tag will display a horizontal table allowing the customer to either choose from a drop down menu of saved recipient selections or enter a new recipient name and specify a quantity of the product to add to the cart for that recipient. By default, this table displays fields to enter two recipients. If the customer enters a larger number of recipients and clicks the Redraw Recipient Table button, this tag will display the same fields to specify the recipient name and quantity, but it will display enough fields to enter the number of recipients requested by the customer. The tag must appear in the template file as:
<!---RECIPIENT_SELECT--->

DISCOUNT Tags
In addition to the standard Item Template tags, the Item HTML Template file can also use the DISCOUNT tags. If you are planning on customizing the layout of the Quantity Discount table displayed on the Item Template, you will need to employ the DISCOUNT tags. These consist of two tags, <!--BEGIN_ITEM_DISC---> and <!---END_ITEM_DISC--->, between which all of the tags for displaying each quantity discount will be placed. Any information that falls between the DISCOUNT tags in the Item HTML Template will be repeated for each quantity discount defined for the product, until no discounts are left. These tags must have their own lines in the template file, and must appear as:
<!---BEGIN_ITEM_DISC---> [discount data] <!---END_ITEM_DISC--->

The discount data comes from the Quantity Discount tags which are as follows: <!---MIN---> Tag This tag displays the minimum quantity for the current discount. The tag must appear in the template file, between the DISCOUNT tags, as:
<!---MIN--->

72

PDG Commerce 4.0 -- Technical Reference Guide

Chapter 4 -- HTML Template Files

<!---MAX---> Tag This tag displays the maximum quantity for the current discount. The tag must appear in the template file, between the DISCOUNT tags, as:
<!---MAX--->

<!---DISC_AMT---> Tag This tag displays the amount discounted from the item price. For example, a discount of $5.00 would display -5.00. The tag must appear in the template file, between the DISCOUNT tags, as:
<!---DISC_AMT--->

<!---ITEM_PRICE---> Tag This tag displays the modified item price, which is the item price after the discount has been applied. For example, if the products original price is $15.00, and the discount is $5.00, this tag will display 10.00. The tag must appear in the template file, between the DISCOUNT tags, as:
<!---ITEM_PRICE--->

REPEAT NUMBER Tags


When the Item template is embedded in the Add Item template, you may find it convenient to use the REPEAT NUMBER tags. This yields an Item page that displays multiple entries for a single product and its options. This layout allows customers to select several different option combinations for the product, enter a quantity for each, and add them all to their cart with a single click. The tags that may be used between the REPEAT NUMBER tags within the Item template are the same as the standard Item Template tags listed above. Warning: Please be aware that if you used the REPEAT NUMBER tags on the Item template, any Item template tags outside of these REPEAT NUMBER tags will cause errors in PDG Commerce. These tags must have their own lines in the template file, and must appear as:
<!---BEGIN_REPEAT[x]---> [item data] <!---END_REPEAT[y]--->

In the example above, x and y are integers (where x < y) and the item data is called by the standard Item Template tags. The same types of product data will be displayed for each number between x and y, inclusively. Note: If more than one set of REPEAT NUMBER tags are used in the Item HTML template, you must make sure that the spans (x,y) DO NOT overlap.
PDG Commerce 4.0 -- Technical Reference Guide 73

Chapter 4 -- HTML Template Files

For more information on how the REPEAT NUMBER tags work, please see the beginning of this chapter. The figure below shows an example of an Item template that utilizes the REPEAT NUMBER tags.

Custom Item Template Display

From this Item tempalate, a customer can choose quantities of up to three different option combinations and add them to his cart with a single click.

OPTIONS Tags
You have seen the OPTIONS tags used to repeat the option information for several different products in the Basket HTML template. The OPTIONS tags may also be used, with slightly different functionality, in the Item HTML template. When used in the Item HTML template, the OPTIONS tags will repeat the product listing for all of the possible option combinations. Therefore, if a product has two options each with three selections, there would be nine product instances on the Item page, each with a unique option combination. Each listing will be accompanied by a Quantity field and an Add button for easy shopping by your customers. These tags must appear in the HTML template file as:
<!---BEGIN_OPTIONS---> [option data] <!---END_OPTIONS--->

74

PDG Commerce 4.0 -- Technical Reference Guide

Chapter 4 -- HTML Template Files

The option data comes from the Options Item tags that work with the Item HTML template. For more information on how the OPTIONS tags work, see the beginning of this chapter. The figure below illustrates how the Item page may look for an item that has two options with three possible selections each.

Custom Item Template Display

Note: The <---UNITPRICERECALCSCRIPT---> and <!---OPTIONPRICECALCSCRIPT---> tags may cause run-time errors when used in conjunction with customized Item templates that utilize the REPEAT, REPEAT NUMBER or OPTIONS tags. This tag only works with the standard Item template style. The tags that are allowed to be used between the OPTIONS tags in the Item HTML template (i.e. the Options Item tags) are as follows: <!---OPT_LINE_PRICE---> Tag This tag is replaced by the price of the product before any additional option charges have been applied. The tag must appear in the template file, between the OPTIONS tags, as:
<!---OPT_LINE_PRICE--->

<!---OPT_LINE_ADDED_PRICE---> Tag This tag is replaced by any added price that accompanies the given option selections. The tag must appear in the template file, between the OPTIONS tags, as:
<!---OPT_LINE_ADDED_PRICE--->

PDG Commerce 4.0 -- Technical Reference Guide

75

Chapter 4 -- HTML Template Files

<!---OPT_LINE_SKU---> Tag This tag is replaced by the specific product code for the product with the given option combination. This product code includes any SKU suffixes that accompany that products option selections. The tag must appear in the template file, between the OPTIONS tags, as:
<!---OPT_LINE_SKU--->

<!---DESC_OPT---> Tag This tag is replaced by the names or descriptions given to the options for the particular product. There will be a line break after each option description. The tag must appear in the template file, between the OPTIONS tags, as:
<!---DESC_OPT--->

Note: This tag may be appended with a number, <---DESC_OPT[#]--->. PDG Commerce will replace this tag with only the option description that corresponds to that options index number. If an option doesnt exist for that index number, the tag will be ignored. Option indices start at zero. For example, <!---DESC_OPT0---> will display the description for the first option assigned to the product. <!---VALUEOPT---> Tag This tag is replaced by the particular option selection for the given product entry. There will be a line break after each option selection. The tag must appear in the template file as:
<!---VALUEOPT--->

Note: This tag may be appended with a number, <---VALUE_OPT[#]--->. PDG Commerce will replace this tag with only the option selection that corresponds to that options index number. If an option doesnt exist for that index number, the tag will be ignored. Option indices start at zero. For example, <!---VALUEOPT0---> will display the menu of selections for the first option assigned to the product. <!---OPT_LINE_INV---> Tag This tag is replaced by the physical inventory for the product with the given option combination. If there is no inventory, this line will indicate whether backordering is allowed on the selected item. The tag must appear in the template file, between the OPTIONS tags, as:
<!---OPT_LINE_INV--->

76

PDG Commerce 4.0 -- Technical Reference Guide

Chapter 4 -- HTML Template Files

<!---OPT_LINE_QTY---> Tag This tag is replaced by the name portion of the HTML text input that will contain the quantity of the product to be added. This tag is important for accurately indexing the products option combinations on the template. The tag must appear within an HTML input tag, between the OPTIONS tags, as:
<input name="!---OPT_LINE_QTY---" value="0">

<!---OPT_LINE_ADD---> Tag This tag is replaced by the name portion of the HTML submit button that is used for changing quantities. This tag is important for accurately indexing the products option combinations on the template. The tag must appear within an HTML input tag, between the OPTIONS tags, as:
<input type="submit" name="!---OPT_LINE_ADD---" value="[text to display]">

This will create a button that will add the corresponding quantity entered in the OPT_LINE_QTY text field, above, to the shoppers Cart.

Option Display Tags


When used in the Item HTML template, the OPTION DISPLAY tags will list the options for the current product. Therefore, if a product has three options, the HTML code and PDG tags insided the OPTION DISPLAY section will be repeated three times for this product on the Item page, once for each option. The OPTION DISPLAY tags will display all options in the same fashion. Please note that the OPTION DISPLAY tags may not be used inside the OPTIONS tags. These tags must appear in the HTML template file as:
<!---BEGIN_OPTION_DISPLAY---> [option display data] <!---END_OPTION_DISPLAY--->

The tags that are allowed to be used between the OPTION DISPLAY tags in the Item HTML template (i.e. the option display data) are as follows: <!---OPTION_DESCRIPTION---> Tag This tag is replaced by the name or description of the current option. The tag must appear in the template file as:
<!---OPTION_DESCRIPTION--->

PDG Commerce 4.0 -- Technical Reference Guide

77

Chapter 4 -- HTML Template Files

<!---OPTION_SELECT---> Tag This tag is replaced by a drop down menu containing the available selections for the current option. The tag must appear in the template file as:
<!---OPTION_SELECT--->

<!---OPTION_SELECT_WITH_PRICING---> Tag This tag is replaced by a drop down menu containing the available selections for the current option. If any of the option selections have a price change assigned to them, the price change will be displayed next to the selection name in the drop down menu. The tag must appear in the template file as:
<!---OPTION_SELECT_WITH_PRICING--->

<!---OPTION_VERT_RADIO---> Tag This tag is replaced by a set of radio buttons. A radio button appears next to each option selections name. Only one radio for each option may be selected at a time. This tag will display the radio buttons and selection names in a vertical format. The tag must appear in the template file as:
<!---OPTION_VERT_RADIO--->

<!---OPTION_VERT_RADIO_WITH_PRICING---> Tag This tag is replaced by a set of radio buttons. A radio button appears next to each option selections name. Only one radio for each option may be selected at a time. If any of the option selections have a price change assigned to them, the price change will be displayed next to the selection name. This tag will display the radio buttons and selection names in a vertical format. The tag must appear in the template file as:
<!---OPTION_VERT_RADIO_WITH_PRICING--->

<!---OPTION_HORIZ_RADIO---> Tag This tag is replaced by a set of radio buttons. A radio button appears next to each option selections name. Only one radio for each option may be selected at a time. This tag will display the radio buttons and selection names in a horizontal format. The tag must appear in the template file as:
<!---OPTION_HORIZ_RADIO--->

<!---OPTION_HORIZ_RADIO_WITH_PRICING---> Tag This tag is replaced by a set of radio buttons. A radio button appears next to each option selections name. Only one radio for each option may be selected at a time. If any of the option selections have a price change assigned to them, the price change will be displayed next to the selection name. This tag will
78 PDG Commerce 4.0 -- Technical Reference Guide

Chapter 4 -- HTML Template Files

display the radio buttons and selection names in a horizontal format. The tag must appear in the template file as:
<!---OPTION_HORIZ_RADIO_WITH_PRICING--->

<!---IF_CUST_TEXT---> Tag and <!---END_IF_CUST_TEXT---> Tag These tags are used to indicate the custom text display area. Any OPTION DISPLAY tags appearing in between these two tags on the page will only be displayed if the current option has a custom text selection. The tags must appear in the template file as:
<!---IF_CUST_TEXT---> and <!---END_IF_CUST_TEXT--->

<!---AUTO_SELECT_CUST_TEXT---> Tag This tag should be used if you are collecting custom text for each option for the product. This tag will pass the option information as a hidden input field, with the custom text selection specified. The tag must appear in the template file as:
<!---AUTO_SELECT_CUST_TEXT--->

<!---CUST_TEXT---> Tag This tag is replaced with an input box for custom text. By default, this input field will be displayed with a size of 20. You may specify a different size by adding size=x to the tag. The tag must appear in the template file as:
<!---CUST_TEXT---> or <!---CUST_TEXT size=40--->

<!---CUSTOM_TEXTAREA---> Tag This tag is replaced with an input textarea for custom text. By default, this textarea will be displayed with a column width of 20 and a rowspan of three. You may specify a different size by adding cols=x and rows=y to the tag. The tag must appear in the template file as:
<!---CUSTOM_TEXTAREA---> or <!---CUSTOM_TEXTAREA cols=40 rows=5--->

PDG Commerce 4.0 -- Technical Reference Guide

79

Chapter 4 -- HTML Template Files

MultiAdd Template File


The MultiAdd Template File is used whenever the MultiPreAdd action is called. The MultiAdd template is used to allow customers to add several products to their cart with a single click. The MultiAdd Template File is essentially an HTML Web page. However, before PDG Commerce sends it to the customers browser, it searches the file for special tags. When PDG Commerce encounters these tags, they are replaced with the appropriate information before being sent to the customers Web browser. In order for PDG Commerce to properly receive and process information from this template file, the MultiAdd Template File must contain a form submission back to PDG Commerce with the MultiAdd action. For all the required fields for this action, please see the MultiAdd action definition in Chapter 5 of this Technical Reference Guide. The tags used with the MultiAdd Template are the same as those that can be used with the REPEAT tags in the Item template. However, it is imperative that you use the REPEAT tags on the MultiAdd Template, as this provides the multiple listing which makes MultiAdd a special feature. For more information, see the Repeat Item template tags in the Item Template File section, above. Note: PDG Commerces "locked options" feature will not be enabled when the MultiAdd template is called from the MultiPreAdd action. Please see 'Maintaining Products' of the PDG Commerce User Guide for more information on locked options. PDG Commerce is given the location of this template file from the directory and template name specified in the Templates section of the Merchant Administrator (which stores a key in the Shopper.Conf file). For more information on entering files in the Templates section, refer to the PDG Commerce User Guide. There are many different ways in which you can format the MultiAdd template. The following are three example Multiadd formats.

80

PDG Commerce 4.0 -- Technical Reference Guide

Chapter 4 -- HTML Template Files

MultiAdd Row Format


In addition to the item template tags, you may also use the following tags within the REPEAT tags on the MultiAdd page. <!---ADD_SUBMIT---> Tag This tag will be replaced by the Add Item to Cart Button image specified in the Buttons section of your Cart Administrator. The tag must appear in the template file as:
<!---ADD_SUBMIT--->

<!---QTY_INPUT---> Tag This tag will be replaced by an input field that allows the customer to enter a quantity amount for each product. The tag must appear in the template file as:
<!---QTY_INPUT--->

Below is an example of how the MultiAdd Row Format will be displayed:

MultiAdd Thumbnail Format


In addition to the item template tags, you may also use the following tags within the REPEAT tags on the MultiAdd page. <!---ADD_SUBMIT---> Tag This tag will be replaced by the Add Item to Cart Button image specified in the Buttons section of your Cart Administrator. The tag must appear in the template file as:
<!---ADD_SUBMIT--->

PDG Commerce 4.0 -- Technical Reference Guide

81

Chapter 4 -- HTML Template Files

<!---QTY_INPUT---> Tag This tag will be replaced by an input field that allows the customer to enter a quantity amount for each product. The tag must appear in the template file as:
<!---QTY_INPUT--->

Below is an example of how the MultiAdd Thumbnail Format will be displayed:

Select Box Format


If you wish to repeat the products on a multiadd page without including the msku variables, you may use a different set of REPEAT tags. For example, if you wish to display a drop down menu of all products available on your web site, then have the customer use this menu to access the Item page for a single product, you could not use the msku variables. In that case, you would use the REPEAT ITEM tags instead of the standard REPEAT tags. For example, the following code would display the drop down menu:
<form method=post action="!---SCRIPT_NAME---"> <input type=hidden name="preadd" value="action"> <select name="key"> <!---BEGIN_REPEAT_ITEM---> <option value="!---SKU---">!---DESC---</option> <!---END_REPEAT---> </select> <input type=submit name="submit" value="Submit"> </form>

82

PDG Commerce 4.0 -- Technical Reference Guide

Chapter 4 -- HTML Template Files

Note: This code will use the constraints of the "Number of Results Per Page" field in the Search settings of the Commerce Administrator to control the amount of search results listed in the drop down menu. For more information on these settings, please view the "Configuring Product Search Results" chapter in the PDG Commerce User Guide. Below is an example of how the Select Box Format will be displayed:

If you would like to enter the msku variables in a different format than that of the normal REPEAT tags, you may use the REPEAT ITEM tags with an additional sku input tag to add the msku variables in a different location: <!---SKU_INPUT---> Tag This tag will be replaced by the appropriate msku variable for each product displayed within the <!---BEGIN_REPEAT_ITEM---> and <!---END_REPEAT---> tags. The tag must appear in the template file as:
<!---SKU_INPUT--->

Note: If you are using the REPEAT ITEM tags on a Multiadd template but are not creating a drop down menu of products, you must include the <!---SKU_INPUT---> tag.

Checkout Template File


The Checkout Template File is used when PDG Commerce needs to obtain the customers contact, billing, and shipping information from a user after receiving the Checkout action (usually from the Basket page). For more information on the Checkout action, please see the chapter regarding PDG Commerce Actions. The Checkout Template File is essentially an HTML Web page. However, before PDG Commerce sends it to the customer, it searches the HTML Template File for special tags. When PDG Commerce encounters these tags, they are replaced with the appropriate information before being sent to the customers Web browser. In order for PDG Commerce to properly receive and process information from this template file, the Checkout Template File must contain a form subPDG Commerce 4.0 -- Technical Reference Guide 83

Chapter 4 -- HTML Template Files

mission back to PDG Commerce with the Verify action. For all the required fields for this callback, please see the Verify action definition in the chapter regarding PDG Commerce Actions. The Checkout Template has many of the tags available on the Basket template page. They are described in detail with the Basket Template, and are listed here for reference:
<!---BASKET---> <!---ADDITEMMSG---> <!---ADDITEMDATA---> <!---REMOVEALLMSG---> <!---SUBTOTAL---> <!---WEIGHT_TOTAL---> <!---NUM_ITEMS---> <!---ORDER_SUBTOTAL_DISC---> <!---PROD_CAT_QTY_DISC---> <!---BONUS_PT_TOTAL---> <!---ADD_SHIPPING_TOTAL---> The REPEAT tags, and all available tags that may be placed inside REPEAT sections.

The following are the standard Checkout Template tags:


<!---ORDER---> <!---SHIPPINGMETHOD---> <!---COUNTRIES---> <!---BILLCOUNTRY---> <!---SHIPCOUNTRY---> <!---DISPLAYCART---> <!---DISPLAYFORCECOOKIE---> <!---PDGCARTFORMDATA---> <!---SUBTOTAL---> <!---WEIGHT_TOTAL---> <!---NUM_ITEMS---> <!---ORDER_SUBTOTAL_DISC---> <!---BONUS_PT_TOTAL---> <!---ADD_SHIPPING_TOTAL---> !--- SUBMIT_LINK--<!---SUBTOTAL_WITH_DISCOUNT---> <!---SEC_FORCE_DATA---> ShipText and BillText

84

PDG Commerce 4.0 -- Technical Reference Guide

Chapter 4 -- HTML Template Files

Additionally, PDG Commerce supports these customer information related tags. These tags allow PDG Commerce to pre-fill out purchase information based on the customers account.
!---EMAIL--!---PHONE1--!---BILL_FIRST_NAME--!---BILL_LAST_NAME--!---BILL_STREET1--!---BILL_STREET2--!---BILL_CITY--!---BILLSTATE--!---BILL_PROVINCE--!---BILL_ZIP--!---SHIPPING_DEST_SELECT--!---SHIP_NAME--!---SHIP_STREET1--!---SHIP_STREET2--!---SHIP_CITY--!---SHIPSTATE !---SHIP_PROVINCE--!---SHIP_ZIP---

A sample Checkout Template File is included with PDG Commerce. Below is an example of how this Checkout Template will be displayed. Please see the section on REPEAT Tags at the beginning of this chapter for more information on how to customize this template.

PDG Commerce 4.0 -- Technical Reference Guide

85

Chapter 4 -- HTML Template Files

Sample Checkout Template Display

<!---ORDER---> Tag
When this tag is encountered, PDG Commerce replaces it with the customer's current cart. Unlike the cart display used in the Basket template file, this display does not allow the customer to change product quantities. While it is still formatted in a table, the total displayed for the order does not contain any additional shipping charges or sales tax. These additional costs can bedisplayed on the Verify template with some of the tags explained later.
86 PDG Commerce 4.0 -- Technical Reference Guide

Chapter 4 -- HTML Template Files

The tag must have its own line in the template file, and must appear in the template file as:
<!---ORDER--->

<!---SHIPPINGMETHOD---> Tag
When this tag is encountered, PDG Commerce replaces it with a drop-down menu containing all the available shipping methods as defined in your Merchant Administrator. This tag must appear inside the template as.
<!---SHIPPINGMETHOD--->

This field is almost always required. If you are planning to remove this field (for instance, if you have only one shipping method), you will need to replace it with an input field like the one below:
<input type="hidden" name="shippingmethod" value="0">

<!---COUNTRIES---> Tag
When PDG Commerce encounters this tag, it replaces it with a list of HTML option form inputs for all of the available countries. This tag must be inserted between HTML select tags in the template and can appear as:
<select name="billcountry"> <!---COUNTRIES---> </select>

This syntax will produce a drop-down menu which lists all of the available countries in PDG Commerce for the billcountry form input.

<!---STATES---> Tag
When PDG Commerce encounters this tag, it replaces it with a list of HTML option form inputs for all of the available states. This tag must be inserted between HTML select tags in the template and can appear as:
<select name="billstate"> <!---STATES---> </select>

This syntax will produce a drop-down menu which lists all of the available U.S. states and Canadian provinces for the billstate form input.

PDG Commerce 4.0 -- Technical Reference Guide

87

Chapter 4 -- HTML Template Files

<!---DISPLAYCART---> Tag
When this tag is encountered, PDG Commerce replaces it with the customer's current cart. Unlike the cart display used in the Basket Template File, this display does not allow the customer to change product quantities. While it is still formatted in a table, the total displayed for the order does not contain any additional shipping charges or sales tax. The tag must have its own line in the template file, and must appear in the template file as:
<!---DISPLAYCART--->

Note: This tag works essentially the same as the <!---ORDER---> tag, explained above.

<!---DISPLAYFORCECOOKIE---> Tag
When this tag is encountered, PDG Commerce replaces it with the cookie that has been appended to the shoppers Web browser. Forced cookies are only needed if the customers cart is being directed to a different server (i.e. a secure server). This tag must appear in the template as:
<!---DISPLAYFORCECOOKIE--->

<!---PDGCARTFORMDATA---> Tag
When this tag is encountered, PDG Commerce replaces it with hidden information that is necessary for the checkout process. This tag must be located within the form submission in the Checkout HTML template file. No visible information is replaced by this tag, therefore, it does not affect the visible layout of your HTML template in any way. This tag is required for the Checkout Template, and for PDG Commerce to operate properly. The tag must appear in the template file as:
<!---PDGCARTFORMDATA--->

<!---SUBTOTAL---> Tag
This tag is replaced by the subtotal for the order in the customers current cart. This value represents just the total price of all of the products in the cart. Sales tax, shipping, and discounts have not been considered. The tag must appear in the template file as:
<!---SUBTOTAL--->

88

PDG Commerce 4.0 -- Technical Reference Guide

Chapter 4 -- HTML Template Files

<!---WEIGHT_TOTAL---> Tag
This tag is replaced by the total weight of all of the products in the current cart. This value may be used to calculate shipping charges if weight tables have been specified in the Shipping Rules section of the Merchant Administrator, and this value is also used in any real-time shipping costs obtained from either UPS or USPS. The tag must appear in the template file as:
<!---WEIGHT_TOTAL--->

<!---NUM_ITEMS---> Tag
This tag is replaced by the total number of items in the current cart. This value may be used to calculate shipping charges if quantity tables have been specified in the Shipping Rules section of the Merchant Administrator (See the PDG Commerce User Guide for more information). The tag must appear in the template file as:
<!---NUM_ITEMS--->

<!---ORDER_SUBTOTAL_DISC---> Tag
This tag tells PDG Commerce to replace the tag with whatever subtotal-based discount may be applied to the order. This calculation is made depending upon the discounts you defined in the Merchant Administrator (See the PDG Commerce User Guide for more information). If no discount applies to the order, then this tag is replaced with 0.0. The tag must appear in the template file as:
<!---ORDER_SUBTOTAL_DISC--->

<!---PROD_CAT_QTY_DISC---> Tag
This tag will display all product category discounts applied to the order. Each product category quantity discount will be displayed with the label Discount for Ordering X Products From A000, where X is the number of products ordered from category A000. The tag must appear in the template file as:
<!---PROD_CAT_QTY_DISC--->

PDG Commerce 4.0 -- Technical Reference Guide

89

Chapter 4 -- HTML Template Files

<!---BONUS_PT_TOTAL---> Tag
This tag is replaced by the total number of bonus or frequent shopper points awarded to the current order. If no bonus points have been earned by the products in the order, then this tag is replaced with 0.0. The tag must appear in the template file as:
<!---BONUS_PT_TOTAL--->

<!---ADD_SHIPPING_TOTAL---> Tag
When PDG Commerce encounters this tag, it is replaces with any additional shipping charges that may have been applied to any of the products in the current order. If no additional shipping charges are incurred from any of the products in the order, PDG Commerce will ignore this tag. The tag must appear in the template file as:
<!---ADD_SHIPPING_TOTAL--->

!---SUBMIT_LINK--- Tag
PDG Commerce replaces this with the submit button for the form, which will send shipping and billing information to the cart and proceed with collecting payment information. The tag must appear in the template file as:
!---SUBMIT_LINK---

<!---SUBTOTAL_WITH_DISCOUNT---> Tag
This tag is replaced by the subtotal for the order in the customers current order. This value represents just the total price of all of the products in the cart, with all discounting applied. This subtotal does not include any of the charges for any applied taxes or any shipping and handling. The tag must appear in the template file as:
<!---SUBTOTAL--->

!---EMAIL--This tag is replaced with the customers email address if the customer is currently logged in.

!---PHONE1--This tag is replaced with the customers phone number if the customer is currently logged in.
90 PDG Commerce 4.0 -- Technical Reference Guide

Chapter 4 -- HTML Template Files

!---BILL_FIRST_NAME--This tag is replaced with the customers first name of the billing information, if the customer is currently logged in.

!---BILLFIRSTNAME--This tag is replaced with the HTML code for an edit box which contains the first name of the customers billing information, if the customer is currently logged in. The edit box will already be properly named so that any changes to it will be saved when the customer continues on to the Verify step.

!---BILL_LAST_NAME--This tag is replaced with the customers last name of the billing information, if the customer is currently logged in.

!---BILLLASTNAME--This tag is replaced with the HTML code for an edit box which contains the last name of the customers billing information, if the customer is currently logged in. The edit box will already be properly named so that any changes to it will be saved when the customer continues on to the Verify step.

!---BILL_STREET1--This tag is replaced with the first line of the customers of the street information of the billing adress, if the customer is currently logged in.

!---BILLSTREET1--This tag is replaced with the HTML code for an edit box which contains the first line of the street address of the customers billing information, if the customer is currently logged in. The edit box will already be properly named so that any changes to it will be saved when the customer continues on to the Verify step.

!---BILL_STREET2--This tag is replaced with the first second of the customers of the street information of the billing adress, if the customer is currently logged in.

PDG Commerce 4.0 -- Technical Reference Guide

91

Chapter 4 -- HTML Template Files

!---BILLSTREET2--This tag is replaced with the HTML code for an edit box which contains the second line of the street address of the customers billing information, if the customer is currently logged in. The edit box will already be properly named so that any changes to it will be saved when the customer continues on to the Verify step.

!---BILL_CITY--This tag is replaced with the customers city of the billing information, if the customer is currently logged in.

!---BILLCITY--This tag is replaced with the HTML code for an edit box which contains the city of the customers billing information, if the customer is currently logged in. The edit box will already be properly named so that any changes to it will be saved when the customer continues on to the Verify step.

!---BILLSTATE--This tag is replaced with the customers state of the billing information, if the customer is currently logged in.

!---BILL_PROVINCE--This tag is replaced with the customers province of the billing information, if the customer is currently logged in.

<!---BILLCOUNTRY---> Tag
When this tag is encountered, PDG Commerce replaces it with a drop-down menu containing all the countries with their corresponding numeric code for PDG Commerce. The value selected by the customer may later be used for UPS real-time cost capturing, as well as determining the applicable shipping, handling, and tax rules (if the customer opts to ship to their billing address). The name of the drop-down menu is billcountry and is used specifically to generate the billcountry form input. This tag must be inside the form submission to PDG Commerce with the Verify action.
<!---BILLCOUNTRY--->

92

PDG Commerce 4.0 -- Technical Reference Guide

Chapter 4 -- HTML Template Files

This field can be removed, but must be replaced with its HTML equivalent. For instance, if you only offer shipping to the United States, this field would look like:
<input type="hidden" name="billcountry" value="461">

If you wanted to offer shipping to the US and Canada:


<select name="billcountry"> <option value="461">United States <option value="69">Canada </select>

A list of the country codes you would need to reference for this type of syntax is found later in this manual.

!---BILL_ZIP--This tag is replaced with the customers postal code of the billing information, if the customer is currently logged in.

!---BILLZIP--This tag is replaced with the HTML code for an edit box which contains the postal code of the customers billing information, if the customer is currently logged in. The edit box will already be properly named so that any changes to it will be saved when the customer continues on to the Verify step.

!---SHIPPING_DEST_SELECT--This tag is replaced with the HTML for a drop-down select menu box, which allows the customer to select a secondary shipping address to use instead of the primary shipping address. Customers can define secondary shipping addresses in the UserUpdate template.

!---SHIP_NAME--This tag is replaced with the customers name for the primary shipping address, if the customer is currently logged in.

!---SHIPNAME--This tag is replaced with the HTML code for an edit box which contains the name of the customers primary shipping information, if the customer is currently logged in. The edit box will already be properly named so that any changes to it will be saved when the customer continues on to the Verify step.
PDG Commerce 4.0 -- Technical Reference Guide 93

Chapter 4 -- HTML Template Files

!---SHIP_STREET1--This tag is replaced with the first line of the customers street for the primary shipping address, if the customer is currently logged in.

!---SHIPSTREET1--This tag is replaced with the HTML code for an edit box which contains the first line of the street address of the customers primary shipping information, if the customer is currently logged in. The edit box will already be properly named so that any changes to it will be saved when the customer continues on to the Verify step.

!---SHIP_STREET2--This tag is replaced with the second line of the customers street for the primary shipping address, if the customer is currently logged in.

!---SHIPSTREET2--This tag is replaced with the HTML code for an edit box which contains the second line of the street address of the customers primary shipping information, if the customer is currently logged in. The edit box will already be properly named so that any changes to it will be saved when the customer continues on to the Verify step.

!---SHIP_CITY--This tag is replaced with the customers city for the primary shipping address, if the customer is currently logged in.

!---SHIPCITY--This tag is replaced with the HTML code for an edit box which contains the city of the customers primary shipping information, if the customer is currently logged in. The edit box will already be properly named so that any changes to it will be saved when the customer continues on to the Verify step.

!---SHIPSTATE--This tag is replaced with the customers state for the primary shipping address, if the customer is currently logged in.

94

PDG Commerce 4.0 -- Technical Reference Guide

Chapter 4 -- HTML Template Files

!---SHIP_PROVINCE--This tag is replaced with the customers province for the primary shipping address, if the customer is currently logged in.

<!---SHIPCOUNTRY---> Tag
When this tag is encountered, PDG Commerce replaces it with a drop-down menu containing all the countries with their corresponding numeric codes for PDG Commerce. This code may later be used for UPS real-time cost capturing, as well as determining the applicable shipping, handling, and tax rules. The name of the drop down menu is shipcountry and is used to specifically generate the shipcountry form input. This tag must be inside the form submission to PDG Commerce with the Verify action. The tag must have its own line in the template file, and must appear in the template file as:
<!---SHIPCOUNTRY--->

!---SHIP_ZIP--This tag is replaced with the customers postal code for the primary shipping address, if the customer is currently logged in.

!---SHIPZIP--This tag is replaced with the HTML code for an edit box which contains the postal code of the customers primary shipping information, if the customer is currently logged in. The edit box will already be properly named so that any changes to it will be saved when the customer continues on to the Verify step.

ShipText and BillText


You can provide blank form inputs on your Checkout template to allow customers to provide you with any special shipping or billing instructions. The field for additional billing information must be named billtext. The field for additional shipping information must be named shiptext. The text in these form fields will be saved by PDG Commerce and can be optionally displayed on the Verify and ThankYou templates.

PDG Commerce 4.0 -- Technical Reference Guide

95

Chapter 4 -- HTML Template Files

Basket Template Tags


In addition to the standard Checkout Template tags, the Checkout HTML Template can also take any of the standard Basket Template tags. The standard Basket Template tags allow you to customize the display of the customers cart on the Checkout page.

REPEAT and OPTIONS Tags


Like the Basket template, the Checkout Template can also utilize the REPEAT and OPTIONS tags. The tags used within the REPEAT and OPTIONS tags for the Checkout HTML template are the same as those used in the Basket HTML template (i.e. the Repeat Basket tags and the Options Basket tags). For information on what tags can be used with the REPEAT and OPTIONS tags in the Checkout Template, please see the Basket Template File section of this chapter.

Passthrough Fields
Any form field whose name begins with the four letters PASS will have its values automatically forwarded to the final ThankYou templates, log files, and emails. For example:
<input type="text" name="PASSGiftCard" size="20">

The example above will create a text field in this template for customer input. Whatever the user types in this field will automatically be forwarded to the notification e-mails, ThankYou template, and order log file under the label GiftCard.

Verify Template File


The Verify Template File is used when PDG Commerce needs to verify a customers contact, billing, and shipping information. It is also used to collect payment information from a customer after receiving the Verify action. The Verify Template File is essentially an HTML Web page. However, before PDG Commerce sends it to the customers browser, it searches the file for special tags. When a tag is encountered, it is replaced with the appropriate information before being sent to the customers Web browser. In order for PDG Commerce to properly receive and process information from this template file, the Verify Template File must contain a form submission back to PDG Commerce with the BuyIt action. For all the required fields
96 PDG Commerce 4.0 -- Technical Reference Guide

Chapter 4 -- HTML Template Files

for this callback, please see the BuyIt action definition in this Technical Reference Guide. The following are the standard Verify Template tags:
<!---CUSTOMER---> <!---BILLTO---> <!---SHIPTO---> <!---PDGCARTFORMDATA---> <!---BILLMETHOD---> <!---BILLNAME---> <!---BILLADDRESS---> <!---BILLCITY---> <!---BILLSTATE---> <!---BILLZIP---> <!---BILLEMAIL---> <!---BILLAMOUNT---> <!---BILLDATE---> <!---ORDER---> <!---BILLPHONE1---> <!---BILLPHONE2---> <!---SHIPNAME---> <!---SHIPADDRESS---> <!---SHIPCITY---> <!---SHIPSTATE---> <!---SHIPZIP---> <!---COMPANY---> <!---SUBTOTAL---> <!---WEIGHT_TOTAL---> <!---NUM_ITEMS---> <!---ORDER_SUBTOTAL_DISC---> <!---PROD_CAT_QTY_DISC---> <!---BONUS_PT_TOTAL---> <!---ADD_SHIPPING_TOTAL---> <!---TOTAL---> <!---TAX---> <!---SHIPPING_TOTAL---> <!---FLUX_AMOUNT---> <!---PRE_FLUX_TOTAL---> <!---BILLCOUNTRY---> <!---SHIPCOUNTRY---> !---SUBMIT_LINK--<!---SUBTOTAL_WITH_DISCOUNT---> PDG Commerce 4.0 -- Technical Reference Guide 97

Chapter 4 -- HTML Template Files

<!---SHIP_METHOD---> <!---BILLTEXT---> <!---SHIPTEXT--->

Additionally, there are some specialized tags that can be used for specific Internet payment services. These are:
!---PAYFLOW_LINK_ACTION--<!---PAYFLOW_ORDER_DATA---> !---PAYPAL_ACTION--<!---PAYPAL_DATA---> !---WORLDPAY_ACTION--<!---WORLDPAY_DATA--->

A sample Verify Template File is included with PDG Commerce. Here is an example of how that template may be displayed. Please see the sections below on Basket Tags and REPEAT Tags for more information on how to customize this template.

98

PDG Commerce 4.0 -- Technical Reference Guide

Chapter 4 -- HTML Template Files

Sample Verify Template Display

<!---CUSTOMER---> Tag
This tag is replaced by all of the customers complete billing and shipping information as supplied by the customer on the Checkout page. The tag must appear in the template file as:
<!---CUSTOMER--->

Note: If the <!---CUSTOMER---> tag is used, then none of the following tags relating to the customers address need to be implemented.

PDG Commerce 4.0 -- Technical Reference Guide

99

Chapter 4 -- HTML Template Files

<!---BILLTO---> Tag
When PDG Commerce encounters this tag, the tag is replaced with the customer's billing information. This includes the name and complete billing address as supplied by the customer on the Checkout page. The tag must appear in the template file as:
<!---BILLTO--->

Note: If the <!---BILLTO---> tag is used, then none of the following tags relating to the customers billing address need to be implemented.

<!---SHIPTO---> Tag
When PDG Commerce encounters this tag, the tag is replaced with the customer's shipping information. This includes the name and complete shipping address as supplied by the customer on the Checkout page. The tag must appear in the template file as:
<!---SHIPTO--->

Note: If the <!---SHIPTO---> tag is used, then none of the following tags relating to the customers shipping address need to be implemented.

<!---PDGCARTFORMDATA---> Tag
When this tag is encountered, PDG Commerce replaces it with hidden information that is necessary for the checkout process. This tag must be located within the form submission in the Verify HTML template file. No visible information is replaced by this tag, therefore, it will not affect the visible layout of your Web store in any way. This tag is required for the Verify Template, and for PDG Commerce to operate properly. This tag must appear inside the form submission to PDG Commerce with the Verify action. The tag must appear in the template file as:
<!---PDGCARTFORMDATA--->

<!---BILLMETHOD---> Tag
When PDG Commerce encounters this tag, it is replaced by a pull-down select box, allowing the customer to choose a payment method. The payment methods are definied by the store merchant in the Merchant Administrator. The tag must appear in the template file as:
<!---BILLMETHOD--->

100

PDG Commerce 4.0 -- Technical Reference Guide

Chapter 4 -- HTML Template Files

<!---BILLNAME---> Tag
When PDG Commerce encounters this tag, it is replaced by the billing name as supplied by the customer on the Checkout page. The tag must appear in the template file as:
<!---BILLNAME--->

<!---BILLADDRESS---> Tag
When PDG Commerce encounters this tag, it is replaced by the billing address as supplied by the customer on the Checkout page. The billaddr1 and billaddr2 are combined to create the text that replaces this tag. The tag must appear in the template file as:
<!---BILLADDRESS--->

<!---BILLCITY---> Tag
When PDG Commerce encounters this tag, it is replaced by the billing city as supplied by the customer on the Checkout page. The tag must appear in the template file as:
<!---BILLCITY--->

<!---BILLSTATE---> Tag
When PDG Commerce encounters this tag, it is replaced by the billing state as supplied by the customer on the Checkout page. The tag must appear in the template file as:
<!---BILLSTATE--->

<!---BILLZIP---> Tag
When PDG Commerce encounters this tag, it is replaced by the billing ZIP code as supplied by the customer on the Checkout page. The tag must appear in the template file as:
<!---BILLZIP--->

PDG Commerce 4.0 -- Technical Reference Guide

101

Chapter 4 -- HTML Template Files

<!---BILLCOUNTRY---> Tag
When PDG Commerce encounters this tag, it is replaced by the billing country as supplied by the customer on the Checkout page. The tag must appear in the template file as:
<!---BILLCOUNTRY--->

<!---BILLEMAIL---> Tag
This tag is replaced by the e-mail address to which billing information should be sent. This value should have been entered by the customer on the Checkout page. The tag must appear in the template file as:
<!---BILLEMAIL--->

<!---BILLPHONE1---> Tag
When PDG Commerce encounters this tag, it is replaced by the primary phone number as supplied by the customer on the Checkout page. The tag must appear in the template file as:
<!---BILLPHONE1--->

<!---BILLPHONE2---> Tag
When PDG Commerce encounters this tag, it is replaced by the secondary phone number as supplied by the customer on the Checkout page. The tag must appear in the template file as:
<!---BILLPHONE2--->

<!---BILLAMOUNT---> Tag
This tag is replaced with the amount of the order that is to be billed to the customer. This total includes tax, shipping and any additional charges or discounts that may have been applied. The tag must appear in the template file as:
<!---BILLAMOUNT--->

102

PDG Commerce 4.0 -- Technical Reference Guide

Chapter 4 -- HTML Template Files

<!---BILLDATE---> Tag
This tag is replaced by the date on which the order is to be billed. This will generally yield the current date. The tag must appear in the template file as:
<!---BILLDATE--->

<!---ORDER---> Tag
When this tag is encountered, PDG Commerce replaces it with the customer's current cart. This information is formatted in a table. Unlike the cart display used in the Basket Template File, this display does not allow the customer to change product quantities. Unlike the <!---ORDER---> tag used in the Checkout Template File, this order output contains all additional shipping costs and applicable tax. The tag must have its own line in the template file, and must appear in the template file as:
<!---ORDER--->

<!---SHIPNAME---> Tag
When PDG Commerce encounters this tag, it is replaced by the name to which the order will be shipped, as supplied by the customer on the Checkout page. The tag must appear in the template file as:
<!---SHIPNAME--->

<!---SHIPADDRESS---> Tag
When PDG Commerce encounters this tag, it is replaced by the address to which the order will be shipped, as supplied by the customer on the Checkout page. The fields shippaddr1 and shipaddr2 are combined to form the text that replaces this text. The tag must appear in the template file as:
<!---SHIPADDRESS--->

<!---SHIPCITY---> Tag
When PDG Commerce encounters this tag, it is replaced by the city to which the order will be shipped, as supplied by the customer on the Checkout page. The tag must appear in the template file as:
<!---SHIPCITY--->

PDG Commerce 4.0 -- Technical Reference Guide

103

Chapter 4 -- HTML Template Files

<!---SHIPSTATE---> Tag
When PDG Commerce encounters this tag, it is replaced by the state to which the order will be shipped, as supplied by the customer on the Checkout page. The tag must appear in the template file as:
<!---SHIPSTATE--->

<!---SHIPZIP---> Tag
When PDG Commerce encounters this tag, it is replaced by the ZIP code to which the order will be shipped, as supplied by the customer on the Checkout page. The tag must appear in the template file as:
<!---SHIPZIP--->

<!---COMPANY---> Tag
When PDG Commerce encounters this tag, it is replaced by the company name supplied by the customer on the Checkout page. The tag must appear in the template file as:
<!---COMPANY--->

<!---SHIPCOUNTRY---> Tag
When PDG Commerce encounters this tag, it is replaced by the country to which the order will be shipped, as supplied by the customer on the Checkout page. The tag must appear in the template file as:
<!---SHIPCOUNTRY--->

<!---SUBTOTAL---> Tag
This tag is replaced by the subtotal for the order. This price does not include sales tax, shipping charges or any other charges or discounts. The tag must appear in the template file as:
<!---SUBTOTAL--->

Note: This tag may be appended with a C, <---SUBTOTALC--->. PDG Commerce will replace this tag with the subtotal of the order converted to the secondary currency.

104

PDG Commerce 4.0 -- Technical Reference Guide

Chapter 4 -- HTML Template Files

<!---WEIGHT_TOTAL---> Tag
This tag is replaced by the total weight of all of the products in the current cart. This value may be used to calculate shipping charges if weight tables have been specified in the Shipping Rules section of the Merchant Administrator. This value is also used when real-time shipping costs are obtained from either UPS or USPS. The tag must appear in the template file as:
<!---WEIGHT_TOTAL--->

<!---NUM_ITEMS---> Tag
This tag is replaced by the total number of items in the current cart. This value may be used to calculate shipping charges if quantity tables have been specified the Shipping Rules section of the Merchant Administrator. The tag must appear in the template file as:
<!---NUM_ITEMS--->

<!---ORDER_SUBTOTAL_DISC---> Tag
This tag tells PDG Commerce to replace the tag with whatever subtotal-based discount may be applied to the order. This calculation is made depending upon the discounts you defined in the Merchant Administrator. If no discount applies to the order, then this tag is replaced with 0.0. The tag must appear in the template file as:
<!---ORDER_SUBTOTAL_DISC--->

Note: This tag may be appended with the letter C, <---ORDER_SUBTOTAL_DISCC--->. PDG Commerce will replace this tag with the orders subtotal discount converted to the secondary currency.

<!---PROD_CAT_QTY_DISC---> Tag
This tag will display all product category quantity discounts applied to the order. Each product category quantity discount will be displayed with the label Discount for Ordering X Products From A000, where X is the number of products ordered from category A000. The tag must appear in the template file as:
<!---PROD_CAT_QTY_DISC--->

PDG Commerce 4.0 -- Technical Reference Guide

105

Chapter 4 -- HTML Template Files

<!---BONUS_PT_TOTAL---> Tag
This tag is replaced by the total number of bonus or frequent shopper points incurred by the order. If no bonus points are earned by the order, then this tag is replaced with 0.0. The tag must appear in the template file as:
<!---BONUS_PT_TOTAL--->

<!---ADD_SHIPPING_TOTAL---> Tag
This tag tells PDG Commerce to replace the tag with any additional shipping charges that may have been applied to any of the products in the current cart. If no additional shipping charges are incurred from any of the products on the order, PDG Commerce will ignore this tag. The tag must appear in the template file as:
<!---ADD_SHIPPING_TOTAL--->

Note: This tag may be appended with the letter C, <---ADD_SHIPPING_TOTALC--->. PDG Commerce will replace this tag with the total additional shipping charges for any products in the order converted to the secondary currency.

<!---TOTAL---> Tag
This tag is replaced by the total cost of the order. This price includes all product and option costs, sales tax, shipping and additional charges placed on the order as well as any discounts that may have been applied to the order. The tag must appear in the template file as:
<!---TOTAL--->

Note: This tag may be appended with a C, <---TOTALC--->. PDG Commerce will replace this tag with the total cost of the order converted to the secondary currency.

<!---TAX---> Tag
This tag is replaced by the total sales tax placed on the order. If there is no sales tax to include, then this tag is replaced with 0.0. The tag must appear in the template file as:
<!---TAX--->

Note: This tag may be appended with a C, <---TAXC--->. PDG Commerce will replace this tag with the orders total sales tax converted to the secondary currency.

106

PDG Commerce 4.0 -- Technical Reference Guide

Chapter 4 -- HTML Template Files

<!---SHIPPING_TOTAL---> Tag
This tag is replaced by the total shipping charges applied to the order. This includes all shipping charges attributed to the weight, subtotal, shipping method or the products themselves. The tag must appear in the template file as:
<!---SHIPPING_TOTAL--->

Note: This tag may be appended with a C, <---SHIPPING_TOTALC--->. PDG Commerce will replace this tag with the total shipping charges for the order converted to the secondary currency.

<!---FLUX_AMOUNT---> Tag
This tag is replaced by the amount that was added to the order to accommodate changes in currency exchange rates. If a currency conversion has not been made, then this tag is replaced with 0.0. The tag must appear in the template file as:
<!---FLUX_AMOUNT--->

Note: This tag may be appended with a C, <---FLUX_AMOUNTC--->. PDG Commerce will replace this tag with the orders flux amount converted to the secondary currency.

<!---PRE_FLUX_TOTAL---> Tag
This tag is replaced by the total of the order after the amount has been converted to the secondary currency, but before the Flux Amount is added. If a currency conversion has not been made, then this tag is replaced with 0.0. The tag must appear in the template file as:
<!---PRE_FLUX_TOTAL--->

Note: This tag may be appended with a C, <---PRE_FLUX_TOTALC--->. PDG Commerce will replace this tag with the orders pre-flux total converted to the secondary currency.

!---SUBMIT_LINK--- Tag
This tag is replaced by the submit button for the form, which collects the entered payment information and processes the order. The tag must appear in the template file as:
!---SUBMIT_LINK---

PDG Commerce 4.0 -- Technical Reference Guide

107

Chapter 4 -- HTML Template Files

<!---SUBTOTAL_WITH_DISCOUNT---> Tag
This tag is replaced by the subtotal for the order in the customers current order. This value represents just the total price of all of the products in the cart, with all discounting applied. This subtotal does not include any of the charges for any applied taxes or any shipping and handling. The tag must appear in the template file as:
<!---SUBTOTAL--->

<!---SHIP_METHOD---> Tag
This tag is replaced by the shipping method chosen by the customer. The tag must appear in the template file as:
<!---SHIP_METHOD--->

<!---BILLTEXT---> Tag
If you provided a field in the Checkout template named billtext, then this tag will be replaced with the customer-supplied text from that field. The tag must appear in the template file as:
<!---BILLTEXT--->

<!---SHIPTEXT---> Tag
If you provided a field in the Checkout template named shiptext, then this tag will be replaced with the customer-supplied text from that field. The tag must appear in the template file as:
<!---SHIPTEXT--->

!---EMAIL--This tag is replaced with the customers email address if the customer is currently logged in.

!---PHONE1--This tag is replaced with the customers phone number if the customer is currently logged in.

108

PDG Commerce 4.0 -- Technical Reference Guide

Chapter 4 -- HTML Template Files

!---BILLFIRSTNAME--This tag is replaced with the customers first name of the billing information, if the customer is currently logged in.

!---BILLLASTNAME--This tag is replaced with the customers last name of the billing information, if the customer is currently logged in.

!---BILLSTREET1--This tag is replaced with the first line of the customers of the street information of the billing adress, if the customer is currently logged in.

!---BILLSTREET2--This tag is replaced with the first second of the customers of the street information of the billing adress, if the customer is currently logged in.

!---BILLCITY--This tag is replaced with the customers city of the billing information, if the customer is currently logged in.

!---BILLSTATE--This tag is replaced with the customers state of the billing information, if the customer is currently logged in.

!---BILLPROVINCE--This tag is replaced with the customers province of the billing information, if the customer is currently logged in.

!---BILLZIP--This tag is replaced with the customers postal code of the billing information, if the customer is currently logged in.

PDG Commerce 4.0 -- Technical Reference Guide

109

Chapter 4 -- HTML Template Files

!---SHIPNAME--This tag is replaced with the customers name for the primary shipping address, if the customer is currently logged in.

!---SHIPSTREET1--This tag is replaced with the first line of the customers street for the primary shipping address, if the customer is currently logged in.

!---SHIPSTREET2--This tag is replaced with the second line of the customers street for the primary shipping address, if the customer is currently logged in.

!---SHIPCITY--This tag is replaced with the customers city for the primary shipping address, if the customer is currently logged in.

!---SHIPSTATE--This tag is replaced with the customers state for the primary shipping address, if the customer is currently logged in.

!---SHIPPROVINCE--This tag is replaced with the customers province for the primary shipping address, if the customer is currently logged in.

!---SHIPZIP--This tag is replaced with the customers postal code for the primary shipping address, if the customer is currently logged in.

110

PDG Commerce 4.0 -- Technical Reference Guide

Chapter 4 -- HTML Template Files

Basket Template Tags


In addition to the standard Verify Template tags, the Verify HTML Template can also take any of the Basket Template Repeat tags. The use of the Basket Template Repeat tags allows you to display the customers cart on the Verify page. This allows you to customize what is displayed on your Web stores Verify page.

REPEAT and OPTIONS Tags


Like the Basket template, the Verify Template can also utilize the REPEAT and OPTIONS tags. The tags used within the REPEAT and OPTIONS tags for the Verify HTML template are the same as those used in the Basket HTML template (i.e.: the Repeat Basket tags and the Options Basket tags). For information on what tags can be used with the REPEAT and OPTIONS tags in the Verify Template, please see the Basket Template File section of this chapter.

Passthrough Fields
Any form field whose name begins with the four letters PASS will have its values automatically forwarded to the final ThankYou templates and notification e-mails. For example:
<input type="text" name="PASSGiftCard" size="20">

The example above will create a field in this template for customer input. Whatever the user types in this field is automatically forwarded to the emails, ThankYou templates, and order.log file, and labelled as GiftCard. Note: It is not mandatory for the customer to enter any information in this field they can leave it blank and still check out normally. This field could be made mandatory by using JavaScript, but this is outside the normal functionality of PDG Commerce.

Payflow Link Tags


If you are using Payflow Link as one of several payment methods, then PDG Commerce will use a redirect page to take the customer to Payflow Link if it was the chosen payment method on the Verify page. This page will be displayed by default. However, if you would like to customize the redirect page, you may create a template and enter its name in the Payflow Link settings of your Merchant Administrator. Your template should contain the following code:

PDG Commerce 4.0 -- Technical Reference Guide

111

Chapter 4 -- HTML Template Files

<html> <body onLoad=javascript:setTimeout(document.forms.pdgredirect.submit(),4000);> <form action=!---PAYFLOW_LINK_ACTION--- method=POST name=pdgredirect> <!---PAYFLOW_ORDER_DATA---> <center>Please wait while we direct you to VeriSigns secure web site to complete your payment.</center> <center>Thank you for your patience.</center> <center><input type=submit name= value=Go To VeriSigns PayFlow Link Payment Pages (click here if you are not redirected automatically)> </center> </form> </body> </html>

If you are using Payflow Link as your only payment method, you can embed the form in your Verify page and skip the redirect page. In that case your Verify template should contain the following code:
<form action=!---PAYFLOW_LINK_ACTION--- method=POST name=pdgredirect> <!---PAYFLOW_ORDER_DATA---> </form>

PayPal Tags
If you are using PayPal as one of several payment methods, then PDG Commerce will use a redirect page to take the customer to PayPal if it was the chosen payment method on the Verify page. This page will be displayed by default. However, if you would like to customize the redirect page, you may create a template and enter its name in the PayPal settings of your Merchant Administrator. Your template should contain the following code:
<html> <body onLoad=javascript:setTimeout(document.forms.pdgredirect.submit(),4000);> <form action=!---PAYPAL_ACTION--- method=POST name=pdgredirect> <!---PAYPAL_DATA--->

112

PDG Commerce 4.0 -- Technical Reference Guide

Chapter 4 -- HTML Template Files

<center>Please wait while we direct you to PayPals secure web site to complete your payment.</center> <center>Thank you for your patience.</center> <center><input type=submit name= value=Go to PayPals payment server (click here if you are not redirected automatically)></center> </form> </body> </html>

If you are using PayPal as your only payment method, you can embed the form in your Verify page and skip the redirect page. In that case your Verify template should contain the following code:
<form action=!---PAYPAL_ACTION--- method=POST name=pdgredirect> <!---PAYPAL_DATA---> </form>

WorldPay Tags
If you are using WorldPay as one of several payment methods, then PDG Commerce will use a redirect page to take the customer to WorldPay if it was the chosen payment method on the Verify page. This page will be displayed by default. However, if you would like to customize the redirect page, you may create a template and enter its name in the WorldPay settings of your Merchant Administrator. Your template should contain the following code:
<html> <body onLoad=javascript:setTimeout(document.forms.pdgredirect.submit(),4000);> <form action=!---WORLDPAY_ACTION--- method=POST name=pdgredirect> <!---WORLDPAY_DATA---> <center>Please wait while we direct you to WorldPays secure web site to complete your payment.</center> <center>Thank you for your patience.</center> <center><input type=submit name= value=Go to WorldPays payment server (click here if you are not redirected automatically></center> </form> </body> PDG Commerce 4.0 -- Technical Reference Guide 113

Chapter 4 -- HTML Template Files

</html>

If you are using WorldPay as your only payment method, you can embed the form in your Verify page and skip the redirect page. In that case your Verify template should contain the following code:
<form action=!---WORLDPAY_ACTION--- method=POST name=pdgredirect> <!---WORLDPAY_DATA---> </form>

ThankYou Template File


The ThankYou Template File is used after the BuyIt action has been received and the order has been submitted. The ThankYou Template File is essentially an HTML Web page. However, before PDG Commerce sends the HTML Template File to the customer, it searches the file for special tags. When a tag is encountered, it is replaced with the appropriate information before being sent to the customers Web browser. The following are the standard ThankYou Template tags:
114 <!---ORDERINFO---> <!---INVOICE---> <!---CCAUTHNUMBER---> <!---TOTAL---> <!---SUBTOTAL---> <!---SOFTGOODS---> <!---FIRSTNAME---> <!---LASTNAME---> <!---NAME---> <!---ADDR1---> <!---ADDR2---> <!---CITY---> <!---STATE---> <!---COUNTRY---> <!---ZIP---> <!---BRANDSFORLESS---> <!---INKTOMI---> <!---EMAIL---> <!---WEIGHT_TOTAL---> <!---NUM_ITEMS--->

PDG Commerce 4.0 -- Technical Reference Guide

Chapter 4 -- HTML Template Files

<!---ORDER_SUBTOTAL_DISC---> <!---PROD_CAT_QTY_DISC---> <!---BONUS_PT_TOTAL---> <!---ADD_SHIPPING_TOTAL---> <!---TAX---> <!---SHIPPING_TOTAL---> <!---FLUX_AMOUNT---> <!---PRE_FLUX_TOTAL---> <!---BILLNAME---> <!---BILLADDRESS---> <!---BILLCITY---> <!---BILLSTATE---> <!---BILLZIP---> <!---BILLCOUNTRY---> <!---BILLAMOUNT---> <!---BILLDATE---> <!---BILLPHONE1---> <!---BILLPHONE2---> <!---SHIPNAME---> <!---SHIPADDRESS---> <!---SHIPCITY---> <!---SHIPSTATE---> <!---SHIPZIP---> <!---SHIPCOUNTRY---> <!---COMPANY---> <!---BILLMETHOD---> <!---SUBTOTAL_WITH_DISCOUNT---> <!---SHIP_METHOD---> <!---BILLTEXT---> <!---SHIPTEXT---> <!---CARD_TYPE---> <!---CARD_NUMBER---> <!---CARD_EXP_DATE---> <!---BANK_NAME---> <!---ROUTING_NUMBER---> <!---CHECK_NUMBER---> <!---ACCOUNT_NUMBER---> <!---PASSTHROUGH--->

PDG Commerce 4.0 -- Technical Reference Guide

115

Chapter 4 -- HTML Template Files

A sample ThankYou Template File is included with PDG Commerce. Below is an example of how this template will be displayed.

Sample Thank You Template Display

<!---ORDERINFO---> Tag
When this tag is encountered in the ThankYou Template File, this tag is replaced with the complete invoice of the order submitted. The invoice will be displayed in table format. The invoice includes:
The unique invoice number The complete order, with the final total considering shipping, tax and discounts The complete contact, billing, and shipping information. The payment information, with any credit card information properly censored

The tag must have its own line in the template file, and must appear in the template file as:
<!---ORDERINFO--->

Note: If the <!---ORDERINFO---> tag is used, then none of the following tags, with the exception of the CCAUTHNUMBER tag and the SOFTGOODS tag, will need to be implemented, as they will appear in the ORDERINFO tag. CCAUTHNUMBER and SOFTGOODS are exceptions, do not appear in the ORDERINFO tag, and must be placed on the template in order to be displayed.
116 PDG Commerce 4.0 -- Technical Reference Guide

Chapter 4 -- HTML Template Files

<!---INVOICE---> Tag
This tag is replaced with the unique invoice number for the order. The tag must appear in the template file as:
<!---INVOICE--->

<!---CCAUTHNUMBER---> Tag
This tag is replaced by the authorization number, assigned by the payment authorization service, that corresponds to the current order. This number can be referred to in order to track your authorization services activities. The tag must appear in the template file as:
<!---CCAUTHNUMBER--->

Note that this information does not appear in the ORDERINFO tag. If you wish for the authorization number to be displayed, this tag will need to be used, regardless of whether ORDERINFO is used or not.

<!---TOTAL---> Tag
This tag is replaced by the total amount for which the transaction was authorized. This represents the total amount of the order considering sales tax, shipping charges and any additional charges or discounts. The tag must appear in the template file as:
<!---TOTAL--->

<!---SUBTOTAL---> Tag
This tag is replaced by the subtotal of the order. This represents just the cost of the products ordered and does not include sales tax, shipping charges, etc. The tag must appear in the template file as:
<!---SUBTOTAL--->

<!---SOFTGOODS---> Tag
This tag is replaced by the Softgood data entered for the products being ordered. This data will generally consist of a link to a URL that contains a link to download the purchased Softgood product. If there is no Softgood data for any of the products being ordered, then this tag is ignored. The tag must appear in the template file as:
<!---SOFTGOODS--->

PDG Commerce 4.0 -- Technical Reference Guide

117

Chapter 4 -- HTML Template Files

Note that this information does not appear in the SOFTGOODS tag. If you wish for the authorization number to be displayed, this tag will need to be used, regardless of whether SOFTGOODS is used or not. For information on utilizing the Softgood Data, please refer to the appropriate chapter on Softgood Data in this Technical Reference Manual.

<!---FIRSTNAME---> Tag
This tag is replaced by the first name of the billing information of the customer by whom the order was placed. The tag must appear in the template file as:
<!---FIRSTNAME--->

<!---LASTNAME---> Tag
This tag is replaced by the last name of the billing information of the customer by whom the order was placed. The tag must appear in the template file as:
<!---LASTNAME--->

Note: If the <!---FIRSTNAME---> and <!---LASTNAME---> tags are used, then the following <!---NAME---> tag does need to be implemented, as it would be redundant.

<!---NAME---> Tag
This tag is replaced by the full name of the billing information of the customer by whom the order was placed. If this tag is used, you should not use either of the two tags above. The tag must appear in the template file as:
<!---NAME--->

<!---ADDR1---> Tag
This tag is replaced by the first line of the billing information of the street address from which the customer placed the order. The tag must appear in the template file as:
<!---ADDR1--->

118

PDG Commerce 4.0 -- Technical Reference Guide

Chapter 4 -- HTML Template Files

<!---ADDR2---> Tag
This tag is replaced by the second line of the billing information of the address from which the customer placed the order. The tag must appear in the template file as:
<!---ADDR2--->

<!---CITY---> Tag
This tag is replaced by the city from the billing information of the customer that placed the order. The tag must appear in the template file as:
<!---CITY--->

<!---STATE---> Tag
This tag is replaced by the state from the billing information of the customer that placed the order. The tag must appear in the template file as:
<!---STATE--->

<!---COUNTRY---> Tag
This tag is replaced by the country from the billing information of the customer that placed the order. The tag must appear in the template file as:
<!---COUNTRY--->

<!---ZIP---> Tag
This tag is replaced by the ZIP code from the billing information of the customer that placed the order. The tag must appear in the template file as:
<!---ZIP--->

<!---EMAIL---> Tag
This tag is replaced by the e-mail address for the customer who placed the order. The tag must appear in the template file as:
<!---EMAIL--->

PDG Commerce 4.0 -- Technical Reference Guide

119

Chapter 4 -- HTML Template Files

<!---BRANDSFORLESS---> Tag
This tag is replaced by the affiliate tracking information provided by Brands for Less. This is a third party affiliate tracking system, and you must first set up an account with Brands For Less before you will be able to utilize this tag. If the order contains no affiliate tracking information, then this tag is ignored. The tag must appear in the template file as:
<!---BRANDSFORLESS--->

<!---INKTOMI---> Tag
This tag is replaced by the affiliate tracking information provided by Inktomi. This is a third party affiliate tracking system, and you must first set up an account with Inktomi before you will be able to utilize this tag. If there is no affiliate tracking information to report for this order, then this tag is ignored. The tag must appear in the template file as:
<!---INKTOMI--->

<!---WEIGHT_TOTAL---> Tag
This tag is replaced by the total weight of all of the products in the order. This value may have been used to calculate shipping charges if weight tables were specified in the Shipping Rules section of the Merchant Administrator. This value is also used for any real-time shipping costs that are obtained from either UPS or USPS. The tag must appear in the template file as:
<!---WEIGHT_TOTAL--->

<!---NUM_ITEMS---> Tag
This tag is replaced by the total number of items in the order. This value may have been used to calculate shipping charges if quantity tables were specified the Shipping Rules section of the Merchant Administrator. The tag must appear in the template file as:
<!---NUM_ITEMS--->

<!---ORDER_SUBTOTAL_DISC---> Tag
This tag tells PDG Commerce to replace the tag with whatever subtotal-based discount may have been applied to the order. This calculation is made depending upon the discounts you defined in the Merchant Administrator. If no discount applies to the order, then this tag is replaced with 0.00. The tag must appear in the template file as:

120

PDG Commerce 4.0 -- Technical Reference Guide

Chapter 4 -- HTML Template Files

<!---ORDER_SUBTOTAL_DISC--->

Note: This tag may be appended with the letter C, <---ORDER_SUBTOTAL_DISCC--->. PDG Commerce will replace this tag with the orders subtotal discount converted to the secondary currency.

<!---PROD_CAT_QTY_DISC---> Tag
This tag will display all product category quantity discounts applied to the order. Each product category quantity discount will be displayed with the label Discount for Ordering X Products From A000, where X is the number of products ordered from category A000. The tag must appear in the template file as:
<!---PROD_CAT_QTY_DISC--->

<!---BONUS_PT_TOTAL---> Tag
This tag is replaced by the total number of bonus or frequent shopper points incurred by the order. If no bonus points were earned by the order, then this tag is replaced with 0.00. The tag must appear in the template file as:
<!---BONUS_PT_TOTAL--->

<!---ADD_SHIPPING_TOTAL---> Tag
This tag is replaced by the total additional shipping charges for any products in the order. These are shipping charges attributed to the products themselves. If there were no additional shipping charges incurred by any of the products in the order, then this tag is replaced with 0.00. The tag must appear in the template file as:
<!---ADD_SHIPPING_TOTAL--->

Note: This tag may be appended with the letter C, <---ADD_SHIPPING_TOTALC--->. PDG Commerce will replace this tag with the total additional shipping charges for any products in the order converted to the secondary currency.

<!---TAX---> Tag
This tag is replaced by the sales tax applied to the order. If there was no sales tax applied to the order, then this tag is replaced with 0.00. The tag must appear in the template file as:
<!---TAX--->

PDG Commerce 4.0 -- Technical Reference Guide

121

Chapter 4 -- HTML Template Files

Note: This tag may be appended with a C, <---TAXC--->. PDG Commerce will replace this tag with the orders total sales tax converted to the secondary currency.

<!---SHIPPING_TOTAL---> Tag
This tag is replaced by the total shipping charges placed on the order. This includes all shipping charges based on orders subtotal, weight, shipping method, or the products themselves. The tag must appear in the template file as:
<!---SHIPPING_TOTAL--->

Note: This tag may be appended with a C, <---SHIPPING_TOTALC--->. PDG Commerce will replace this tag with the orders total shipping charges converted to the secondary currency.

<!---FLUX_AMOUNT---> Tag
This tag is replaced by the amount that was added to the order to accommodate changes in currency exchange rates. If a currency conversion was not made, then this tag is replaced with 0.00. The tag must appear in the template file as:
<!---FLUX_AMOUNT--->

Note: This tag may be appended with a C, <---FLUX_AMOUNTC--->. PDG Commerce will replace this tag with the orders flux amount converted to the secondary currency.

<!---PRE_FLUX_TOTAL---> Tag
This tag is replaced by the total of the order after that amount was converted to the secondary currency, but before the Flux Amount is added (see above). If a currency conversion was not made, then this tag is replaced with 0.00. The tag must appear in the template file as:
<!---PRE_FLUX_TOTAL--->

Note: This tag may be appended with a C, <---PRE_FLUX_TOTALC--->. PDG Commerce will replace this tag with the orders pre-flux total converted to the secondary currency.

122

PDG Commerce 4.0 -- Technical Reference Guide

Chapter 4 -- HTML Template Files

<!---BILLNAME---> Tag
This tag is replaced with the name, as supplied by the customer on the Checkout page, to which the order is to be billed. The tag must appear in the template file as:
<!---BILLNAME--->

<!---BILLADDRESS---> Tag
This tag is replaced with the street address, as supplied by the customer on the Checkout page, to which the order is to be billed. The tag must appear in the template file as:
<!---BILLADDRESS--->

<!---BILLCITY---> Tag
This tag is replaced with the city, as supplied by the customer on the Checkout page, to which the order is to be billed. The tag must appear in the template file as:
<!---BILLCITY--->

<!---BILLSTATE---> Tag
This tag is replaced with the state, as supplied by the customer on the Checkout page, to which the order is to be billed. The tag must appear in the template file as:
<!---BILLSTATE--->

<!---BILLZIP---> Tag
This tag is replaced with the ZIP code, as supplied by the customer on the Checkout page, to which the order is to be billed. The tag must appear in the template file as:
<!---BILLZIP--->

<!---BILLCOUNTRY---> Tag
This tag is replaced with the country, as supplied by the customer on the Checkout page, to which the order is to be billed. The tag must appear in the template file as:
<!---BILLCOUNTRY---> PDG Commerce 4.0 -- Technical Reference Guide 123

Chapter 4 -- HTML Template Files

<!---BILLAMOUNT---> Tag
This tag is replaced with the amount that was billed to the customer for the current order. The tag must appear in the template file as:
<!---BILLAMOUNT--->

<!---BILLDATE---> Tag
This tag is replaced by the date on which the transaction was completed. This value will normally display the current date. The tag must appear in the template file as:
<!---BILLDATE--->

<!---BILLPHONE1---> Tag
This tag is replaced by the primary phone number for the person to which the order is to be billed. The tag must appear in the template file as:
<!---BILLPHONE1--->

<!---BILLPHONE2---> Tag
This tag is replaced by the secondary phone number for the person to which the order is to be billed. This value will generally be a work or cellular phone number. It should be provided by the customer on your Web stores Checkout page. The tag must appear in the template file as:
<!---BILLPHONE2--->

<!---SHIPNAME---> Tag
This tag is replaced by the name, as entered by the customer on the Checkout page, to which the order is to be shipped. The text for this tag is the combined first and last names of the shipping information. The tag must appear in the template file as:
<!---SHIPNAME--->

124

PDG Commerce 4.0 -- Technical Reference Guide

Chapter 4 -- HTML Template Files

<!---SHIPADDRESS---> Tag
This tag is replaced by the street address, as entered by the customer on the Checkout page, to which the order is to be shipped. The text for this tag is the combined first and second lines of street addresses of the shipping information. The tag must appear in the template file as:
<!---SHIPADDRESS--->

<!---SHIPCITY---> Tag
This tag is replaced by the city, as entered by the customer on the Checkout page, to which the order is to be shipped. The tag must appear in the template file as:
<!---SHIPCITY--->

<!---SHIPSTATE---> Tag
This tag is replaced by the state, as entered by the customer on the Checkout page, to which the order is to be shipped. The tag must appear in the template file as:
<!---SHIPSTATE--->

<!---SHIPZIP---> Tag
This tag is replaced by the ZIP code, as entered by the customer on the Checkout page, to which the order is to be shipped. The tag must appear in the template file as:
<!---SHIPZIP--->

<!---SHIPCOUNTRY---> Tag
This tag is replaced by the country, as entered by the customer on the Checkout page, to which the order should be shipped. The tag must appear in the template file as:
<!---SHIPCOUNTRY--->

PDG Commerce 4.0 -- Technical Reference Guide

125

Chapter 4 -- HTML Template Files

<!---COMPANY---> Tag
When PDG Commerce encounters this tag, it is replaced by the company name supplied by the customer on the Checkout page. The tag must appear in the template file as:
<!---COMPANY--->

<!---BILLMETHOD---> Tag
When PDG Commerce encounters this tag, it is replaced by the billing method chosen by the customer on the Verify page. The tag must appear in the template file as:
<!---BILLMETHOD--->

<!---SUBTOTAL_WITH_DISCOUNT---> Tag
This tag is replaced by the subtotal for the order in the customers current order. This value represents just the total price of all of the products in the cart, with all discounting applied. This subtotal does not include any of the charges for any applied taxes or any shipping and handling. The tag must appear in the template file as:
<!---SUBTOTAL_WITH_DISCOUNT--->

<!---SHIP_METHOD---> Tag
This tag is replaced by the shipping method chosen by the customer. The tag must appear in the template file as:
<!---SHIP_METHOD--->

<!---BILLTEXT---> Tag
If you provided a field in the Checkout template named billtext, then this tag will be replaced with the customer-supplied text from that field. The tag must appear in the template file as:
<!---BILLTEXT--->

126

PDG Commerce 4.0 -- Technical Reference Guide

Chapter 4 -- HTML Template Files

<!---SHIPTEXT---> Tag
If you provided a field in the Checkout template named shiptext, then this tag will be replaced with the customer-supplied text from that field. The tag must appear in the template file as:
<!---SHIPTEXT--->

<!---CARD_TYPE---> Tag
If you collected the customers credit card information on your Verify page, this tag will display the type of credit card used for purchase. Otherwise this tag will be ignored. The tag must appear in the template file as:
<!---CARD_TYPE--->

<!---CARD_NUMBER---> Tag
If you collected the customers credit card information on your Verify page, this tag will display the credit card number used for purchase. For security purposes, only the last four digits will be displayed, and all other digits will be replaced with an X. If you did not collect credit card information, this tag will be ignored. The tag must appear in the template file as:
<!---CARD_NUMBER--->

<!---CARD_EXP_DATE---> Tag
If you collected the customers credit card information on your Verify page, this tag will display the expiration date of the credit card used for purchase. Otherwise this tag will be ignored. The tag must appear in the template file as:
<!---CARD_EXP_DATE--->

<!---BANK_NAME---> Tag
If you collected the customers check information on your Verify page, this tag will display the bank name of the check used for purchase. Otherwise this tag will be ignored. The tag must appear in the template file as:
<!---BANK_NAME--->

PDG Commerce 4.0 -- Technical Reference Guide

127

Chapter 4 -- HTML Template Files

<!---ROUTING_NUMBER---> Tag
If you collected the customers check information on your Verify page, this tag will display the routing number of the check used for purchase. Otherwise this tag will be ignored. The tag must appear in the template file as:
<!---ROUTING_NUMBER--->

<!---CHECK_NUMBER---> Tag
If you collected the customers check information on your Verify page, this tag will display the number of the check used for purchase. Otherwise this tag will be ignored. The tag must appear in the template file as:
<!---CHECK_NUMBER--->

<!---ACCOUNT_NUMBER---> Tag
If you collected the customers check information on your Verify page, this tag will display the account number of the check used for purchase. For security purposes, each digit of the number will be replaced with an X. If you did not collect check information, this tag will be ignored. The tag must appear in the template file as:
<!---ACCOUNT_NUMBER--->

<!---PASSTHROUGH---> Tags
If you collected any passthrough tags on your CheckOut or Verify templates, you may display them on the ThankYou template. There are two ways to use the passthrough tags. The <!---PASSTHROUGH---> tag will display all of your passthrough fields in a formatted table in the order they were input. If you wish to display a single passthrough field, or display the passthroughs in a different format, you may use the tag with the name of your input field. The name of the field used in the tag must match the name of the field. For example, if the name of your input field was PASSPhone, then the tag must read <!---PASSPhone--->. A field named PASSCompany must use the tag <!--PASSCompany--->, etc. The tags should appear in the template as:
<!---PASSTHROUGH---> or <!---PASSPhone---> <!---PASSCompany---> etc.

128

PDG Commerce 4.0 -- Technical Reference Guide

Chapter 4 -- HTML Template Files

Basket Template Tags


In addition to the standard ThankYou Template tags, the ThankYou HTML Template can also take any of the Basket Template Repeat tags. The use of the Basket Template Repeat tags allows you to display the customers cart on the ThankYou page. This allows you to customize what is displayed on your ThankYou page.

REPEAT and OPTIONS Tags


Like the Basket template, the ThankYou Template can also utilize the REPEAT and OPTIONS tags. The tags used within the REPEAT and OPTIONS tags for the Thank You HTML template are the same as those used in the Basket HTML template (i.e.: the Repeat Basket tags and the Options Basket tags). These tags allow you to customize the display of the customers cart on the ThankYou page. For information on what tags can be used with the REPEAT and OPTIONS tags in the Thank You Template, please see the Basket Template File section of this chapter. Below is an example of a Thank You Template that has been customized using the REPEAT tags.

Customized Thank You Template Display

DenyCredit Template File


The DenyCredit Template File is used when PDG Commerce fails to receive authorization for a credit card purchase online. If you are not using any payment authorization services with PDG Commerce, this template file will still
PDG Commerce 4.0 -- Technical Reference Guide 129

Chapter 4 -- HTML Template Files

be used if the customer supplies a credit card number that does not pass the proper mathematical (luhn10) verification. If a credit card authorization does fail, PDG Commerce only displays this template file and not the ThankYou Template File. The DenyCredit Template File is essentially an HTML Web page. However, before the template is sent to the customers browser, PDG Commerce searches it for special tags. When a tag is encountered, it is replaced with the appropriate information before being sent to the customers Web browser. The DenyCredit Template File can contain the following tags:
<!---BILLINGINFO---> <!---REASON--->

A sample DenyCredit Template File is included with PDG Commerce. Below is an example of how this template may be displayed.

Sample Deny Credit Template Display

<!---BILLINGINFO---> Tag
When this tag is encountered in the DenyCredit Template File, the tag is replaced with the customer's billing and payment information. The billing information contains the billing name and address. The payment information is comprised of the selected payment method as well as any necessary account information (i.e.: credit card number and expiration date for credit cards; account and routing information for online checks). Any information that may be sensitive, such as credit card information, will be censored. The tag must appear in the template file as:
<!---BILLINGINFO--->

130

PDG Commerce 4.0 -- Technical Reference Guide

Chapter 4 -- HTML Template Files

<!---REASON---> Tag
When this tag is encountered, PDG Commerce replaces it with the reason for the transactions denial, if a reason is provided to PDG Commerce by the authorization service. This information comes from one of several sources including the failure of the authorization service. This tag can be removed if you do not want this information displayed. If no reason is supplied, then this tag will be ignored. If you do want the information displayed, the tag must appear in the template file as:
<!---REASON--->

AcceptCredit Template File


The AcceptCredit Template File is used after the BuyIt action has been received, but only if a credit card authorization has succeeded. The AcceptCredit Template File is essentially an HTML Web page. However, before PDG Commerce sends it to the customer, it searches the file for special tags, and replaces them with the corresponding information. This template file is independent of the ThankYou Template File, which allows your Web store to have different order confirmation pages depending on whether the order required online credit card authorization. If you wish to have the same page displayed for all received orders including successful credit card authorizations, use only the ThankYou Template File and do not specify an AcceptCredit Template File in the Merchant Administrator (See the PDG Commerce User Guide for more information). Note: The standard AcceptCredit Template tags are the same as the standard ThankYou Template tags. Please refer to the ThankYou HTML template section for information on how to embed tags into the AcceptCredit HTML template file. A sample AcceptCredit Template File is included with PDG Commerce. Please see the Thank You Template File section for an example of how this template may be displayed.

Search Results Template


The Search Results Template File is used after the Search action has been received. This is the template that will be used to display the products which match the customers search query, provided there were any matches. The Search Results Template File is essentially an HTML Web page. However,
PDG Commerce 4.0 -- Technical Reference Guide 131

Chapter 4 -- HTML Template Files

before PDG Commerce sends it to the customer, it searches the HTML Template File for special tags, and replaces them with the appropriate information. The following are the standard Search Results Template tags:
<!---SEARCHRESULTS---> <!---KEYWORDS---> <!---SEARCH_FAIL_MESSAGE---> <!---NEXT_SEARCH---> <!---PREVIOUS_SEARCH---> <!---PAGE_INFO---> <!---CAT_IMG---> <!---CAT_TEXT---> <!---CAT_DESC---> <!---SEC_FORCE_DATA---> <!---NEXT_SEARCH_URL---> <!---PREVIOUS_SEARCH_URL---> <!---RESULTS_PER_PAGE---> <!---SORT_BY_DESC_PRICE_URL---> <!---SORT_BY_ASC_PRICE_URL---> <!---SORT_BY_DESC_SKU_URL---> <!---SORT_BY_ASC_SKU_URL---> <!---SORT_BY_DESC_DESC_URL---> <!---SORT_BY_ASC_DESC_URL---> <!---SORT_BY_DESC_ORDER_URL---> <!---SORT_BY_ASC_ORDER_URL---> <!---SORT_BY_PRICE_HEADER_URL---> <!---SORT_BY_SKU_HEADER_URL---> <!---SORT_BY_DESC_HEADER_URL--->

In addition to these tags, the Javascript functions FormatCurrency and FormatEuro need to be in the <head> portion of any Search Results template file. These Javascript functions can be found in the default Search Results and default PreAdd templates that came with your PDG Commerce archive, and can be copied and pasted verbatim into your new templates. A sample Search Results Template File is included with PDG Commerce, however you may customize the look of your Search Results page by using the REPEAT tags. Below are two examples of how the standard Search Results template may be displayed (depending upon the layout chosen in the Merchant Administrator).

132

PDG Commerce 4.0 -- Technical Reference Guide

Chapter 4 -- HTML Template Files

Sample Search Results Template Display (Thumbnail Layout)

Sample Search Results Template Display (Catalog Layout)

<!---SEARCHRESULTS---> Tag
When PDG Commerce encounters this tag, it is replaced with the Thumbnail or Catalog formatted search results, depending upon which has been selected in the Merchant Administrator. See Search Settings in the PDG Commerce User Guide for more information. The tag must appear in the template file as:
<!---SEARCHRESULTS--->

Note: If you would like to customize the look of search results returned by your Web store, see the REPEAT Tags section. If you use the <!---SEARCHRESULTS---> tag, you should not use the REPEAT tags to customize your search results page.

PDG Commerce 4.0 -- Technical Reference Guide

133

Chapter 4 -- HTML Template Files

<!---KEYWORDS---> Tag
This tag, when encountered, is replaced by the actual search criteria as entered by the customer. For hard coded searches, this tag may not be necessary and can be omitted (See the PDG Commerce User Guide for more information on hard searches). The tag must appear in the template file as:
<!---KEYWORDS--->

<!---SEARCH_FAIL_MESSAGE---> Tag
This tag is replaced with the text message that is to be displayed if the customers search failed. This message will be automatically generated by PDG Commerce, depending upon the reason for the search failure. Generally, this tag will be used on the Search Results Empty HTML template (i.e.: Search failed because there were no matches). If the search did not fail, this tag will be ignored. The tag must appear in the template file as:
<!---SEARCH_FAIL_MESSAGE--->

<!---NEXT_SEARCH---> Tag
This tag is replaced by a text link to the next page of search results. If there are no further pages of search results, then this tag is ignored. The tag must appear in the template file as:
<!---NEXT_SEARCH--->

<!---PREVIOUS_SEARCH---> Tag
This tag is replaced by a link to the previous page of search results. If the shopper is already on the first page of search results, then this tag is ignored. The tag must appear in the template file as:
<!---PREVIOUS_SEARCH--->

<!---PAGE_INFO---> Tag
This tag is replaced by the information regarding what page of the search results are being displayed. This information includes the number of the page being displayed and the total number of pages in the search results. The tag must appear in the template file as:
<!---PAGE_INFO--->

134

PDG Commerce 4.0 -- Technical Reference Guide

Chapter 4 -- HTML Template Files

Category Template Tags


PDG Commerces Search Results template can now contain certain Category template tags. These tags may be inserted in your Search Results template to provide a customer with information about the category within which the search was performed. The following standard Category template tags may be used in the Search Results template:
<!---CAT_IMG---> <!---CAT_TEXT---> <!---CAT_DESC---> <!---CAT_PARENT---> <!---CAT_CODE---> <!---CAT_DISP_PROD--->

For information on what these tags mean, see the following section on the Category Template File. Note: The three tags above may only be used in the Search Results template if the Search action has been called with the Category form input. See Chapter 5 of this Technical Reference Guide for more information on the Search action and its available inputs.

<!---SEC_FORCE_DATA--->
The tag is replaced with hidden form fields that are needed in the form if PDG Commerce is switching to a secure URL. Include this PDG Commerce tag in your search form if the action of the form points to an https address.

<!---NEXT_SEARCH_URL--->
This tag is replaced with the URL to have PDG Commerce display the next set of results for the search, or is ignored if there is no more results. Note that this field creates a URL, not a link or button. If you use this tag in a hyperlink and there are no more results, the hyperlink will be broken and result in a PDG Commerce error. If you have specific Javascript that will create the hyperlinks dynamically for you based on the return results, and just need the URL for the hyperlink, then use this field. Otherwise you will probably only need the <!---NEXT_SEARCH---> tag.

<!---PREVIOUS_SEARCH_URL--->
This tag is replaced with the URL to have PDG Commerce display the previous set of results for the search, or is ignored if there is no more results before the current set.

PDG Commerce 4.0 -- Technical Reference Guide

135

Chapter 4 -- HTML Template Files

Note that this field creates a URL, not a link or button. If you use this tag in a hyperlink and there are no more results before the current set, the hyperlink will be broken and result in a PDG Commerce error. If you have specific Javascript that will create the hyperlinks dynamically for you based on the return results, and just need the URL for the hyperlink, then use this field. Otherwise you will probably only need the <!---PREVIOUS_SEARCH---> tag.

<!---RESULTS_PER_PAGE--->
This tag is replaced with the number of search results per page, as defined in the Merchant Administrator. It can be used in Javascript for creating search set identifiers (i.e. Results 30 through 45).

<!---SORT_BY_DESC_PRICE_URL---> Tag
This tag is replaced by the appropriate url to display your Search Result Template page with the results of the search sorted by price in descending order. Clicking this link will display the first page of the search results. The Previous Search Results and Next Search Results pages will maintain the selected sort order. The tag must be used as an HTML link, such as:
<a href=!---SORT_BY_DESC_PRICE_URL--->Price</a>

<!---SORT_BY_ASC_PRICE_URL---> Tag
This tag is replaced by the appropriate url to display your Search Result Template page with the results of the search sorted by price in ascending order. Clicking this link will display the first page of the search results. The Previous Search Results and Next Search Results pages will maintain the selected sort order. The tag must be used as an HTML link, such as:
<a href=!---SORT_BY_ASC_PRICE_URL--->Price</a>

<!---SORT_BY_DESC_SKU_URL---> Tag
This tag is replaced by the appropriate url to display your Search Result Template page with the results of the search sorted by sku number in descending order. Clicking this link will display the first page of the search results. The Previous Search Results and Next Search Results pages will maintain the selected sort order. The tag must be used as an HTML link, such as:
<a href=!---SORT_BY_DESC_SKU_URL--->Sku</a>

136

PDG Commerce 4.0 -- Technical Reference Guide

Chapter 4 -- HTML Template Files

<!---SORT_BY_ASC_SKU_URL---> Tag
This tag is replaced by the appropriate url to display your Search Result Template page with the results of the search sorted by sku number in ascending order. Clicking this link will display the first page of the search results. The Previous Search Results and Next Search Results pages will maintain the selected sort order. The tag must be used as an HTML link, such as:
<a href=!---SORT_BY_ASC_SKU_URL--->Sku</a>

<!---SORT_BY_DESC_DESC_URL---> Tag
This tag is replaced by the appropriate url to display your Search Result Template page with the results of the search sorted by one-line description in descending order. Clicking this link will display the first page of the search results. The Previous Search Results and Next Search Results pages will maintain the selected sort order. The tag must be used as an HTML link, such as:
<a href=!---SORT_BY_DESC_DESC_URL--->Description</a>

<!---SORT_BY_ASC_DESC_URL---> Tag
This tag is replaced by the appropriate url to display your Search Result Template page with the results of the search sorted by one-line description in ascending order. Clicking this link will display the first page of the search results. The Previous Search Results and Next Search Results pages will maintain the selected sort order. The tag must be used as an HTML link, such as:
<a href=!---SORT_BY_ASC_DESC_URL--->Description</a>

<!---SORT_BY_DESC_ORDER_URL---> Tag
This tag is replaced by the appropriate url to display your Search Result Template page with the results of the search sorted by the order in which the products were entered in the Merchant Administrator, in descending order. For example, the most recently added product will appear first in the sorted list of search results. Clicking this link will display the first page of the search results. The Previous Search Results and Next Search Results pages will maintain the selected sort order. The tag must be used as an HTML link, such as:
<a href=!---SORT_BY_DESC_ORDER_URL--->Date</a>

PDG Commerce 4.0 -- Technical Reference Guide

137

Chapter 4 -- HTML Template Files

<!---SORT_BY_ASC_ORDER_URL---> Tag
This tag is replaced by the appropriate url to display your Search Result Template page with the results of the search sorted by the order in which the products were entered in the Merchant Administrator, in ascending order. For example, the most recently added product will appear last in the sorted list of search results. Clicking this link will display the first page of the search results. The Previous Search Results and Next Search Results pages will maintain the selected sort order. The tag must be used as an HTML link, such as:
<a href=!---SORT_BY_ASC_ORDER_URL--->Date</a>

<!---SORT_BY_PRICE_HEADER_URL---> Tag
This tag is replaced by the appropriate url to display your Search Result Template page with the results of the search ordered by price. Clicking the link once will sort the results by price in ascending order. Clicking the link a second time will sort the results by price in descending order. Clicking this link will display the first page of the search results. The Previous Search Results and Next Search Results pages will maintain the selected sort order. The tag must be used as an HTML link, such as:
<a href=!---SORT_BY_PRICE_HEADER_URL--->Price</a>

<!---SORT_BY_SKU_HEADER_URL---> Tag
This tag is replaced by the appropriate url to display your Search Result Template page with the results of the search ordered by sku number. Clicking the link once will sort the results by sku number in ascending order. Clicking the link a second time will sort the results by sku number in descending order. Clicking this link will display the first page of the search results. The Previous Search Results and Next Search Results pages will maintain the selected sort order. The tag must be used as an HTML link, such as:
<a href=!---SORT_BY_SKU_HEADER_URL--->Sku</a>

<!---SORT_BY_DESC_HEADER_URL---> Tag
This tag is replaced by the appropriate url to display your Search Result Template page with the results of the search ordered by description. Clicking the link once will sort the results by description in ascending order. Clicking the link a second time will sort the results by description in descending order. The tag must be used as an HTML link, such as:
<a href=!---SORT_BY_DESC_HEADER_URL--->Description</a>

138

PDG Commerce 4.0 -- Technical Reference Guide

Chapter 4 -- HTML Template Files

SEARCH ROW Tags


These tags are used to determine what data will be repeated for each row on the Search Results page. You should have already defined how many search results will comprise a row using the Merchant Administrator (see the PDG Commerce User Guide for more information). The repeated data may now actually comprise a row across the Search Results template depending upon how the HTML table tags are formatted (see the following section for more information).

REPEAT Tags
The REPEAT tags can also be used on the Search Results template to customize the look of your Web stores search results page. The tags that can be used between the REPEAT tags on the Search Results template are the same as the standard Item template tags. Please see the Item Template File section, above, for more information. In addition to the item template tags, you may also use the following tags within the REPEAT tags on the Search Result page. !---ROW_COLOR--- Tag This tag is replaced by the appropriate background color for the row if Row Coloring is enabled in the Templates section of your Commerce Administrator. Please see the PDG Commerce User Guide or PDG Commerce Design Guide (if using Site Design mode) for information on configuring row coloring. This tag should be placed in all table cell fields within the REPEAT tags on the Basket page. There should be a single space before and after the tag. The tag must appear in the template file as:
<td !---ROW_COLOR--- >

<!---ADD_SUBMIT---> Tag This tag will be replaced by the Add Item to Cart Button image specified in the Buttons section of your Cart Administrator. The tag must appear in the template file as:
<!---ADD_SUBMIT--->

<!---QTY_INPUT---> Tag This tag will be replaced by an input field that allows the customer to enter a quantity amount for each product. The tag must appear in the template file as:
<!---QTY_INPUT--->

PDG Commerce 4.0 -- Technical Reference Guide

139

Chapter 4 -- HTML Template Files

<!---ITEMOPT_FOR_ADD---> Tag This tag is replaced by the option labels and selection menus for the options associated with the appropriate product. This tag may be used when using an add action within the REPEAT tags. This tag may not be used with a multiadd action. The tag must appear in the template file as:
<!---ITEMOPT_FOR_ADD--->

The REPEAT tags may only be used within the SEARCH ROW tags on the Search Result template. The placement of these tags helps to determine the format of the search results on the page. You must have first configured the Search Settings in the Merchant Administrator to display the results in Custom Line Repeat format. See the PDG Commerce User Guide for more information on the Search Settings section of the Administrator. If you have your HTML table row tags (<tr>,</tr>) outside of the REPEAT tags, then the Number of Results per Row that you specified in the Merchant Administrator will hold true. PDG Commerce will then create as many rows as necessary to fulfill the Number of Results per Page criteria, which is also configured in the Merchant Administrator (see the PDG Commerce User Guide). You can also embed your HTML table row tags (<tr>,</tr>) inside the REPEAT tags. Then, each product will comprise a single row in a standard table layout. Note that the HTML table row tags override the Number of Search Results per Row setting indicated in the Merchant Administrator. If you have a heading row, you can place it within the SEARCH ROW tags. This will cause it to repeat after however many Number of Results per Row you specified in the Merchant Administrator. Placing the header row outside of the SEARCH ROW tags will cause the header to display only once. Below are two examples of how a customized Search Results template may be displayed. In the first example, the table row tags are located inside the REPEAT tags. In the second example, the table row tags are located outside of the REPEAT tags.

140

PDG Commerce 4.0 -- Technical Reference Guide

Chapter 4 -- HTML Template Files

Custom Search Results Template Display

Custom Search Results Template Display

PDG Commerce 4.0 -- Technical Reference Guide

141

Chapter 4 -- HTML Template Files

Templates Specific to Internet Payment Services


There are certain templates that may only be used by certain Internet payment services. These services typically involve transferring your customers to the Internet payment services secure server to provide payment information.. Template for VeriSigns Payflow Link Using VeriSigns Payflow Link as part of the checkout process for PDG Commerce is easy and simple. The checkout process for your customer begins normally. You customer is presented with a checkout page where they provide billing contact and shipping information. From there the customer proceeds to the verify page, where the customer can choose a method of payment. From this page, PDG Commerce will redirect the customer to the VeriSign Payflow Link server, using the VeriSign Payflow Link Template, passing the collected contact information to it. The customer then provides the VeriSign server with the proper payment information, and the transaction is processed by VeriSign Payflow Link. Once the transaction is processed, the Payflow Link server silently contacts your PDG Commerce and notifies it of the order completion. PDG Commerce can then log the order properly and send out appropriate emails. The Payflow Link template is not used if you are not using Payflow Link. If you are using VeriSigns Payflow Pro, this template is not used.

Category Template
The Category Template File is used after the customer has clicked on a button to display all of your Web stores product categories. The Category Template File is essentially an HTML Web page. However, before PDG Commerce sends it to the customers Web browser, it searches the Template File for special tags, and replaces them with the appropriate information. The only tags that may be used on the Category HTML template file must be used within the REPEAT tags. This causes the category information to be displayed for every category in your Web store. The standard Repeat Category tags are as follows:
142 <!---CAT_IMG---> <!---CAT_TEXT---> <!---CAT_DESC---> <!---CAT_PARENT---> <!---CAT_CODE---> <!---CAT_DISP_PROD--->

PDG Commerce 4.0 -- Technical Reference Guide

Chapter 4 -- HTML Template Files

A sample Category Template File is included with PDG Commerce. Below is an example of how that template may be displayed.

Sample Category Template Display

<!---CAT_IMG---> Tag
This tag is replaced by a reference to the product categorys corresponding image, as defined in the Product Category Details section of the Merchant Administrator. The tag must appear between the REPEAT tags in the template file as:
<img src=!---CAT_IMG--->

<!---CAT_TEXT--->
This tag is replaced by the name of a particular product category, as defined in the Product Category Details section of the Merchant Administrator. The tag must appear between the REPEAT tags in the template file as:
<!---CAT_TEXT--->

<!---CAT_DESC--->
This tag is replaced by the description of the particular category as defined in the Product Category Details section of the Merchant Administrator. This tag must appear between the REPEAT tags in the template file as:
<!---CAT_DESC--->

<!---CAT_PARENT--->
This tag is replaced by the particular categorys parent category as defined in the Product Category Details section of the Merchant Administrator. This tag must appear between the REPEAT tags in the template file as:
<!---CAT_PARENT--->

PDG Commerce 4.0 -- Technical Reference Guide

143

Chapter 4 -- HTML Template Files

<!---CAT_CODE--->
This tag is replaced by the particular categorys four character code as defined in the Product Category Details section of the Merchant Administrator. This tag must appear between the REPEAT tags in the template file as:
<!---CAT_CODE--->

<!---CAT_DISP_PROD--->
This tag is replaced by the URL for the template that acts as the home page for the particular product category as defined in the Product Category Details section of the Merchant Administrator. This tag should be used within an HTML hypertext reference tag (href) for creating a link to this URL. This tag must appear between the REPEAT tags in the template file. An example of this tag in the Category template would be:
<a href="!---CAT_DISP_PROD---">view products</a>

ShipCompare Template
The ShipCompare Template File is used to display shipping rates returned from UPS or USPS, when a specific PDG Commerce shipping method is defined to compare rates. The ShipCompare Template File is essentially an HTML Web page. However, before PDG Commerce sends it to the customers Web browser, it searches the Template File for special tags, and replaces them with the appropriate information. The standard ShipCompare tags are as follows:
<!---BEGIN_SHIP_COMPARE---> <!---END_SHIP_COMPARE---> !---SERVICE_NAME--!---SERVICE_COST--!---SERVICE_DESCRIPTION--!---SERVICE_ERROR--!---SERVICE_BUTTON--!---CONTINUE_SUBMIT----

<!---BEGIN_SHIP_COMPARE---> Tag
This tag denotes the beginning of a repeatable section of the ShipCompare template. This section is then repeated, until the END_SHIP_COMPARE tag
144 PDG Commerce 4.0 -- Technical Reference Guide

Chapter 4 -- HTML Template Files

is reached, for each shipping service rate to be compared. The tag must appear in the template file as:
<!---BEGIN_SHIP_COMPARE--->

<!---END_SHIP_COMPARE---> Tag
This tag denotes the end of a repeatable section of the ShipCompare template. This section, beginning with the BEGIN_SHIP_COMPARE tag, is then repeated for each shipping service rate to be compared. The tag must appear in the template file as:
<!---END_SHIP_COMPARE--->

!---SERVICE_NAME--- Tag
This tag is replaced with the name of the available UPS / USPS service. The tag must appear inside BEGIN_SHIP_COMPARE and END_SHIP_COMPARE tags in the template file as:
!---SERVICE_NAME---

The text that is displayed for this tag is provided by the shipping service and cannot be modified.

!---SERVICE_COST--- Tag
This tag is replaced with the cost of the available UPS / USPS service. The tag must appear inside BEGIN_SHIP_COMPARE and END_SHIP_COMPARE tags in the template file as:
!---SERVICE_COST---

!---SERVICE_DESCRIPTION--- Tag
This tag is replaced with a brief description of the available UPS / USPS service. The tag must appear inside BEGIN_SHIP_COMPARE and END_SHIP_COMPARE tags in the template file as:
!---SERVICE_DESCRIPTION---

The text that is displayed for this tag is provided by the shipping service and cannot be modified.

PDG Commerce 4.0 -- Technical Reference Guide

145

Chapter 4 -- HTML Template Files

!---SERVICE_ERROR--- Tag
If an error occurs while retrieving information for this service, then this tag is replaced with that error. An example might be if a service is not available because of an orders extreme weight. The tag must appear inside BEGIN_SHIP_COMPARE and END_SHIP_COMPARE tags in the template file as:
!---SERVICE_ERROR---

!---SERVICE_BUTTON--- Tag
This tag is replaced with a submit button that allows the customer to choose the service and proceed with checkout. The tag must appear inside BEGIN_SHIP_COMPARE and END_SHIP_COMPARE tags in the template file as:
!---SERVICE_BUTTON---

!---CONTINUE_SUBMIT--- Tag
This tag is available on the template if Site Design is enabled. Please see the PDG Software Site Design guide for further information on this tag.

Verify - Inventory Error Template


The Verify - Inventory Error Template is used when your webstore tracks inventory on products and backordering is turned off, and not enough inventory is available to fill a customers order during the checkout process. PDG Commerce will modify the baskets contents to include only the items in inventory. Then the new basket will be displayed to the customer using this template. The customer can then continue to checkout normally, or go back and shop for other items. Note that this template is only used if you are tracking inventory and do not allow backordering of out-of-stock products. The template can be displayed prior to the CheckOut, or between the CheckOut and Verify steps. The Verify - Inventory Error Template File is essentially an HTML Web page. However, before PDG Commerce sends it to the customers Web browser, it searches the Template File for special tags, and replaces them with the appropriate information.

146

PDG Commerce 4.0 -- Technical Reference Guide

Chapter 4 -- HTML Template Files

The standard Verify - Inventory Error template uses all the tags that the Basket template uses. In addition to those tags, these other tags are used:
<!---PRINT_BILLING---> !---SUBMIT_ORDER_BUTTON---

<!---PRINT_BILLING---> Tag
This tag is replaced with hidden fields containing any billing information that may be submitted during the checkout process. If this template is used by PDG Commerce before any billing information is collected, then this tag is ignored. If this template is used by PDG Commerce between the CheckOut and Verify steps, then this tag is replaced with hidden fields containing the data from the CheckOut step. The tag must appear in the template file as:
<!---PRINT_BILLING--->

!---SUBMIT_ORDER_BUTTON--- Tag
This tag is replaced with a submit button, allowing the order with the modified basket to continue to be processed. The tag must appear in the template file as:
!---SUBMIT_ORDER_BUTTON---

Error Template
If any type of error occurs during the customers shopping in your web store, PDG Commerce uses the Error template to display the appropriate error message to the customer. The standard Error template uses the following tags:
<!---ERROR_MESSAGE---> <!---ERROR_CODE---> <!---SYSTEM_VERSION--->

PDG Commerce 4.0 -- Technical Reference Guide

147

Chapter 4 -- HTML Template Files

<!---ERROR_MESSAGE---> Tag
When this tag is encountered, PDG Commerce will replace it with an error message explaining what action has caused the problem. The tag must appear in the template file as:
<!---ERROR_MESSAGE--->

<!---ERROR_CODE---> Tag
When this tag is encountered, PDG Commerce will replace it with the index value of the error that was returned. This number is useful to know if you must contact PDG Software for technical support. The tag must appear in the template file as:
<!---ERROR_CODE--->

<!---SYSTEM_VERSION---> Tag
When this tag is encountered, PDG Commerce will replace it with the version, build, and patchlevel information of the Commerce program that is installed on your server. The tag must appear in the template file as:
<!---SYSTEM_VERSION--->

Anonymous Checkout Template File


The Anonymous Checkout Template File is used if you have specified a separate Checkout template to be used for non-secure checkout when customers have chosen not to log in or register with your site. This file will obtain the customers contact, billing, and shipping information from the customer after receiving the Checkout action (usually from the Checkout Select page). For more information on the Checkout action, please see the chapter regarding PDG Commerce actions. The Anonymous Checkout Template File is essentially an HTML Web page. However, before PDG Commerce sends it to the customer, it searches the HTML Template File for special tags. When PDG Commerce encounters these tags, they are replaced with the appropriate information before being sent to the customers Web browser. In order for PDG Commerce to properly receive and process information from this template file, the Anonymous Checkout Template File must contain a form submission back to PDG Commerce with the Verify action. For all the

148

PDG Commerce 4.0 -- Technical Reference Guide

Chapter 4 -- HTML Template Files

required fields for this callback, please see the Verify action definition in the chapter regarding PDG Commerce Actions. The Anonymous Checkout Template uses the same tags available on the Checkout Template page. For more information, see the Checkout Template File section, above.

UPS Track Template File


The UPS Track Template file is used to allow customers to enter information and track the status of their order package. If you wish to provide UPS package tracking to your customers, you will use the UPS Track template provided with your PDG Commerce. You can create a link to the tracking page using the following code:
<a href=http://www.mywebstore.com/cgi-bin/commerce?display=action&template=Templates/UPSTrack.html&emptyoverride=yes>Track Order</a>

Even though the UPS Track template is a static HTML page, you should use the above link to display the template through a Commerce action, otherwise the country list will not be populated by PDG Commerce. The standard UPS Track template uses the following tag:
<!---COUNTRY_LIST--->

<!---COUNTRY_LIST---> Tag
When this tag is encountered, PDG Commerce replaces it with a drop-down menu containing all the countries with their corresponding numeric code for PDG Commerce. The tag must appear in the template file as:
<!---COUNTRY_LIST--->

UPS Tracking Result Template File


If you offer UPS package tracking to your customers, this template is used to display the results of the tracking inquiry. This page will display the address to which the package was shipped, the address from which the package was shipped, the details of the package, and the date and location of every action taken on the package. The standard UPS Tracking Result Template uses the following tag:
<!---TRACK_RESULTS---> PDG Commerce 4.0 -- Technical Reference Guide 149

Chapter 4 -- HTML Template Files

<!---TRACK_RESULTS---> Tag
When this tag is encountered, PDG Commerce replaces it with the information returned from UPS, including the address from which the package was shipped, the address to which the package was shipped, the details of the package, and the date and location of every action taken on the package. The tag must appear in the template file as:
<!---TRACK_RESULTS--->

UPS Address Validation Template File


If you are registered to use UPS OnLine Tools and have checked the I want UPS Address Validation When Customers Check Out box in the UPS Details section of your Merchant Administrator, this template will display if a customer enters an invalid shipping address on the Checkout page (whether or not they have chosen a UPS shipping method). This template will allow the customer to bypass the validation and use the current address, enter a new address, or choose from the closest available matches to the address entered on the Checkout page. The standard UPS Address Validation Template uses the following tags:
<!---PDGCARTFORMDATA---> <!---UPS_CURRENT_ADDR---> <!---UPS_ADDR_SUGGEST---> <!---BYPASS_VAL_W_JAVA_SUBMIT---> <!---CLEAR_W_JAVA_SUBMIT---> <!---CONTINUE_W_JAVA_SUBMIT--->

<!---PDGCARTFORMDATA---> Tag
When this tag is encountered, PDG Commerce replaces it with the hidden information that is necessary for the address validation process. This tag must be located within the form submission in the UPS Address Validation Template file. No visible information is replaced by this tag, therefore, it does not affect the visible layout of your HTML template in any way. This tag is required for the UPS Validate Address Template, and for PDG Commerce to operate properly. The tag must appear in the template file as:
<!---PDGCARTFORMDATA--->

150

PDG Commerce 4.0 -- Technical Reference Guide

Chapter 4 -- HTML Template Files

<!---UPS_CURRENT_ADDR---> Tag
When this tag is encountered, PDG Commerce will replace it with the actual address that the customer entered on the Checkout page. The tag must appear in the template file as:
<!---UPS_CURRENT_ADDR--->

<!---UPS_ADDR_SUGGEST---> Tag
When this tag is encountered, PDG Commerce will replace it with a dropdown menu containing the closest available matches to the address entered on the Checkout page that were found as valid addresses by UPS. The tag must appear in the template as:
<!---UPS_ADDR_SUGGEST--->

<!---BYPASS_VAL_W_JAVA_SUBMIT---> Tag
This tag is available on the template if Site Design is enabled. Please see the PDG Software Site Design guide for further information on this tag.

<!---CLEAR_W_JAVA_SUBMIT---> Tag
This tag is available on the template if Site Design is enabled. Please see the PDG Software Site Design guide for further information on this tag.

<!---CONTINUE_W_JAVA_SUBMIT---> Tag
This tag is available on the template if Site Design is enabled. Please see the PDG Software Site Design guide for further information on this tag.

Email Templates
The Email templates can use the following tag:
<!---SOFTGOODS_LINKS--->

<!---SOFTGOODS_LINKS---> Tag
This tag will be replaced by urls of the download links for all softgoods purchased in this order. The tag must appear in the template files as:
<!---SOFTGOODS_LINKS--->

PDG Commerce 4.0 -- Technical Reference Guide

151

Chapter 4 -- HTML Template Files

This tag will enter the url of the softgoods download into the email. The url will not be an HTML link. For example:
http://www.webstorename.com/cgi-bin/commerce?deliver=action&invoice=I00001&sku=A0001&qty=1

If you are using the PDG Internal Mailer, you can have PDG Commerce send HTML emails to yourself and customers. With these HTML emails, you can use HTML to graphically display your order receipts sent to your customers. Remember that your customers email program will need to be able to display HTML to display these emails correctly. The HTML Email templates can use any PDG Commerce tags that are available for use on the ThankYou template. Your HTML email templates must have a file extension of .html. If you are using HTML emails, you can send attachments which you can display within the emails. All attached files must be in the Attachments folder located inside the PDG_Commerce directory. Directory traversal to reach a file in a different location on the server is not allowed. To display the attached file within the email, you should code the HTML as normal, but place cid: in front of the attached filename, as in the following example:
<img src=cid:logo.gif>

Note: All email templates must be saved in the EmailTemplates folder in your PDG_Cart directory.

SSL Templates
The SSL (secure socket layer) Template Files work like their non-secure counterparts. They are essentially HTML Web pages, and they are also searched for special tags before PDG Commerce sends them to the customers Web browser. The sample SSL Template Files that are included with PDG Commerce are:
SSL Checkout Template SSL Verify Template SSL Thank You Template SSL Anonymous Checkout Template

If your customer is shopping on an SSL connection to your webstore and either the SSL Checkout or SSL Verify are not specified in the Merchant Administrator, then PDG Commerce will use the standard Checkout and Verify templates in their place. If the customer is shopping on an SSL connection, then the SSL Thank You template MUST be specified in the Merchant

152

PDG Commerce 4.0 -- Technical Reference Guide

Chapter 4 -- HTML Template Files

Administrator - otherwise the customer will receive an Error page during checkout. These template files should essentially be the same as their non-secure counterparts, simply located in a secure directory on you Web server. Important: If you are using custom graphics on your Web store, you must provide the complete URL in your image references on all SSL Templates. Example:
<img src=https://www.yourstore.com/images/prod1.jpg>
Note the s which indicates that the image is on a secure server

If you do not provide the complete URLs to images or maintain an Images directory on the secure side of your Web server, the links to your images will be broken on your SSL Templates.

Empty Templates
There are two HTML templates that come with PDG Commerce that are simply static HTML pages. These are the Basket Empty Template and the Search Results Empty Template. They are essentially static because there are no tags for PDG Commerce to interpret on these templates. Actually, the Search Results Empty template can take one tag, which we will discuss later.

Basket Empty Template


The Basket Empty Template is used in place of the Basket Template when there are no items in the customers Cart. Instead of the tags for formatting items, you should put some text that notifies that the customer that there are no products in his cart. This template will be used whenever the DISPLAY action is called and the customers cart is empty. The Basket Empty Template will also be displayed whenever the customer clicks the Remove All button to empty his cart. The Basket Empty Template can utilize the following tags:

!---SHOPSOMEMORE_LINK--- Tag
This tag is replaced by a Shop Some More button. Please note that this tag is replaced with all the code to display the button as defined in the Merchant Administrator as well as the URL. The tag must appear in the template as:
!---SHOPSOMEMORE_LINK---

PDG Commerce 4.0 -- Technical Reference Guide

153

Chapter 4 -- HTML Template Files

<!---ITEMRETURNURL---> Tag
This tag is replaced by a hidden field. It informs PDG Commerce of the reference page for the shopper. The reference page is the page which was being viewed prior to the AddItem page. Note that any URL entered into the Destination of Shop Some More Button field in the Cart Options section of the Merchant Administrator will override this reference page identifier. However, if the page was created dynamically, the user will be returned to the last statically created page. The tag must appear in the template file as:
<!---ITEMRETURNURL--->

Search Results Empty Template


The Search Results Empty Template is displayed in place of the Search Results Template when there are no items that match the customers search. Instead of inserting tags for formatting items, you should put some text that notifies that the customer that there are no products which fit his query. You may also use the following tag to display this message:

<!---SEARCH_FAIL_MESSAGE---> Tag
This tag is replaced with the text message that is to be displayed if the customers search failed. This message will be automatically generated by the Cart, depending upon the reason for the search failure. The tag must appear in the template file as:
<!---SEARCH_FAIL_MESSAGE--->

The SearchResultEmpty HTML template will be used whenever the SEARCH action is called and there are no items to return.

Site Design Templates


The following templates are used in the Site Design functionality of PDG Commerce. Please see the PDG Software Site Design guide for further information on these templates.
154 UPS Tracking Request template Advanced Search template Top Navigation template Left Navigation template

PDG Commerce 4.0 -- Technical Reference Guide

Chapter 4 -- HTML Template Files

Right Navigation template Bottom Navigation template About Us template Contact template Home template User 1 template User 2 template User 3 template

The following universal tags are available in any PDG Commerce templates if Site Design is enabled. Please see the PDG Software Site Design guide for further information on these tags.
<!---VIEW_CART_LINK---> <!---TRACK_ORDER_LINK---> <!---SEARCH_SUBMIT---> <!---HOME_LINK---> <!---SEARCH_LINK---> <!---PRODUCTS_LINK---> <!---CONTACT_LINK---> <!---ABOUT_US_LINK---> <!---USER_1_LINK---> <!---USER_2_LINK---> <!---USER_3_LINK--->

User Database Templates


In addition to the previously discussed templates, PDG Commerce also has nine other templates that are used when customers log in or out, register, or update their account information. These templates are: Guest Template : This template is displayed whenever a customer is prompted to login, but instead chooses to shop anonymously. This template is to be used as a general welcoming template. Login Template : This template is displayed whenever a customer requests to login. It displays the log in form. You can design your Login Template to allow customers to shop anonymously and / or register with your web site (your customer categories must be configured to support this). LoginFailure Template : If the customers login attempt fails, this template is displayed. It can allow the customer to retry to log in, or optionally register with the site or shop anonymously.
PDG Commerce 4.0 -- Technical Reference Guide 155

Chapter 4 -- HTML Template Files

LoginSuccess Template : If the customers login attempt succeeds, this template is displayed. This template is to be used as a welcoming template for your registered customers. Register Template : If new customers can register for your website, this template can be displayed to allow the new customer to enter in a customer category code. If the code matches any defined customer category codes with PDG Commerce, that customer will be allowed to join themselves (without your intervention) into that customer category. RegistrationSuccess Template : If a registration attempt by a customer is successful, this template is displayed to the newly registered customer. It can be used as a welcoming page. UserUpdate Template : When a new customer registers with your web store, or if a customer needs to update their account information, this template is used to display that information. This information is presented to the customer in a form, which the customer can modify as needed and submit for saving. Checkout Select Template : When a customer is shopping anonymously and begins to checkout, this template is used to allow the customer to log in or register before completing the purchase. This is an optional template. If the template filename is left blank in the Merchant Administrator or cannot be located, this login / registration step is skipped. Unauthorized Action Template : If a customer of your web site attempts to perform an action that is not allowed due to the rights of their customer category, an error page is displayed using this template.

The following PDG Commerce tags are available for these templates.

!---FORCE_COOKIE_BABBLE--If your customers are shopping anonymously and have items in their cart, and then choose to register or log in, this tag allows PDG Commerce to carry forward their cart so it is available to them after they register or log in. This tag must appear in the form for the Login or Register Template.

!---BASKET_SELECT--This tag can be placed in the LoginSuccessful template. When a customer logs in, they may choose to preload thier cart from different sources. They can opt to choose from a new empty cart, the cart of their last unfinished purchase, their last order, or if they were shopping before logging in, the cart from their anonymous shopping. The tag is replaced with an HTML table allowing the customer to select which basket to use. Although the HTML table output itself cannot be modied, the appearance of the elements can be altered through the use of style sheets.
156 PDG Commerce 4.0 -- Technical Reference Guide

Chapter 4 -- HTML Template Files

!---REGISTER_CODE--This tag is used to pass a provided registration code through the Register template in a hidden field. It generates a hidden form input and is to be placed within a form on the Registration template. It generates its own HTML, and should not placed within an <input> tag.

!---REG_ERROR--This tag is replaced with an appropriate error message is a registration attempt has failed. It is used on the Register template, in case a registration attempt fails and the template is redisplayed.

!---REG_USERNAME--This tag is replaced with an input box for a customers username for the Registration template.

!---REG_USER_NAME--This tag is replaced with the value of the customers username.

!---REG_EMAIL--The tag is replaced with the users email address.

!---REG_COMPANY--The tag is replaced with the users company.

!---REG_BILL_FIRST_NAME--The tag is replaced with the users first name of the billing information.

!---REG_BILL_LAST_NAME--The tag is replaced with the users last name of the billing information.

!---REG_BILL_STREET1--The tag is replaced with the users first line of the street address of the billing information.

PDG Commerce 4.0 -- Technical Reference Guide

157

Chapter 4 -- HTML Template Files

!---REG_BILL_STREET2--The tag is replaced with the users second line of the street address of the billing information.

!---REG_BILL_CITY--The tag is replaced with the users city of the billing information.

!---REG_BILL_STATE_LIST--The tag is replaced with the <option> list of states, with the users state of the billing address selected. It is to be placed inside <select> HTML tags on the Register template:
<select name="billstate"> <!---REG_BILL_STATE_LIST---> </select>

!---REG_BILL_PROVINCE--The tag is replaced with the users province of the billing information.

!---REG_BILL_COUNTRY_LIST--The tag is replaced with the <option> list of countries, with the users country of the billing address selected. It is to be placed inside <select> HTML tags on the Register template:
<select name="billcountry"> <!---REG_BILL_COUNTRY_LIST---> </select>

!---REG_BILL_ZIP--The tag is replaced with the users postal code of the billing information.

!---REG_BILL_PHONE1--The tag is replaced with the users first phone number of the billing information.

!---REG_BILL_PHONE2--The tag is replaced with the users second phone number of the billing information.

158

PDG Commerce 4.0 -- Technical Reference Guide

Chapter 4 -- HTML Template Files

!---REG_BILL_TEXT--The tag is replaced with the users additional comments and text of the billing information.

!---REG_BILL_SHIP_TO_BILL--If the customers primary shipping address is the same as the billing address, this tag is replaced with the word checked. If the addresses are different, this tag is ignored. It is to be used in an HTML checkbox:
<input name="shiptobilladdr" type="checkbox" !---REG_BILL_SHIP_TO_BILL--- value="yes">

!---REG_SHIP_FIRST_NAME--The tag is replaced with the users first name of the primary shipping information.

!---REG_SHIP_LAST_NAME--The tag is replaced with the users last name of the primary shipping information.

!---REG_SHIP_STREET1--The tag is replaced with the users first line of the street address of the primary shipping information.

!---REG_SHIP_STREET2--The tag is replaced with the users second line of the street address of the primary shipping information.

!---REG_SHIP_CITY--The tag is replaced with the users city of the primary shipping information.

!---REG_SHIP_STATE_LIST--The tag is replaced with the <option> list of states, with the users state of the primary shipping address selected. It is to be placed inside <select> HTML tags on the Register template:
<select name="shipstate"> <!---REG_SHIP_STATE_LIST---> </select> PDG Commerce 4.0 -- Technical Reference Guide 159

Chapter 4 -- HTML Template Files

!---REG_SHIP_PROVINCE--The tag is replaced with the users province of the primary shipping information.

!---REG_SHIP_COUNTRY_LIST--The tag is replaced with the <option> list of countries, with the users country of the primary shipping address selected. It is to be placed inside <select> HTML tags on the Register template:
<select name="shipcountry"> <!---REG_SHIP_COUNTRY_LIST---> </select>

!---REG_SHIP_ZIP--The tag is replaced with the users postal code of the primary shipping information.

!---REG_SHIP_PHONE1--The tag is replaced with the users first phone number of the primary shipping information.

!---REG_SHIP_PHONE2--The tag is replaced with the users second phone number of the primary shipping information.

!---REG_SHIP_TEXT--The tag is replaced with the users additional comments and text of the primary shipping information.

!---USERID--This tag is replaced with the customers User ID in the User Update template. It is just the value, and not HTML.

!---CUST_COMPANY--The tag is replaced with the users company.

160

PDG Commerce 4.0 -- Technical Reference Guide

Chapter 4 -- HTML Template Files

!---DISPLAY_CONTACT_LIST--PDG Commerce replaces this tag with the HTML code that allows the customer to select which address they are modifying (billing, primary shipping, any defined secondary shipping, or a new secondary shipping). The layout of the form controls created by this tag cannot be modified. However, the text used in by this tag can be translated using the literals file.

!---CONTACT_JAVASCRIPT--PDG Commerce replaces this tag with Javascript functions needed to operate the !---DISPLAY_CONTACT_LIST--- tag properly. This tag should go in the <head> portion of the Update User template.

!---CUST_EMAIL--The tag is replaced with the users email address.

!---ERROR--If an error occurs while the customer is updating their contact information using the User Update template, the template is reloaded and this tag is replaced with an appropriate error message.

!---UPDATE_CUSTOMER_LINK--This tag is replaced with a submit button on the User Update template that allows the customer to save any non-address information for thier account, such as email address or company name. It will be a standard grey form button unless you have a custom image specified for it in the Merchant Administrator (see Custom Buttons in the PDG Commerce User Guide).

!---ADD_CONTACT_LINK--This tag is replaced with a submit button on the User Update template that allows the customer add the current address as a new address (as selected in the !---DISPLAY_CONTACT_LIST--- output). The address information that was initially displayed when it was selected from the !--DISPLAY_CONTACT_LIST--- output will not be modified. It will be a standard grey form button unless you have a custom image specified for it in the Merchant Administrator (see Custom Buttons in the PDG Commerce User Guide).

PDG Commerce 4.0 -- Technical Reference Guide

161

Chapter 4 -- HTML Template Files

!---UPDATE_CONTACT_LINK--This tag is replaced with a submit button on the User Update template that allows the customer to modify the current address (as selected in the !--DISPLAY_CONTACT_LIST--- output). It will be a standard grey form button unless you have a custom image specified for it in the Merchant Administrator (see Custom Buttons in the PDG Commerce User Guide).

!---REGISTER_LINK--This tag is replaced with a submit button on the Register template that allows the customer to submit their contact and address information for registration. It will be a standard grey form button unless you have a custom image specified for it in the Merchant Administrator (see Custom Buttons in the PDG Commerce User Guide).

!---LOGIN_LINK--This tag is replaced with a submit button on the Login and Login Failure template that allows the customer to submit their login information to PDG Commerce. It will be a standard grey form button unless you have a custom image specified for it in the Merchant Administrator (see Custom Buttons in the PDG Commerce User Guide).

!---CHECKOUT_LINK--This tag is replaced with the code for a CheckOut button. Please note that this is the complete code for displaying the button image as defined in the Merchatn Administrator as well as the proper form value.

!---SECURE_CHECKOUT_LINK--This tag is replaced with the code for a Secure CheckOut button. Please note that this is the complete code for displaying the button image as defined in the Merchant Administrator as well as the proper form value.

!---BABBLE_EXPIRE_DATA--If a customer was logged in and was shopping, and then was logged out of the webstore due to idle inactivity, PDG Commerce displays the Login (and Login Failure) template to allow the customer to re-login. If this occurs, this tag will be replaced with text explaining that the user was logged out due to inactivity and prompting them to re-login. Once they are logged in again, they will be able to return to shopping at the same point from which they were

162

PDG Commerce 4.0 -- Technical Reference Guide

Chapter 4 -- HTML Template Files

logged out. If the Login template is displayed for normal logging in (not due to idle inactivity), this tag is ignored.

!---CUSTOMER_CAT_NAME--In the User Update template, this tag is replaced with the customer category name to which the customer belongs.

!---SHOPPER_POINTS--This tag is replaced with the customers current total number of accumulated shopper points.

!---LAST_BASKET_STRING--If during a customers login, you wish to allow the customer to set their basket to their previous basket but do not wish to use the !---BASKET_SELECT---, they can create a form with the PDG Commerce action of setbasket, and use this tag to enter the previous basket as an option of the form.

User Database Template Tags


For your reference, please find below the complete list of tags available for use on each user database template.

Guest Template
The Guest Template cannot utilize any special tags other than the universal tags.

Login Template
The Login Template can utilize the following tags:
<!---FORCE_COOKIE_BABBLE---> <!---BABBLE_EXPIRE_DATA---> <!---LOGIN_LINK--->

LoginFailure Template
The LoginFailure Template can utilize the following tags:
<!---FORCE_COOKIE_BABBLE---> <!---BABBLE_EXPIRE_DATA---> <!---LOGIN_LINK---> PDG Commerce 4.0 -- Technical Reference Guide 163

Chapter 4 -- HTML Template Files

<!---START_REGISTER_LINK--->

LoginSuccess Template
The LoginSuccess Template can utilize the following tags:
<!---USERMSG [USER] has successfully logged in---> <!---BASKET_SELECT---> <!---CUST_COMPANY---> <!---USERID---> <!---CUST_EMAIL---> <!---CUSTOMER_CAT_NAME---> <!---SHOPPER_POINTS---> <!---CHECKOUT_LINK---> <!---SECURE_CHECKOUT_LINK---> <!---LAST_BASKET_STRING--->

Register Template
The Register Template can utilize the following tags:
164 <!---REGISTER_CODE---> <!---FORCE_COOKIE_BABBLE---> <!---REG_ERROR---> <!---REG_USERNAME---> <!---REG_EMAIL---> <!---REG_COMPANY---> <!---REG_BILL_FIRST_NAME---> <!---REG_BILL_LAST_NAME---> <!---REG_BILL_STREET1---> <!---REG_BILL_STREET2---> <!---REG_BILL_CITY---> <!---REG_BILL_PROVINCE---> <!---REG_BILL_ZIP---> <!---REG_BILL_STATE_LIST---> <!---REG_BILL_COUNTRY_LIST---> <!---REG_BILL_PHONE1---> <!---REG_BILL_PHONE2---> <!---REG_BILL_TEXT---> <!---REG_BILL_SHIP_TO_BILL---> <!---REG_SHIP_FIRST_NAME---> <!---REG_SHIP_LAST_NAME---> <!---REG_SHIP_STREET1--->

PDG Commerce 4.0 -- Technical Reference Guide

Chapter 4 -- HTML Template Files

<!---REG_SHIP_STREET2---> <!---REG_SHIP_CITY---> <!---REG_SHIP_PROVINCE---> <!---REG_SHIP_ZIP---> <!---REG_SHIP_STATE_LIST---> <!---REG_SHIP_COUNTRY_LIST---> <!---REG_SHIP_PHONE1---> <!---REG_SHIP_PHONE2---> <!---REG_SHIP_TEXT---> <!---REGISTER_LINK--->

RegistrationSuccess Template
The RegistrationSuccess Template can utilize the following tags:
<!---USERMSG [USER] has successfully logged in ---> <!---BASKET_SELECT---> <!---CUST_COMPANY---> <!---USERID---> <!---CUST_EMAIL---> <!---CUSTOMER_CAT_NAME---> <!---SHOPPER_POINTS---> <!---CHECKOUT_LINK---> <!---SECURE_CHECKOUT_LINK---> <!---LAST_BASKET_STRING--->

UserUpdate Template
The UserUpdate Template can utilize the following tags:
<!---CONTACT_JAVASCRIPT---> <!---ERROR---> <!---SHOPPER_POINTS---> <!---USERID---> <!---CUST_EMAIL---> <!---CUST_COMPANY---> <!---CUSTOMER_CAT_NAME---> <!---UPDATE_CUSTOMER_LINK---> <!---DISPLAY_CONTACT_LIST---> <!---STATE_LIST---> <!---COUNTRY_LIST---> <!---UPDATE_CONTACT_LINK---> <!---ADD_CONTACT_LINK--->

PDG Commerce 4.0 -- Technical Reference Guide

165

Chapter 4 -- HTML Template Files

Checkout Select Template


The Checkout Select Template can utilize the following tags:
<!---FORCE_COOKIE_BABBLE---> <!---BABBLE_EXPIRE_DATA---> <!---LOGIN_LINK---> <!---START_REGISTER_LINK---> <!---CHECKOUT_LINK---> <!---SECURE_CHECKOUT_LINK--->

Unauthorized Action Template


The Unauthorized Action Template cannot utilize any special tags other than the universal tags.

Multiple Shipping Templates


In addition to the previously discussed templates, PDG Commerce also has seven alternate templates that can be used when customers choose to ship an order to more than one recipient. These templates are:
Multiple Shipment Checkout Template : This is the template that will

be displayed for the Checkout action if the customer specified more than one recipient for the items ordered. Multiple Shipment SSL Checkout Template : This is the template that will be displayed for the Secure Checkout action if the customer specified more than one recipient for the items ordered. If no template filename is entered in this field, the Multiple Shipment Check-out Template will be used. Multiple Shipment Verify Template : This is the template that will be displayed for the Verify action if the customer specified more than one recipient for the items ordered. Multiple Shipment SSL Verify Template : This is the template that will be displayed for the Verify action if the customer chose Secure Checkout and if the customer specified more than one recipient for the items ordered. If no template filename is entered in this field, the Multiple Shipment Verify Template will be used. Multiple Shipment ThankYou Template : This is the template that will be displayed for the BuyIt action if the customer chose an offline payment method and if the customer specified more than one recipient for the items ordered.

166

PDG Commerce 4.0 -- Technical Reference Guide

Chapter 4 -- HTML Template Files

Multiple Shipment SSL ThankYou Template : This is the template that

will be displayed for the BuyIt action if the customer chose an offline payment method and Secure Checkout, and if the customer specified more than one recipient for the items ordered. If no template filename is entered in this field, the Multiple Shipment Thank You Template will be used. Multiple Shipment Credit Accept Template : This is the template that will be displayed for the BuyIt action if the customer chose an online payment method and if the customer specified more than one recipient for the items ordered.

The following PDG Commerce tags are available for these templates.

!---FRIENDLYNAME--This tag is replaced by the friendly name entered for this recipient. The friendly name is entered by the customer when this recipient is added to their account, and appears in the recipient drop down menu as well as on the templates displayed during the multiple shipment checkout process.

!---FIRST_NAME_ENTRY--This tag is used as the form entry name for the !---FIRST_NAME_VALUE--input field. This tag will be replaced with a form entry name that corresponds to the index of the current recipient to ensure that the information entered in this field is saved for the appropriate recipient. This tag should appear in the template as:
<input type=text name="!---FIRST_NAME_ENTRY---" value="!--FIRST_NAME_VALUE---">

!---FIRST_NAME_VALUE--This tag is replaced by the first name of the current recipient, if the customer is logged in and this recipients information has been previously saved. Note that this is a form field that can be modified by the customer.

!---LAST_NAME_ENTRY--This tag is used as the form entry name for the !---LAST_NAME_VALUE--input field. This tag will be replaced with a form entry name that corresponds to the index of the current recipient to ensure that the information entered in this field is saved for the appropriate recipient. This tag should appear in the template as:
<input type=text name="!---LAST_NAME_ENTRY---" value="!--LAST_NAME_VALUE---">

PDG Commerce 4.0 -- Technical Reference Guide

167

Chapter 4 -- HTML Template Files

!---LAST_NAME_VALUE--This tag is replaced by the last name of the current recipient, if the customer is logged in and this recipients information has been previously saved. Note that this is a form field that can be modified by the customer.

!---ADDRESS1_ENTRY--This tag is used as the form entry name for the !---ADDRESS1_VALUE--input field. This tag will be replaced with a form entry name that corresponds to the index of the current recipient to ensure that the information entered in this field is saved for the appropriate recipient. This tag should appear in the template as:
<input type=text name="!---ADDRESS1_ENTRY---" value="!--ADDRESS1_VALUE---">

!---ADDRESS1_VALUE--This tag is replaced by the first address line of the current recipient, if the customer is logged in and this recipients information has been previously saved. Note that this is a form field that can be modified by the customer.

!---ADDRESS2_ENTRY--This tag is used as the form entry name for the !---ADDRESS2_VALUE--input field. This tag will be replaced with a form entry name that corresponds to the index of the current recipient to ensure that the information entered in this field is saved for the appropriate recipient. This tag should appear in the template as:
<input type=text name="!---ADDRESS2_ENTRY---" value="!--ADDRESS2_VALUE---">

!---ADDRESS2_VALUE--This tag is replaced by the second address line of the current recipient, if the customer is logged in and this recipients information has been previously saved. Note that this is a form field that can be modified by the customer.

!---CITY_ENTRY--This tag is used as the form entry name for the !---CITY_VALUE--- input field. This tag will be replaced with a form entry name that corresponds to the index of the current recipient to ensure that the information entered in this

168

PDG Commerce 4.0 -- Technical Reference Guide

Chapter 4 -- HTML Template Files

field is saved for the appropriate recipient. This tag should appear in the template as:
<input type=text name="!---CITY_ENTRY---" value="!---CITY_VALUE--">

!---CITY_VALUE--This tag is replaced by the city of the current recipient, if the customer is logged in and this recipients information has been previously saved. Note that this is a form field that can be modified by the customer.

!---STATE_ENTRY--This tag is used as the form entry name for the <!--MSHIP_STATE_SELECT---> selection menu field. This tag will be replaced with a form entry name that corresponds to the index of the current recipient to ensure that the selection chosen in this field is saved for the appropriate recipient. This tag should appear in the template as:
<select name="!---STATE_ENTRY---"> <!---MSHIP_STATE_SELECT--></select>

!---MSHIP_STATE_SELECT--This tag is replaced by the state of the current recipient, if the customer is logged in and this recipients information has been previously saved. Note that this is a form selection menu field that can be modified by the customer.

!---PROV_ENTRY--This tag is used as the form entry name for the !---PROV_VALUE--- input field. This tag will be replaced with a form entry name that corresponds to the index of the current recipient to ensure that the information entered in this field is saved for the appropriate recipient. This tag should appear in the template as:
<input type=text name="!---PROV_ENTRY---" value="!---PROV_VALUE--">

!---PROV_VALUE--This tag is replaced by the province of the current recipient, if the customer is logged in and this recipients information has been previously saved. Note that this is a form field that can be modified by the customer.

PDG Commerce 4.0 -- Technical Reference Guide

169

Chapter 4 -- HTML Template Files

!---ZIP_ENTRY--This tag is used as the form entry name for the !---ZIP_VALUE--- input field. This tag will be replaced with a form entry name that corresponds to the index of the current recipient to ensure that the information entered in this field is saved for the appropriate recipient. This tag should appear in the template as:
<input type=text name="!---ZIP_ENTRY---" value="!---ZIP_VALUE---">

!---ZIP_VALUE--This tag is replaced by the zip code of the current recipient, if the customer is logged in and this recipients information has been previously saved. Note that this is a form field that can be modified by the customer.

!---COUNTRY_ENTRY--This tag is used as the form entry name for the <!--MSHIP_COUNTRY_SELECT---> selection menu field. This tag will be replaced with a form entry name that corresponds to the index of the current recipient to ensure that the selection chosen in this field is saved for the appropriate recipient. This tag should appear in the template as:
<select name="!---COUNTRY_ENTRY---"> <!--MSHIP_COUNTRY_SELECT---></select>

!---MSHIP_COUNTRY_SELECT--This tag is replaced by the country of the current recipient, if the customer is logged in and this recipients information has been previously saved. Note that this is a form selection menu field that can be modified by the customer.

!---PHONE_ENTRY--This tag is used as the form entry name for the !---PHONE_VALUE--- input field. This tag will be replaced with a form entry name that corresponds to the index of the current recipient to ensure that the information entered in this field is saved for the appropriate recipient. This tag should appear in the template as:
<input type=text name="!---PHONE_ENTRY---" value="!--PHONE_VALUE---">

170

PDG Commerce 4.0 -- Technical Reference Guide

Chapter 4 -- HTML Template Files

!---PHONE_VALUE--This tag is replaced by the phone number of the current recipient, if the customer is logged in and this recipients information has been previously saved. Note that this is a form field that can be modified by the customer.

!---TEXT_ENTRY--This tag is used as the form entry name for the !---TEXT_VALUE--- input field. This tag will be replaced with a form entry name that corresponds to the index of the current recipient to ensure that the information entered in this field is saved for the appropriate recipient. This tag should appear in the template as:
<input type=text name="!---TEXT_ENTRY---" value="!---TEXT_VALUE--">

!---TEXT_VALUE--This tag is replaced by special comments for the current recipient, if the customer is logged in and this recipients information has been previously saved. Note that this is a form field that can be modified by the customer. This field may be used to contain any extra information you wish for the customer to enter.

!---SHIP_METHOD_ENTRY--This tag is used as the form entry name for the <!--SHIP_METHOD_SELECT---> selection menu field. This tag will be replaced with a form entry name that corresponds to the index of the current recipient to ensure that the selection chosen in this field is saved for the appropriate recipient. This tag should appear in the template as:
<select name="!---SHIP_METHOD_ENTRY---"> <!--SHIP_METHOD_SELECT---></select>

!---SHIP_METHOD_SELECT--This tag is replaced by a form selection menu that will allow the customer to choose from the available shipping methods for the current recipient.

!---FRIENDLYNAME_ENTRY--This tag is used as the form entry name for the !--FRIENDLYNAME_VALUE--- hidden input field. This tag will be replaced with a form entry name that corresponds to the index of the current recipient
PDG Commerce 4.0 -- Technical Reference Guide 171

Chapter 4 -- HTML Template Files

to ensure that the information in this field is passed for the appropriate recipient. This tag should appear in the template as:
<input type=hidden name="!---FRIENDLYNAME_ENTRY---" value="!--FRIENDLYNAME_VALUE---">

!---FRIENDLYNAME_VALUE--This tag is replaced by the friendly name of the current recipient, if the customer is logged in and this recipients information has been previously saved. Note that this is a hidden form field and will not be displayed on the page.

!---SAVE_CONTACT_BUTTON--This tag is used as the form entry name for a checkbox input field. This checkbox will indicate whether or not the current recipients shipping address should be saved to the customers account on your web site. This tag will be replaced with a form entry name that corresponds to the index of the current recipient to ensure that the information entered in this field is saved for the appropriate recipient. This tag should appear in the template as:
<input type=checkbox name="!---SAVE_CONTACT_BUTTON---">

!---FIRST_NAME--This tag is replaced by the first name of the current recipient.

!---LAST_NAME--This tag is replaced by the last name of the current recipient.

!---ADDRESS1--This tag is replaced by the first address line of the current recipients shipping address.

!---ADDRESS2--This tag is replaced by the second address line of the current recipients shipping address.

!---CITY--This tag is replaced by the city of the current recipients shipping address.
172 PDG Commerce 4.0 -- Technical Reference Guide

Chapter 4 -- HTML Template Files

!---STATE--This tag is replaced by the state of the current recipients shipping address.

!---ZIP--This tag is replaced by the zip code of the current recipients shipping address.

!---COUNTRY--This tag is replaced by the country of the current recipients shipping address.

!---PHONE--This tag is replaced by the phone number of the current recipient.

!---TEXT--This tag is replaced by the special text entered for the current recipient.

!---SHIP_METHOD--This tag is replaced by the shipping method chosen for the current recipient.

!---SUBTOTAL--This tag is replaced by the subtotal for the current recipients order.

!---SHIPPING--This tag is replaced by the shipping cost for the current recipients order.

!---TAX--This tag is replaced by the tax for the current recipients order.

!---TOTAL--This tag is replaced by the total cose of the current recipients order.

PDG Commerce 4.0 -- Technical Reference Guide

173

Chapter 4 -- HTML Template Files

Multiple Shipping Template Tags


For your reference, please find below the complete list of tags available for use on each multiple shipping template.

Multiple Shipment Checkout Template


The Multiple Shipment Checkout Template can utilize the RECIPIENT tags, as well as the following tags:
<!---FRIENDLYNAME---> <!---FIRST_NAME_ENTRY---> <!---FIRST_NAME_VALUE---> <!---LAST_NAME_ENTRY---> <!---LAST_NAME_VALUE---> <!---ADDRESS1_ENTRY---> <!---ADDRESS1_VALUE---> <!---ADDRESS2_ENTRY---> <!---ADDRESS2_VALUE---> <!---CITY_ENTRY---> <!---CITY_VALUE---> <!---STATE_ENTRY---> <!---MSHIP_STATE_SELECT---> <!---PROV_ENTRY---> <!---PROV_VALUE---> <!---ZIP_ENTRY---> <!---ZIP_VALUE---> <!---COUNTRY_ENTRY---> <!---MSHIP_COUNTRY_SELECT---> <!---PHONE_ENTRY---> <!---PHONE_VALUE---> <!---TEXT_ENTRY---> <!---TEXT_VALUE---> <!---SHIP_METHOD_ENTRY---> <!---SHIP_METHOD_SELECT---> <!---FRIENDLYNAME_ENTRY---> <!---FRIENDLYNAME_VALUE---> <!---SAVE_CONTACT_BUTTON---> <!---SUBTOTAL---> <!---SAVE_CONTACT_BUTTON--->

174

PDG Commerce 4.0 -- Technical Reference Guide

Chapter 4 -- HTML Template Files

Multiple Shipment SSL Checkout Template


The Multiple Shipment SSL Checkout Template can utilize the same tags as those available for the Multiple Shipment Checkout Template.

Multiple Shipment Verify Template


The Multiple Shipment Verify Template can utilize the RECIPIENT tags, as well as the following tags:
<!---FRIENDLYNAME---> <!---FIRST_NAME---> <!---LAST_NAME---> <!---ADDRESS1---> <!---ADDRESS2---> <!---CITY---> <!---STATE---> <!---ZIP---> <!---COUNTRY---> <!---PHONE---> <!---TEXT---> <!---SHIP_METHOD---> <!---SUBTOTAL---> <!---SHIPPING---> <!---TAX---> <!---TOTAL--->

Multiple Shipment SSL Verify Template


The Multiple Shipment SSL Verify Template can utilize the same tags as those available for the Multiple Shipment Verify Template.

Multiple Shipment ThankYou Template


The Multiple Shipment ThankYou Template can utilize the RECIPIENT tags, as well as the following tags:
<!---FRIENDLYNAME---> <!---FIRST_NAME---> <!---LAST_NAME---> <!---ADDRESS1---> <!---ADDRESS2---> <!---CITY---> <!---STATE---> PDG Commerce 4.0 -- Technical Reference Guide 175

Chapter 4 -- HTML Template Files

<!---ZIP---> <!---COUNTRY---> <!---PHONE---> <!---TEXT---> <!---SHIP_METHOD---> <!---SUBTOTAL---> <!---SHIPPING---> <!---TAX---> <!---TOTAL--->

Multiple Shipment SSL ThankYou Template


The Multiple Shipment SSL ThankYou Template can utilize the same tags as those available for the Multiple Shipment ThankYou Template.

Multiple Shipment Credit Accept Template


The Multiple Shipment Credit Accept Template can utilize the same tags as those available for the Multiple Shipment ThankYou Template.

176

PDG Commerce 4.0 -- Technical Reference Guide

Chapter 5

PDG Commerce Actions

DG Commerce Actions describe the various actions that customers can perform on their cart. These actions include adding items, removing items, performing searches and checking out.

Because PDG Commerce is a CGI product, it must be called from either a form or a hyperlink within an HTML Web page. This section assumes that the installer or maintainer of the Web store has some knowledge of HTML and HTML forms. Each action has a predefined code that is passed to PDG Commerce via a form embedded in the HTML page. This section explains each action code and the required HTML form inputs that PDG Commerce needs to perform the action. There is also a listing and explanation of the optional form inputs that can be used with each action. Actions are submitted to PDG Commerce through the submit type of form input for HTML. A unique string of text identifies each PDG Commerce action. This string of text must be the name parameter used in the submit input statement. Many actions also require additional information to be passed to PDG Commerce through other form inputs. Here is an example of embedding an action in an HTML file:
<form action="[location of PDG Commerce executable]" method="post"> [input fields (both required and optional)...] <input type="submit" name="[predefined action text]" value="[text to appear on button]"> [other submit inputs...] </form>

The rest of this section defines each action and any form inputs that go with it.

PDG Commerce 4.0 -- Technical Reference Guide

177

Chapter 5 -- Cart Actions

Pricing Category Code


This action allows you to create a customer category to be used as a coupon. This category must be created with a registration code, and you should configure the discount for that category. When customers access your web site using an appropriate link to your web site with the code included, they will temporarily be moved to that category to obtain the discount. To create the coupon link, you will call the redirect executable. On a Windows server, the file will be called Redirect.exe. On a UNIX server, the file will be called redirect.cgi or just redirect. You must also include the coupon code specified as the customer category's registration code. You must include a goto link, which points to a specific page on your web site. Consider the following example:
http://www.mywebstore.com/cgi-bin/redirect?code=12345&goto=/salepage.html

In this example, the coupon customer category code is 12345, and the goto link takes the customer to the page salepage.html on your site. The above example shows how to use a url to link to a specific code. If you would prefer that your customer enter a special code, you may use a form similar to the following:
<form method="post" action="/cgi-bin/redirect.cgi"> <input type="hidden" name="goto" value="/salepage.html"> Discount code: <input type="text" name="code" value=""> <input type="submit" name="submit" value="submit"> </form>

This form contains an input named code to accept the coupon customer category code, and passes the goto link as a hidden field. This form may be used on any page on your web site.

Search Action
This action instructs PDG Commerce to search the product database for specific keywords and return all of the products that match the query. The resulting page can then have thumbnails with PreAdd links, catalog listings with Add links or they may be custom formatted (See the Search Settings section in the PDG Commerce User Guide or the Search Results template section of this Technical Reference Guide for more information).

178

PDG Commerce 4.0 -- Technical Reference Guide

Chapter 5 -- Cart Actions

Here is the syntax for using the SEARCH action:


<form action="[location of PDG Commerce executable]" method="post"> <input type="text" name="KEYWORDS"> <input type="submit" name="SEARCH" value="[text to appear on button]"> </form>

The submit input's name must be Search. The Keywords form input is required in order for PDG Commerce to know what to look for. The Keywords form input may be a hidden field with a hard-coded value for pre-determined searches. You may also choose a field by which to sort the search results, as well as specify the order in which they should be sorted. The syntax for these inputs is similar to the keywords input. The SortKey field must have a value of price, sku, description, or order. The SortOrder field must have a value of descending or ascending. The SortKey field must be passed for the search results to be sorted. If the SortOrder field is not passed, the search results will be sorted by the SortKey field in ascending order. An example of the use of these tags:
<input type=text name=SORTKEY value=price> <input type=text name=SORTORDER valuedescending>

New in PDG Commerce is the ability to search fields other than products keywords and descriptions. Customers now have the option of searching product SKUs or product categories. You may also allow your shoppers to search for products using a desired price range. The syntax for these inputs is essentially the same as the keywords input:
<input type="text" name="SKU"> <input type="text" name="CATEGORY"> <input type="text" name="PRICERANGE">

Note: As with the Keywords form input, any of these inputs may also be hard-coded into the template as hidden input types. Note: The SortKey, SortOrder, SKU, CATEGORY, KEYWORDS, and PRICERANGE fields may all be used as hard-coded drop down menus. PDG Commerce uses the SearchResult HTML Template File to generate the Web page that allows customers to view the products that matched their query. For information on this template file and others, refer to the HTML Template Files of this Technical Reference Guide. The template that is used to display the search results may also be overridden with one of the following tags depending upon which layout you have selected for returning search results (see Search Settings in the PDG Commerce User Guide for more information):
<input type="hidden" name="TEMPLATE" value="[location of custom template relative to PDG_Commerce directory]"> PDG Commerce 4.0 -- Technical Reference Guide 179

Chapter 5 -- Cart Actions

<input type="hidden" name="ITEMTEMPLATE" value="[location of custom template relative to PDG_Commerce directory]">

Searches can also be hard-coded in URL form, such as:


<a href=/cgi-bin/commerce.cgi?search=action&category=A0001>Widgets</a>

This search has one additional arguement, category which instructs PDG Commerce to list all of the product category A0001s products. See below for more information on the usage of these form inputs.

Keywords form input (required)


PDG Commerce uses this data field to know what to search for. This field may be a text input field, allowing users to specify their own keywords. Alternatively, this may be a hidden input field, with a hard-coded value. This hard-coding allows dynamic category pages of products to be generated. A hyperlink can be created which performs a search for a specific keyword and thus produces dynamic category pages. Note: Customers should be informed that and, or and not may be used in this input field for yielding a broader or more narrow range of search results. The Keywords form input is only required for the Search action if none of the following form inputs are going to be used.

SKU form input (optional)


PDG Commerce uses this data field to know what to search for. This field should be a text input field, allowing users to specify their own SKU or product code for which to search.

Category form input (optional)


PDG Commerce uses this data field to know what to search for. This may be a text input field, allowing users to specify their own category. Alternatively, this field may be a drop-down menu, with hard-coded values from which the customer may choose. This hard-coding allows for dynamic searches. A hyperlink can also be created which performs a search for a specific category and thus produces dynamic category pages.

PriceRange form input (optional)


PDG Commerce uses this data field to know what to search for. This field will generally be a text input field, allowing users to specify their own price
180 PDG Commerce 4.0 -- Technical Reference Guide

Chapter 5 -- Cart Actions

range for products. Or this input may be a hidden input field, with a hardcoded value. This hard-coding can allow for dynamic pages of bargain products to be generated. Note: The shopper should be informed of the syntax that may be used when searching for products within a price range (i.e.: >,<,=,x-y). Note: While the above three form inputs all indicate that they are optional, at least one form input is required for every Search action called from your Web store.

ItemTemplate form input (optional)


If you have the search results being returned in catalog page form, as described in Search Settings of the PDG Commerce User Guide, then the sample-item template will be used. However you can override this with the ItemTemplate form input. This field must be named ItemTemplate, and the value is the path to the new template file. This path is assumed to be relative to the PDG_Commerce directory.

Template form input (optional)


By default, the results of the Search action are returned in the SearchResult Template File. You may specify a different template file by creating a hidden input field. This field must be named Template, and the value must be the path to the new template file. This path is assumed to be relative to the PDG_Commerce directory.

PreAdd Action
This action instructs PDG Commerce to generate a Web page from the product database files allowing the customer to indicate quantity and options for a specific product. PreAdd instructs PDG Commerce to automatically create an HTML page that contains a call to PDG Commerce with the Add action. The PreAdd action will generate a Web page with the product's image, description, price and drop-down menus for each product option. It is from this Add Item page that the customer can then select options and indicate a desired quantity. The user will then submit this data back to PDG Commerce, via the Add action. The generated HTML page is divided into two sections. The first section contains the product's image, as specified by the Image URL in the product's definition in the corresponding product database file. The second section contains the product's description, pricing, and all form inputs for selecting quantity and options.
PDG Commerce 4.0 -- Technical Reference Guide 181

Chapter 5 -- Cart Actions

If you do not want PDG Commerce to automatically create an Add Item page for a product, then use the Add action. Here is the syntax for using the PreAdd action:
<form action="[location of PDG Commerce executable]" method="post"> <input type="hidden" name="KEY" value="[product code]"> <input type="submit" name="PREADD" value="[text to appear on button]"> </form>

The submit input's name must be PreAdd. The Key form input is required. PDG Commerce uses the AddItem Template File to generate the Web page that allows customers to select options and quantities. This template should contain the !---ITEM--- tag in order to call the sample Item template that comes with PDG Commerce. For more information on these template files, refer to the HTML Template Files section of this Technical Reference Guide. The templates that are used may also be overridden with one of the following tags depending upon which layout you will be using for viewing the products details.
<input type="hidden" name="TEMPLATE" value="[location of custom template]">

will override the standard AddItem HTML template.


<input type="hidden" name="ITEMTEMPLATE" value="[location of custom template]">

will override the standard Item HTML template. See below for more information on the usage of these form inputs.

Key form input (required)


PreAdd knows which product the customer wants to add from the Key form input. It is a hidden key. This code should be the same code as the product code found in the product definition in the product database file. This input should be generated automatically by the Cart when the Item template is drawn. For more information on product codes and product definitions, refer to the Maintaining Products section of the PDG Commerce User Guide.

Template form input (optional)


By default, the PreAdd action calls the standard AddItem template located in your PDG_Commerce directory. You may specify a different template file by creating a hidden input field. This field must be named Template, and

182

PDG Commerce 4.0 -- Technical Reference Guide

Chapter 5 -- Cart Actions

the value must be the path to the new template file. This path is assumed to be relative to the PDG_Commerce directory.

ItemTemplate form input (optional)


The AddItem HTML template generally contains a call to the Item template in order to display the products to be added. However you can override this with the ItemTemplate form input. This field must be named ItemTemplate, and the value must be the path to the new template file. This path is assumed to be relative to the PDG_Commerce directory.

MultiPreAdd Action
This action instructs PDG Commerce to generate a Web page from the product database file. This page will allow the customer to select options and quantities for several products at once. MultiPreAdd instructs PDG Commerce to create an HTML page automatically with a call to PDG Commerce with the MultiAdd action. The MultiPreAdd action will generate a Web page with multiple listings for a single product or a listing of multiple products, depending upon the form inputs that are submitted with it. These listings can be customized to include the product's image, price, weight and all available option selections for a specific product (See the Item Template File section of this Technical Reference Guide for more information). The user can then select options and quantities for each entry and submit the data back to PDG Commerce through the MultiAdd action. On the generated HTML page, the data that is to be displayed for the selected product is fully customizable. If you do not want PDG Commerce to automatically create an option selection Web page for a product, then use the Add or MultiAdd action. Here is the syntax for using the MultiPreAdd action:
<form action="[location of PDG Commerce executable]" method="post"> <input type="hidden" name="KEYS" value="[product code 1],[product code 2],[product code n]"> <input type="submit" name="MULTIPREADD" value="[text to appear on button]"> </form>

The submit input's name must be MultiPreAdd. The Keys form input is required. PDG Commerce uses the MultiAdd Template File to generate the Web page that allows customers to select options and quantities. For information on this

PDG Commerce 4.0 -- Technical Reference Guide

183

Chapter 5 -- Cart Actions

template file, refer to the HTML Template Files section of this Technical Reference Guide. Note: PDG Commerces locked options feature will not be enabled when the MultiAdd template is called from the MultiPreAdd action.

Keys form input (required)


The MultiPreAdd action knows which products the customer wants to display from the Keys form input. This is a hidden input. The value for this input should be the SKUs of the products you wish to display, each separated by a comma. These codes should be the same codes as the product codes found in the product definition in the product database file. For more information on product codes and product definitions, refer to the Maintaining Products section of the PDG Commerce User Guide. The inputs name must be Keys.

Template form input (optional)


By default, the MultiPreAdd action calls the standard MultiAdd template located in your PDG_Commerce directory. You may specify a different template file by creating a hidden input field. This field must be named Template, and the value is the path to the new template file. This path is assumed to be relative to the PDG_Commerce directory.

Add Action
This action will actually add a product to the customer's cart. Unlike the PreAdd, this action requires quantity, price, and any available option selections passed to it via form inputs. If you would like PDG Commerce to generate an HTML page with the Add action in it and all the proper form inputs for the product as defined in your product database files, then use the PreAdd action. Here is the syntax for using the Add action. For non-hidden form inputs, a sample input type is shown. However, it is up to the Webmaster to determine what type of inputs to use. For pregenerated Web pages from the PreAdd action, the input types used are shown in the example.
<form action="[location of PDG Commerce executable]" method="post"> <input type="hidden" name="KEY" value="[product code]"> <input type="hidden" name="REFERENCE" value="[link URL]"> <input type="text" name="QTY" value="[initial value]" size="[size of field]"> 184 PDG Commerce 4.0 -- Technical Reference Guide

Chapter 5 -- Cart Actions

<select name="OPT0"> <option value="[Selection 1 for Option 0]"> [more option selections...] </select> [more options...] <select name=singlerecipient><!---RECIPIENT_SELECT_OPTIONS---></ select> <input type=text name=singlerecipientname> <input type=text name="price"> <input type="submit" name="ADD" value="[text to appear on button]"> <input type=text name=numrecipients value="!--NUMBER_OF_RECIPIENTS---" size=3> <input type=submit name=preadd value="Redraw Recipient Table"> </form>

Note that the options are indexed starting with the number 0. Number 0 refers to the first option definition in the product definitions, number 1 refers to the second option definition, and so forth. The submit input's name must be Add. The Key and Qty form inputs are required. All other form inputs are optional. PDG Commerce will use the Basket Template File to display the contents of the customer's cart after adding a product to the basket. For more information on this and other template files, refer to the HTML Template Files section of the PDG Commerce User Guide and in this Technical Reference Guide.

Key form input (required)


The Add action knows which product the customer wants to add to his cart from the Key form input. It is a hidden input. The value for this input should be the SKU of the product you wish to display. This code should be the same code as the product code found in the product definition in the product database file. For more information on product codes and product definitions, refer to the Maintaining Products section of the PDG Commerce User Guide. The input's name must be Key.

Reference form input (optional)


This form input allows PDG Commerce to create a Return action call embedded in the Web page that results from the Add action. The value of this input should be a URL. The input's name must be Reference.

PDG Commerce 4.0 -- Technical Reference Guide

185

Chapter 5 -- Cart Actions

Quantity form input (required)


This form input specifies the amount of the product to add to the customer's cart. If this value is 0 or negative, then no product will be added to the cart. The input's name must be Qty. While this form input is listed as required, if PDG Commerce does not receive a quantity input, it will assume 1. Note: Qty should be a text form input in order to allow the customer to change the quantity before adding the product to his cart.

Opt[#] form inputs (optional)


The Options form inputs allow the customer to choose option selections for the product to be added to the cart. Option values available for each selection should match the options defined in the product database files. The Options form input's name must follow this syntax:
Opt[zero-based index of the option]

PDG Commerce will generate these inputs automatically if the PreAdd action is used to generate this page. The inputs are generated from the product and option definitions in the product database files. For more information on defining product options, refer to the Maintaining Products section of the PDG Commerce User Guide.

Dynamic Pricing input (optional)


If you are using Dynamic Pricing for a product, you can use this field on its Item page to collect the dynamic price for the products add action. The Dynamic Pricing inputs name must follow this syntax:
<input type=text name="price">

Note: Dynamic product pricing must be configured in the details section for your product. Please see the Maintaining Products chapter of the PDG Commerce User Guide for instructions on configuring your products to accept dynamic pricing.

Template form input (optional)


By default, the Add action calls the standard Basket template (to display the new carts contects after the add). This template is located in your PDG_Commerce directory. You may specify a different template file to be used for the basket display by creating a hidden input field. This field must be named Template, and the value must be the path to the new template file. This path is assumed to be relative to the PDG_Commerce directory.
186 PDG Commerce 4.0 -- Technical Reference Guide

Chapter 5 -- Cart Actions

Single Recipient form input (optional)


If you allow customers to choose multiple shipping recipients for a single order, you may use either a single form input, a drop down menu, or both to allow your customer to choose a single recipient for the particular product being ordered from this page.

Number of Recipients form input (optional)


If you allow customers to choose multiple shipping recipients for a single order, you may allow them to enter a number in this field. They will then choose to redraw the recipient table, which will display fields to allow the customer to enter the requested number of recipients for the particular product being ordered from this page.

MultiAdd Action
This action actually adds a wide array of products to the customer's cart. The MultiAdd action allows shoppers to select options and quantities for several different products and add them to their cart with a single click. Like the Add action, this action requires product codes, quantities, and any available options passed to it in form inputs. A page with the MultiAdd action will be automatically generated whenever the MultiPreAdd action is called. However, you can also customize the Item template to contain the MultiAdd action if you are using the REPEAT or REPEAT NUMBER tags. Here is an example of a sample Item template with REPEAT NUMBER tags followed by the HTML that it will generate:
<form action="[location of PDG Commerce executable]" method="post"> <!---BEGIN_REPEAT1---> <tr> Qty: <input type="edit" name="MQTY1" value="[initial value]" size="[size of field]"> Item Options: <!---ITEM_OPT0--->[more options...] <input type="submit" name="!---ADD_BUTTON---" value="Add Me"> </tr> <!---END_REPEAT2---> <input type="submit" name="MULTIADD" value="Add the Whole Page"> </form>

Generates the following HTML on the page:


PDG Commerce 4.0 -- Technical Reference Guide 187

Chapter 5 -- Cart Actions

<form action="[location of PDG Commerce executable]" method="post"> <input type="hidden" name="MSKU1" value="[product code]"> <tr> Qty: <input type="edit" name="MQTY1" value="[initial value]" size="[size of field]"> Item Options: <select name="MOPT1_0"> <option value="0">[selection 0 for option 0]</option> <option value="1">[selection 1 for option 0]</option> <option value="2">[selection 2 for option 0]</option> </select> [more options...] <input type="submit" name="MADD.1" value="[text to appear on button]"> </tr> <tr> <input type="hidden" name="MSKU2" value="[product code]"> Qty: <input type="edit" name="MQTY2" value="[initial value]" size="[size of field]"> Item Options: <select name="MOPT2_0"> <option value="0">[selection 0 for option 0]</option> <option value="1">[selection 1 for option 0]</option> <option value="2">[selection 2 for option 0]</option> </select> [more options...] <input type="submit" name="MADD.2" value="[text to appear on button]"> </tr> <input type="submit" name="MULTIADD" value="[text to appear on button]"> </form>

Note: If you are displaying different products altogether using the REPEAT tags, the output will be similar to what is shown above. However, for displaying options using the REPEAT tags, you will need to utilize the OPTIONS tags. For more information on the OPTIONS, REPEAT and REPEAT NUMBER tags please see HTML Template Files in this Technical Reference Guide. The index numbers on the product codes correspond to the numbers entered in the !---BEGIN_REPEATx--- and !---END_REPEATy--- tags. This range (x to y, inclusive) determines how many instances of the product will appear on the page. You must also note that options and option selections are indexed beginning with zero. This is so PDG Commerce knows which selection goes with which option, and likewise which options and quantities go with which instance of the product on the template.

188

PDG Commerce 4.0 -- Technical Reference Guide

Chapter 5 -- Cart Actions

The submit input's name must be MultiAdd. The MSKU[#], MQTY[#] and MOPT[#]_[#] inputs are all required. These inputs will be automatically generated from the tags within the REPEAT NUMBER tags. If a product has no options, the tag that creates that input will be ignored. All other form inputs are optional. You may also notice the MADD.[#] form inputs, one for each product instance on the template. These are generated by the !---ADD_BUTTON--tag. These are for adding a single line or instance of the product instead of the entire page. This action will be covered in its own section, following this one. PDG Commerce uses the Basket Template File to display the contents of the customer's cart after adding the products to the basket. For information on this template file, refer to the HTML Template Files sections in this Technical Reference Guide.

MSKU[#] form input (required)


The MultiAdd action knows which product the customer wants to add from the MSKU[#] form input. The [#] is the index number that will be applied to all of the inputs which pertain to each particular instance of the product on the MultiAdd template. This is a hidden input. The value for this input should be the same code as the product code found in the product definition in the product database file. For more information on product codes and product definitions, refer to the Maintaining Products section in the PDG Commerce User Guide. The input's name must be MSKU[#].

MQty[#] form input (required)


The MultiAdd action uses these form inputs to know the quantities of each product to add to the basket. This input should be a text field so the shopper can modify quantities on the MultiAdd page. The [#] corresponds to the index number on the MSKU[#] input for the particular product instance. The input's name must be MQty[#].

MOpt[#]_[#] form input (required)


A page containing the MultiAdd action also allows a shopper to select all of the options for several product listings. The MOpt[#]_[#] input will generally be a drop-down menu containing all of the option selections for a particular option. When this input is passed with the MultiAdd action, PDG Commerce distinguishes it from others by the index numbers. The first [#] corresponds to the index number for the products instance on the page (same as MSKU[#] and MQty[#]). The second [#] indicates which option for the particular product is being configured. Finally, the number of the customers option selection is passed as the inputs value. The inputs name must be MOpt[#]_[#].
PDG Commerce 4.0 -- Technical Reference Guide 189

Chapter 5 -- Cart Actions

Reference form input (optional)


This form input allows PDG Commerce to create a Return action call embedded in the Web page that results from the MultiAdd action. This should be a hidden input and the value of this input should be a URL. The input's name must be Reference.

Template form input (optional)


By default, the MultiAdd action calls the standard Basket template (to display the new carts contects after the add). This template is located in your PDG_Commerce directory. You may specify a different template file to be used for the basket display by creating a hidden input field. This field must be named Template, and the value must be the path to the new template file. This path is assumed to be relative to the PDG_Commerce directory.

MAdd.[#] Action
As described in the MultiAdd Action section, the MAdd.[#] action may also be used on sample-Item pages which utilize the REPEAT or REPEAT NUMBER tags. There will be a MAdd.[#] input that corresponds to each and every product listing on these sample-Item pages. Instead of adding the entire page, the MAdd.[#] action only adds the product listing that corresponds to the MSKU[#] input of the same index number. The MAdd.[#] and the MultiAdd actions may be used on the same page because they take the same form inputs. Here is an example of how the MAdd.[#] action may be used:
<form action="[location of PDG Commerce executable]" method="post"> <input type="hidden" name="MSKU1" value="[product code]"> <tr> <input type="edit" name="MQTY1" value="[initial value]" size="[size of field]"> <select name="MOPT1_0"> <option value="0">[selection 0 for option 0]</option> [more option selections] </select> [more options...] <input type="submit" name="MADD.1" value="[text to appear on button]"> ... </form>

Note: If you are displaying different products altogether using the REPEAT tags, the output will be similar to what is shown above. For more information
190 PDG Commerce 4.0 -- Technical Reference Guide

Chapter 5 -- Cart Actions

on the REPEAT and REPEAT NUMBER tags please see the section on HTML Templates in this Technical Reference Guide.

MSKU[#] form input (required)


The MultiAdd action knows which product the customer wants to add from the MSKU[#] form input. The [#] is the index number that will be applied to all of the form inputs pertaining to each particular instance of the product on the sample-Item template. MSKU[#] is a hidden input. The value for this input should be the same code as the product code found in the product definition in the product database file. For more information on product codes and product definitions, refer to the Maintaining Products section of the PDG Commerce User Guide. The input's name must be MSKU[#].

MQty[#] form input (required)


The MultiAdd action knows what quantity of which product to add by this input. This input should be a text field so that the shopper can modify quantities on the sample-Item page. The [#] corresponds to the index number on the MSKU[#] form input for each particular product instance. The input's name must be MQty[#].

MOpt[#]_[#] form input (required)


A page containing the MAdd.[#] action also allows a shopper to select the options for any product instance on the sample-item page. The MOpt[#]_[#] input will generally consist of a drop-down menu containing all of the option selections for a particular option. When this input is passed with the MultiAdd action, PDG Commerce distinguishes it from others by the index numbers. The first [#] corresponds to the index number for the products instance on the page (same as MSKU[#]). The second [#] indicates which option for the particular product is being configured. Finally, the number of the customers option selection is passed as the inputs value. The inputs name must be MOpt[#]_[#].

Reference form input (optional)


This form input allows PDG Commerce to create a Return action call embedded in the Web page resulting from the MultiAdd action. This should be a hidden input and the value of this input should be a URL. The input's name must be Reference.

PDG Commerce 4.0 -- Technical Reference Guide

191

Chapter 5 -- Cart Actions

Template form input (optional)


By default, the MAdd action calls the standard Basket template (to display the new carts contects after the add). This template is located in your PDG_Commerce directory. You may specify a different template file to be used for the basket display by creating a hidden input field. This field must be named Template, and the value must be the path to the new template file. This path is assumed to be relative to the PDG_Commerce directory.

OptFullAdd Action
This action is generally invoked from the PreAdd action. When the sampleItem template that is called from a PreAdd action utilizes the OPTIONS tags, all of the possible option combinations for a single product will be displayed on that page. For instance, suppose a product has two options with three possible selections for each. With the OPTIONS tags utilized, the Item page will display nine instances of the product, each with a unique combination of option selections. The customer will still be able to indicate quantities for each product display, depending upon his preference. The OptFullAdd action will then be used to add all of the selected quantities from that page with a single click. Note: It should be noted that an Item page with the OptFullAdd action is only able to display the option selections for a single product as entered in the Merchant Administrator. Like the Add and MultiAdd actions, this action requires at least one quantity input. Unlike the Add and MultiAdd actions, however, the product code and option selections will be appended to the quantity input when the page is drawn. Thus, each quantity input will contain the product code and the index numbers for the corresponding option combination.. The following is an example of an Item template with OPTIONS tags followed by the HTML that it will generate:

<form action="[location of PDG Commerce executable]" method="post"> <td>Full SKU</td><td>Quantity<td></td><td><!---DESC_OPT0---> </td><td><!---DESC_OPT1---></td><td><!---OPT_LINE_PRICE---></td> <!---BEGIN_OPTIONS---> <tr> <td><!---OPT_LINE_SKU---></td> <td><input type="edit" name="!---OPT_LINE_QTY---" value="[initial value]" size="[size of field]"></td> <td><!---VALUE_OPT0---></td><td><!---VALUE_OPT1---></td> 192 PDG Commerce 4.0 -- Technical Reference Guide

Chapter 5 -- Cart Actions

<input type="submit" name="!---OPT_LINE_ADD---" value="Add Me"> </tr> <!---END_OPTIONS---> <input type="submit" name="OPTFULLADD" value="Add the Whole Page"> </form>

Generates the following HTML code on your Web page:


<form action="[location of PDG Commerce executable]" method="post"> <td>Full SKU</td><td>Quantity<td></td><td><!---DESC_OPT0---></ td><td><!---DESC_OPT1---></td><td><!---OPT_LINE_PRICE---></td> <tr> <td>[full product code]</td> <td><input type="edit" name="OQTY.[product code],0,0" value="[initial value]" size="[size of field]"></td> <td>[selection 0 for option 0]</td> <td>[selection 0 for option 1]</td> <input type="submit" name="OADD.[product code],0,0" value="Add Me"> </tr> <tr> <td>[full product code]</td> <td><input type="edit" name="OQTY.[product code],1,0" value="[initial value]" size="[size of field]"></td> <td>[selection 1 for option 0]</td> <td>[selection 0 for option 1]</td> <input type="submit" name="OADD.[product code],1,0" value="Add Me"> </tr> [more product instances] <input type="submit" name="OPTFULLADD" value="Add the Whole Page"> </form>

The number of product instances that appear on this page depends solely on the number of options and their corresponding selections. As stated above, if your product has two options with three possible selections each, then the Item page will contain nine product instances. Likewise if your product has three options, each with two possible selections, The Item page will contain eight product instances. In the above example, each instance is formatted in a single row. The index numbers attached to the quantity inputs correspond to the selection numbers for the particular options. The submit input's name must be OptFullAdd. At least one OQTY input is required. These OQty inputs will be automatically generated from the !---OPT_LINE_QTY--- tag within the OPTIONS tags on the Item template. All other form inputs are optional.

PDG Commerce 4.0 -- Technical Reference Guide

193

Chapter 5 -- Cart Actions

You may also notice the OADD.[#] form inputs, one for each product instance on the template. These are generated by the !---OPT_LINE_ADD--- tag. These are for adding a single line or instance of the product instead of the entire page. This action will be covered in its own section, following this one. PDG Commerce uses the Basket Template File to display the contents of the customer's cart after adding the products to the basket. For information on this template file, refer to the HTML Template Files section of this Technical Reference Guide.

OQTY form input (required)


The OptFullAdd action knows which product instance the customer wants to add from the OQTY form input. This input also carries the product code and the option selection numbers that pertain to that product instance. Thus, the inputs name is unique for each product instance on the template. The input's name must follow the format:
OQTY.[SKU],[zero based index of option selection],[zero based index of option selection]...

There will be as many numbers following the product code as there are available options for the selected product. As stated before, these inputs will be automatically generated from the !---OPT_LINE_QTY--- tag within the OPTIONS tags on the Item template.

Reference form input (optional)


This form input allows PDG Commerce to create a Return action call embedded in the Web page that results from the OptFullAdd action. This should be a hidden input and the value of this input should be a URL. The input's name must be Reference.

Template form input (optional)


By default, the OptFullAdd action calls the standard Basket template (to display the new carts contects after the add). This template is located in your PDG_Commerce directory. You may specify a different template file to be used for the basket display by creating a hidden input field. This field must be named Template, and the value must be the path to the new template file. This path is assumed to be relative to the PDG_Commerce directory.

194

PDG Commerce 4.0 -- Technical Reference Guide

Chapter 5 -- Cart Actions

OAdd Action
As described in the OptFullAdd action section, the OAdd action may also be used on sample-item pages which utilize the OPTIONS tags. There will be an OAdd input that corresponds to each product listing on these Item pages. Instead of adding the entire page, the OAdd action only adds the indicated quantity of the corresponding product instance. The OAdd and the OptFullAdd actions may be used on the same page because they take the same form inputs. Here is an example of how the OAdd action may be used:
<form action="[location of PDG Commerce executable]" method="post"> <input type="edit" name="OQTY.[product code],0,0" value="[initial value]" size="[size of field]"> <input type="submit" name="OADD.[product code],0,0" value="[text to appear on button]"> </form>

OQTY form input (required)


The OptFullAdd action knows which product instance the customer wants to add from the OQTY form input. This input will also carry the product code and the option selection numbers that pertain to that product instance. Thus, the inputs name is unique for each product instance. The input's name must follow the format:
OQTY.[SKU],[zero based index of option selection],[zero based index of option selection]...

There will be as many numbers following the product code as there are available options for the selected product. As stated before, these inputs will be automatically generated from the !---OPT_LINE_QTY--- tag within the OPTIONS tags.

Reference form input (optional)


This form input allows PDG Commerce to create a Return action call embedded in the Web page resulting from the MultiAdd action. This should be a hidden input and the value of this input should be a URL. The input's name must be Reference.

Template form input (optional)


By default, the OAdd action calls the standard Basket template (to display the new carts contects after the add). This template is located in your PDG_Commerce directory. You may specify a different template file to be used for the basket display by creating a hidden input field. This field must be named Template, and the value must be the path to the new template file. This path is assumed to be relative to the PDG_Commerce directory.
PDG Commerce 4.0 -- Technical Reference Guide 195

Chapter 5 -- Cart Actions

Remove Action
This action removes one product from a customer's cart. In almost all cases, this action should only be called from a Web page displaying the cart contents pregenerated by PDG Commerce. Here is the syntax of the Remove action used in an HTML document. This action will remove the first item in the customer's cart.
<form action="[location of PDG Commerce executable]" method="post"> <input type="submit" name="REMOVE0" value="[text to appear on button]"> </form>

The submit input's name must follow this syntax:


Remove[zero-based index of the product to remove]

This action results in the cart being re-displayed, with the first item removed and totals updated. PDG Commerce uses the Basket Template File to display the contents of the customer's cart after removing the specified product. Because the contents of a customer's cart can vary, Remove actions should only be called in situations where the product is known to be in the Cart. PDG Commerce will automatically generate the appropriate Remove calls when displaying the Cart's contents.

RemoveAll Action
This action allows a user to completely empty their cart. This action may be called from PDGs pregenerated cart display or from a static page, such as your Web stores home page. Here is the syntax for using the RemoveAll action in an HTML page:
<form action="[location of PDG Commerce executable]" method="post"> <input type="submit" name="REMOVEALL" value="[text to appear on button]"> </form>

The submit input's name must be RemoveAll. This action results in the customer's current cart being displayed (which is empty). PDG Commerce uses the Basket Empty Template File to display the contents of the customer's cart after removing all products. For more informa-

196

PDG Commerce 4.0 -- Technical Reference Guide

Chapter 5 -- Cart Actions

tion on this template file, refer to the HTML Template Files section of this Technical Reference Guide.

Display Action
This action allows a customer to display the current contents of his cart. In addition to the content display, PDG Commerce also allows the customer to modify the contents of his Cart. From the cart display, a customer can remove a specific item, remove all of the items, recalculate the Cart's contents (assuming that the customer changed item quantities), or submit the contents for purchase. Here is the syntax for calling the Display action from an HTML page:
<form action="[location of PDG Commerce executable]" method="post"> <input type="submit" name="DISPLAY" value="[text to appear on button]"> </form>

The submit input's name must be Display. This action results in the customer's current cart being displayed. PDG Commerce uses the Basket Template File to display the contents of the customer's cart. For information on this template file, refer to the HTML Template Files section of the PDG Commerce User Guide. When Site Design mode is enabled, eight new display actions become available, as listed below. Please see the PDG Software Site Design guide for further information on these display actions.
http://www.mywebstore.com/cgi-bin/commerce?display=tracking http://www.mywebstore.com/cgi-bin/commerce?display=contact http://www.mywebstore.com/cgi-bin/commerce?display=aboutus http://www.mywebstore.com/cgi-bin/commerce?display=search http://www.mywebstore.com/cgi-bin/commerce?display=home http://www.mywebstore.com/cgi-bin/commerce?display=user1 http://www.mywebstore.com/cgi-bin/commerce?display=user2 http://www.mywebstore.com/cgi-bin/commerce?display=user3

Template form input (optional)


By default, the Display action calls the standard Basket template (to display the new carts contects after the add). This template is located in your PDG_Commerce directory. You may specify a different template file to be used for the basket display by creating a hidden input field. This field must be

PDG Commerce 4.0 -- Technical Reference Guide

197

Chapter 5 -- Cart Actions

named Template, and the value must be the path to the new template file. This path is assumed to be relative to the PDG_Commerce directory.

Recalc Action
This action allows a customer to recalculate his cart's totals if they have modified any of the quantities. If the user has changed any of the quantity fields from a PDG Commerce Basket page, this action instructs PDG Commerce to recalculate the customer's totals and create a new Basket page with the new quantities in effect. Here is the syntax for calling the Recalc action from an HTML page:
<form action="[location of PDG Commerce executable]" method="post"> <input type="text" name="QTY[zero-based index of product]" value="[current quantity for product value]" size="[size of field]"> [other QTY[#] inputs...] <input type="submit" name="RECALC" value="[text to appear on button]"> </form>

The submit input's name must be Recalc. At least one Qty input is required for the Recalc action. This action results in the customer's current cart being recalculated considering the updated quantities and re-displayed. PDG Commerce uses the Basket Template File to display the contents of the customer's cart.

Quantity form inputs (required)


These form inputs allow the customer to specify new quantities for products that are currently in their cart. If a quantity form input is omitted from the form for a specific product, then PDG Commerce will not change the item's quantity. The form input's name must follow this syntax:
Qty[zero-based index of the product in the Cart]

PDG Commerce will generate these inputs automatically if the Display action is used to display the contents of the customer's cart. The inputs are generated from the current contents of the customer's cart.

198

PDG Commerce 4.0 -- Technical Reference Guide

Chapter 5 -- Cart Actions

Return Action
This action allows a customer to return to browsing your Web store after adding an item to his cart. If the customer's basket was displayed as a result of an Add or PreAdd action, this action instructs PDG Commerce to reload the Web page that contained the Add or PreAdd action. However, this may be overridden in one of two ways. If you have specified a Destination of Shop Some More Button (see the Custom Buttons section of the PDG Commerce User Guide for more information) in the Merchant Administrator, then this URL will be loaded. Also, if the reference input is used (as shown below), then its value will be the page that is loaded instead. Here is the syntax for calling the Return action from an HTML page:
<form action="[location of PDG Commerce executable]" method="post"> <input type="hidden" name="REFERENCE" value="[URL to load]"> <input type="submit" name="RETURN" value="[text to appear on button]"> </form>

The submit input's name must be Return. The Reference form input is optional for this action. PDG Commerce loads the URL specified by the Reference form input when executing the Return action.

Reference form input (optional)


This form input allows PDG Commerce to specify the page to which the Return action call directs your customers. The value of this input should be a complete URL. The input's name must be reference.

Checkout Action
When a customer is ready to proceed to checkout with all of the items in his cart, this action initiates the purchase process. The resulting Web page of the Checkout action should request shipping and billing information from the customer. Credit card information will not be acquired from the customer at this time. The response Web page generated from a Checkout action should contain a call to PDG Commerce with the Verify action.

PDG Commerce 4.0 -- Technical Reference Guide

199

Chapter 5 -- Cart Actions

Here is an example of the syntax used for calling the Checkout action from an HTML page:
<form action="[location of PDG Commerce executable]" method="post"> <input type="submit" name="CHECKOUT" value="[text to appear on button]"> </form>

The submit input's name must be Checkout. The page produced by this action will display all of the order information, as well as request the shipping and billing address information from the customer. PDG Commerce uses the Checkout Template File to display the Cart and obtain the shipping and billing information. For information on this and other template files, refer to the HTML Template Files section of this Technical Reference Guide.

Verify Action
The Verify action receives the customer's shipping and billing information. In response to this action, PDG Commerce will display the customer's current order and all entered shipping and billing information for verification by the customer. If the customer has indicated that they will purchase online with a credit card, PDG Commerce will now request the credit card information from the customer. The response Web page generated from a Verify action should contain a call to PDG Commerce with the BuyIt action. There are several input fields that the Verify action needs to process an order properly. Here they are along with the syntax for calling the Verify action from an HTML page:
<form action="[location of PDG Commerce executable]" method="post"> <input type="text" name="contactname"> <input type="text" name="contactemail"> <input type=text name=company> <input type="text" name="billfirstname"> <input type="text" name="billlastname"> <input type="text" name="billstreet1"> <input type="text" name="billstreet2"> <input type="text" name="billcity"> <input type="text" name="billstate"> <input type="text" name="billprovince"> <input type="text" name="billzip"> <input type="text" name="billcountry"> <input type="text" name="billtext"> 200 PDG Commerce 4.0 -- Technical Reference Guide

Chapter 5 -- Cart Actions

<input type="text" name="contactname"> <select name="shipmethod"> <option value="[shipping method 1]"> [...more shipping methods] </select> <input type="checkbox" name="shiptobilladdr" value="yes"> <input type="text" name="shipname"> <input type="text" name="shipstreet1"> <input type="text" name="shipstreet2"> <input type="text" name="shipcity"> <input type="text" name="shipstate"> <input type="text" name="shipprovince"> <input type="text" name="shipzip"> <input type="text" name="shipcountry"> <!---BEGIN_RECIPIENT---> <input type=text name="!---FIRST_NAME_ENTRY---" value="!--FIRST_NAME_VALUE---"></td> <select name="!---STATE_ENTRY---"> <!---MSHIP_STATE_SELECT--></select> <input type=text name="!---LAST_NAME_ENTRY---" value="!--LAST_NAME_VALUE---"></td> <input type=text name="!---PROV_ENTRY---" value="!---PROV_VALUE--"> <input type=text name="!---ADDRESS1_ENTRY---" value="!--ADDRESS1_VALUE---"> <input type=text name="!---ZIP_ENTRY---" value="!---ZIP_VALUE---"> <input type=text name="!---ADDRESS2_ENTRY---" value="!--ADDRESS2_VALUE---"> <input type=text name="!---PHONE_ENTRY---" value="!--PHONE_VALUE---"> <input type=text name="!---CITY_ENTRY---" value="!---CITY_VALUE--"> <input type=text name="!---TEXT_ENTRY---" value="!---TEXT_VALUE--"> <select name="!---COUNTRY_ENTRY---"> <!--MSHIP_COUNTRY_SELECT---></select> <input type=checkbox name="!---SAVE_CONTACT_BUTTON---"> <select name="!---SHIP_METHOD_ENTRY---"> <!--SHIP_METHOD_SELECT---></select> <input type=hidden name="!---FRIENDLYNAME_ENTRY---" value="!--FRIENDLYNAME_VALUE---"> <!---END_RECIPIENT---> <input type="submit" name="VERIFY" value="[text to appear on button]"> <input type="text" name="pass..."> </form>

PDG Commerce 4.0 -- Technical Reference Guide

201

Chapter 5 -- Cart Actions

The following input fields are required under all circumstances: contactname, contactemail, billfirstname, billlastname, billstreet1, billcity, billstate, billzip, billcountry, shipmethod. If the chosen shipping method does not have the <NoShipInfo> tag, then the following fields are required: shipname, shipstreet1, shipcity, shipstate, shipzip, shipcountry. However these fields become optional if the shiptobilladdr checkbox has been checked. The following input fields are optional under all circumstances: billmiddleinit, billprovince, billstreet2, billtext, shipprovince, shipstreet2, shiptext, phone1, phone2, and any pass-through fields.

ContactName form input (required)


This is the customer's name as it will appear on the invoice and in e-mail notifications. It should contain both the first and last name of the customer. The inputs name must be contactname.

ContactEmail form input (required)


This is the customer's e-mail address. It appears on the invoice and in verification e-mails. It is also used as the e-mail address to which the automatic invoice e-mail is sent after verification of the order. The inputs name must be contactemail.

Company form input (optional)


This is the customers company. It appears on the invoice and in verification e-mails. The inputs name must be company.

BillFirstName form input (required)


This is the first name of the person who will be billed for the purchase. If the customer intends to pay by credit card, then this should be the first name of the name on the credit card. If the customer intends to pay by check, then this should be the first name of the person signing the check. The inputs name must be billfirstname.

BillMiddleInit form input (optional)


This optional field can hold the middle initial of the person who will be billed for the purchase. If the customer intends to pay by credit card, then this should be the middle initial of the name on the credit card. If the customer intends to pay by check, then this should be the middle initial of the person signing the check. The inputs name must be billmiddleinit.
202 PDG Commerce 4.0 -- Technical Reference Guide

Chapter 5 -- Cart Actions

BillLastName form input (required)


This is the last name of the person who will be billed for the purchase. If the customer intends to pay by credit card, then this should be the last name of the name on the credit card. If the customer intends to pay by check, then this should be the last name of the person signing the check. The inputs name must be billlastname.

BillStreet1 form input (required)


This is the first of two lines for providing the street address of the billing address. If the customer intends to pay by credit card, this should be the street address to which the credit card bill is sent. If the customer intends to pay by check, then this should be the street address of the person signing the check. The inputs name must be billstreet1.

BillStreet2 form input (optional)


This is the second of two lines for providing the street address of the billing address. If the customer intends to pay by credit card, this should be the street address to which the credit card bill is sent. If the customer intends to pay by check, then this should be the street address of the person signing the check. The customer may leave this field input blank if two lines are not needed. The inputs name must be billstreet2.

BillCity form input (required)


This is the city of the address of the person who will be billed for the purchase. If the customer intends to pay by credit card, then this city should be the city to which the credit card bill is sent. If the customer intends to pay by check, then this should be the city of the person signing the check. The inputs name must be billcity.

BillState form input (required)


This is the two-letter state code of the address of the person who will be billed for the purchase. If the customer intends to pay by credit card, then this should be the state to which the credit card bill is sent. If the customer intends to pay by check, then this should be the state of the person signing the check. If you are using UPS costing, then this field must be the two letter code for the state of destination. If this field is ZZ, then the BillProvince field is used instead of the BillState field in the billing address. The inputs name must be billstate.

PDG Commerce 4.0 -- Technical Reference Guide

203

Chapter 5 -- Cart Actions

BillProvince form input (optional)


This optional field is the province of the address of the person who will be billed for the purchase. This field can be filled in by non-US and non-Canadian customers (Canadas provinces appear in the BillState list). This field is only applicable if BillState is ZZ. If the customer intends to pay by credit card, then this should be the province to which the credit card bill is sent. If the customer intends to pay by check, then this should be the province of the person signing the check. The inputs name must be billprovince.

BillZip form input (required)


This is the postal code of the address of the person who will be billed for the purchase. If the customer intends to pay by credit card, then this Postal Code should be the ZIP Code to which the credit card bill is sent. If the customer intends to pay by check, then this should be the ZIP code of the person signing the check. The inputs name must be billzip.

BillCountry form input (required)


This is the country of the address of the person who will be billed for the purchase. If the customer intends to pay by credit card, then this country should be the country to which the credit card bill is sent. If the customer intends to pay by check, then this should be the country of the person who is signing the check. The data for this field must be PDG Commerces numeric country codes. PDG Commerce will convert this number back to the country's full name when producing shipping and billing addresses. The inputs name must be billcountry.

BillText form input (optional)


This form input can be used to collect any additional information that may be needed for customer billing. You have the option of labeling this field whatever you want on the Checkout page. An example of what this may be used for is the customers county. The inputs name must be billtext.

ShipMethod form input (required)


This form input allows the customer to decide which method of shipping (from your Web stores available methods) to use to ship the products. The value passed to PDG Commerce through the form should be the zero-based index of the chosen method as listed in the Shipping Rules section of your Merchant Administrator. PDG Commerce will automatically generate and place this form input in the customer's HTML page through the use of a tag of the Checkout Template
204 PDG Commerce 4.0 -- Technical Reference Guide

Chapter 5 -- Cart Actions

File. This form input may also be placed manually in the template. Refer to the HTML Template Files sections of this Technical Reference Guide, for more information on the Checkout Template File. Depending upon the choice of shipping method and configuration of the chosen shipping method, the rest of the fields may or may not be required. If the chosen shipping method has the tag <NoShipInfo> in the Shipping.conf file, then all other fields beginning with the letters SHIP are ignored and not required. For more information on the <NoShipInfo> tag and the Shipping.conf file, refer to the Configuring Shipping Options section in the PDG Commerce User Guide.

ShipToBillAddr form input (required)


The form input allows the customer to use the data entered for the billing address as the shipping address for the purchase. This input should be a checkbox input. If it is checked, then PDG Commerce will ignore and not validate the contents of any other form input beginning with the letters SHIP. If this checkbox is checked, then PDG Commerce will use BillState to determine if sales tax is applicable.

ShipName form input (required or optional)


This is the name to which the products should be shipped. This field will be ignored if the shiptobilladdr box is checked, or if there is no shipping information required for the selected shipping method. The inputs name must be shipname.

ShipStreet1 form input (required or optional)


This is the first of two lines provided for the street address to which the products will be shipped. This field will be ignored if the shiptobilladdr box is checked, or if there is no shipping information required for the selected shipping method. The inputs name must be shipstreet1.

ShipStreet2 form input (optional)


This is the second of two lines provided for the street address to which the products will be shipped. The inputs name must be shipstreet2.

ShipCity form input (required or optional)


This is the city to which the products will be shipped. This field will be ignored if the shiptobilladdr box is checked, or if there is no shipping information required for the selected shipping method. The inputs name must be shipcity.
PDG Commerce 4.0 -- Technical Reference Guide 205

Chapter 5 -- Cart Actions

ShipState form input (required or optional)


This is the two-letter state code to which the products will be shipped. This field's data is also used normally to determine if sales tax is applicable to the order. If you are using UPS to obtain shipping costs, this field must be the two-letter code for the state. If this field is ZZ, then the ShipProvince field is used instead of ShipState when producing address information. This field will be ignored if the shiptobilladdr box is checked, or if there is no shipping information required for the selected shipping method. The inputs name must be shipstate.

ShipProvince form input (optional)


This field provides an entry for the province of the destination address. PDG Commerce only uses this field if ShipState is ZZ. The inputs name must be shipprovince.

ShipZIP form input (required or optional)


This is the Postal Code to which the products will be shipped. This field will be ignored if the shiptobilladdr box is checked, or if there is no shipping information required for the selected shipping method. The inputs name must be shipzip.

ShipCountry form input (required or optional)


This is the country to which the products will be shipped. The data for this field must be the PDG Commerce numeric country codes. PDG Commerce will convert the numeric code back into the country's full name when producing address information. This field will be ignored if the shiptobilladdr box is checked, or if there is no shipping information required for the selected shipping method. The inputs name must be shipcountry.

ShipText form input (optional)


This form input can be used to collect any additional information that may be needed for customer shipping. You have the option of labeling this field whatever you want on the Checkout page. The field can be used, for example, to allow the customer to provice any special shipping or packaging instructions. The inputs name must be billtext.

206

PDG Commerce 4.0 -- Technical Reference Guide

Chapter 5 -- Cart Actions

Phone1 form input (optional)


This form input can be used to collect a phone number for your customer. The format for this field is not restricted, and so your customers can put in phone extensions, international numbers, or other dialing instructions. The inputs name must be phone1.

Phone2 form input (optional)


This form input can be used to collect a second phone number for your customer. The format for this field is not restricted, and so your customers can put in phone extensions, international numbers, or other dialing instructions. The inputs name must be phone2.

Pass form inputs (optional) (Passthrough Variables)


Any form input whose name begins with the letters PASS is passed on through PDG Commerce into the output without any additional processing. These form inputs allow for the collection of customer data that is needed by the merchant to process the order, but not required by PDG Commerce.

Recipient inputs (required or optional)


These inputs will not be displayed unless the customer has chosen to ship the order to multiple recipients. The form inputs inside of the <!--BEGIN_RECIPIENT---> and <!---END_RECIPIENT---> tags will be displayed with each recipients basket contents, so the customer can enter a shipping address and shipping method for each individual basket. The Save Contact Button checkbox will allow the customer to specify whether or not to save the recipients shipping information to the customers account with your Web store. The friendly name must be passed as a hidden field so Commerce may distinguish between the multiple shipping addresses.

BuyIt Action
The BuyIt action receives the customer's complete shipping, billing, and payment information. At this point an invoice is generated, and a copy of the invoice can be e-mailed to the customer and vendor, as well as stored in a log for later processing. In addition to the logging and e-mails, PDG Commerce can authorize credit card orders by communicating with a payment authorization service. At this time, PDG Commerce also decrements inventory appropriately, if inventory is being tracked.

PDG Commerce 4.0 -- Technical Reference Guide

207

Chapter 5 -- Cart Actions

Here is the syntax for calling the BuyIt action from an HTML page:
<form action="[location of PDG Commerce executable]" method="post"> <input type="hidden" name="contactname"> <input type="hidden" name="contactemail"> <input type="hidden" name="billfirstname"> <input type="hidden" name="billlastname"> <input type="hidden" name="billstreet1"> <input type="hidden" name="billstreet2"> <input type="hidden" name="billcity"> <input type="hidden" name="billstate"> <input type="hidden" name="billprovince"> <input type="hidden" name="billzip"> <input type="hidden" name="billcountry"> <input type="hidden" name="billtext"> <input type="hidden" name="contactname"> <input type="hidden" name="shipmethod"> <input type="hidden" name="shipname"> <input type="hidden" name="shipstreet1"> <input type="hidden" name="shipstreet2"> <input type="hidden" name="shipcity"> <input type="hidden" name="shipstate"> <input type="hidden" name="shipprovince"> <input type="hidden" name="shipzip"> <input type="hidden" name="shipcountry"> <input type="hidden" name="pass..."> <select name="billmethod"> <input type=text name=giftcertificate> <option> Option 1 <option> Option 2 [other bill methods accepted...] </select> <select name="cardtype"> <option value="[some card type]"> [other card types accepted] </select> <input type="text" name="cardnumber"> <input type="text" name="cardexp"> <input type="submit" name="BUYIT" value="[text to appear on button]"> </form>

208

PDG Commerce 4.0 -- Technical Reference Guide

Chapter 5 -- Cart Actions

Invoice Generation
The BuyIt action causes PDG Commerce to generate an invoice for the order. When the invoice is generated, a unique invoice number is generated to identify the invoice. The invoice number is comprised of some predefined text and a unique five digit number. The text is prefixed to the five digit number, and is defined in the Order Logging/Retrieval section of the Merchant Administrator. The five digit number is generated from the contents of the Invoice Counter File, whose location is specified in Shopper.conf. For more information on the Shopper.conf file, you will need to contact PDG. If inventory is being tracked, then products are taken out of inventory when an invoice is created for the order.

ContactName form input (required)


This is the customer's name as it will appear on the invoice and in e-mails. It should contain both the first and last name of the customer. This is a hidden field, and should have been placed in the HTML page by the Checkout action of PDG Commerce. The inputs name must be contactname.

ContactEmail form input (required)


This is the customer's e-mail address. It appears on the invoice and in verification e-mails. It is also used as the e-mail address to use when sending the automatic invoice e-mail after accepting the order. This is a hidden field, and should have been placed in the HTML page by the Checkout action of PDG Commerce. The inputs name must be contactemail.

BillFirstName form input (required)


This is the first name of the person who will be billed for the purchase. If the customer intends to pay by credit card, then this should be the first name on the credit card. If the customer intends to pay by check, then this should be the first name of the person signing the check. This is a hidden field, and should have been placed in the HTML page by the Checkout action of PDG Commerce.

BillLastName form input (required)


This is the last name of the person who will be billed for the purchase. If the customer intends to pay by credit card, then this should be the last name of the name on the credit card. If the customer intends to pay by check, then this should be the last name of the person signing the check. The inputs name must be billlastname.

PDG Commerce 4.0 -- Technical Reference Guide

209

Chapter 5 -- Cart Actions

BillStreet1 form input (required)


This is the first of two lines for providing the street address of the billing address. If the customer intends to pay by credit card, this should be the street address to which the credit card bill is sent. If the customer intends to pay by check, then this should be the street address of the person signing the check. This is a hidden field, and should have been placed in the HTML page by the Checkout action of PDG Commerce. The inputs name must be billstreet1.

BillStreet2 form input (optional)


This is the second of two lines for providing the street address of the billing address. If the customer intends to pay by credit card, this should be the street address to which the credit card bill is sent. If the customer intends to pay by check, then this should be the street address of the person signing the check. The customer may have left this field input blank if two lines were not needed. This is a hidden field, and should have been placed in the HTML page by the Checkout action of PDG Commerce. The inputs name must be billstreet2.

BillCity form input (required)


This is the city of the address of the person who will be billed for the purchase. If the customer intends to pay by credit card, then this city should be the city to which the credit card bill is sent. If the customer intends to pay by check, then this should be the city of the person signing the check. This is a hidden field, and should have been placed in the HTML page by the Checkout action of PDG Commerce. The inputs name must be billcity.

BillState form input (required)


This is the two-letter state code of the address of the person who will be billed for the purchase. If the customer intends to pay by credit card, then this state should be the state to which the credit card bill is sent. If the customer intends to pay by check, then this should be the state of the person signing the check. If this field is ZZ, then the BillProvince field is used instead of BillState when producing address information. This is a hidden field, and should have been placed in the HTML page by the Checkout action of PDG Commerce. The inputs name must be bill state.

BillProvince form input (optional)


This optional field provides the province of the address of the person who will be billed for the purchase. If the customer intends to pay by credit card, then this should be the province to which the credit card bill is sent. If the customer intends to pay by check, then this should be the province of the
210 PDG Commerce 4.0 -- Technical Reference Guide

Chapter 5 -- Cart Actions

person signing the check. This field is only applicable if BillState is ZZ. The inputs name must be billprovince.

BillZip form input (required)


This is the ZIP Code of the address of the person who will be billed for the purchase. If the customer intends to pay by credit card, then this ZIP Code should be the ZIP Code to which the credit card bill is sent. If the customer intends to pay by check, then this should be the ZIP code of the person signing the check. This is a hidden field, and should have been placed in the HTML page by the Checkout action of PDG Commerce. The inputs name must be billzip.

BillCountry form input (required)


This is the country of the address of the person who will be billed for the purchase. If the customer intends to pay by credit card, then this country should be the country to which the credit card bill is sent. If the customer intends to pay by check, then this should be the country of the person signing the check. This is a hidden field, and should have been placed in the HTML page by the Checkout action of PDG Commerce. The inputs name must be billcountry.

BillText form input (optional)


This form input may contain whatever was entered by the customer in this field on the Checkout page. An example of what this may be used for might be the customers county of residence. The inputs name must be billtext.

ShipMethod form input (required)


This hidden form input indicates the customer's choice of shipment methods to be used to ship his order. The value of this field will be the zero-based index of the shipping method chosen as listed in the Shipping Rules section of the Merchant Administrator. Depending on the choice of shipping method and configuration of the chosen shipping method, the rest of the fields may not be required. If the chosen shipping method has the tag <NoShipInfo> in the Shipping.conf file, then PDG Commerce will not place any more hidden input fields in the HTML page. The inputs name must be shipmethod.

ShipName form input (required or optional)


This is the name to which the products should be shipped. This is a hidden field, and should have been placed in the HTML page by the Checkout action of PDG Commerce. The inputs name must be shipname.
PDG Commerce 4.0 -- Technical Reference Guide 211

Chapter 5 -- Cart Actions

ShipStreet1 form input (required or optional)


This is the first of two lines provided for the street address to which the products will be shipped. This is a hidden field, and should have been placed in the HTML page by the Checkout action of PDG Commerce. The inputs name must be shipstreet1.

ShipStreet2 form input (optional)


This is the second of two lines provided for the street address to which the products will be shipped. This is a hidden field, and should have been placed in the HTML page by the Checkout action of PDG Commerce. The inputs name must be shipstreet2.

ShipCity form input (required or optional)


This is the city to which the products will be shipped. This is a hidden field, and should have been placed in the HTML page by the Checkout action of PDG Commerce. The inputs name must be shipcity.

ShipState form input (required or optional)


This is the two-letter state code to which the products will be shipped. This field's data may also be used to determine if sales tax is applicable to the order. If this field is ZZ, then the ShipProvince field is used instead of ShipState when producing address information. This is a hidden field, and should have been placed in the HTML page by the Checkout action of PDG Commerce. The inputs name must be shipstate.

ShipProvince form input (optional)


This field provides an optional entry for the province of the destination address. PDG Commerce only uses this field if ShipState is ZZ. The inputs name must be shipprovince.

ShipZIP form input (required or optional)


This is the ZIP Code to which the products will be shipped. This is a hidden field, and should have been placed in the HTML page by the Checkout action of PDG Commerce. The inputs name must be shipzip.

212

PDG Commerce 4.0 -- Technical Reference Guide

Chapter 5 -- Cart Actions

ShipCountry form input (required or optional)


This is the country to which the products will be shipped. This is a hidden field, and should have been placed in the HTML page by the Checkout action of PDG Commerce. The inputs name must be shipcountry.

BillMethod form input (required)


The BillMethod form input allows the customer to determine how they want to pay for the products out of the given payment methods. The Web store may list as many payment options as they would like. PDG Commerce checks the value of this form input. The value for this form must be the zero-based index of the payment method, as listed in the Merchant Administrator. So the value of the first payment method listed in your Commerce Administrator should be 0, the second method should be 1, etc. The payment method for a gift certificate is automatically created by PDG Commerce, and the value for that method must be GC, instead of a numeric index value.

GiftCertificate form input (optional)


This text input will be where the customer enters his gift certificate key code if he is paying for all or part of the order with a previously purchased gift certificate. This inputs name must be giftcertificate.

CardType form input (required or optional)


This input should be a drop-down menu that lists the credit card types that your Web store accepts. This field will be required if the customer has selected a credit card payment method. The inputs name must be cardtype.

CardNumber form input (required or optional)


This text input will be where the customer enters his credit card number. This field will be required if the customer has selected a credit card payment method. The inputs name must be cardnumber.

CardExp form input (required or optional)


This text input will be where the customer enters his credit cards expiration date. This field will be required if the customer has selected a credit card payment method. The inputs name must be cardexp.

PDG Commerce 4.0 -- Technical Reference Guide

213

Chapter 5 -- Cart Actions

CCV2 form input (required or optional)


This text input will be where the customer enters his credit cards verification value. This field may be required if the customer has selected a credit card payment method and your real-time credit card processor requires it. The inputs name must be ccv2.

BankName form input (required or optional)


This text input will be where the customer enters the bank name with which he has a checking account. This field will be required if the customer has selected to pay by online check. PDG Commerce will automatically create this text field on the Verify page after the Verify action has been submitted. The inputs name must be bankname.

RouteNumber form input (required or optional)


This text input will be where the customer enters the routing number that corresponds with his bank. This field will be required if the customer has selected to pay by online check. PDG Commerce will automatically create this text field on the Verify page after the Verify action has been submitted. The inputs name must be routenumber.

CheckNumber form input (required or optional)


This text input will be where the customer enters the number of the check with which he wishes to pay. This field will be required if the customer has selected to pay by online check. PDG Commerce will automatically create this text field on the Verify page after the Verify action has been submitted. The inputs name must be checknumber.

AccountNumber form input (required or optional)


This text input will be where the customer enters his checking account number. This field will be required if the customer has selected to pay by online check. PDG Commerce will automatically create this text field on the Verify page after the Verify action has been submitted. The inputs name must be accountnumber.

DriverLicenseNum form input (required or optional)


This text input will be where the customer enters his valid driver license number. This field will be required if the customer has selected to pay by online check. PDG Commerce will automatically create this text field on the
214 PDG Commerce 4.0 -- Technical Reference Guide

Chapter 5 -- Cart Actions

Verify page after the Verify action has been submitted. The inputs name must be driverlicensenum.

DriverLicenseState form input (required or optional)


This text input will be where the customer enters the state for his valid driver license. This field will be required if the customer has selected to pay by online check. PDG Commerce will automatically create this text field on the Verify page after the Verify action has been submitted. The inputs name must be driverlicensestate.

PhoneNumber form input (required or optional)


This text input will be where the customer enters his phone number, area code first. This field will be required if the customer has selected to pay by online check. PDG Commerce will automatically create this text field on the Verify page after the Verify action has been submitted. The inputs name must be phonenumber.

Pass-- form inputs (optional) (Passthrough Variables)


Any form input whose name begins with the letters PASS is passed on through PDG Commerce into the submitted invoice without any additional processing. These form inputs allow for the collection of customer data that may be needed by the merchant to process the order, but not required by PDG Commerce. If nothing is entered in the passthrough fields, then these form inputs will not be displayed on successive pages.

ListCategories Action
The ListCategories action will return the Category HTML template. The Category template is essentially a listing of all of your Web stores product categories. This page contains the category code, image, name, as well as a long description for each product category in your Web store. Each category listing also contains a link to a page that lists all of the products in the category and acts as that categorys home page. Here is the syntax for calling the ListCategories action in an HTML page:
<form action="[location of PDG Commerce executable]" method="post"> <input type="hidden" name="TEMPLATE" value="[location of custom template]"> PDG Commerce 4.0 -- Technical Reference Guide 215

Chapter 5 -- Cart Actions

<input type="submit" name="LISTCATEGORIES" value="[text to appear on button]"> </form>

The submit input's name must be ListCategories.

Template form input (optional)


By default, the ListCategories action calls the standard Category HTML template located in your PDG_Commerce directory. You may specify a different template file by creating a hidden input field. This field must be named Template, and the value is the path to the new template file. This path is must be relative to the PDG_Commerce directory.

Login Action
The Login Action is the heart of the customer login process for PDG Commerce. Called by itself with no arguments, it will display the Login Template, which can allow customers with existing accounts to log in, and others to either shop anonymously and/or register with the web store. An example of an HTML link which would begin the login process would be:
<a href=/cgi-bin/commerce.exe?login=action>Log In</a>

An example of an HTML form that allows direct login (bypassing the Login Template) would be as follows. Note that this is the same type of form that is embedded on the Login Template and the Login Failure Template.
<form method=post action=/cgi-bin/commerce.exe> <input type=text name=username> <input type=password name=password> <input type=submit name=login value=Log In> </form>

When PDG Commerce receives this action with username and password, it will then attempt to log the user in. If log in is successful, PDG Commerce will display the Login Successful Template. If log in is not successful, PDG Commerce will display the Login Failure Template.

216

PDG Commerce 4.0 -- Technical Reference Guide

Chapter 5 -- Cart Actions

UPS Tracking Action


You can embed a form call directly into your web pages to get UPS tracking information from PDG Commerce. The following form fields are used in this form, and are marked as either required or optional. An HTML example is provided after the field descriptions.

trackno (Required)
This form field should contain the order reference number provided to the customer. The reference number is specified by you when the packages are originally shipped. Your customer will then need this reference number to track the packages. PDG Software recommends that you use the orders invoice number for the UPS reference number. However, you are not restricted to solely using the invoice number, and can use any other numbering system you see fit. Note: This field is used to track orders by your reference number, not by standard UPS tracking numbers. To enable shipment tracking for standard UPS tracking numbers for your customers, you should utilize the web-based tracking tools provided by UPS outside of PDG Commerce.

rqstopt (Required)
This field specifies the amount of tracking information to return. If this field is activity, UPS will return with the entire shipping history of the package. If this field is set to none, UPS will return with only the last shipping activity of the package. This form field should either be a select box if you wish to offer a choice to your customers, or set to a hidden field if you only want to return one type of information.

destcntry (Required)
This field must contain the PDG Commerces country code index for the packages destination country. This form field can be a select box for selecting a country from a list, or a hidden field to track shipments to a single specific country. If a select box is used, you can specify the country list statically in HTML, or, if the form is embedded in a PDG Commerce template, allow PDG Commerce to dynamically generate the select box contents with the template tag <!--COUNTRY_LIST-->. Note: The data for this field is the PDG Commerces country code index, not any country code data specific to UPS. PDG Commerce will convert the country code index to the proper country data for UPS. The country code indexes for PDG Commerce can be found previously in this guide.

PDG Commerce 4.0 -- Technical Reference Guide

217

Chapter 5 -- Cart Actions

terms (Required)
This field must contain the text agree for UPS to return tracking information to your customer. This field indicates your customers acceptance to all UPS Tracking terms and conditions. This field should be a checkbox or radio button.

upstrack (Required)
This field is the PDG Commerce action field - it tells PDG Commerce to perform the package tracking with UPS. This field can be the submit button to your form, or it can be a hidden field. The value data for this field is ignored - it is the presence of this field that instructs PDG Commerce to track the package with UPS.

destzip (Optional)
Customers can specify an optional destination postal code. Only shipments to this postal code are then returned by UPS.

usedates (Optional)
Your customers can specify a date range to further refine UPS tracking results. For PDG Commerce to pass date search information on to UPS, the first character for the value of this field must be either a Y or a y. You can use a checkbox, a radio button, or a select box for this field.

beginmon (Optional)
This is the two-digit number for the month of the date to use to begin the search range. The numbering starts with 01, for January, and proceeds to 12, for December. If this field is omitted, UPS will ignore the starting date for the search.

beginday (Optional)
This is the two-digit number for the day of the month to use to begin the search range. If this field is omitted, UPS will ignore the starting date for the search.

218

PDG Commerce 4.0 -- Technical Reference Guide

Chapter 5 -- Cart Actions

beginyr (Optional)
This is the four-digit number for the year to use to begin the search range. Do not pass two digits in this field. If this field is omitted, UPS will ignore the starting date for the search.

stopmon (Optional)
This is the two-digit number for the month of the date to use to end the search range. The numbering starts with 01, for January, and proceeds to 12, for December. If this field is omitted, UPS will ignore the ending date for the search.

stopday (Optional)
This is the two-digit number for the day of the month to use to end the search range. If this field is omitted, UPS will ignore the ending date for the search.

stopyr (Optional)
This is the four-digit number for the year to use to end the search range. Do not pass two digits in this field. If this field is omitted, UPS will ignore the ending date for the search.

Register Action
PDG Commerce will begin the registration process for a new customer when it receives the Register Action. In response to receiving this action, PDG Commerce first checks to see if new customers can register into any customer categories. PDG Commerce also verifies any registration code passed to it. If registration is allowed and the presented registration code matches a customer category, then PDG Commerce will present the Register Template. This template will collect the customers information and complete the registration process. When setting up your customer categories, remember that all customer categories that you create into which customers can register themselves require a customer category registration code. You set this in the Merchant Administrator - see the chapter on Customer Maintanence in the PDG Commerce Users Guide. Here is an HTML link example of the Register Action. Note that it passes a registration code of LETMEIN. You would need to ensure the customer

PDG Commerce 4.0 -- Technical Reference Guide

219

Chapter 5 -- Cart Actions

category for these newly registered customers: 1) allows registration, and 2) has its registration code set to LETMEIN.
<a href=/cgi-bin/commerce?register=action&custcatregcode=LETMEIN> Sign up for store access now! </a>

Here is an HTML form example of the Register Action. Note here that the registration code is a form edit field. If you are inviting only certain persons to register into a special customer category code, you can give them that categorys registration code. They can then enter it into this form.
<form method=post action=/cgi-bin/commerce> <input type=text name=custcatregcode> <input type=submit name=register value=Begin Registration> </form>

In either case, if PDG Commerce cannot find a customer category that allows registration and either 1) has a registration code that matches the code given by the customer, or 2) is marked as Default, then PDG Commerce will display a registration error to the user. If the conditions above are met, PDG Commerce will register the user into the matching customer category, and display the Register Template to collect the customers specific information.

custcatregcode (Optional)
This is the name of the data field that contains the customer registration code. This can be hard-coded or it can be a form field. Note: This field is REQUIRED if you are going to allow customers to register themselves into any customer category that is not marked as Default. You also must ensure that the customer category has a registration code definied in the Merchant Administrator.

NewGuest Action
This action signals to PDG Commerce to allow a non-registered user to begin shopping at your web store. In response to this action, PDG Commerce displays the Guest Template, welcoming the anonymous shopper. Persons shopping anonymously will have the same access as the customer category marked as Default. Allow Register does not have to be turned on for the Default category. If you do not wish for non-registered shoppers to be able to view pricing or to purchase items from your store, turn off these access rights for the Default category in your Merchant Administrator. An HTML link for this action might be:
<a href=/cgi/commerce.exe?newguest=action> Skip Log In and Start Shopping! </a>

220

PDG Commerce 4.0 -- Technical Reference Guide

Chapter 5 -- Cart Actions

Note that someone may start shopping on your site anonymously and then log in before checking out. When this occurs, the customer may elect to keep their shopping cart from their anonymous browsing.

Logout Action
This action allows customers to log out of your web store. Once logged out, PDG Commerce displays the Guest Template. From this template, you may opt to allow someone else to re-login. An HTML link for this action might be:
<a href=/cgi/commerce.exe?logout=action> Sign Off </a>

SetBasket Action
Once a customer logs in, your Login Successful template may display several different baskets and allow the customer to preset their basket to one. If the customer was shopping anonymously before logging in, they will have the option of continuing with that basket. If they had a previous basket which they did not order, they can continue with that basket. They can set their basket to the last completed order. Or they can set their basket to start empty. This action is almost always embedded in the Login Successful Template, where a customer can select their basket after logging in. You should not need to embed this action manually in a web page.

SelectedBasket (Required)
This data for the SetBasket Action is the PDG Commerce internal basket string to use for the customers basket. You should not manually create this let PDG Commerce dynamically create it from the templates.

RegisterNewUser Action
PDG Commerce uses this action to process a new customers information for registration. After the customer has begun the registration process with the Register Action, and optionally passed a correct registration code, PDG Commerce responds by displaying the Register Template. This template allows the new user to fill account information. This information is then submitted to PDG Commerce via the RegisterNewUser Action. The following fields are used for this action. They are the same as the fields named in the CheckOut Template.
contactname contactemail billfirstname PDG Commerce 4.0 -- Technical Reference Guide 221

Chapter 5 -- Cart Actions

billlastname billstreet1 billstreet2 billcity billstate billprovince billzip billcountry billtext shiptobilladdr shipname shipstreet1 shipstreet2 shipcity shipstate shipprovince shipzip shipcountry shiptext

In addition to these fields, the following fields are also available:

contactpass, contactpass2 (Required)


These two fields allow the new customer to specify a password for their account. The password entered in both fields must match exactly and is case sensitive. If the passwords do not match, PDG Commerce will return with an error indicating the passwords need to match. Having two fields allows for the customer to enter their new password and to enter it again to verify it.

generalcompanyname (Optional)
The customer can enter their company name into this field. Though it is not specifically collected during check-out, the merchant can access this through the Merchant Administrator if it is needed.

billphone1 (Optional)
The customer can enter a billing phone number into this field. This field is collected during the check-out process, and is listed under the field name phone1.
222 PDG Commerce 4.0 -- Technical Reference Guide

Chapter 5 -- Cart Actions

billphone2 (Optional)
The customer can enter a second billing phone number into this field. Though it is not specifically collected during check-out, the merchant can access this through the Merchant Administrator if it is needed.

shipphone1
The customer can enter a phone number for a shipping contact into this field. Though it is not specifically collected during check-out, the merchant can access this through the Merchant Administrator if it is needed.

shipphone2
The customer can enter a second phone number for a shipping contact into this field. Though it is not specifically collected during check-out, the merchant can access this through the Merchant Administrator if it is needed.

DisplayUser Action
This action is used to display the currently logged-in customers account information and address information. This output is displayed with the Update User template. The user can modify this data, and add, modify, or remove address information from here as well. An HTML link for this action follows. It requires no additional data values.
<a href=/cgi-bin/commerce.exe?displayuser=action> Update Account Information </a>

UpdateCustDetails Action
This action allows the customer to update account specific details. It is called from the Update User template, and is embedded in that template by the !--UPDATE_CUSTOMER_LINK--- tag. It uses the following form inputs: contactemail generalcompanyname custcatregcode contactpass contactpass2 customerid

With the exception of customerid, these inputs are the same as the inputs for the RegisterNewUser action. Customerid should be a hidden field that contains that customers ID number.

PDG Commerce 4.0 -- Technical Reference Guide

223

Chapter 5 -- Cart Actions

Note that the HTML form that calls this action must be named pdgcontact so that embedded dynamic Javascript functions will operate properly.
<form method="post" action="!---MODULE_NAME---" name="pdgcontact"> <input name="contactemail" value="!---CUST_EMAIL---"> <input name="generalcompanyname" value="!---CUST_COMPANY---"> <input name="custcatregcode"> <input type=password name="contactpass"> <input type=password name="contactpass2> <input type=hidden name=customerid value=!---USERID---> <!---UPDATE_CUSTOMER_LINK---> ... </form>

The !---UPDATE_CUSTOMER_LINK--- creates the submit action:


<input type=submit name=updatecustdetails value="Update Customer">

You should use the tag instead of hardcoding this submit button if you are utilizing PDG Commerces custom buttons.

UpdateContact Action
The UpdateContact Action instructs PDG Commerce to take the information in the contact / address section of the UpdateUser template, and update the currently selected contact, be it the billing contact, the primary shipping contact, or any of the already defined secondary shipping contacts. This action expects the following form inputs: Contactsel : This is a required internal value that UpdateContact action requires, which is used to determine which contact to update. The value for this field is the internal primary key for the contact record in the database. You should let PDG Commerce generate this field for you with the <!---DISPLAY_CONTACT_LIST---> tag. Otherwise you will need a script to manually query your database and retrieve the primary key information. Confirstname : This is the same as billfirstname for the RegisterNewUser Action. Conlastname : This is the same as billlastname for the RegisterNewUser Action. Constreet1 : This is the same as billstreet1 for the RegisterNewUser Action. Constreet2 : This is the same as billstreet2 for the RegisterNewUser Action. Concity : This is the same as billcity for the RegisterNewUser Action.

224

PDG Commerce 4.0 -- Technical Reference Guide

Chapter 5 -- Cart Actions

Constate : This is the same as billstate for the RegisterNewUser Action. Conprovince : This is the same as billprovince for the RegisterNewUser Action. Concountry : This is the same as billcountry for the RegisterNewUser Action. Conphone1 : This is the same as billphone1 for the RegisterNewUser Action. Conphone2 : This is the same as billphone2 for the RegisterNewUser Action. Context : This is the same as billtext for the RegisterNewUser Action. Confriendlyname : This is the identifying name of the contact information. For secondary shipping contact informations, the Friendly Name is what identifies it from the other secondary shipping contacts. For billing and primary shipping contact information, this field is not used.

Here is an HTML form example for the UpdateContact action and the AddNewContact action. Note that a lot of the HTML and Javascript code necessary for this is dynamically generated by PDG Commerce on the UserUpdate template. You should not need to add or remove form fields from this template.
<form method="post" action="!---MODULE_NAME---" name="pdgcontact"> <!---DISPLAY_CONTACT_LIST---> <input name="Confirstname"> <input name="Conlastname"> <input name="Constreet1"> <input name="Constreet2"> <input name="Concity"> <select name="Constate"> <!---STATE_LIST---> </select> <input name="Conprovince"> <select name="Concountry"> <!---COUNTRY_LIST---> </select> <input name="Conphone1"> <input name="Conphone2> <input name="Context"> <input name="Confriendlyname"> <!---UPDATE_CONTACT_LINK---> <!---ADD_CONTACT_LINK---> </form> PDG Commerce 4.0 -- Technical Reference Guide 225

Chapter 5 -- Cart Actions

AddNewContact Action
The AddNewContact Action adds a new secondary shipping contact to the users account based on the data in the form in the UserUpdate template. It does not matter which current contact information you are viewing. This action will always add a new secondary shipping contact with the Friendly Name specified. This friendly name should then appear in the contact list (created by the !---DISPLAY_CONTACT_LIST--- tag). This action uses the same fields as the UpdateContact action. See that action for details on the form inputs and sample HTML.

RemoveContact Action
The RemoveContact Action is used to remove a secondary shipping contact from the users account. This action cannot be used to remove either the billing contact information or the primary shipping contact information - PDG Commerce will return with an error in either case. This action is dynamically embedded in the <!--DISPLAY_CONTACT_LIST---> tag for the UserUpdate Template. You should not need to code this action.

Contactsel (Required)
This is a required internal value that RemoveContact action requires, which is used to determine which contact to update. The value for this field is the internal primary key for the contact record in the database. You should let PDG Commerce generate this field for you with the <!--DISPLAY_CONTACT_LIST---> tag. Otherwise you will need script to manually query your database and retrieve the primary key information.

SplitAddress Action
If your customer is currently using the same contact information for both the billing contact and the primary contact, and wishes to have different address information for these two contacts, then they will use this action to split the contact information so that they can modify each individually. This action specifically duplicates the billing contact information for the primary shipping contact information, and turns off ShipToBillAddr. Once split, your customer can modify either contact information without affecting the other. You should let PDG Commerce generate this field for you with the <!--DISPLAY_CONTACT_LIST---> tag in the UserUpdate Template.

226

PDG Commerce 4.0 -- Technical Reference Guide

Chapter 5 -- Cart Actions

UseShipForBill Action
If your customer currently has different contact information for their billing contact and their primary shipping contact, and wishes to use their primary shipping contact for both, then they will use this action. Using this action causes PDG Commerce to delete the current billing information, and to set the billing contact to point to the primary shipping contact, and to turn on ShipToBillAddr. Once done, any changes made to either the billing or primary shipping contact will automatically affect the other. You should let PDG Commerce generate this field for you with the <!--DISPLAY_CONTACT_LIST---> tag in the UserUpdate Template.

UseBillForShip Action
If your customer currently has different contact information for their billing contact and their primary shipping contact, and wishes to use their billing contact for both, then they will use this action. Using this action causes PDG Commerce to delete the current primary shipping information, and to set the primary shipping contact to point to the billing contact, and to turn on ShipToBillAddr. Once done, any changes made to either the billing or primary shipping contact will automatically affect the other. You should let PDG Commerce generate this field for you with the <!--DISPLAY_CONTACT_LIST---> tag in the UserUpdate Template.

EmailAccountInfo Action
PDG Commerce is able to send a customer's login information if they have forgotten it. This way, you can provide them the information that they need and eliminate the possibility for your customers to register several different times. You can use the code that follows to send an email to the customer:
<form method=post action="!---SCRIPT_NAME---"> <input type=text name=email size=40> <input type=text name=username size=40> <input type=submit name=emailaccountinfo value="email password"> </form>

You can send the information based on either the username or the email address. If you choose to use username, PDG Commerce will send an email to the email address associated with that username. Regardless, the email will contain both the username and password. Note: The submit input name must be emailaccountinfo and the text input name must be either email or username. If both the email field and the username field are entered on the page, PDG Commerce will not perform a check

PDG Commerce 4.0 -- Technical Reference Guide

227

Chapter 5 -- Cart Actions

to determine if they match. The information entered in the first of these two fields appearing in the form will be used.

Commerce Action Examples


Below is a list of the available Commerce actions you can link from your web store pages: Remember: If you are using Commerce on a Windows server, these links will be to commerce.exe. If you are on a UNIX server, these links will be to commerce.cgi.
List all products: http://www.mywebstore.com/cgi-bin/commerce?search=action&keywords=all List all products using the template SearchResult-custom.html: http://www.mywebstore.com/cgi-bin/commerce?search=action&keywords=all&template=Templates/SearchResult-custom.html List all products with the keyword shoes: http://www.mywebstore.com/cgi-bin/commerce?search=action&keywords=shoes List all products with the keyword shoes without the keyword brown: http://www.mywebstore.com/cgi-bin/commerce?search=action&keywords=shoes+not+brown List all products with the keyword shoes in category A000: http://www.mywebstore.com/cgi-bin/commerce?search=action&category=A000&keywords=shoes List all categories: http://www.mywebstore.com/cgi-bin/commerce?listcategories=action List all products in category A000: http://www.mywebstore.com/cgi-bin/commerce?search=action&category=A000 Search for sku A0005: http://www.mywebstore.com/cgi-bin/commerce?search=action &sku=A0005 Show Preadd page for product A0005: http://www.mywebstore.com/cgi-bin/commerce?pradd=action&key=A0005 Add product A0005 to cart: http://www.mywebstore.com/cgi-bin/commerce?add=action&key=A0005 Add product A0005 to cart with a dynamic price of $20.00: http://www.mywebstore.com/cgi-bin/commerce?add=action&key=A0005 &qty=1&price=20.00 Add 2 products A0005 to cart: http://www.mywebstore.com/cgi-bin/commerce?add=action&key=A0005 &qty=2 Add 2 different products to cart: http://www.mywebstore.com/cgi-bin/commerce?multiadd=action &msku0=A0001&mqty0=1&msku1=A0005&mqty1=1

228

PDG Commerce 4.0 -- Technical Reference Guide

Chapter 5 -- Cart Actions

View Cart: http://www.mywebstore.com/cgi-bin/commerce?display=action View Cart using a specified template (not the default template): http://www.mywebstore.com/cgi-bin/commerce?display=action&template=Templates/Basket-custom.html Go to CheckOut page: http://www.mywebstore.com/cgi-bin/commerce?checkout=action Show Preadd page for product A0005 using a specified item template (not the default template): http://www.mywebstore.com/cgi-bin/commerce?preadd=action &key=A0005&itemtemplate=Templates/Sample-Item-custom.html Show Preadd page for several products at once (A0001, A0002, A0003): http://www.mywebstore.com/cgi-bin/commerce?multipreadd=action &keys=A0001,A0002,A0003 List all subcategories of a parent category A000: http://www.mywebstore.com/cgi-bin/commerce?listcategories=action&parent=A000 Display Basket template with no products, instead of BasketEmpty template if basket is empty: http://www.mywebstore.com/cgi-bin/commerce?display=action&emptyoverride=yes

PDG Commerce 4.0 -- Technical Reference Guide

229

Chapter 5 -- Cart Actions

230

PDG Commerce 4.0 -- Technical Reference Guide

Chapter 6

Softgood Data Tags


A reference of the special tags that can be placed in the softgood section

DG Commerce is known for it exemplary ability to allow your customers to purchase and download programs, accounts, and other data files. This purchasable data is referred to as softgoods. In addition to the standard softgood configurations (which can be set in the Merchant Administrator), PDG Commerce has the ability to customize the output of ThankYou and CreditAccept web pages depending on the purchased softgoods. The HTML code that can be embedded in these pages is called Softgood Data. For each softgood product purchased, PDG Commerce will place that products associated softgood data into the ThankYou and/or CreditAccept page. In addition to having static HTML code for your Softgood Data, PDG Commerce can change the Softgood Data to contain special information depending on the product and order. This is accomplished through special tags. PDG Commerce, when embedding the Softgood Data into the proper template, parses these tags and performs any action required. This chapter lists and explains the various tags that you can place in Softgood Data fields.

!---INVOICE--This tag is replaced with the invoice number of the order.

!---SKU--This tag is replaced with the sku of the item being purchase.

PDG Commerce 4.0 -- Technical Reference Guide

231

Chapter 6 -- Softgood Data Tags

!---QTY--This tag is replaced with the quantity of the item being purchased.

!---SCRIPT-NAME--This tag is replaced with the complete URL for PDG Commerce. This tag can be used to dynamically create PDG actions in the Softgood Data.

!---DELIVERPAYLOAD--This tag is replaced with a complete URL that your customer can use to download the purchased softgood, if a payload is defined for the product in the Merchant Administrator. The access to the download will be governed by the restrictions defined for the product in the Merchant Administrator. So if you are only allowing 2 downloads for 60 minutes after the product is purchased, this link will enforce that and will only succeed two times during 60 minutes after download. Note that this tag is exactly the same as placing the following code in your Softgood Data:
!---SCRIPT-NAME---?deliver=action&invoice=!---INVOICE---&sku=!--SKU---&qty=!---QTY---

To use this tag to create a download text hyperlink, use something like the following:
<a href=!---DELIVERPAYLOAD--->Click Here to Download</a>

To use this tag to create a clickable image to start the download, use something like the following:
<a href=!---DELIVERPAYLOAD---><img src=LOCATION_OF_IMAGE(/images/download.gif)></a>

!---EXEC--This special tag allows you to execute a separate program when the softgood product is purchased. This program can accomplish any other tasks you need completed that PDG Commerce does not complete itself. For example, this program can be used to generate license numbers and log those license numbers into a special license log file. The program can be any executable program for the operating system of the web server, including shell script, perl, or precompiled binaries. Your program must collect any additional inputs from the command line, and these inputs are discussed below. If any ouput from the program is to be displayed
232 PDG Commerce 4.0 -- Technical Reference Guide

Chapter 6 -- Softgood Data Tags

back on the ThankYou or CreditAccept template, your program should output this as standard out, like it was printing the output to the screen. Any output by your program to standard out will be printed in place of the !---EXEC--tag on the template. The program must be located in the PDG_Commerce directory. Note that for Unix servers you must do a ./ if file is in the PDG_Commerce directory and not a subdirectory of PDG_Commerce. As stated earlier, you can pass additional data to the program in the format of command arguments. These arguments appear as special tags that are embedded in the EXEC tag. A list and explanation of these possible inputs for the EXEC program and an example follows:

%e
This tag is replaced with the customers email address.

%a
This tag is replaced with the invoice number of the order.

%ln
This tag is replaced with the customers last name.

%fn
This tag is replaced with the customers first name.

%sku
This tag is replaced with the sku of the item being ordered.

%ct#
If any custom text is collected for the specified option, this tag will be replaced with that custom text. Note that the option number here is 0-based. So the first option will be option #0, the second is option #1, etc. To collect any custom text for the second option, you would use %ct1.

PDG Commerce 4.0 -- Technical Reference Guide

233

Chapter 6 -- Softgood Data Tags

%o#
This tag is replaced with the selected option selection for the specified option number. Note that the option number here is 0-based. So the first option will be option #0, the second is option #1, etc. So if you are selling a software program, and the first option is a list of operating systems and the customer chooses Macintosh, then %o0 will be replaced with Macintosh.

%passName
This tag is replaced with the associated passthrough field with the same name.

Example:
You have a C program that collects needed inputs and outputs a serial number, and may resemble something like:
... main (int argc, char **argv) { char *email = argv[1]; char *custfirstname = argv[2]; char *custlastname = argv[3]; char *invoice = argv[4]; char serialnumber[20]; ... GenerateSerialNumber (serialnumber, email, custfirstname, custlastname, invoice); ... printf (%s, serialnumber); } ...

This C program collects the email address, the customers name, and the invoice number from the programs command line. It uses it to create a serial number, and then prints that serial number to standard out. You do not have to use a C program - it is just provided here as an example. This can easily be a perl script or a shell script. This specific example program is next compiled, and stored in the PDG_Commerce directory under the name lic-gen. Note you do not need a cgi extension - this program is not a CGI program.

234

PDG Commerce 4.0 -- Technical Reference Guide

Chapter 6 -- Softgood Data Tags

Your Softgood Data may look something like this:


<p>You may download the program <a href=!---DELIVERPAYLOAD-->Click Here to Download</a>.</p> <p>Your serial number is <b><!---EXEC: ./lic-gen %e %fn %ln %a ---> </b>.</p>

When a customer purchases the product, this Softgood Data is placed in the Thank You and/or Credit Accept template. When the EXEC tag is encountered, PDG Commerce executes lic-gen, replacing the % arguments with the proper data. The output of the lic-gen program is then put in place of the EXEC tag.

PDG Commerce 4.0 -- Technical Reference Guide

235

Chapter 6 -- Softgood Data Tags

236

PDG Commerce 4.0 -- Technical Reference Guide

S-ar putea să vă placă și