isset Element
Define and set a user-defined variable.
Syntax
<isset
name = var_name \\required
value = var_value \\required
scope = "session"|"request"|"page" \\required
/>
- name = var_name
-
Allowed data type: expression or string.
var_name
specifies the name of a user-defined variable. The rules for naming user-defined variables are:- The identifier must start with a letter (a-z, A-Z).
- Any following character can be a letter, number, or underscore.
- User-defined variables are case-sensitive.
- value = var_value
-
var_value
specifies a value to be stored in the variable. It can be any value. - scope = "session"|"request"|"page"
-
-
session
variables are available across multiple requests within a session. -
request
variables are available for the current internal Salesforce B2C Commerce request. Therequest
variable isn't available for multiple requests, so it isn't available after an interaction continue node. -
page
variables are available for the current ISML page.
The default scope is the session.
The
pdict
variable is deprecated. Instead, use the scope="request" variable. Thepdict
variable isn't available for multiple requests, so it isn't available after an interaction continue node. -
Purpose
In B2C Commerce, every user-defined variable is of a specific scope, which defines the visibility and lifetime of the variable. B2C Commerce distinguishes between user-defined variables of the request, pdict, session and page scope.
Scope session means that the variable
is accessible to all templates during a particular storefront session. The
lifetime of a session variable ends with a session. A session variable can
be used in expressions.
<isset>
in a template declares
and sets the variable, there is no other special tag needed for
declaration. If the variable already exists,
<isset>
resets it to the specified value. Examples: Using Isset to Create a Custom Variable
Example 1
This example shows how
<isset>
is used to define and initialize the
variable color. The value of color is the string #A0CC99.
<isset name="color" value="${'#A0CC99'}">
Example 2
If a
variable was already defined by a former <isset>
tag (first line), a second <isset>
resets the value
of the variable (second line).
<isset name="counter" value="${0}" >
<isset name="counter" value="${counter + 1}">
Example 3
In this
example <isloop>
is used to get products from the
Pipeline Dictionary.
<isloop iterator="${pdict.ProductPagingModel.pageElements}" alias="LoopProduct" begin="0" end="2">
Example 4
This
example shows how <isset>
assigns the value of
LoopProduct to Product.
<isset name="Product" value="${LoopProduct}" scope="request">
You can also manipulate a value, as shown here:
<isset name="brandsPerCol" value="${Math.floor(numOfBrands/4) + 1}" scope="page">
You can print the value with
<isprint>
.
See also isremove
Examples: Accessing Custom Variables
Example 1: Accessing the Page Scope
In
this example, isset
sets the decorator template to
pt_empty
if the pdict
format attribute
is set to ajax and to the pt_account
template if it's
not. The DecoratorTemplate variable that is set is accessed by
${DecoratorTemplate}
.
<isset name="DecoratorTemplate" value="account/pt_account" scope="page"/>
<isif condition="${pdict.CurrentHttpParameterMap.format.stringValue == 'ajax' || pdict.CurrentHttpParameterMap.pwr.stringValue == 'true' || pdict.CurrentHttpParameterMap.source.stringValue == 'search' || pdict.CurrentHttpParameterMap.source.stringValue == 'quickview' || pdict.CurrentHttpParameterMap.source.stringValue == 'cart'}">
<isset name="DecoratorTemplate" value="util/pt_empty" scope="page"/>
</isif>
<isdecorate template="${DecoratorTemplate}">