We're software that helps growing brands & retailers grow and scale. Sync, sell and ship your products and inventory on online marketplaces and storefronts faster, easier and more accurately.

Learn more now

Twig Templating Engine

*Note: If you notice any issues with your site or listings, switch back to the default template until you have fixed the issue.

Please refer to the Twig documentation for further explanation on how the templating language works:

https://twig.symfony.com/doc/3.x/


How To: Download the default template files and create a new template


  1. Login to SureDone
  2. Go to Settings > Templates
  3. Press 'default'


  4. Click 'Download All’ to download all of the assets of the template
  5. Alter the files as you wish to make your template work
  6. Go back to Settings > Templates
  7. Click on the template you created
  8. Upload the files then press Save Settings

  9. To use your template, go back to Settings > Templates and select it from the dropdown and be sure to check the confirm box before pressing Save Settings

SureDone Twig Tags Summary:


Template engine open and close tags

{% %}


Comment open and close tags

{# .... #}


Output a variable open and close tags

{{ }}


Set a variable example

{% set varname = 'my custom text' %}


If else logic example

{% if varname == 'hello' %} say {{ varname }} {% else %} say goodbye {% endif %}


Include file in template

include 'localfile.htm'


Display the contents of a variable or array:

{{ dump(variable name) }}


SureDone Template Style and Script Testing:


Because SureDone uses a CDN to deliver all image, script, and css assets for high performance, we recommend that you use embedded CSS and Javascript while developing your template in order to avoid caching issues during development.

For example, if you created a template file named "custom.htm" and use the HTML <style> and <script> tags to embed your CSS and Javascript in that file. Then, include that file in the HTML HEAD of your template.

Once you've completed testing, you can create external CSS and Javascript files and use the appropriate <link> and <script> tags to include those files in your template.

The CSS and Javascript files can then be uploaded to the asset manager at https://app.suredone.com/#!/assets which will display the url to include.

When including the url, we recommend considering if the asset will be used on any secure pages that use SSL (such as checkout, or a contact form). For assets that will be included on secure pages, you can change the url from http://assets.suredone.com to https://d3inagkmqs1m6q.cloudfront.net to ensure they are securely delivered to the end user.


SureDone Custom Functions:


return SureDone option value

format: sd_option(option_name)

{{ sd_option('business_name') }}


return url block etc formatted example

sd_siteinfo(option)


list of sd_siteinfo options

url, business, business_url, business_email, title, description, logo, logo_secure, logo_url, logo_secure_url, facebook, facebook_url, twitter, twitter_url, youtube, youtube_url, google_adsense, google_analytics, google_verification, microsoft_verification, yahoo_verification, releases_feed, releases_feed_url, products_feed, products_feed_url, pages_feed, pages_feed_url, galleries_feed, galleries_feed_url, categories_feed, categories_feed_url, googlebase_feed_url, stylesheet, stylesheet_url, stylesheet_admin, javascript, javascript_url, javascript_admin, favicon, favicon_url, appletouchicon, appletouchicon_url, site_search, charset, jquery, jquery_url, jqueryui, jqueryui_url, jquerytools, jquerytools_url, jquerycss, jquerycss_url, tinymce, tinymce_url, tinymcejs, tinymcejs_url, facebookjs, version, version_api, version_logo, version_logo_secure, version_logo_url, version_logo_secure_url, version_logo_white, version_logo_secure_white, version_logo_url_white, version_logo_secure_url_white, version_favicon, version_favicon_url, version_appletouchicon, version_appletouchicon_url, version_logo_powered, version_logo_powered_secure, version_logo_powered_url, version_logo_powered_secure_url, version_logo_powered_link, version_text_powered_link


show content blocks example

format: sd_content(view, display=true)

sd_content('price')


list of content block views

price, price_discount, description, title_link, category_link, gallery_link, media_main, media_thumbs, media_images, cart_details, shipping_details, long_description, item_details, date, content, media_gallery, buy_now_button, buy_now_price, related_item_link, cat_children, cat_breadcrumbs, cat_nav_menu, tags, release_preview, releases, page_index, newest_blogs, terms_policy_default, long_description_options, description_details, orders_results, facebook_button, twitter_button, pinterest_button, googleplus_button, results


set a formatted storefront url example

format: sd_seturl('my-url-slug',url_type,url_path='absolute',url_ssl=false)

{{ sd_seturl('my-category','category') }} - outputs http://storefront.com/my-category/


set a formatted slug from a string

format: sd_makeslug('My Pretty Name', match=false)

{{ sd_makeslug('My -Pretty Name'., false) }} - outputs my-pretty-name

{{ sd_makeslug('My -Pretty Name'., true) }} - outputs my--pretty-name.


list of url types

item,page,gallery,category,tag,post,home,service,pageindex,archive,feed


set a secure image url example

format: sd_securemedia(url)

{{ sd_securemedia('http://assets.suredone.com/v6/logos/suredone-icon-101x21.png') }} - outputs https://d3inagkmqs1m6q.cloudfront.net/v6/logos/suredone-icon-101x21.png


return large size product image available example

format: sd_getmediafull(url)

{{ sd_getmediafull('http://assets.suredone.com/1019/media-pics/md271lla-apple-iphone-4s-with-64gb-memory-mobile-phone-white.jpg') }} - outputs http://assets.suredone.com/1019/media-photos/md271lla-apple-iphone-4s-with-64gb-memory-mobile-phone-white.jpg


return smallest size product image available example

format: sd_getmediathumb(url)

{{ sd_getmediathumb('http://assets.suredone.com/1019/media-pics/md271lla-apple-iphone-4s-with-64gb-memory-mobile-phone-white.jpg') }} - outputs http://assets.suredone.com/1019/media-tms/md271lla-apple-iphone-4s-with-64gb-memory-mobile-phone-white.jpg


return currency symbol of storefront example

format: sd_currency(display=true)

{{ sd_currency(false) }}499.99 - outputs '$499.99'


return full country name from two letter ISO code example

format: sd_countryname(countrycode)

{{ sd_countryname('US') }} - outputs 'UNITED STATES'


return full state or province name from two letter US State or CA Province abbreviations

format: sd_statename(code)

{{ sd_statename('CA') }} - outputs 'California'


return storefront user

sd_getaccount(id, email)


return shopping cart contents example

sd_cart()

{% set mycart = sd_cart() %} {{ dump(mycart) }}


return shopping cart totals example

sd_carttotals()

{% set carttotals = sd_carttotals() %} {{ dump(carttotals) }}


return shopping cart dimensions example

sd_cartdimensions()

{% set productdimensionsincart = sd_cartdimensions() %} {{ dump(productdimensionsincart) }}


return shopping cart system labels

format: sd_carttotalslabel(labeloption)


list of shopping cart label options

subtotal, shipping, handling, tax, discount, total


return product results from search example

format: sd_getresults(searchquery, state, limit, sort, page, status, full=false)

{% set products = sd_getresults('color:blue', 'both', '20', 'price_', '2', 'sale') %}

{{ dump(products) }} - if there were 80 available products meeting criteria color=blue on the storefront

would dump out products in stock or active, page 2 of these products, in descending order by price, and both parents and children


product results search state options

active (returns only state=active)

stock (returns products with stock)

both (returns products with state=active or in stock) sale (returns any type of product)


product results search status options

publish (returns only published parents)

sale (returns product parents and children)


return date example

format: sd_date(display=true,date_type='new')

{{ sd_date(false) }}


list of date types

new (newest of date added/updated)

date (date added)

dateupdated (date updated)


return formatted date example

format: sd_datetext(date,display=true)

{{ sd_dateText('2016-03-01',false) }} - output March 1st, 2016 (based on format set in settings)


return if product/page has ever been updated

format: sd_lastupdated(date)


return date time based on timezone

format: sd_localtime(date_time)


return item/page/category identifier

sd_identifier()


return canonical page url

sd_canonical()


return next url and title

sd_next_url() sd_next_title()


return previous url and title

sd_prev_url() sd_prev_title()


return error/success/notice messages

sd_notice()


return price to display from price, discountprice and any account set pricing

sd_price(display=true, format=true, currency=true, row)


return if there is inventory for the product in any warehouse

sd_checkstock(row)


return most recent pages in a set example

format: sd_getnewpages(page_name, page_search, page_limit, page_sort)

{% set newblogs = sd_getnewpages('blog','date:>2016-03-01','7') %}

{{ dump(newblogs) }} - outputs dump of 7 new blogs created after March 1st, 2016


return GET parameters from the url example

format: get_reqs(var)

for https://www.suredone.com/?testvariable=hello

{{ get_reqs('testvariable') }} - outputs 'hello'


return GET 'do' parameter from url example

for https://www.suredone.com/?do=this

{{ get_do() }} - outputs 'this'


return current UTC time

gmdate()


return substring of string

substr()


return json decode of string

json_decode(jsonstring)


return json encode of string

json_encode(twigarray)


return regular expression check

preg_match(regex, string)


return regular expression replacement

preg_replace(regex, replace, string)


return unique values from twig array

sd_array_unique()


return is twig array check

is_array(value)


return is integer check

is_int(value)


return UNIX timestamp from date time

strtotime(datestamp)


special variables

output => storefront special variables

outputvariables => doaction, cart, form_data, orders, newest_blogs, buttons, icons, results, items_html, next_url, next_title, prev_url, prev_title, notice_html, verified_html, support_html, feedback_html, returns_html, contact_html, legal_html, accounts_html, helpform_html, cart_html, cart_total, search_html, releases_html, galleries_html, sitemap_html, emaillist_html, home_uri, accounts_uri, helpform_uri, cart_uri, cart_suri, search_uri, search_suri, releases_uri, galleries_uri, sitemap_uri, contact_uri, legal_uri, page, sort, canonical, domain, categorytitle, details_labels, details_labels_displayed, cat_breadcrumbs, cat_breadcrumb_urls, cat_breadcrumb_text, cat_children_labels, cat_children_display, cat_children_urls, cat_children_text, cat_children_desc, cat_nav_menu, cat_nav_menu_heading, group, sorting, sorting_labels, releases, release_preview, accounts_sorting, accounts_sorting_labels, search_fields, cart_totals_labels, shipping_services_labels, request_uri, instanceid, buttons, icons, details_labels, details_labels_displayed, shipping_services_labels


orders => number of orders based on context where this is used


data=> product/page/category/etc variables

data variables => id, uri, galleryuri, parenturi, sku, guid, stock, price, reprice, price_range, discountprice, user_price, msrp, featured, price_discount, price_discount_percent, instanceid, name, title, keywords, description, longdescription, content, notes, htmltitle, metadescription, metarobots, geolocation, size, color, condition, brand, style, upc, tags, media_titles, shipping, shippingadditional, handlingfee, weight, dimweight, boxlength, boxwidth, boxheight, boxweight, date, dateupdated, asset, rule, state, status, active, type, total_stock, googleshopping, googleshopurl, googlecategory, category1, category2, category3, category4, category5, media1 - media10, mediax, mediacount

products pages only: user custom fields

categories only: navtitle, level, group, customparams, customparamsrel


sd_is_mobile=> device accessing page is mobile


sd_is_admin =>is admin logged in


sd_is_logged_in => is customer logged into shopping cart


sd_is_secure => is secure endpoint,


sd_is_cart_set => is shopping cart not empty,


sd_is_get => special GET vars set: call, page, sort, view, q, group, type, do, update, order, form, preview, download, all, show


is_sd_preview => is store admin logged in preview when site live is off


is_ie_check => is internet explorer check


is_ga_suredone => is SureDone domain Google Analytics or not


is_secure_services => for custom domains to switch from non-ssl to ssl cart/accounts/contact


is_custom_icon => is user defined custom icon directory


sd_function_last => SureDone last function for shopping cart/accounts


sd_request_uri => request uri


sd_ga_tracksearch => Google Analytics search tracking code,


sd_ga_tracking_code=> Google Analytics ecommerce conversion tracking code,


sd_cart_uri_ssl => secure cart url


sd_acct_uri_ssl => secure accounts url


sd_search_uri => search url


sd_search_uri_ssl => secure search url


sd_feed_links => rss feeds for storefront products/pages/categories


sd_store_favicons => favicon/appletouchicon


sd_store_javascripts => storefront jquery/js/fb/widgets


sd_store_stylesheets => storefront css and widget css


sd_store_verifications => google/yahoo/microsoft site verifications tags


sd_session_id => system session_id


sd_server_name => storefront server name (domain name)


sd_login_info=> logged in storefront user info


default template main files

html-header.htm

header.htm

footer.htm

sidebar.htm


swap legacy template tags example

{% set sdfootercustom = sd_option('site_custom_footer') %}

sd_swaptags('add',sdfootercustom)


legacy template tags

[%LOGIN%],[%CART%],[%SEARCH%],[%SERVICE%],[%RELEASES%],[%GALLERIES%],[%SITEMAP%],[%CONTACT%],[%EMAILLIST%],[%LEGAL%], [%LOGOLINK%],[%LOGO%],[%TWITTER%],[%FACEBOOK%],[%SKYPE%],[%GOOGLE%],[%PAYPAL%],[%CREDITCARDS%],[%FEEDBACK%],[%RETURNS%], [%PHONE%],[%BUSINESS%],[%NAME%],[%EMAIL%],[%CATNAVMENU%]


show legacy formtypes

format: sd_formtype(form_name, form_data, multi_array=false, override=false)

multi_array with value of true will not sanitize data

override with value of true will return form (used for forms within forms)

most of the form names below have been converted to individual files that may be included


formtype form names

HideShipping, StateProvOptions, CountryOptions, WWWCartBilling, WWWCartShipping, WWWUserBilling, WWWUserShipping, USCACartBilling, USCACartShipping, INTLCartBilling, INTLCartShipping, USCAUserBilling, USCAUserShipping, INTLUserBilling, INTLUserShipping, AccountForm, AccountLoginForm, CheckoutForm, AdaptiveForm, CardCheckout, PayPalCheckout, CartEmail, CartPass, UserEmail, UserPass, BillingName, BillingAddress, ShippingName, ShippingAddress, BusinessAddress, CartLoginForm, ServiceForms, ReturnForm, SupportForm, FeedbackForm, ServiceProcessed, ServiceEmail, FeedbackEmail, VerificationEmail, LoginAssistEmail, InvoiceEmail, ShipTrackingEmail, CartBillShipTo, CartSummary, CartConfirmed, CheckoutConfirmed, CartTotals, ShippingServices, CartContents, CartProgress, OrderInvoice, PackingSlips, InvoiceNav, PickList, PickListOrder, CartPostSale