Script: Class dw.experience.Page

Class Page

This class represents a page designer managed page. A page comprises of multiple regions that hold components, which themselves again can have regions holding components, i.e. spanning a hierarchical tree of components.

Using

a page can be rendered. As such page implements a render function for creating render output the render function of the page itself will also want to access its various properties like the SEO title etc.

Apart from rendering to markup a page can also be serialized, i.e. transformed into a json string using

See Also:

Region

Component

PageMgr

Properties

aspectTypeID : String Read Only

Get the aspect type of the page. If an aspect type is set for this page (and is found in the deployed code version), then the page is treated as dynamic page during rendering and serialization.

classificationFolder : Folder Read Only

The classification Folder associated with this page.

description : String Read Only

The description of this page.

folders : Collection Read Only

All folders to which this page is assigned.

ID : String Read Only

The id of this page.

name : String Read Only

The name of this page.

pageDescription : String Read Only

The SEO description of this page.

pageKeywords : String Read Only

The SEO keywords of this page.

pageTitle : String Read Only

The SEO title of this page.

searchWords : String Read Only

The search words of the page used for the search index.

typeID : String Read Only

The type id of this page.

visible : boolean Read Only

Returns true if the page is currently visible which is the case if:

  • page is published
  • the page is set to visible in the current locale
  • all visibility rules apply, requiring that
    • schedule matches
    • customer group matches
    • aspect attribute qualifiers match
    • campaign and promotion qualifiers match

If any of these is not the case then false will be returned.

As visibility is driven by the merchant configured dynamic visibility rules, e.g. scheduling and custom segmentation, this call should NOT happen in a pagecached context outside of the processing induced by rendering/serialization (see the corresponding methods in PageMgr).
Use hasVisibilityRules() prior to calling this method in order to check for the existence of visibility rules. If there are visibility rules then do not apply pagecaching. Otherwise the visibility decision making would end up in the pagecache and any subsequent call would just return from the pagecache instead of performing the isVisible() check again as desired.

   ...
   var page = PageMgr.getPage(pageID);
   if(page.hasVisibilityRules())
   {
      // pagecaching is NOT ok here
      if(page.isVisible())
      {
         response.writer.print(PageMgr.renderPage(pageID, {});
      }
   }
   else
   {
       // pagecaching is ok here, but requires a pagecache refresh if merchants start adding visibility rules to the page
   }
   ...

Constructor Summary

This class does not have a constructor, so you cannot create it directly.

Method Summary

getAspectTypeID() : String

Get the aspect type of the page.

getAttribute(attributeID : String) : Object

Returns the raw attribute value identified by the specified attribute id.

getClassificationFolder() : Folder

Returns the classification Folder associated with this page.

getDescription() : String

Returns the description of this page.

getFolders() : Collection

Returns all folders to which this page is assigned.

getID() : String

Returns the id of this page.

getName() : String

Returns the name of this page.

getPageDescription() : String

Returns the SEO description of this page.

getPageKeywords() : String

Returns the SEO keywords of this page.

getPageTitle() : String

Returns the SEO title of this page.

getRegion(id : String) : Region

Returns the page region that matches the given id.

getSearchWords() : String

Returns the search words of the page used for the search index.

getTypeID() : String

Returns the type id of this page.

hasVisibilityRules() : boolean

Returns true if the page has visibility rules (scheduling, customer groups, aspect attribute qualifiers, campaign and promotion qualifiers) applied, otherwise false.

isVisible() : boolean

Returns true if the page is currently visible which is the case if:

  • page is published
  • the page is set to visible in the current locale
  • all visibility rules apply, requiring that
    • schedule matches
    • customer group matches
    • aspect attribute qualifiers match
    • campaign and promotion qualifiers match

If any of these is not the case then false will be returned.

Methods inherited from class Object

assign, create, create, defineProperties, defineProperty, entries, freeze, fromEntries, getOwnPropertyDescriptor, getOwnPropertyNames, getOwnPropertySymbols, getPrototypeOf, hasOwnProperty, is, isExtensible, isFrozen, isPrototypeOf, isSealed, keys, preventExtensions, propertyIsEnumerable, seal, setPrototypeOf, toLocaleString, toString, valueOf, values

Method Detail

getAspectTypeID

getAspectTypeID() : String

Get the aspect type of the page. If an aspect type is set for this page (and is found in the deployed code version), then the page is treated as dynamic page during rendering and serialization.

Returns:

the ID of the page's aspect type

See Also:

PageMgr.renderPage(String, Map, String)

PageMgr.serializePage(String, Map, String)

getAttribute

getAttribute(attributeID : String) : Object

Returns the raw attribute value identified by the specified attribute id. By raw attribute value we denote the unprocessed value as provided for the attribute driven by the type of the respective attribute definition:

  • boolean -> boolean
  • category -> string representing a catalog category ID
  • custom -> Map that originates from a stringified curly brackets {} JSON object
  • cms_record -> Map that originates from a stringified curly brackets {} JSON object whose entries must adhere to the cmsrecord.json schema
  • enum -> either string or integer
  • file -> string representing a file path within a library
  • image -> Map that originates from a stringified curly brackets {} JSON object whose entries must adhere to the content/schema/image.json schema
  • integer -> integer
  • markup -> string representing HTML markup
  • page -> string representing a page ID
  • product -> string representing a product SKU
  • string -> string
  • text -> string
  • url -> string representing a URL

There is two places an attribute value can come from - either it was persisted at design time (e.g. by the merchant by editing a component in Page Designer) or it was injected in shape of an aspect attribute at rendering time through the execution of code. The persistent value, if existing, takes precedence over the injected aspect attribute one. Injection of a value through an aspect attribute will only occur if the page attribute's attribute definition was declared using the "dynamic_lookup" property and its aspect attribute alias matches the ID of the respective aspect attribute.

Accessing the raw value can be helpful if render and serialization logic of the page needs to operate on these unprocessed values. An unprocessed value might be fundamentally different from its processed counterpart, the latter being provided through the content dictionary (see PageScriptContext.getContent()) when the render/serialize function of the page is invoked.

Parameters:

attributeID - the id of the desired attribute

Returns:

the unprocessed raw value of the desired attribute, or null if not found


getClassificationFolder

getClassificationFolder() : Folder

Returns the classification Folder associated with this page.

Returns:

the classification Folder if one is assigned, null otherwise.


getDescription

getDescription() : String

Returns the description of this page.

Returns:

the page description


getFolders

getFolders() : Collection

Returns all folders to which this page is assigned.

Returns:

Collection of Folder objects.


getID

getID() : String

Returns the id of this page.

Returns:

the page id


getName

getName() : String

Returns the name of this page.

Returns:

the page name


getPageDescription

getPageDescription() : String

Returns the SEO description of this page.

Returns:

the page SEO description


getPageKeywords

getPageKeywords() : String

Returns the SEO keywords of this page.

Returns:

the page SEO keywords


getPageTitle

getPageTitle() : String

Returns the SEO title of this page.

Returns:

the page SEO title


getRegion

getRegion(id : String) : Region

Returns the page region that matches the given id.

Parameters:

id - the id of the desired page region

Returns:

the region, or null if not found.


getSearchWords

getSearchWords() : String

Returns the search words of the page used for the search index.

Returns:

the page search words


getTypeID

getTypeID() : String

Returns the type id of this page.

Returns:

the page type id


hasVisibilityRules

hasVisibilityRules() : boolean

Returns true if the page has visibility rules (scheduling, customer groups, aspect attribute qualifiers, campaign and promotion qualifiers) applied, otherwise false. Use this method prior to isVisible(), so you do not call the latter in a pagecached context.

Returns:

true if the page has visibility rules applied, otherwise false.


isVisible

isVisible() : boolean

Returns true if the page is currently visible which is the case if:

  • page is published
  • the page is set to visible in the current locale
  • all visibility rules apply, requiring that
    • schedule matches
    • customer group matches
    • aspect attribute qualifiers match
    • campaign and promotion qualifiers match

If any of these is not the case then false will be returned.

As visibility is driven by the merchant configured dynamic visibility rules, e.g. scheduling and custom segmentation, this call should NOT happen in a pagecached context outside of the processing induced by rendering/serialization (see the corresponding methods in PageMgr).
Use hasVisibilityRules() prior to calling this method in order to check for the existence of visibility rules. If there are visibility rules then do not apply pagecaching. Otherwise the visibility decision making would end up in the pagecache and any subsequent call would just return from the pagecache instead of performing the isVisible() check again as desired.

   ...
   var page = PageMgr.getPage(pageID);
   if(page.hasVisibilityRules())
   {
      // pagecaching is NOT ok here
      if(page.isVisible())
      {
         response.writer.print(PageMgr.renderPage(pageID, {});
      }
   }
   else
   {
       // pagecaching is ok here, but requires a pagecache refresh if merchants start adding visibility rules to the page
   }
   ...

Returns:

true if the page is currently visible (published, visible in the current locale, and visibility rules apply), otherwise false (unpublished and/or visibility rules don't apply)

See Also:

isVisible()