Skip Headers

Oracle iStore Implementation and Administration Guide
Release 12.1
Part Number E13575-06
Go to Table of Contents
Contents
Go to previous page
Previous
Go to next page
Next

Advanced Display

This chapter covers the following topics:

Overview of Advanced Display Chapter

This chapter contains information on advanced display functionality in Oracle iStore. Also refer to the Oracle Integration Repository.

Advanced Content Tasks

This section contains advanced tasks to assign content (for example, images, HTML files) in your specialty sites.

See the chapter, Implementing Content, for an introduction to content components.

Creating New Content Components

After you create a new content component, you must customize the JSP where it will appear.

To create a new content component, log in to the Site Administration UI and select Advanced, Content Components, Create Content Component.

Guidelines

Keep in mind the following guidelines:

Assigning Media Objects to Content Components at the Site Level

This section contains information on assigning media objects to content components at the site level. For an overview of media objects in Oracle iStore, see the chapter, Implementing Content. You can assign content components to media objects at the Product or Section levels as well (see the section, "Creating and Maintaining Sections", in the chapter, Implementing the Catalog).

To assign a media object to a content component at site level, log in to the Site Administration UI and select Advanced, Content Components, Update.

Guidelines

Keep in mind the following guidelines:

Descriptive Flexfield Support

Descriptive flexfields (DFFs) allow users to extend Oracle applications to meet business requirements without the need for programming. You can use descriptive flexfields in the Oracle iStore Customer UI to gather information, important and unique to your business, that would not otherwise be captured.

Note that this document contains DFF setup and user information related directly to Oracle iStore. For complete details about flexfields, see the Oracle Applications Flexfields Guide.

Overview of DFFs in Oracle iStore

Oracle iStore merchants can capture information from customers in the shopping cart pages by setting up Oracle Order Capture DFFs. Two of Oracle iStore's product detail templates also support Oracle Inventory DFFs. After you set up DFFs in Oracle Forms, Oracle iStore uses its own JSPs --- along with Oracle CRM Technology Foundation APIs and renderers --- to display the fields in the UI. Merchants can utilize Oracle Order Capture DFFs to capture information that cannot be captured through defined order attributes. The information passes into the Oracle Order Management system and is viewable in the sales order forms when Order Management DFFs are enabled.

Following are the supported Customer UI areas for using DFFs:

Use Case Examples

The following use case examples can aid your understanding of the functionality:

DFF Process Flows

The process flows in this section depict how customers enter, edit, and remove cart-level and item-level DFF information.

Flow for Entering Cart-Level Information from Shopping Cart Page

Following is the flow:

  1. A user visits a site and adds one or more items to the shopping cart.

  2. The user selects the Additional Information action in the Shopping Cart page and presses the Go button.

  3. In the Cart Additional Information area of the Additional Information page, the user enters relevant data in the DFF fields. The user will be required to enter appropriate information in fields that the merchant has marked as required in the Oracle Forms setup screens. These fields will display an asterisk (*) next to them.

  4. The user saves the data.

  5. The user presses the Return to Shopping Cart button to return to the cart.

The following figure shows an example of how the Cart Information page might look in an implementation of Oracle iStore. Since the information is being entered at the cart level, no item information displays. In this example, Cart Additional Information displays at the top of the screen. The entry fields are: Reseller Name (showing the search flashlight icon next to it), Reseller Phone, and Reseller Contact, with values entered for each one. Buttons near the top of the screen are: Save and Clear. In the lower portion of the screen, the Item Additional Information area displays; under this area is a list of items, Wireless Service, Headset, and Envoy Deluxe Laptop. To the far right of each item, is an Item Information icon allowing customer to access the Enter Item Information page. At the top of the list of items is a button, Select Items and..., with the buttons Enter Information and Clear next to it. At the bottom of the screen is a button, Return to Shopping Cart.

Cart Additional Information Page Example

the picture is described in the document text

Flow for Entering Item-Level Information from Shopping Cart Page

Following is the flow:

  1. A user visits a site and adds one or more items to the shopping cart.

  2. The user selects the Additional Information action in the Shopping Cart page and presses Go.

  3. From the Item Additional Information area of the Additional Information page, the user selects an Item Information icon to access the Item Additional Information page for that item.

  4. In the Item Additional Information page, the user enters the DFF information and saves the data. Required fields are marked with an asterisk.

The following figure shows an example of how the Enter Item Information page might look in an implementation of Oracle iStore. In this example, the title, Enter Item Information displays at the top of the page. The DFF values the user can enter are: Support Contract Number and Context Value (with a search flashlight icon next to it). The buttons, Cancel and Apply, appear on the screen.

Enter Item Information Page Example

the picture is described in the document text

Flow for Editing or Replacing Information from Shopping Cart Page

Prerequisite: A user has already created a shopping cart and has added DFF information for an item at item or cart level.

  1. A user activates a shopping cart to retrieve the Shopping Cart page.

  2. The user selects the Additional Information action in the Shopping Cart page and selects Go.

  3. To replace cart-level information, the user enters/overwrites the information in the Cart Additional Information area of the Additional Information page and saves the data.

  4. To replace item-level information, the user selects the appropriate Item Information icon for the item he wishes to update and then enters new data in the fields in the Item Additional Information page, saving the data when he is finished.

Behavior and Guidelines for DFFs

The following points describe Oracle iStore guidelines and behavior for DFF implementations.

Shopping Cart and Payment Pages DFFs:

Product Detail Page DFFs:

  1. For the product detail DFFs, Oracle iStore supports DFF segments defined on the Inventory Item table.

  2. Only global flexfield segments are supported.

  3. Out-of-box, the seeded product templates, Product Detail without Image, Product Detail with Image, and Product Detail with Services show product detail DFFs. See the "Implementing the Catalog" chapter for details about these templates.

Implementing DFFs in Oracle iStore

The sections that follow discuss how to implement DFFs for the Oracle iStore Customer UI.

Oracle Forms DFF Setups

First, create the DFF segments and associated values using Oracle Forms' Descriptive Flexfields forms. Following are high-level steps to help you accomplish the implementation. For complete information, see the Oracle Applications Flexfields Guide.

Important: Be sure to review the guidelines in the section, "Behavior and Guidelines for DFFs", above.

Steps

  1. Log in to Oracle Forms with the Application Developer responsibility and choose Flexfield, Descriptive, Segments to open the Descriptive Flexfields Segments window.

  2. If setting up shopping cart or payment page DFFs, query for the flexfield with:

  3. If setting up product detail page DFFs, query for the flexfield with:

  4. Uncheck the Freeze Flexfield Definition checkbox to allow for changes to the flexfield definition.

  5. Set up flexfield segments: Select Segments and then map each segment you wish to use to a column, specified by the names ATTRIBUTE1 through ATTRIBUTE15. This column data (attributes 1-15) corresponds to columns with the same name in the ASO_QUOTE_HEADERS_ALL and ASO_QUOTE_LINES_ALL tables.

Example: Map "Sales Rep Email" to "ATTRIBUTE1."

  1. Once all the changes for DFF are done, check the Freeze Flexfield Definition checkbox to freeze the changes, and select the Save icon. This compiles the flexfield definition in the database.

  2. After you have set up the DFFs in Oracle Forms, perform the required Oracle iStore-specific steps, depending upon the type of DFF you are implementing:

Setting up DFFs for Shopping Cart Page

The Additional Information page -- accessible as a hyperlink from the Shopping Cart page -- is used to capture item- and cart-level DFF information.

Use the following steps to set up Shopping Cart page DFFs, after you have performed the required setups in Oracle Forms DFF windows:

Steps

  1. Set the profile option, IBE: Additional Shopping Cart Information, to Yes. See the "Profile Options" appendix for more information on the profile option.

  2. A site administrator has the flexibility to implement DFFs at cart-level, item-level or both, for each site. For this, two different templates are provided which you can map to display a specific JSP, according to the following instructions:

For JSP mapping instructions, see the "Implementing the Catalog" chapter. Remember, with Oracle iStore's template mapping functionality, you can map different JSPs to different site-language combinations.

Important: If the profile option, IBE: Additional Shopping Cart Information, is set to Yes, but the template mapping has not been set up, the Additional Information link will not display in the Shopping Cart page.

Setting up DFFs for Product Detail Pages

Out-of-box, Oracle iStore allows you to use DFF capability in three of the seeded product detail Display Templates -- Product Detail without Image, Product Detail with Image, and Product Detail with Services. See the "Implementing the Catalog" chapter for details about these templates.

If a DFF value is defined for an item, templates mapped at the product level display the prompt and the value of DFF global segments.

Steps

  1. To set up flexfield segments and values for products and their detail pages, log into Oracle Forms with Inventory responsibility.

  2. Navigate to the Inventory Item window and find the item for which flexfield values will be entered. Use the Inventory Organization that is set in the profile option, IBE: Item Validation Organization.

  3. Click on the rectangle enclosed within brackets next to the Description field in the Inventory Item window. A window opens with the flexfield segments set up in the previous steps.

  4. Enter values for the flexfield segments you want to display on the item detail page.

  5. Reboot the Apache server to clear the cache after entering the new data.

  6. Add the product(s) to a section, and map one of the product detail templates listed above at the product level. For steps, see the "Implementing the Catalog" chapter.

  7. To test, in the Customer UI, navigate to the product(s) detail page. The flexfield segment prompts and values should appear on the item detail page.

Sample Setup Displaying Different DFF Levels per Site

As discussed elsewhere in this section, out-of-box, Oracle iStore ships two templates for DFF implementation at the cart- and item-level. By default, these templates are not enabled; see the section, "Implementing DFFs in Oracle iStore", for implementation information about these templates and DFF display. The following presents a scenario for enabling DFFs at different levels for three different sites. This is accomplished by setting up unique template-JSP mappings for each site.

For steps to map JSPs to Display Templates at the site level, see the "Implementing the Catalog" chapter.

  1. Scenario 1: Implement only cart-level DFFs in Site 1

For Site 1, map only STORE_CART_ADDINFO_HEADER to ibeCScdHdrAdditionalInfo.jsp.

Thus, when the user selects the Additional Information action, cart-level DFFs display.

  1. Scenario 2: Implement only item-level DFFs in Site 2

For Site 2, map only STORE_CART_ADDINFO_LINE to ibeCScdLineAdditionalInfo.jsp.

Thus, when the user selects the Additional Information action, item-level DFFs display.

  1. Scenario 3: Implement both cart- and item-level DFFs in Site 3

For Site 3, map both the templates to the respective JSPs. Thus, when the user selects the Additional Information action, cart-level DFF information displays, and an LOV allows the user to select either cart or item information.

Note: Remember, along with these templates, the profile option, IBE: Use Additional Information, should be set to Yes.

Display Template Mappings Import and Export

Oracle iStore's Display Template Mappings Import/Export functionality allows you to export or import template mappings using Extensible Markup Language (XML) files. The functionality is implemented as two concurrent programs:

You can find an introduction to Display Templates in the chapter, Implementing the Catalog.

Template Mappings Import/Export Features and Benefits

Utilizing the template mappings import/export functionality can provide numerous benefits in your maintenance of Oracle iStore templates. Using the concurrent programs and XML files you can export, update, and import template:

In summary, this functionality's benefits and features include:

Note that the comma separated values (.csv) format is not supported for template mappings import/export.

Running the Template Mapping Export Concurrent Program

To export template mappings to an XML file, you use the iStore Template Mapping Export concurrent program. To set up debug functionality for the program, see "Setting up Debug for Template Mappings Concurrent Programs", in this chapter.

The following are the parameters you can choose from when running the export concurrent program:

Running the concurrent program will create an XML file. The name of the export file is system-generated. See the section, "Template Mapping Export Program Log File", below, for more details.

Template Mapping Export Program Log File

After running the concurrent program:

  1. View log file details of the export. To view the output, select View Output button on the View Request screen (from the menu select View, Requests).

  2. To save the output file, select File > Save As and save the output as an XML file from the browser. Note that you must set the profile option, Viewer Text, to be able to save the output from the browser.

  3. Edit the XML file as desired. For example, change site codes, file names, or template categories. Save and upload the file to the server on which your concurrent manager is running. Ensure that the user running the concurrent manager program has read-write permission on the server.

The log file contains such information as:

The following graphic shows an example of an XML file exported by the iStore Template Mapping Export Concurrent Program. The XML file shows the following text with appropriate XML tags: Template Programmatic Access Name, Row References, Name Language, Description Language, Seed Flag, Applicable to category, Keywords, Site Code, Site Name, Language Code, and File Name of XML file.

Template Mappings Export File Example

the picture is described in the document text

Running the Template Mapping Import Concurrent Program

To import template mappings from an XML file, you use the iStore Template Mapping Import concurrent program.

Prerequisites:

  1. In order to import template mappings, you must first upload the appropriate XML file to a directory on the application web server. For example, template1.xml is put in /nfs/group/crmeco/html through ftp on machine2.

  2. Ensure that the user running the concurrent manager program has read-write permission on the server.

  3. AutoConfig must be enabled in order for the template import feature to fully work. If AutoConfig is not enabled for the instance, upload the file to a directory of the machine that concurrent manager is running on. Here is how to find the machine that concurrent manager is running on:

  4. Consider setting of the Save after every successful template import input parameter --- If the autosave input parameter is turned on, a commit is called for the successful save of every individual template and its mappings. If autosave is turned off, the data is committed to the database only once for all of the counts of the templates and their mappings. If the rollback/commit segment is less, this may cause some issues in committing the data. In such a case, you should turn on the autosave and re-run the Template Import program.

The following are the parameters involved when running the import concurrent program:

Note: Seeded template mappings are ignored during the import process.

Template Mapping Import Program Log File

You can use the log file of the concurrent program to view details of the import, including:

For steps detailing how to view log files, see the "Concurrent Programs" chapter.

Setting up Debug for Template Mappings Concurrent Programs

Oracle iStore allows troubleshooting of the import/export concurrent program process by turning on the concurrent program's "Turn on trace" parameter. You can enable this flag for both the template mappings import and export concurrent programs.

Use the following steps:

  1. Log in to Oracle Forms using Application Developer responsibility.

  2. Navigate to Concurrent, Program, and find either the iStore Template Mapping Import program or the iStore Template Mapping Export program.

  3. Select the Parameters button.

  4. Find the DEBUG_FLAG parameter and select the Enabled checkbox.

  5. Save the changes.

  6. When you run either of the concurrent program for which you have enabled the debug flag, you will see the "Turn on trace" flag on the parameter screen. The debug information is included in the log file of the concurrent program. See the sections, "Template Mapping Export Program Log File" and "Template Mapping Import Program Log File", for more information.

Copying Template Mappings Between Sites in the Same Instance

You can transfer existing template mappings from one site to another within the same instance by doing the following:

  1. Run the export concurrent program with the desired parameters, selecting only one site in the export. For parameters, see the section, "Running the Template Mapping Export Concurrent Program".

  2. Modify the XML file's site parameter to reflect the Site Code of the site you wish to transfer the mappings to.

  3. Run the import concurrent program, selecting the desired parameters. For parameters, see the section, "Running the Template Mapping Import Concurrent Program".

Copying Template Mappings Between Instances

You can transfer existing template mappings (for all sites/categories/types) from one instance (for example, instance A) to another (for example, instance C) by doing the following:

  1. Run the export concurrent program from source instance, leaving Site Code, Template Type, and Template Category blank. For parameters details, see the section, "Running the Template Mapping Export Concurrent Program".

  2. Upload the export XML file to a directory accessible to the destination instance.

  3. Run the import concurrent program from the destination instance, selecting the desired import parameters. Be sure to enter the complete path of the XML file in the Source File Name field. For parameters details, see the section, "Running the Template Mapping Import Concurrent Program".

Advanced Product Relationships Procedures

This section contains information on advanced tasks surrounding product relationships. General information on relationships can be found in chapter, Implementing the Catalog.

Building Relationships Using Other than the Related Type

If you use any relationship type other than the seeded, supported relationship type Related, you must customize the Oracle iStore JSPs to retrieve the related items with the Java API:

oracle.apps.ibe.catalog.Item.getRelatedItems().

This method can retrieve related items of given an item ID and a relationship type. The method is also overloaded. See the Oracle Integration Repository for documentation of this method.

If the relationship type is also seeded in Oracle Inventory, then oracle.apps.ibe.catalog.Item.getRelatedItems() retrieves related items defined in Oracle Inventory as well as in Oracle iStore.

Seeded Relationship Types

Use the following Oracle iStore seeded relationship types build relationships:

Creating New Relationship Types

You can define new relationship types using the Site Administration Application.

To define a new relationship type, log in to the Site Administration UI and select Catalog > Relationships > Create Relationship.

Guidelines

Keep in mind the following guidelines:

Creating Relationships Using SQL Rules

The SQL method of creating relationship rules in Oracle iStore is used in place of the mapping rules by highly technical personnel with knowledge of SQL. Most site managers will use the mapping rules.

Note: You cannot use Relationship rules created using the Oracle iStore rule builder and the SQL rules together for the same relationship.

Caution: If you set up an SQL rule with a relationship type, you cannot delete it.

If a relationship is driven from an SQL rule type, the SQL statement is executed at runtime to get the actual item-level relationships. The SQL query can have up to 10 bind variables (and unlike the mapping rules, SQL Rules are not pre-evaluated). These SQL queries are executed at runtime using the input parameters supplied from the JSP page.

SQL Relationship Rules Example:

A customer is selling books on his web site and has set up the attribute1 in the DFF segment of mtl_system_items_b as the author of the book. By defining an SQL type relationship he wants to retrieve all the books belonging to the same author. Here is his sample SQL rule:

SELECT msi2.inventory_item_id

FROM mtl_system_items_b msi1, mtl_system_items_b msi2

WHERE msi1.organization_id = msi2.organization_id

AND msi1.attribute1 = msi2.attribute1

AND msi1.inventory_item_id = :item_id

AND msi1.organization_id = :organization_id

During runtime, when the value for the bind variable(s) is passed in, the SQL type relationship will retrieve all the items (books) whose author is the same as the item (book) being displayed.

Use the following procedure to create relationships using either the seeded relationship types or types you have created.

Prerequisites

To create relationships using SQL, log in to the Site Administration UI and select Catalog, Relationships (select relationship), Update, Ceate a SQL Rule.

Guidelines

Keep in mind the following guidelines:

Using Display Styles for Default Display

Note: It is recommended that you use Display Templates instead of Display Styles for displaying product information in your specialty sites. See the chapter, Implementing the Catalog.

You can choose to display products inside a section template based on the Oracle Inventory category to which the products belong. While none of the out-of-the-box Display Templates use display styles, you can create your own custom section Display Template to use the Display Styles functionality. The custom section Display Template can be created so that each product under the section can be displayed differently -- based on its inventory category -- using a Display Style.

The default category set specified by the profile option, IBE: Category Set, contains your sites' product inventory. You can map each category from Oracle Inventory to a Display Style to present content at the category level.

If there are no item-level mappings to Display Styles, Oracle iStore checks for the category-level settings and uses them to display the product.

In Oracle iStore, the display styles functionality allows you to specify a style by which categories of products will display. This allows category-level default display of products in your sites. You can select product categories from within the category set mapped to the IBE: Category Set profile option. Default product display is determined by the display style only when no product-level display parameters are set.

Each display style maps to an Oracle iStore template, which then calls the appropriate template source file (JSP) for the site and language mapping.

When you create and save new display styles in the Display Styles tab, you choose site-level default Display Templates for them. These display styles then appear in the Products and Categories pages. In Products and Categories pages, you can choose a template name to correspond with each display style for a product or a category.

You also can create new Display Styles and register them in the Display Styles pages (in the Advanced tab). See: the section, "Creating Custom Display Styles", in this chapter.

Enabling Display Styles

You must set the following profile option in order to enable the Display Styles pages in the Site Administration UI Advanced tab, and to be able to select display styles as defaults for product display in the Catalog, Products and the Catalog, Sections pages.

When the profile option is set to Yes, the following occurs in the Site Administration UI:

How Customer UI Pages Display Products with Display Style Mappings

When a Customer UI page displays a product using a particular display style, Oracle iStore selects the appropriate template as follows:

Note: Product-level (item-level) configurations override category-level and site-level settings.

Seeded Display Styles

When Oracle iStore ships, five seeded display styles are already set up. In the Site Administration UI, select Advanced, Template Manager, Display Styles to view seeded display styles.

The table below shows the seeded display styles and the Display Templates that they map to out-of-the-box.

Seeded Display Styles and Default Display Template Mappings
Name Programmatic Access Name Default Display Template Name and
Prog. Access Name
Featured Product STORE_FEATURED_PRODUCT Catalog - Featured Product
STORE_CTLG_FEATURED_ITEM (ibecfitm.jsp)
Product Detail STORE_PRODUCT_DETAIL Product Detail
STORE_CTLG_ITEM_DETAIL (ibecitmd.jsp)
Product Small Description STORE_PRODUCT_SMALL_DESCR Catalog - Product Small Description
STORE_CTLG_LEAF_ITEM (ibeclitm.jsp)
Product Details STORE_PRODUCT_DETAILS Catalog - Product Details
STORE_CTLG_ITEM_DETAILS (ibeCCtdItemDetail.jsp)
Product Description STORE_PRODUCT_DESCR Catalog - Product Description
STORE_CTLG_LEAF_ITEM_INCL (ibeCCtdLeafItem.jsp)

Creating Custom Display Styles

Use the following procedure to create additional display styles beyond those provided out-of-the-box.

Prerequisites

To create custom display styles, log into the Site Administration UI and select Advanced, Template Manager, Display Styles, Create Display Style.

Guidelines

Keep in mind the following guidelines:

Configuring Product Presentation at the Category Level

Every product in the product catalog is mapped to a category in Oracle Inventory. Using media, Display Templates, and display styles, you can configure category-level defaults for product display.

Use this procedure to modify defaults for categories. You can only specify defaults for categories belonging to the primary display category set (the value of the IBE: Category Set profile option).

Prerequisites

Mapping Category-Level Default Templates

To map category-level default templates, log into the Site Administration UI and select Advanced, Categories, Assign Templates.

Guidelines

Keep in mind the following guidelines:

Mapping Category-Level Default Media Objects

To map category-level default media objects, log into the Site Administration UI and select Advanced, Categories, Assign Content.

Deep Linking Support

When advertising your specialty sites and products in e-mails and other Web sites, you can provide deep links from the advertisement to your sites.

Overview of Deep Linking

When users select a deep link, they are automatically directed to the appropriate target based on the parameters in the URL. Possible target pages include, but are not limited to, the following:

Implementing Deep Links

A deep link's URL points to the entry page, ibeCZzpEntry.jsp. To the URL, you append specific parameters that are either required or optional, depending on the deep link target and your Oracle iStore setups. The parameters enable redirection of the user to the intended target page.

Deep Link Targets

The following table summarizes the targets specified in the URL parameters.

Deep Link Targets
Parameter Data Description
Minisite ID or access name The target specialty site
Responsibility ID The responsibility that should be assigned to the user
Language The display language
Section ID A section within a specialty site
Item ID An item, to display its detail page or add it to a shopping cart
Shopping cart A shopping cart with or without items
Quote ID A published quote's number
Contract number A published quote's contract number
UOM The UOM of an item being added to a shopping cart
Quantity The item quantity being added to a shopping cart
User name The user name for login
Password The password for login
Affiliate The affiliate that posted the deep link
Source URL The URL where the deep link was posted
Source e-mail The e-mail address to which the deep link was sent
Party The party ID of the registered user who received the deep link
Marketing campaign The marketing campaign using the deep link
Marketing source code The marketing source code used in the deep link
Promotion code Promotion code used in the deep link
Merchant-definable parameters Ten parameters that you can define to capture other information in the deep link URL

Deep Link Procedure

Use the following procedure to create a deep link.

Steps

  1. Create a deep link URL that uses the following syntax:

    http://<domain name>/<directory path>/ibeCZzpEntry.jsp?<go parameter>&<destination parameters>&<globalization parameters>&<tracking parameters>.

    For lists of supported parameter values, see:

For a sample deep link URL, see the section, "Deep Link Example", below.

  1. Include the deep link in an e-mail, Web site advertisement, or any other appropriate location.

Deep Link Example

The following deep link adds an item to the user's active shopping cart:

https://oraclestore.oracle.com/OA_HTML/ibeCZzpEntry.jsp?go=buy&item=293947&qty=1

This deep link redirects the user to the URL:

https://oraclestore.oracle.com/OA_HTML/ibeCCtpBuyRoute.jsp?item=293947&qty=1

This page is the user's active shopping cart, with one unit of the Oracle Database Enterprise Edition (item ID 293947) added. The active shopping cart also holds any items that the user had previously added.

Go and Destination Parameters

Destination parameters specify the link's destination as commanded by the go parameter. The following table lists the supported values. The parameters are required unless otherwise stated.

Go and Destination Parameters
Destination Go Parameters Destination Parameters
Specialty site home page. The home page of the specialty site in the site parameter. If the site parameter is not specified, the user is directed to the default specialty site's home page. See the table, "Parameters for Globalization Data" for details about the site parameter. go=catalog None
Section page go=section section=<section ID>
Item detail page go=item item=<item ID>&section=<section ID>
The section parameter is optional.
Shopping cart go=cart None
Quote go=quote quote=<quote ID>&contract=<contract number>
The contract parameter is optional.
Add one item to a shopping cart go=buy item=<item ID>&qty=<quantity>&uom= <UOM>&promotion=<promotion code>&msource=<marketing source code ID>&ref=<referrer URL>
The promotion, msource, and ref parameters are optional.
The ref parameter specifies the JSP to redirect the user to after adding the item to the cart.
Add multiple items to a shopping cart. When creating a deep link that adds multiple items to a shopping cart, you cannot include model bundles or configurable products. go=buy item_0=<item ID>&qty_0=<quantity> &uom_0=<UOM>&promotion_0=<promotion code>&msource_0=<marketing source code ID>&item_1=<item ID>&qty_1= <quantity>&uom_1=<UOM>&promotion_1= <promotion code>&msource_1= <marketing source code ID> ... &num=<number of line items>&ref= <referrer URL>
Use the sequential numbering convention in this example, beginning with item_0.
The promotion, msource, and ref parameters are optional.
The ref parameter specifies the JSP to redirect the user to after adding the items to the cart.
Sign in or register user go=signin ref=<referrer>
The ref parameter is optional. It specifies the JSP to redirect the user to after login. If the parameter is not set, the user is redirected to the specialty site home page.
Other pages go=<JSP name> None

Globalization Parameters

Globalization parameters specify specialty site, responsibility, and language information. Globalization parameters are optional unless otherwise stated.

The following table lists the globalization parameters and their supported values.

Parameters for Globalization Data
Globalization Data Globalization Parameters
Specialty Site site=<minisite ID or access name>
The site parameter is mandatory if the profile option IBE: Default Specialty Site is not defined.
Responsibility respid=<responsibility ID>
Display language language=<language code>
The deep link defaults to the specialty site's default language if the language parameter is not set.

Tracking Parameters

Tracking parameters specify link tracking information. Tracking parameters are optional.

The following table lists the tracking parameters and their supported values.

Parameters for Tracking Data
Tracking Data Tracking Parameters
The affiliate that posted the deep link affiliate=<affiliate code>
Marketing campaign campaign=<campaign code>
Marketing source code msource=<marketing source code ID>
The party ID of the registered user to whom the deep link was e-mailed party=<party ID>
The e-mail address to which the deep link was sent src_email=<source e-mail>
The URL where the deep link was posted src_url=<source URL>
Merchant-definable parameters param0=<parameter>
...
param9=<parameter>
You can define the ten parameters param0 through param9 to meet other tracking needs.

Customizing Templates

Oracle iStore Customer UI page designs use common components, such as tabs, bins, and common section pages. Each component is based on a template, and the templates are combined to create a site web page. The templates control the appearance of the site through the use of JavaServer Pages (JSP), which combine Application Programming Interfaces (API) to call dynamic data and HTML to present static data. The routing and processing pages determine what to do with the templates.

Oracle iStore comes packaged with a complete set of JSP templates needed to run the site. If you want to expand the functionality of the site web pages or customize the pre-packaged templates, then you need to identify the flow of the application and the JSP templates needed to implement the flow. To help determine page flows, see the chapter, Customer Application Process Flows.

How Customer UI Pages Call Templates

Your Customer UI page can call for templates to display in two ways:

Templates Called by Logical Name

You assign a template name and a programmatic access name to a template using the Advanced, Template Manager pages. You then assign one or more physical JSP files to combinations of sites and languages. At runtime, Oracle iStore looks at the customer's language and displays the files that are assigned to the customer's language for the site the customer is in. If no file is specified for the language, then the default source file for that site and all languages is displayed. If no file is specified for the site and all languages, then the default file for all sites and all languages is displayed.

You also can use Oracle iStore's Template Mappings Import/Export functionality to preserve existing template mappings and avoid overwriting your customized template mappings

Templates Called Indirectly

You can indicate that the template associated with a given display style will be used when displaying a product.

Note: Although using the display styles functionality provides additional flexibility, none of the out-of-the-box templates use the display styles concept.

Oracle iStore uses the following process to determine which template to use when displaying a product according to a given display style.

Product Template Display Example

  1. For a given display style, Oracle iStore uses the template that you associated with the product.

  2. If no template is associated at the product level, Oracle iStore retrieves the template associated with the product's primary display category.

  3. If no template is associated with the product or category, Oracle iStore retrieves the default template for the display style.

Template Customization Tasks

To customize templates for your site, perform the following tasks after planning your web page designs:

  1. Gain an understanding of the recommended and/or mandatory page flows through your specialty sites. See the "Customer Application Process Flows" chapter for more information.

  2. Create template source files (JSPs) for pages or for blocks within pages using Oracle JDeveloper. If you are implementing multiple languages, create source files in each of the languages which you plan to support. Or, copy the seeded JSPs (save with a new name) and apply your modifications; then, map the new JSP to the page flow through Template Manager. See the sections, "Creating Template Source Files" and "JSP Naming Conventions", in this chapter, for more information.

  3. Choose Oracle iStore template names. See the section, "Creating New Templates", in this chapter, for more information.

  4. Register templates in the Site Administration UI. See the section, "Registering New Templates in the Template Manager", in this chapter, for more information.

  5. Assign template source files to templates. For instructions, see the section, "Mapping Source Files to Display Templates", in the chapter, Implementing the Catalog.

  6. If desired, export or import existing Display Template mappings.

See the Oracle Integration Repository for more information about Oracle iStore Java APIs.

Upgrade Strategy for Custom JSPs

Note: During upgrades, Oracle iStore does not alter custom templates and their JSP mappings -- nor does it overwrite mappings of JSP files to specific site-language combinations.

Creating Template Source Files

You can create new JSP templates to replace or add to the Oracle iStore seeded templates. Different physical JSP templates can be used at run-time based on the user's language and the site being accessed.

Caution: Never change an original JSP from Oracle iStore. To modify a JSP, make a copy of the original JSP and modify only the copy.

It is recommended that you use Oracle JDeveloper to create and modify JSP templates. Although you can create JSPs with any HTML or text editor, Oracle JDeveloper also enables you to debug the code.

The main skills required to create and modify templates are HTML and Java. Java language methods in the HTML content generate dynamic content on the web page.

Example JSP Structure

The structure of a JSP is demonstrated in the following HTML example.

<HTML>
<% import="oracle.apps.ibe.util.*" %>
....
....
<P> Name : <% = customer.getName(12334) %> 

Where customer is a Java class on the server and getName is a public method in the class to retrieve the customer name.

<P> Picture: <IMGSRC = "<%= customer.getPict(12334) %>"> 

This step can retrieve the image file name from the customer Java class on the server.

....
</HTML>

Where to Store JSP Source Code

The default UNIX directory for JSP source code is $COMMON_TOP/html directory. Store all of your source JSPs in this directory. This will make future Oracle iStore upgrades less problematic.

Reboot the Server

Changes made to the JSPs may not appear immediately on the web sites, since you must reboot the Apache server before changes take effect.

Deleting the server cache has the same effect as rebooting the Apache server. The server cache is located in the UNIX directory $COMMON_TOP/html/_pages/oa_html. This cache directory contains .java and .class files that are generated after the JSP that has been called is translated. These can be safely deleted and will be regenerated when the JSP is invoked through an HTTP request.

After creating or modifying templates, you can pre-compile them to check for compilation errors and to increase the speed of the initial loading.

JSP Naming Conventions

Modify JSP source files only after copying them first. As a best practice, all modified JSPs should follow a standard naming convention.

Note that having a standard naming convention is a best practice suggestion only; it is not mandatory to use a specific naming convention in order for the JSPs to be valid.

Creating New Templates

Creating new templates involves giving the new templates names, descriptions, programmatic access names, and specifying the different physical JSP source files to be used at run-time based on language and specialty site.

The template name is the catalog name that is easy to communicate and use when planning your page designs. An example is ProductHome. Template names may be translated for convenience in site administration.

Every template name also has a programmatic access name that is short, unique, and not as descriptive. You will be using the programmatic access names to access the templates via an Oracle iStore public API in your JSP page. An example is phome. Programmatic access names are not translated.

The template name and programmatic access name potentially can represent several physical template source files. Each physical file can be assigned to combinations of sites and languages. When Oracle iStore retrieves an assigned template name, the template source file is determined by the mapping of the template name to the current site and language.

The Display Manager is the class that implements Oracle iStore's Template Manager. The Template Manager maintains a mapping from a template programmatic access name to a physical name (JSP) in the file system.

To use the Site Home Page as an example, STORE_HOME (programmatic access name) maps to ibezhome.jsp (physical file). When a web site is active, the Display Manager determines which physical file to call, based on the site being accessed and the user's language. Different source files can be called for different site-language combinations.

The following table shows examples of file names for a fictitious template called ProductHome.

Sample JSP File Names for the Template Name ProductHome
Template Name Programmatic Access Name File Specialty Site Language
ProductHome phome hom1f.jsp Site 1 French
ProductHome phome hom1e.jsp Site 1 English
ProductHome phome hom2f.jsp Site 2 French
ProductHome phome hom2e.jsp Site 2 English

In this example, if a French customer enters Site 1 the site displays the home page file hom1f.jsp, which displays information in the French language.

An English customer in the same Site sees hom1e.jsp instead.

If merchants simply want to display the same information in a different language, they can use just one JSP and use AK regions or FND messages for translation. Mapping different JSPs to different languages would be used to display different information, not just translated information.

You can find steps to use AK regions and FND Messages in the Oracle Self Service Implementation Manual.

Registering New Templates in the Template Manager

You must register new templates using the Advanced tab, Template Manager subtab in the Site Administration UI. Use this procedure to create or modify template names and programmatic access names, select default site-level template source files for them, and assign other template source files to them according to site and language settings.

For a list of seeded templates, see the "Seeded Display Data" appendix.

Prerequisites

To register a new template, log in to the Site Administration UI and select Advanced > Template Manager > Add Template.

Guidelines

Keep in mind the following guidelines:

Understanding Catalog Flow

In preparing to customize Oracle iStore's catalog display, you must first understand the flow involved in the seeded Oracle iStore catalog templates and know the logical name, physical file, and description for each template. Understanding the interactions between the catalog templates simplifies the task of customizing them.

The catalog display follows either a section display flow or an item display flow.

Section Display Flow

This section discusses the flow of section template display using either Fixed Layout or Configurable Layout.

For an introduction to section Fixed Layout and Configurable Layout, see the chapter, Implementing the Catalog.

Section Display Flow for Fixed Layout

Oracle iStore uses the following flow to display a section when Fixed Layout is being used:

  1. When a section link is selected, the request goes to the display routing page, STORE_CTLG_SCT_ROUTE (ibeCCtpSctDspRte.jsp), which determines which section processing template should be used and forwards the request to that template.

  2. The section processing template sets the necessary attributes in the PageContext.REQUEST_SCOPE (including the logical template name of the center display page) and forwards to STORE_CTLG_SCT_COMMON (ibeCCtdCmnSt.jsp).

  3. STORE_CTLG_SCT_COMMON (ibeCCtdCmnSt.jsp) displays the section.

Section Display Flow for Configurable Layout

Oracle iStore uses the following flow to display a section using Configurable Layout:

  1. When a section link is selected, the request goes to the display routing page, STORE_CTLG_SCT_ROUTE (ibeCCtpSctDspRte.jsp), which determines which Configurable Layout template should be used and forwards the request to that template. If the section is using seeded Configurable Layout, the layout template will be STORE_SCT_CONFIGURABLE_LAYOUT (ibeCCtdCmnSctLayout.jsp).

  2. The STORE_SCT_CONFIGURABLE_LAYOUT (ibeCCtdCmnSctLayout.jsp) gets the bin template mapped to each location and the Display Template mapped to the center location, and displays the JSP pages mapped to those templates.

Section Routing Page

STORE_CTLG_SCT_ROUTE (ibeCCtpSctDspRte.jsp) is the routing page for sections. It contains the processing logic for determining which template to use when displaying a section. If there is no template associated with a section, the routing page determines which default template to use based on the hierarchy data setup. There are three default templates:

The section routing page applies the following rules when determining which template should be used to display a section:

  1. If the section is the site's root section, forward to STORE_CTLG_FSUBSCT_FWD (ibeCCtpFwdSubSct.jsp). The site's root section is treated as a virtual section and the request is forwarded to its first navigational subsection.

  2. If the section has a template associated with it (for Fixed Layout, it is a Display Template set up in the Section, Templates, Display Template page; for Configurable Layout, it is the seeded or a custom Configurable Layout set up in the Sections, Templates, Layout page), forward to that template.

  3. If the section is a Leaf section, forward to STORE_CTLG_LEAF_SCT_SINGLE (ibeCCtpLeafSctSs.jsp).

  4. If the section is a non-leaf section and the section has featured subsections, forward to STORE_CTLG_FSUBSCT (ibeCCtpFSubSct.jsp).

  5. Otherwise, forward to STORE_CTLG_SCT_BULLET_SUBSCT (ibeCCtpStBlSuSt.jsp).

Common Section Display Page Used in Fixed Layout

STORE_CTLG_SCT_COMMON (ibeCCtdCmnSt.jsp) is the common display page used for displaying sections when using Fixed Layout. It displays each portion of the common layout for section pages by including the JSP that handles the display in that location. STORE_CTLG_SCT_COMMON includes the following components:

See the section, "Example for Fixed Layout", in this chapter, for an example.

Common Section Display Page Used in Configurable Layout

STORE_SCT_CONFIGURABLE_LAYOUT (ibeCCtdCmnSctLayout.jsp) is the seeded common layout page used for displaying sections using Configurable Layout. It gets the template mapped to each location and the Display Template mapped to the center part, and displays the JSP pages mapped to those templates. STORE_SCT_CONFIGURABLE_LAYOUT includes the following components:

See the section, "Example for Configurable Layout", in this chapter, for an example.

Example for Fixed Layout

In the following example assume that the data is set up such that template STORE_CTLG_LEAF_SCT_SINGLE is associated with section 1000. This example illustrates the flow through the catalog templates when a user selects on the link ibeCCtpSctDspRte.jsp?section=1000.

Catalog Template Flow for Link ibeCCtpSctDspRte.jsp?section=1000

the picture is described in the document text

Example for Configurable Layout

In the following example assume that the data is set up such that section 2000 is using Configurable Layout, and select template STORE_CUST_ACC_WELCOME for the left 1 location, STORE_CTLG_SCT_BROWSE for the left 2 location, STORE_GLOBAL_STORE_BIN for the right 1 location, and STORE_CTLG_LEAF_SCT_SINGLE_INCL for the Display Template in the center. This example illustrates the flow through the catalog templates when a user selects on the link ibeCCtpSctDspRte.jsp?section=2000.

Catalog Template Flow for Link ibeCCtpSctDspRte.jsp?section=2000

the picture is described in the document text

Item Display Flow

Oracle iStore uses the following flow to display an item:

  1. When an item link is selected, the request goes to STORE_CTLG_ITM_ROUTE (ibeCCtpItmDspRte.jsp) which determines the item template to use (the template for display style STORE_PRODUCT_DETAILS) and forwards the request to that template. The default template is STORE_CTLG_ITEM_DETAILS (ibeCCtdItemDetail.jsp).

  2. The item template displays the item detail page.

Template Pairing

For each section display, there is a pair of templates:

The section processing page specifies which center display page should be used. The following naming convention can be used to identify which section processing page corresponds to which center display page.

Template Pairing Example

Product Detail section Display Template:

For a list of seeded templates, see the "Seeded Display Data" appendix.

Customizing Section Templates

The following options are presented:

Fixed and Configurable Layouts

For both Fixed Layout and Configurable Layout, you can customize the following:

  1. Customize the section routing behavior -- See the section, "Customizing the Section Routing Behavior", below, for details.

  2. Customize the section browse bin -- See section, "Customizing the Section Browse Bin", in this chapter, for details.

  3. Customize the section path -- See the section, "Customizing the Section Path", in this chapter, for details.

Fixed Layout

For Fixed Layout, you have the following additional customization options:

  1. Customize the section template common fixed layout -- See the section, "Customizing the Section Template Common Fixed Layout", in this chapter, for details.

  2. Create a section template with the common fixed layout -- See the section, "Creating a Section Page With a Common Fixed Layout", in this chapter, for details.

  3. Create a section template with custom fixed layout -- See the section, "Creating a Section Page With a Custom Fixed Layout", in this chapter, for details.

Configurable Layout

For Configurable Layout, you have the following additional customization options:

  1. Customize the section template common Configurable Layout -- See the section, "Customizing the Section Template Common Configurable Layout", in this chapter, for details.

  2. Create a custom Configurable Layout -- See the section, "Creating a Custom Configurable Layout", in this chapter, for details.

  3. Create a central Display Template for Configurable Layout -- See the section, "Creating a Center Display Template for Configurable Layout", in this chapter, for details.

Customizing the Section Routing Behavior

In most cases, the section routing behavior will not need changes since it is data driven. STORE_CTLG_SCT_ROUTE (ibeCCtpSctDspRte.jsp) contains processing logic for determining the template to forward to based on the template associated with a section. If the section routing behavior needs to be changed (for example, to change the default destination pages when no template is associated with a section), customize STORE_CTLG_SCT_ROUTE (ibeCCtpSctDspRte.jsp).

Steps

  1. Copy ibeCCtpSctDspRte.jsp into a new JSP.

  2. Make the necessary changes in the new JSP.

  3. Modify the template data setup. In this case, the same logical template name should be used because STORE_CTLG_SCT_ROUTE is used in all other JSPs when building links to sections.

  4. Log in to the Site Administration UI and add the necessary logical to physical template mappings for STORE_CTLG_SCT_ROUTE. In the Template Details page, add a new source file for the new JSP. To use this source file for all sites and all languages, add a mapping for ALL sites and each installed language.

    For example, if French and American English are installed, add two rows in "Specialty Site And Language Mappings":

Each time a new language is added, you must add a new mapping.

Customizing the Section Browse Bin

If the display of the section Browse Bin (section navigation bin) needs to be changed, customize STORE_CTLG_SCT_BROWSE (ibeCCtdSctBrwsBin.jsp).

Steps

  1. Copy ibeCCtdSctBrwsBin.jsp to a new JSP.

  2. Make the necessary changes in the new JSP.

  3. Modify the template data setup. In this case, the same logical template name should be used because STORE_CTLG_SCT_BROWSE is used in other JSPs when including the browse bin.

  4. Log in to the Site Administration UI and add the necessary logical to physical template mappings for STORE_CTLG_SCT_BROWSE. In the Template Details page, add a new source file for the new JSP. To use this source file for all sites and all languages, add a mapping for ALL sites and each installed language.

    For example, if French and American English are installed, add two rows in "Specialty Site And Language Mappings":

Each time a new language is added, you must add a new mapping.

Customizing the Section Path

If the display of the section path needs to be changed, customize STORE_CTLG_SCT_PATH (ibeCCtdSctPath.jsp).

Steps

  1. Copy ibeCCtdSctPath.jsp into a new JSP.

  2. Make the necessary changes in the new JSP.

  3. The template data setup will need to be modified. In this case, the same logical template name should be used because STORE_CTLG_SCT_PATH is used in other JSPs when including the path traversed.

  4. Log in to the Site Administration UI and add the necessary logical to physical template mappings for STORE_CTLG_SCT_PATH. In the Template Details page, add a new source file for the new JSP. To use this source file for all sites and all languages, add a mapping for ALL sites and each installed language.

    For example, if French and American English are installed, add two rows in "Specialty Site And Language Mappings"

Each time a new language is added, you must add a new mapping.

Customizing the Section Template Common Fixed Layout

In the seeded templates, all the section templates using Fixed Layout share the same layout. This layout is specified in STORE_CTLG_SCT_COMMON (ibeCCtdCmnSt.jsp). All section pages using Fixed Layout are ultimately displayed by this page, with the center display page changing dynamically based on the attributes set by the section processing page. If the common layout model will be used, but the layout needs to be changed, customize STORE_CTLG_SCT_COMMON (ibeCCtdCmnSt.jsp).

Steps

  1. Copy ibeCCtdCmnSt.jsp into a new JSP.

  2. Make the necessary changes in the new JSP.

  3. The template data setup will need to be modified. In this case, the same logical template name should be used because the processing section JSPs forward to STORE_CTLG_SCT_COMMON to display the section.

  4. Log in to the Site Administration UI and add the necessary logical to physical template mappings for STORE_CTLG_SCT_COMMON. In the Template Details page, add a new source file for the new JSP. To use this source file for all sites and all languages, add a mapping for ALL sites and each installed language.

    For example, if French and American English are installed, add two rows in "Specialty Site And Language Mappings":

Each time a new language is added, you must add a new mapping.

Creating a Section Page With a Common Fixed Layout

To provide custom section display, create new section pages. If the new section display will use a common layout, two new JSPs need to be created.

Note: The CENTER_DISPLAY_PAGE used in this example is only a sample logical template used for the purposes of example, not a real template seeded out-of-the-box.

Steps

  1. Create a section processing page. This can be done by copying an existing section processing page (such as ibeCCtpFSubSct.jsp) or using the example below as a guideline.

    <%@page language="java" %>
    <%@page import="oracle.apps.ibe.util.*" %>
    <%@page import="oracle.apps.ibe.catalog.*" %>
    <%@page import="oracle.apps.ibe.store.*" %><%@page import="oracle.apps.ibe.displaymanager.DisplayManager" %>
    <%@page import="oracle.apps.jtf.base.Logger" %>
    <%@include file="ibeCZzpHeader.jsp" %>
    <%
      String JSP_PAGE_NAME = "sectionProcesssPage.jsp";
      String lSectionIdStr = "";
      String lCenterDisplayPage = "";
      String lBeginIndexStr = "";
      /* Welcome Bin */
      pageContext.setAttribute("showWelcomeBin", "true",
                               PageContext.REQUEST_SCOPE);
      /* Center Display Page *
      lCenterDisplayPage = 
    DisplayManager.getTemplate("CENTER_DISPLAY_PAGE").getFileName();
      if(lCenterDisplayPage == null)
      {
        lCenterDisplayPage = ""
        IBEUtil.log(JSP_PAGE_NAME,
                    "Null template found for logical template name " +
                    "CENTER_DISPLAY_PAGE", 
                   Logger.ERROR);
      }
      pageContext.setAttribute("centerDisplayPage", lCenterDisplayPage,
                               PageContext.REQUEST_SCOPE);
      /* Get/Set section ID */
      lSectionIdStr =
        (String) pageContext.getAttribute("section",
                                          PageContext.REQUEST_SCOPE);
      if(lSectionIdStr == null || lSectionIdStr.equals(""))
      {
        lSectionIdStr = (String) request.getParameter("section");
        if(lSectionIdStr == null)
        {
          lSectionIdStr = "";
          IBEUtil.log(JSP_PAGE_NAME, "Section is null", Logger.ERROR);
        }
      }
      pageContext.setAttribute("section", lSectionIdStr,
                                PageContext.REQUEST_SCOPE);
      /* Get/Set beginIndex */
      lBeginIndexStr =
     (String) pageContext.getAttribute( "beginIndex",
                                        PageContext.REQUEST_SCOPE);
      if (lBeginIndexStr == null || lBeginIndexStr.equals(""))
      {
        lBeginIndexStr = request.getParameter("beginIndex");
        if (lBeginIndexStr != null)
        {
          pageContext.setAttribute( "beginIndex", lBeginIndexStr,
                                    PageContext.REQUEST_SCOPE);
        }
      }
      if (IBEUtil.showPosting())
      {
        // set item ids in the PageContext.REQUEST_SCOPE for use by
        // eMerchandising postings
        int[] itemIds = new int[0];
        // code to populate itemIds based on the items that will be displayed
        // on this section page
        if (itemIds.length > 0)
          pageContext.setAttribute("itemIds", itemIds, PageContext.REQUEST_SCOPE);
      }
      String lCommonPage =
        DisplayManager.getTemplate("STORE_CTLG_SCT_COMMON").getFileName();
    %>
       <jsp:forward page="<%=lCommonPage%>" />
  2. Create a center display page. This can be done by copying an existing section center display page (such as ibeCCtdFSubSctI.jsp) or using the example below as a guideline.

    <%@include file="ibeCZzpRuntimeIncl.jsp" %>
    <%@page language="java" %>
    
    <%@page import="oracle.apps.ibe.util.*" %
    
    <%@page import="oracle.apps.ibe.catalog.*" %>
    <%@page import="oracle.apps.ibe.store.*" %>
    <%@page import="oracle.apps.ibe.displaymanager.*" %>
    <%@page import="oracle.apps.jtf.base.resources.Architecture" %>
    <%@page import="oracle.apps.jtf.base.interfaces.MessageManagerInter" %>
    <%@page import="oracle.apps.jtf.base.Logger" %>
    <%
    
      // processing logic to retrieve all section and item information that will
      // be displayed on the page
      boolean bSectionLoaded = false;
      Section s = null;
      // declare variables for other objects that will be displayed:
      // for example, featured subsections, navigational subsections, items, 
      // item prices, etc.
      String lSectionIdStr =
    
        IBEUtil.nonNull((String)pageContext.getAttribute("section",
                                                PageContext.REQUEST_SCOPE));
      try {
        int lSectionId = Integer.parseInt(lSectionIdStr);
        s = Section.load(lSectionId, Section.DEEP);
        bSectionLoaded = true;
        // additional code to retrieve objects that will be displayed on the page:
        // for example, featured subsections, navigational subsections, items,
        // item prices, etc.
      } catch (NumberFormatException e) {
        IBEUtil.log(JSP_PAGE_NAME, "Could not parse section id=");
        IBEUtil.lod(lSectionIdStr);
      } catch (SectionNotFoundException e) {
        IBEUtil.log(JSP_PAGE_NAME, "Could not load section.  Section id=");
        IBEUtil.log(JSP_PAGE_NAME, lSectionIdStr);
      }
      if (bSectionLoaded)
      {
    %>
      <table width="100%">
      <tr>
      <td valign="top" width="100%" >
      <!-- start middle column content-->
      <%-- code to display section --%>
      </td></tr></table>
    <%
      } // end section was loaded
    %>
  3. In the Site Administration UI, create a new logical template for the section processing page. Make sure that the category of the template is one of the following:

  4. In the Site Administration UI, create a new logical template for the center display page. Make sure that the category of the template is one of the following:

  5. Modify the section processing page as needed.

    In the JSP, change the logical template name used for the center display page to be the logical template name created for the new center display page. Change

    lCenterDisplayPage  = 
     DisplayManager.getTemplate("STORE_CTLG_FSUBSCT_INCL").getFileName();

    to

    lCenterDisplayPage  = 
     DisplayManager.getTemplate("CENTER_DISPLAY_PAGE").getFileName();

    If Oracle Marketing's eMerchandising postings will be used, an int[] containing the item IDs of the items that will be displayed on the page must be set in the PageContext.REQUEST_SCOPE. There are examples of how to do this in the seeded templates.

  6. Modify the display page as needed.

    Retrieve the necessary section and item information using the Section and Item APIs, which are described in the Oracle Integration Repository.

    Display the information as desired.

  7. In the Site Administration UI, map the new template to a section as desired. See the chapter, Implementing the Catalog, for steps.

Creating a Section Page With a Custom Fixed Layout

To provide custom section display, create new section pages. If the new section display will use its own custom layout, only one new JSP needs to be created.

Steps

  1. Create a section Display Template. See the example below.

     <%@include file="jtfincl.jsp" %>
     <%@page language="java" %>
     <%@page import="oracle.apps.ibe.util.*" %>
     <%@page import="oracle.apps.ibe.catalog.*" %>
     <%@page import="oracle.apps.ibe.store.*" %>
     <%@page import="java.math.BigDecimal" %>
     <%@page import="oracle.apps.jtf.base.Logger" %>
     <%@ include file="ibeCZzpHeader.jsp" %>
     <%
       String JSP_PAGE_NAME = "mySectionJsp.jsp";
       MessageManagerInter msgMgr = 
              Architecture.getMessageManagerInstance();
       int lSectionId = -1;
       String lSectionIdStr = "";
       String lShowWelcomeBinStr = "";
       boolean bShowWelcomeBin = true;
       String browsePage = "", pathPage = "", welcomePage = "";
       Section lSection = null;
       // declare variables for other objects that will be
       // displayed: for example, featured subsections, items, item prices, etc
       /* Get section ID String */
       lSectionIdStr = 
         (String)pageContext.getAttribute("section", PageContext.REQUEST_SCOPE);
       try
       {
         lSectionId = Integer.parseInt(lSectionIdStr);
       }
       catch(NumberFormatException e)
       {
         lSectionId = StoreMinisite.getRootSectionID().intValue();
       }
       /* Get show welcome bin */
       lShowWelcomeBinStr =
         (String)pageContext.getAttribute("showWelcomeBin",
                                          PageContext.REQUEST_SCOPE);
       if(lShowWelcomeBinStr == null || lShowWelcomeBinStr.equals(""))
       {
         lShowWelcomeBinStr = "true";
       }
       if(lShowWelcomeBinStr.equalsIgnoreCase("false"))
       {
         bShowWelcomeBin = false;
       /*
        * Get the value of all the pages and bins to display
        */
       /* Section Hierarchy Tree Browse Bin */
       if(IBEUtil.useFeature("IBE_USE_SECTION_BIN"))
       {
          browsePage = 
     DisplayManager.getTemplate("STORE_CTLG_SCT_BROWSE").getFileName();if(browsePage == null)
          {
            browsePage = "";
          }
       }
       /* Section Section Path Bin */
       if(IBEUtil.useFeature("IBE_USE_SECTION_PATH"))
       {
         pathPage =
            DisplayManager.getTemplate("STORE_CTLG_SCT_PATH").getFileName();
         if(pathPage == null)
         {
           pathPage = "";
         }
       }
       /* Welcome Page Bin */
       if(bShowWelcomeBin)
       {
         welcomePage =
           DisplayManager.getTemplate("STORE_CUST_ACC_WELCOME").getFileName();
         if(welcomePage == null || welcomePage.equals(""))
         {
           bShowWelcomeBin = false;
           IBEUtil.log(JSP_PAGE_NAME,
                       "Welcome Page is either null or not specified",
                       Logger.ERROR);
         }
       }
       if (IBEUtil.showPosting())
          pageContext.setAttribute("pageType", "SECTION",
                                   PageContext.REQUEST_SCOPE);
       /* load section and other objects that will be displayed */
       try
       {
         lSection = Section.load(lSectionId);
         // additional code to retrieve other objects that will be displayed
         // on the page: for example, featured subsections, navigational
         // subsections, items, item prices, etc.
           if (IBEUtil.showPosting())
           {
             // set item ids in the PageContext.REQUEST_SCOPE for use by
             // eMerchandising postings
             int[] itemIds = new int[0];
            // code to populate itemIds based on the items that will be displayed
            // on this section page
            if (itemIds.length > 0)
              pageContext.setAttribute("itemIds", itemIds,
                                      PageContext.REQUEST_SCOPE);
         }
       }
       catch(SectionNotFoundException ex)
       {
         IBEUtil.log(JSP_PAGE_NAME,
                     "Could not load (shallow) section with ID" + lSectionId,
                     Logger.ERROR);
         lSection = null;
       }
       if(lSection != null)
       {
         pageContext.setAttribute("_pageTitle", lSection.getDisplayName(),
                                  PageContext.REQUEST_SCOPE);
       }
       else
       {
         pageContext.setAttribute("_pageTitle", "", PageContext.REQUEST_SCOPE);
       }
     %>
     <%@ include file="ibeCCtpPostingI.jsp" %>
     <%@ include file="ibeCZzdTop.jsp" %>
     <%@ include file="ibeCZzdMenu.jsp" %>
    
     <!-- body section -------------------------------------------------------->
     <table border="0" width="100%">
       <tr>
         <td> &nbsp; </td>
         <!-- left column ----------------------------------------------------->
         <td valign="top">
         <%-- sections bin ---------%>
     <%
         if(IBEUtil.useFeature("IBE_USE_SECTION_BIN") &&
            !browsePage.equals(""))
         {
     %>
           <jsp:include page="<%=browsePage%>" flush="true" /><br>
     <%
         }
     %>
         </td>
         <!-- center column --------------------------------------------------->
         <td valign="top" width="100%">
    
     <%
         if(IBEUtil.useFeature("IBE_USE_SECTION_PATH") &&
            !pathPage.equals(""))
         {
     %>
           <table width="100%">
             <tr>
               <td colspan="2" class="smallLink">
                 <jsp:include page="<%=pathPage%>" flush="true" />
               </td>
               <td>
                 &nbsp;
               </td>
             </tr>
           </table>
     <%
         }
         if (lSection != null)
         {
            // code to display section/items.
            // for examples, see out of the box section center display templates
         }
     %>
         </td>
         <!-- right column ---------------------------------------------------->
         <td valign="top">
           <%-- RHS bins ----%>
           <%-- welcome bin ----------%>
     <%
         if(bShowWelcomeBin)
         {
     %>
           <jsp:include page="<%=welcomePage%>" flush="true" /><br>
     <%
         }
     %>
     <%
         if(IBEUtil.showPosting())
         {
           IBEUtil.log(JSP_PAGE_NAME, "eMerchandising posting - BEGIN");
    
           try {
     %>
             <jsp:include page="ibapstng.jsp" flush="true" /><br>
     <%    } catch (Throwable t) {
             IBEUtil.log(JSP_PAGE_NAME, 
                         "Error occurred while including eMerchandising page");
           }
           IBEUtil.log(JSP_PAGE_NAME, "eMerchandising posting - END");
         }
     %>
         </td>
       </tr>
     </table>
     <%@ include file="ibeCZzdBottom.jsp" %>
  2. In the Site Administration UI, create a new logical template for the section display page. Make sure that you create the template as one that "Displays: section."

  3. In the Site Administration UI, map the new template to a section as desired. See the chapter, Implementing the Catalog, for steps.

Customizing the Section Template Common Configurable Layout

The layout template STORE_SCT_CONFIGURABLE_LAYOUT (ibeCCtdCmnSctLayout.jsp) is used to display the layout for all the sections using seeded Configurable Layout. This common Configurable Layout template gets the template mapped to each location and the Display Template mapped to the center part, and displays the JSP pages mapped to those templates. If you need to change the layout of all the section using seeded layout template, customize STORE_SCT_CONFIGURABLE_LAYOUT (ibeCCtdCmnSctLayout.jsp).

Steps

  1. Copy ibeCCtdCmnSctLayout.jsp into a new JSP.

  2. Make the necessary changes in the new JSP.

  3. The template data setup will need to be modified. Log in to the Site Administration UI and add the necessary logical to physical template mappings in STORE_SCT_CONFIGURABLE_LAYOUT. In the Template Details page, add a new source file for the new JSP. To use this source file for all sites and all languages, add a mapping for ALL sites and each installed language.

    For example, if French and American English are installed, add two rows in Specialty Site And Language Mappings:

Each time a new language is added, you must add a new mapping.

Creating a Custom Configurable Layout

You can create a custom Configurable Layout. The new custom layout will be displayed in the Select Layout drop-list in Sections, Templates, Layout page during setup, and you can use the custom layout for a section. The custom layout page should have the similar logic as that in the seeded Configurable Layout: gets the template mapped to each location and the Display Template mapped to the center part, and display the JSP pages mapped to those templates. But it can have different display layout.

Steps

  1. Create a custom Configurable Layout page. This can be done by copying and modifying the seeded Configurable Layout page (ibeCCtdCmnSctLayout.jsp) . In the layout page, the following API can be used to get the bin template mapped to each location (including the Display Template mapped to the center):

    Public Template Oracle.apps.ibe.displaymanager.DisplayManager.getSectionComponentTemplate(int SectionId, String locationCode)

    The location code can be Top, Bottom, Left 1 through Left 7, Right 1 through Right 7, Middle 1 through Middle 4, or Center. Center is used to get the center Display Template. If there is no template mapped to the location, or there is no JSP mapped to the template, the API returns null.

  2. In the Site Administration UI, create a new logical template for the custom Configurable Layout page. Make sure that the category of the template is Section Layout. Set the custom Configurable Layout page as the default mapping for the template.

  3. Map the custom layout template to the section, and configure the bin templates mapped to each location. See the "Implementing the Catalog" chapter for steps.

Creating a Center Display Template for Configurable Layout

You can create a custom center Display Template and map it to a section using Configurable Layout. At run-time, the Configurable Layout template will load the Display Template mapped to the center part, and display the JSP page mapped to that template.

Steps

  1. Create a center display page. This display page is similar to the display page created in step 2 of the section, "Creating a Section Page With a Common Fixed Layout". It can be done by copying an existing section center display page (such as ibeCCtdFSubSctI.jsp) or using the example described in the section, "Creating a Section Page With a Common Fixed Layout", step 2, as a guideline.

  2. In the Site Administration UI, create a new logical template for the center display page. Make sure that the category of the template is one of the following:

  3. In the Site Administration UI, map the new center Display Template to a section using Configurable Layout, as desired. See the chapter, Implementing the Catalog, for steps.

Customizing Item Templates

You can customize item routing behavior and create item detail templates.

Customizing the Item Routing Behavior

In most cases, the item routing behavior will not need changes since it is data driven. STORE_CTLG_ITM_ROUTE (ibeCCtpItmDspRte.jsp) contains processing logic for determining the template to forward to based on the template associated with display context STORE_PRODUCT_DETAILS for a particular item. If the item routing behavior needs to be changed (for example, to change the display context that is used), customize STORE_CTLG_ITM_ROUTE (ibeCCtpItmDspRte.jsp).

Steps

  1. Copy ibeCCtpItmDspRte.jsp into a new JSP.

  2. Modify the new JSP as needed. For example, change the display context that is used. If modifying the display context, make sure that all templates associated with the new display context produce HTML for displaying an entire page.

  3. The template data setup will need to be modified. In this case, the same logical template name should be used because STORE_CTLG_ITM_ROUTE is used in all other JSPs when building links for items. Log in to the Site Administration UI and add the necessary logical to physical template mappings for STORE_CTLG_ITM_ROUTE. In the Template Details page, add a new source file for the new JSP. To use this source file for all sites and all languages, add a mapping for ALL sites and each installed language.

    For example, if French and American English are installed, add two rows in "Specialty Site And Language Mappings":

Each time a new language is added, you must add a new mapping. Do not change the mapping for ALL sites, ALL languages. If you change this mapping, the change may be overwritten when patches are applied.

Creating an Item Detail Template

To provide a custom display of the item detail page, create a new item detail page.

Steps

  1. Copy ibeCCtdItemDetail.jsp into a new JSP or use the example below as a guideline.

    <%@page import="oracle.apps.ibe.order.*" %>
    <%@page import="oracle.apps.ibe.catalog.*" %>
    <%@page import="oracle.apps.ibe.store.*" %>
    <%@page import="oracle.apps.jtf.displaymanager.*" %>
    <%@page import="oracle.apps.jtf.base.Logger" %>
    <%@page import="oracle.apps.jtf.minisites.*" %>
    <%@ include file="ibeCZzpHeader.jsp" %>
    <%
      MessageManagerInter msgMgr = Architecture.getMessageManagerInstance();
      pageContext.setAttribute("_pageTitle",
                               msgMgr.getMessage("IBE_PRMT_CT_PRODUCT_DETAILS"),
                               PageContext.REQUEST_SCOPE);
      String lItemId =
        IBEUtil.nonNull((String)pageContext.getAttribute("item",
                                               PageContext.REQUEST_SCOPE));
      if (lItemId.equals(""))
      {
        lItemId = IBEUtil.nonNull(request.getParameter("item"));
        pageContext.setAttribute("item", lItemId, PageContext.REQUEST_SCOPE);
      }
      if (IBEUtil.showPosting())
      {
        // used by ibeCCtpPostingI.jsp
        pageContext.setAttribute("pageType", "ITEM", PageContext.REQUEST_SCOPE);
        // set itemIDs[] for eMerchandising posting
        try {
          int[] itemIds = new int[1];
          String itemIdStr =
            (String) pageContext.getAttribute("item", PageContext.REQUEST_SCOPE);
          itemIds[0] = Integer.parseInt(itemIdStr);
          pageContext.setAttribute("itemIds", itemIds, PageContext.REQUEST_SCOPE);
        } catch (NumberFormatException e) {}
      }
    %>
    <%@ include file="ibeCCtpPostingI.jsp" %>
    <%@ include file="ibeCZzdTop.jsp" %>
    <%@ include file="ibeCZzdMenu.jsp" %>
    <%
      String lSectionId = "";
      int sectid = 0, itmid = 0;
      Item itm = null;
      // declare variables for other objects that will be 
      // displayed: for example, item images, item prices, item flexfields,
      // related items, etc.
      lSectionId = IBEUtil.nonNull(request.getParameter("section"));
      if (lSectionId.equals(""))
        lSectionId =
          IBEUtil.nonNull((String)pageContext.getAttribute("section", 
                                                 PageContext.REQUEST_SCOPE));
      /* sections path */
      if(IBEUtil.useFeature("IBE_USE_SECTION_PATH"))
      {
        try {
          sectid = Integer.parseInt(lSectionId);
          pageContext.setAttribute("section", String.valueOf(sectid),
                                                 PageContext.REQUEST_SCOPE);
          pathPage =
             DisplayManager.getTemplate("STORE_CTLG_SCT_PATH").getFileName();
        } catch (NumberFormatException e) { }
        if(pathPage == null)
          pathPage = "";
      }
      try {
        itmid = Integer.parseInt(lItemId);
        itm = Item.load(itmid, Item.DEEP);
        bItemLoaded = true;
     // additional code to retrieve other objects that will be displayed
     // on the page: for example, item images, item prices, related items, etc.
      } catch (NumberFormatException e) {
        IBEUtil.log("ibeCCtdItemDetail.jsp", "Could not parse item id="
                           +lItemId);
      } catch (ItemNotFoundException e) {
        IBEUtil.log("ibeCCtdItemDetail.jsp", "Could not load item id="+lItemId,
                           Logger.ERROR);
      }
      if (bItemLoaded)
      {
    %>
    <!-- body section ----------------------------------------------------------->
    <table border="0" width="100%">
    <%
      if (IBEUtil.showPosting()) {
    %>
      <!--------- eMerchandising integration ----------------->
      <tr><td colspan="4" align="center">
    <%  try {
    %>
          <jsp:include page="ibapstng.jsp" flush="true" />
    <%  } catch (Throwable e) {
          IBEUtil.log("ibeCCtdItemDetail.jsp", "eMerchandising error", Logger.ERROR);
        }
    %>
      </td></tr>
    <% } //end eMerchandising installed
    %>
        <tr><td>&nbsp;</td>
    <%
        if(IBEUtil.useFeature("IBE_USE_SECTION_PATH") &&
           !pathPage.equals(""))
        {
    %>
          <td colspan="4" class="smallLink">
            <jsp:include page="<%=pathPage%>" flush="true" />
          </td>
    <%  }
    %>
        </tr>
        <tr><td valign="top"> &nbsp; </td>
        <!-- center column ------------------------------------------------------>
        <td valign="top" width="70%">
          <table border="0" cellpadding="0" cellspacing="0">
    <%-- code to display item --%>
          </table>
        </td>
        <!-- right column ------------------------------------------------------->
        <td valign="top" width="20%">
          <table border="0" cellpadding="0" cellspacing="0">
    <%-- code to display right bins --%>
          </table>
        <p>&nbsp;</p>
        <p>&nbsp;</p>
        </td></tr></table> <%-- end page table --%>
    <% } // end item loaded
    %>
    <%@ include file="ibeCZzdBottom.jsp" %>
    <!-- ibeCCtdItemDetail.jsp end -->
  2. Modify the new item detail page as needed.

    Retrieve the necessary item information using the Item APIs, which are described in the Oracle Integration Repository.

    Display the information as desired.

  3. The template data setup will need to be modified. In the Site Administration UI, create a new logical template for the new item detail display page. Make sure that you create the template as one that displays products.

  4. If the new item detail page should be used as the default template for a display context (such as STORE_PRODUCT_DETAILS), follow the steps in the section, "Using Display Styles for Default Display", in this chapter, for map the new template to a display style.

  5. To associate the new item detail template to the appropriate display style at the item level, follow the steps in the "Implementing the Catalog" chapter.

  6. To associate the new item detail template to the appropriate display style at the category level, follow the steps in the section, "Configuring Product Presentation at the Category Level", in this chapter.

Repeat this step for each applicable category.

Customizing the Style Sheet

You can provide a custom style sheet using the following procedure.

  1. Copy jtfucss.css into another file and make the desired changes to the new file, using the style sheet editor of your choice. Or, create a new style sheet file(s).

  2. Map the logical templates discussed above, as desired, to the new files. See the chapter, Implementing the Catalog, for instructions.

  3. Restart the Apache server after making these changes.

Additional Guidelines

If using a single, customized file for all three branding size profile settings, then map this file to each of the three style sheet templates mentioned above. If you are using separate customized files for the three branding sizes, you can map the source files separately to each style sheet template. If using only the out-of-box stylesheet files, and jtfucss_sml.css and jtfucss_med.css are in your instance, map jtfucss_sml.css to STORE_STYLE_SHEET_SML, and jtfucss_med.css to STORE_STYLE_SHEET_MED.

Customizing Help

The help icon on the menu will only be displayed if there is a template association for the help page.

Provide a custom help page using the following procedure.

Steps

  1. Copy ibeCZzdHelp.jsp into another file.

  2. Make the necessary changes to the JSP.

  3. Modify the template data setup. Log in to the Site Administration UI and add the necessary logical to physical template mappings for STORE_HELP_PAGE. In the Template Details page, add a new source file for the new help page. Add the necessary mappings for the desired site-language combinations. To use this source file for all sites and all languages, add a mapping for all sites, all languages. The changes will not be overwritten when patches are applied because there is no seeded default value for STORE_HELP_PAGE.

API Documentation

To make advanced changes to the Customer UI page displays, beyond bin layout and text messages, you must have complete knowledge of the APIs being called from the JSP template source file. The APIs are the key for displaying data on the site pages. These are the application objects and beans. Customers and users cannot modify these class files.

For public class API documentation, see the Oracle Integration Repository.