Skip to main content
The template engine of this version differs fundamentally from the previous implementation in WEBSALE V8s. This page is intended to support agencies, template managers, and developers with the switch by contrasting typical functions and patterns from V8 with the corresponding concepts of this version. The goal is to find your way around the new structure faster and to migrate existing implementations in a targeted manner instead of “reinventing” every spot.

Address

  • Customer account information is loaded via the $wsAccount module
  • Address information within the order process is additionally loaded via the $wsCheckout module, for example the selected shipping address, selected billing address, etc.

Basics

  • Comparison of single tag, loop, range tag, negative range tag compared to V8:
    • ~Einzeltag~ → (add VX counterpart)
    • {@Tag}foreach
    • {Positive range} … {/Positive range}
    • {!Negative range} … {/!Negative range}

Basket

  • The basket is loaded via the $wsBasket module

Category

  • Categories, and therefore navigation, are loaded via the $wsCategories module

DesignControl tags

Encoding

  • Character set changed from iso 8859-1 to utf-8.
  • iso XXXX-X is no longer supported / has been completely removed.

Forms

  • Shop actions, such as saving the billing address, login, etc., continue to be implemented via forms <form>. For this purpose, the new version provides actions.
  • Instead of form tags that were passed to the <form> in the element action="", the desired template is now passed using {{= $wsViews.current.url() }} or {{= $wsViews.viewUrl('login.htm')}}, for example
    • <form action="~FORM-Basket~" method="post">
      • now
    • <form action="{{= $wsViews.current.url() }}" method="post">
      • or
    • <form action="{{= $wsViews.viewUrl('basekt.htm')}}" method="post">

HTML comment

  • Instead of WS-TplComment, the following is now used: {{ # Your comment # }}

Inventory

  • Stock information is loaded via the $wsInventory module
  • Before stock information is displayed, it must be loaded, for example with
    {{ var $myVariableForInventoryInfo = $wsInventory.load($product.id) }}
  • PR-Inventory is now built with {{ if $myVariableForInventoryInfo.active }}
  • PR-InventoryState() is now mapped via:
    • {{= $myVariableForInventoryInfo.state }} and
    • {{ switch $myVariableForInventoryInfo.state }} with the respective {{ case "xxx"}} blocks
  • All page links are implemented via the $wsViews module, for example
    • URL-Homepage -> {{= $wsViews.host }}
    • WS-LoadTpl(your-template.htm) ->{{= $wsViews.viewUrl('your-template.htm')}}
    • WS-SSLLoadTpl(){{= $wsViews.viewUrl('your-template.htm')}}
  • This also includes links such as to the basket page, wish list, login, etc., for which there were dedicated link tags in V8s, for example
    • WS-BasketLink{{= $wsViews.viewUrl('basket.htm')}}
    • WS-MemoListLink{{= $wsViews.viewUrl('memolist.htm')}}
    • WS-LoginLink{{= $wsViews.viewUrl('login.htm')}}
    • WS-LogoutLink{{= $wsViews.viewUrl('logout.htm')}}
    • WS-UserAccountLink -> {{= $wsViews.viewUrl('account.htm')}}

Login

  • Customer account information is loaded via the $wsAccount module
  • WS-LoginLink is now implemented with {{= $wsViews.viewUrl('your-file.htm')}}
  • ST-LoggedIn is now checked with {{ if $wsAccount.isLoggedIn }}

Logout

  • Customer account information is loaded via the $wsAccount module
  • WS-LogoutLink is now implemented with {{= $wsActions.url('Logout', $wsViews.viewUrl('logout.htm'), {})}}

Memolist

  • The wish list is loaded via the $wsWatchList module
  • ST-MemoList_OK is now checked with {{ if $wsWatchList.items }} ... {{ /if }}
  • WS-MemoListEntries is now displayed with {{= $wsWatchList.items | len }}

Meta tags

  • <base href="..."> is no longer needed
  • The function {{=static('')}} contains the base directory information.
  • WS-RobotCanonical is now built with {{= $wsViews.host }} and {{= $wsViews.current.url() }}

Payments

  • Overview of all configured payment methods
    • instead of TAC-P-Data now {{ foreach $myVariableForAllPayments in $wsConfig.payments }}
  • Payment methods within the order process are additionally loaded via the $wsCheckout module, for example the selected payment method

Products

  • Product information is loaded via the $wsProducts module
  • Implementation of all search and filter functions takes place via the search module WEBSALE Search

ShippingMethod

  • Instead of “deliverer” and “delivery”, we now use “shipping” and “shippingMethods”
  • Overview of all configured shipping methods
    • instead of TAC-D-Data now {{ foreach $yVariableForAllShippings in $wsConfig.shippingMethods }}
  • Shipping information within the order process is additionally loaded via the $wsCheckout module, for example the selected shipping method

User account

  • Customer account information is loaded via the $wsAccount module
  • WS-UserAccountLink -> {{= $wsViews.viewUrl('account.htm')}}