Last active
September 25, 2020 04:23
-
-
Save jorgehernandezSF/44e0b76faf47cb81b9e9c8dec6d78a06 to your computer and use it in GitHub Desktop.
PageRenderHelper that removes header/footer on the BM Page Designer UI, but not on the storefront.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
'use strict'; | |
var RegionModelRegistry = require('*/cartridge/experience/utilities/RegionModelRegistry.js'); | |
function parseRenderParameters(renderParametersJson) { | |
var renderParameters = {}; | |
if (renderParametersJson) { | |
try { | |
renderParameters = JSON.parse(renderParametersJson); | |
} catch (e) { | |
require('dw/system/Logger').error('Unable to parse renderParameters: ' + renderParametersJson); | |
} | |
} | |
return renderParameters; | |
} | |
module.exports = { | |
/** | |
* Assembles the page meta data. | |
* | |
* @param context {Object} The context of the page | |
* | |
* @returns {string} ISML path to decorator template | |
*/ | |
determineDecorator: function determineDecorator(context) { | |
var renderParameters = parseRenderParameters(context.renderParameters); | |
var decorator; | |
var cartridgeDecorator; | |
try { | |
cartridgeDecorator = require('*/cartridge/experience/defaultdecorator'); | |
} catch (e) { | |
dw.system.Logger.warn('Unable to determine frontend decorator ' + e); | |
} | |
// if in edit mode, disable the default decorator | |
if (this.isInEditMode()) { | |
decorator = 'decoration/decorator'; | |
} else if (renderParameters.decorator) { | |
// overridden on runtime | |
decorator = renderParameters.decorator; | |
} else if (cartridgeDecorator) { | |
// provided by frontend | |
decorator = cartridgeDecorator; | |
} else { | |
// provided by pagedesigner | |
decorator = 'decoration/decorator'; | |
} | |
return decorator; | |
}, | |
/** | |
* Assembles the page meta data. | |
* | |
* @param page {dw.experience.Page} The page object | |
* | |
* @returns {dw.web.PageMetaData} The page meta data | |
*/ | |
getPageMetaData: function getPageMetaData(page) { | |
var pageMetaData = request.pageMetaData; | |
pageMetaData.title = page.pageTitle; | |
pageMetaData.description = page.pageDescription; | |
pageMetaData.keywords = page.pageKeywords; | |
return pageMetaData; | |
}, | |
/** | |
* Returns the RegionModel registry for a given container (Page or Component). | |
* | |
* @param {dw.experience.Page|dw.experience.Component} container a component or page object | |
* @param {String} containerType components or pages | |
* | |
* @returns {experience.utilities.RegionModelRegistry} The container regions | |
*/ | |
getRegionModelRegistry: function getRegionModelRegistry(container) { | |
var containerType; | |
if (container && container instanceof dw.experience.Page) { | |
containerType = 'pages'; | |
} else if (container && container instanceof dw.experience.Component) { | |
containerType = 'components'; | |
} else { | |
return null; | |
} | |
var metaDefinition = require('*/cartridge/experience/' + containerType + '/' + container.typeID.replace(/\./g, '/') + '.json'); | |
return new RegionModelRegistry(container, metaDefinition); | |
}, | |
/** | |
* Returns true if page is rendered via editor UI and false in the storefront | |
* @returns {boolean} The container regions | |
*/ | |
isInEditMode: function isInEditMode() { | |
return request.httpPath.indexOf('__SYSTEM__Page-Show') > 0; | |
}, | |
/** | |
* returns a css safe string of a given input string | |
*/ | |
safeCSSClass: function (input) { | |
return encodeURIComponent( | |
input.toLowerCase() | |
).replace(/%[0-9A-F]{2}/gi, ''); | |
} | |
}; |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment