The system searches the cartridge path for the first template that matches the specified name and location. To override a template, create a custom cartridge. In the custom cartridge, include a template with the same name as the template you want to override.
The location of your template in your cartridge must match the location of the original template in the original cartridge. Finally, add your custom cartridge to the cartridge path, placing your cartridge to the left of the original cartridge.
Decorator Templates in SFRA
app_storefront_base/cartridge/templates/default/common/layout/
.pt_..._VARS
and pt_..._UI
templates that existed in previous versions of SiteGenesis were removed.
The navigation for a page is set through the new decorator templates. Client-side scripts and CSS
files are set for each template using the assets.addJs
and
assets.addCss
functions for each template. The top of every
page template contains code similar to the following:
<isdecorate template="common/layout/page">
<isscript>
var assets = require('~/cartridge/scripts/assets.js');
assets.addCss('/css/cart.css');
</isscript>
You can put *.css files and *.js files with the same names and in the same locations as indicated in the original template. This strategy overrides any like-named *.css files and *.js files in any cartridge to the right of the current cartridge on the cartridge path.
You can override CSS and client-side JavaScript for a specific template. For example, if the template declares the following assets:
<isdecorate template="common/layout/page">
<isscript>
var assets = require('*/cartridge/scripts/assets');
assets.addJs('/js/productDetail.js');
assets.addCss('/css/product/detail.css');
</isscript>
You can create a productDetail.js
and
detail.css
and place them in the same location as indicated in
the template. The platform uses the first template with the correct name and
location that it finds on the cartridge path.
Example: Customizing Detail.Scss.
@import "base/product/detail";
.description-and-detail {
margin-top: 2em;
.details {
@include media-breakpoint-up(sm) {
margin-bottom: 2em;
}
}
}
app_storefront_base
templates. Any logic in the templates is
specific to rendering. The app_storefront_base
cartridge demonstrates
recommended strategies for using ISML:iscache
: Set by default to 24 hours. We recommend changing this
value in the controller.isset
: Only used to set a variable used by
isinclude
. Don't use complex expressions in the
isset
.isscript
: Only used to add client-side JavaScript/CSS to the
page using the asset
module.ismodule
: Only used for content assets.iscontent
: Change this value in the controller.iscookie
: Change this value in the controller.isredirect
: Change this value in the controller.isstatus
: Change this value in the controller.isobject
: Used to wrap products for analytics and the
Storefront Toolkit.