Advanced Development Solutions Home
Advanced Development Solutions Home
Advanced Development Solutions Home

Description / Features
Read Me First
Installation / Upgrade
Quick Start Guide
Template Layouts
FAQ
     

Ultimate Category Tree Plus Module Help for MIVA Merchant v5

Module Quick Start Guide

  • Module automatically installs and configures the required item, "ads-ultcattreeplus"and assigns it to the default pages, during installation.
  • Features for this module are available by assigning the item to any Merchant page, customizing the Category Tree Template and using the module provided Item Render Tokens.
  • Smart SEO Links Processing™ is automatically available when the module is first installed. See an example below for Smart SEO Link implementation.
  • Module provides a Built in .htaccess file Editor.To access the editor:
    1. Expand the Store in the left hand navigation
    2. Expand your Store Name by clicking on the "+" in front of it
    3. Click on the System Extension Configuration link
    4. Click on "ADS Ultimate Cattree Plus" tab
    5. Near the top of the module screen, just below the help link for the module, click on the ".htaccess Editor" link
    6. If the file exists you will see the contents in the editor. If it does not exist, you can just place the contents in the editor field.
    7. At the bottom of the text area you will see a check box which will need to be checked in order to save your changes.
    8. You can also specify a backup file suffix for the backup file or restore a previously saved version of the .htaccess file. The select box at the bottom of the screen will contain all of the backups. Just select one and click "Restore Backup" link.

NOTE: Please Exercise Extreme Caution with .htaccess files as they can take your entire site down. If you are not sure what you are doing, contact a developer for assistance. Advanced Development Solutions, Inc. will not be responsible for any issues caused by an improper use of this tool.

  • Search Engine Friendly Links(SFL) implementation Example
  • Module Provides five additional fields for each Merchant Category. The fields are:
    1. Alternate Title
    2. Title Image 2
    3. Tree Image 2
    4. Category Brief Description
    5. Category Keywords
  • To access and manage additional Category fields information:
    1. Expand the Store in the left hand navigation
    2. Expand your Store Name by clicking on the "+" in front of it
    3. Click on the Products Link
    4. Click on Edit next to one of the products
    5. Click on "ADS Ultimate Cattree Plus" tab
    6. Insert Information in the provided fields
    7. Click Update at the bottom of the page
    8. See examples 6 & 7 below for Item Render Token to use.
  • Module automatically creates three preconfigured Category Templates when it is first installed. All installed templates are immutable so they can't be deleted when clearing version history. The templates are:
    1. Original (Default Template) - Miva Merchant Default, with Ultimate Cattree Plus features. See examples 1, 2 & 3 below for Template selection and Item Render Token use.
    2. ADS Cattree Jump Menu - This is a Traditional Style Jump Menu, where all of the Merchant Categories are listed. See example 4 below for Template selection and Item Render Token use.
    3. ADS Advanced Cattree Jump Menu - This is an Advanced Search/Configurator Style Jump menu, where user selects from a drop-box for each of the levels in the category tree as they drill down the categories. See example 5 below for Template selection and Item Render Token use.
  • To access the Category Tree Template, in Merchant Admin:
    (This Tab is also available as global settings on all pages where the item is assigned)
    1. Expand the Store in the left hand navigation
    2. Click on your store name
    3. Click on "ADS Ultimate Cattree Plus Temple" tab
    4. See examples 1, 2, 3, 4 & 5 below for Template selection and configuration
  • If you are using the Category Tree on pages other then Merchant Defaults, you must assign the "ads-ultcattree" item to the page(s) where you would like to use it. You must also inset the associated Item Render Toke into the page templates.
  • Your Category Tree template can include additional content, such as Category Tree Headers and Footers. This content can be static or dynamic.
  • If you are using Merchant Controlled Categories, you must use the module provided Render Tokens and Entities.
  • Multiple instances and variations of the Category Tree Template can be used at the same time, and even in the same Page. See example 8 below for Template selection and Item Render Token use.
  • You can insert an appropriate item Render Token in any page related template(s) to utilize module features. Render Tokens can be used in Page Templates, Product List Layouts, Messages, Headers, Footers, etc.. Templates used must be Store Morph Technology(SMT) templates.
  • Module Pre-Installs three Category Tree Templates for your use. Depending on a type of Token used, additional information such as Parameters may also need to be included.
  • <mvt:item name="ads-ultcattreeplus" param="[action]|[level]|[treeselect]"/>
    Where:
    • [action] - Action to be Performed (open or category:id or [settingsvar])
    • [level] - Levels of the Category Tree to always keep expanded (0 - Root Level)
    • [treeselect] - Advanced feature which allows for Multiple Category Tree templates to be used
    • [settingsvar] - Category ID variable used to lookup Extra Category Field data
  • Once the above Item Render Tokens are executed, the following variables and their associated template display entities are listed in the Token Table below:
    Click to Expand/CollapseClick Here to see the Available Tokens Table
    Variables
    Entities
    l.settings:TREE:ACTIVE &mvt:TREE:ACTIVE;
    l.settings:TREE:AGRPCOUNT &mvt:TREE:AGRPCOUNT;
    l.settings:TREE:ALT_TITLE &mvt:TREE:ALT_TITLE;
    l.settings:TREE:CAT_COUNTER &mvt:TREE:CAT_COUNTER;
    l.settings:TREE:CODE &mvt:TREE:CODE;
    l.settings:TREE:DESCR &mvt:TREE:DESCR;
    l.settings:TREE:DISP_ORDER &mvt:TREE:DISP_ORDER;
    l.settings:TREE:ID &mvt:TREE:ID;
    l.settings:TREE:IMAGE &mvt:TREE:IMAGE;
    l.settings:TREE:KEYWORDS &mvt:TREE:KEYWORDS;
    l.settings:TREE:LEVEL &mvt:TREE:LEVEL;
    l.settings:TREE:NAME &mvt:TREE:NAME;
    l.settings:TREE:PAD &mvt:TREE:PAD;
    l.settings:TREE:PARENT_ID &mvt:TREE:PARENT_ID;
    l.settings:TREE:PREFIX &mvt:TREE:PREFIX;
    l.settings:TREE:PREFIX_SELECTED &mvt:TREE:PREFIX_SELECTED;
    l.settings:TREE:PRODUCT_COUNT &mvt:TREE:PRODUCT_COUNT;
    l.settings:TREE:SEO_NAME &mvt:TREE:SEO_NAME;
    l.settings:TREE:TITLEIMAGE &mvt:TREE:TITLEIMAGE;
    l.settings:TREE:TREEIMAGE &mvt:TREE:TREEIMAGE;
    l.settings:ADS_CATTREE_CURRENTHASCHILDREN &mvt:ADS_CATTREE_CURRENTHASCHILDREN;
    l.settings:ADS_CATTREE_CURRENTLEVEL &mvt:ADS_CATTREE_CURRENTLEVEL;
  • Smart SEO™ Links Implementation:
    • Setup an .htaccess file in the root of your server.
      Here is a sample code to setup the Smart SEO™ style Merchant Links for Categories, Products and Additional Merchant Page codes:
      RewriteEngine On
      RewriteRule ^([A-Za-z0-9_-]+)\.html$ /mm5/merchant.mvc?Screen=UCT&uctcode=$1 [L=301]
    • Test the above settings using your domain URL:
      http://www.yourdomain.com/Category_Code.html
      Replacing Category_Code with actual category code.
    • Use the Original Ultimate Category Tree Template or its variation and edit the Template code.
    • Find and Replace all instances of:
      &mvt:global:sessionurl;Screen=CTGY&Store_Code=&mvta:store:code;&Category_Code=&mvta:tree:code;
      with this:
      http://www.yourdomain.com/&mvta:tree:code;.html
    • Smart SEO™ Links processing also provides for processing of Product and Other Page short links. Here are the sample links:
      http://www.yourdomain.com/Product_Code.html
      http://www.yourdomain.com/Page_Code.html
      Replace Product_Code and Page_Code appropriately.
      You will also need to revise your product and other page links throughout the store.
    • Test the modifications by visiting the public Merchant URL and clicking on the Category Tree Links
    • If they work, You Are Done! Happy Smart SEO™...
  • Alternate Search Friendly Links Implementation:
    • Setup an .htaccess file in the root of your server.
      Here is a sample code to setup the directory style Merchant Links for Categories, Products and Categories with Product codes:
      RewriteEngine On
      RewriteCond %{REQUEST_URI} ^/p/(.*)/(.*) [NC]
      RewriteRule (.*) /mm5/merchant.mvc?Screen=PROD&Product_Code=%1 [L=301]
      RewriteCond %{REQUEST_URI} ^/pc/(.*)/(.*)/(.*) [NC]
      RewriteRule (.*) /mm5/merchant.mvc?Screen=PROD&Product_Code=%1&Category_Code=%2 [L=301]
      RewriteCond %{REQUEST_URI} ^/c/(.*)/(.*) [NC]
      RewriteRule (.*) /mm5/merchant.mvc?Screen=CTGY&Category_Code=%1 [L=301]
    • Test the above settings using your domain URL:
      http://www.yourdomain.com/c/Category_Code/index.html
      Replacing Category_Code with actual category code.
    • Use the Original Ultimate Category Tree Template or its variation and edit the Template code
    • Find and Replace all instances of:
      &mvt:global:sessionurl;Screen=CTGY&Store_Code=&mvta:store:code;&Category_Code=&mvta:tree:code;
      with this:
      http://www.yourdomain.com/c/&mvta:tree:code;/&mvta:tree:name;.html
    • Test the modifications by visiting the public Merchant URL and clicking on the Category Tree Links.
    • If they work, You Are Done! Happy SEO...

  • Example 1 - MIVA Merchant Default Category Tree - "Original" Template from Version History
    • Item Render Token inserted into the Page Template:
      <mvt:item name="ads-ultcattreeplus"/>
      or
      <mvt:item name="ads-ultcattreeplus" param="open|0"/>


  • Example 2 - MIVA Merchant Category Tree with top two levels always expanded - Select "Original" Template from Version History
    • Item Render Token inserted into the Page Template:
      <mvt:item name="ads-ultcattreeplus" param="open|1"/>

  • Example 3 - MIVA Merchant Category Tree with all levels always expanded - Select "Original" Template from Version History
    • Item Render Token inserted into the Page Template:
      <mvt:item name="ads-ultcattreeplus" param="open"/>

  • Example 4 - Traditional Jump Menu - Select "ADS Cattree Jump Menu" Template from Version History
    • Item Render Token inserted into the Page Template:
      <mvt:item name="ads-ultcattreeplus" param="open"/>

  • Example 5 - Advanced Jump Menu - Select "ADS Advanced Cattree Jump Menu" Template from Version History
    • Item Render Token inserted into the Page Template:
      <mvt:item name="ads-ultcattreeplus" />

  • Example 6 -Enabling Additional Category fields on the CTGY - Category Display Page
    • Item Render Token inserted at the top of the CTGY Page - Category Display Page Template:
      <mvt:item name="ads-ultcattreeplus" param="category:id"/>
      This call will generate the following additional category variables/entities from module Individual Category settings:
      • l.settings:CATEGORY:ALT_TITLE - &mvt:CATEGORY:ALT_TITLE;
      • l.settings:CATEGORY:TITLEIMAGE - &mvt:CATEGORY:TITLEIMAGE;
      • l.settings:CATEGORY:TREEIMAGE - &mvt:CATEGORY:TREEIMAGE;
      • l.settings:CATEGORY:DESCR - &mvt:CATEGORY:DESCR;
      • l.settings:CATEGORY:KEYWORDS - &mvt:CATEGORY:KEYWORDS;

  • Example 7 - Enabling Additional Category fields anywhere - Subcategory Lists, Breadcrumb Navigation, etc..
    • Item Render Token inserted where the variables are to be generated:
      <mvt:item name="ads-ultcattreeplus" param="[settingsvar]"/> where [settingsvar] is the Category ID variable used to lookup Extra Category Field data. So if the Category ID variable is "l.settings:subcat:id", your complete Item Render Token will be:
      <mvt:item name="ads-ultcattreeplus" param="subcat:id"/>
      This call will generate the following additional variables/entities from module Individual Category settings:
      • l.settings:ADS_UltCatTreePlus_Category:ALT_TITLE - &mvt:ADS_UltCatTreePlus_Category:ALT_TITLE;
      • l.settings:ADS_UltCatTreePlus_Category:TITLEIMAGE - &mvt:ADS_UltCatTreePlus_Category:TITLEIMAGE;
      • l.settings:ADS_UltCatTreePlus_Category:TREEIMAGE - &mvt:ADS_UltCatTreePlus_Category:TREEIMAGE;
      • l.settings:ADS_UltCatTreePlus_Category:DESCR - &mvt:ADS_UltCatTreePlus_Category:DESCR;
      • l.settings:ADS_UltCatTreePlus_Category:KEYWORDS - &mvt:ADS_UltCatTreePlus_Category:KEYWORDS;

  • Example 8 - Multiple Instance Category Tree Template Design and Item Render Tokens
    • Create a New Category Tree Template and Name it Multi-Instance Cattree, in the notes field
    • Copy and Paste the code below into the Template Field. It consists of the "Original", "ADS Cattree Jump Menu" and "ADS Advanced Cattree Jump Menu" templates, with IF statements surrounding each section. The IF statements check for the value of variable "g.ads_treeselect", passed by the [settingsvar] in the Item Render Token parameter:
      Click to Expand/CollapseClick Here to See the Sample Code
      <mvt:if expr = "g.ads_treeselect EQ 'jumpalt'">
      <form name="jumpalt" id="jumpalt">
      <INPUT TYPE="hidden" name="Category_Code" value="&mvt:global:Category_Code;">
      <INPUT TYPE="hidden" name="Store_Code" value="&mvt:store:code;">
      <INPUT TYPE="hidden" name="Screen" value="CTGY">
      <select name="menu0" onchange="document.jumpalt.Category_Code.value=this.options[this.selectedIndex].value;submit()">
      <option value="">&gt;Select One&lt;</option>
      <mvt:foreach iterator="tree" array="ads_cattree">
      <mvt:if expr = "l.settings:tree:level EQ 0">
      <mvt:if expr="g.menu0 EQ l.settings:tree:code OR g.Category_Code EQ l.settings:tree:code">
      <option value="&mvt:tree:code;" selected>&mvt:tree:pad;&mvt:tree:PREFIX_SELECTED;&mvt:tree:name;&mvt:tree:SUFFIX_SELECTED;<mvt:if EXPR = " l.settings:tree:product_count "> (&mvt:tree:product_count;)</mvt:if></option>
      <mvt:else>
      <option value="&mvt:tree:code;">&mvt:tree:pad;&mvt:tree:prefix;&mvt:tree:name;&mvt:tree:suffix;<mvt:if EXPR = " l.settings:tree:product_count "> (&mvt:tree:product_count;)</mvt:if></option>
      </mvt:if>
      </mvt:if>
      </mvt:foreach>
      </select><BR>
      <mvt:if expr = "l.SETTINGS:ADS_CATTREE_CURRENTLEVEL GE 0 AND (NOT ISNULL l.SETTINGS:ADS_CATTREE_CURRENTHASCHILDREN OR l.SETTINGS:ADS_CATTREE_CURRENTLEVEL GE 1)">
      <select name="menu1" onchange="document.jumpalt.Category_Code.value=this.options[this.selectedIndex].value;submit()">
      <option value="">&gt;Select One&lt;</option>
      <mvt:foreach iterator="tree" array="ads_cattree">
      <mvt:if expr = "l.settings:tree:level EQ 1">
      <mvt:if expr="g.menu1 EQ l.settings:tree:code OR g.Category_Code EQ l.settings:tree:code">
      <option value="&mvt:tree:code;" selected>&mvt:tree:pad;&mvt:tree:PREFIX_SELECTED;&mvt:tree:name;&mvt:tree:SUFFIX_SELECTED;<mvt:if EXPR = " l.settings:tree:product_count "> (&mvt:tree:product_count;)</mvt:if></option>
      <mvt:else>
      <option value="&mvt:tree:code;">&mvt:tree:pad;&mvt:tree:prefix;&mvt:tree:name;&mvt:tree:suffix;<mvt:if EXPR = " l.settings:tree:product_count "> (&mvt:tree:product_count;)</mvt:if></option>
      </mvt:if>
      </mvt:if>
      </mvt:foreach>
      </select><BR>
      </mvt:if>
      <mvt:if expr = "l.settings:ADS_CATTREE_CURRENTLEVEL GE 1 AND (NOT ISNULL l.SETTINGS:ADS_CATTREE_CURRENTHASCHILDREN OR l.SETTINGS:ADS_CATTREE_CURRENTLEVEL GE 2)">
      <select name="menu2" onchange="document.jumpalt.Category_Code.value=this.options[this.selectedIndex].value;submit()">
      <option value="">&gt;Select One&lt;</option>
      <mvt:foreach iterator="tree" array="ads_cattree">
      <mvt:if expr = "l.settings:tree:level EQ 2">
      <mvt:if expr="g.menu2 EQ l.settings:tree:code OR g.Category_Code EQ l.settings:tree:code">
      <option value="&mvt:tree:code;" selected>&mvt:tree:pad;&mvt:tree:PREFIX_SELECTED;&mvt:tree:name;&mvt:tree:SUFFIX_SELECTED;<mvt:if EXPR = " l.settings:tree:product_count "> (&mvt:tree:product_count;)</mvt:if></option>
      <mvt:else>
      <option value="&mvt:tree:code;">&mvt:tree:pad;&mvt:tree:prefix;&mvt:tree:name;&mvt:tree:suffix;<mvt:if EXPR = " l.settings:tree:product_count "> (&mvt:tree:product_count;)</mvt:if></option>
      </mvt:if>
      </mvt:if>
      </mvt:foreach>
      </select><BR>
      </mvt:if>
      <mvt:if expr = "l.settings:ADS_CATTREE_CURRENTLEVEL GE 2 AND (NOT ISNULL l.SETTINGS:ADS_CATTREE_CURRENTHASCHILDREN OR l.SETTINGS:ADS_CATTREE_CURRENTLEVEL GE 3)">
      <select name="menu3" onchange="document.jumpalt.Category_Code.value=this.options[this.selectedIndex].value;submit()">
      <option value="">&gt;Select One&lt;</option>
      <mvt:foreach iterator="tree" array="ads_cattree">
      <mvt:if expr = "l.settings:tree:level EQ 3">
      <mvt:if expr="g.menu3 EQ l.settings:tree:code OR g.Category_Code EQ l.settings:tree:code">
      <option value="&mvt:tree:code;" selected>&mvt:tree:pad;&mvt:tree:PREFIX_SELECTED;&mvt:tree:name;&mvt:tree:SUFFIX_SELECTED;<mvt:if EXPR = " l.settings:tree:product_count "> (&mvt:tree:product_count;)</mvt:if></option>
      <mvt:else>
      <option value="&mvt:tree:code;">&mvt:tree:pad;&mvt:tree:prefix;&mvt:tree:name;&mvt:tree:suffix;<mvt:if EXPR = " l.settings:tree:product_count "> (&mvt:tree:product_count;)</mvt:if></option>
      </mvt:if>
      </mvt:if>
      </mvt:foreach>
      </select><BR>
      </mvt:if>
      <mvt:if expr = "l.settings:ADS_CATTREE_CURRENTLEVEL GE 3 AND (NOT ISNULL l.SETTINGS:ADS_CATTREE_CURRENTHASCHILDREN OR l.SETTINGS:ADS_CATTREE_CURRENTLEVEL GE 4)">
      <select name="menu4" onchange="document.jumpalt.Category_Code.value=this.options[this.selectedIndex].value;submit()">
      <option value="">&gt;Select One&lt;</option>
      <mvt:foreach iterator="tree" array="ads_cattree">
      <mvt:if expr = "l.settings:tree:level EQ 4">
      <mvt:if expr="g.menu4 EQ l.settings:tree:code OR g.Category_Code EQ l.settings:tree:code">
      <option value="&mvt:tree:code;" selected>&mvt:tree:pad;&mvt:tree:PREFIX_SELECTED;&mvt:tree:name;&mvt:tree:SUFFIX_SELECTED;<mvt:if EXPR = " l.settings:tree:product_count "> (&mvt:tree:product_count;)</mvt:if></option>
      <mvt:else>
      <option value="&mvt:tree:code;">&mvt:tree:pad;&mvt:tree:prefix;&mvt:tree:name;&mvt:tree:suffix;<mvt:if EXPR = " l.settings:tree:product_count "> (&mvt:tree:product_count;)</mvt:if></option>
      </mvt:if>
      </mvt:if>
      </mvt:foreach>
      </select><BR>
      </mvt:if>
      </form>
      <mvt:elseif expr = "g.ads_treeselect EQ 'jump'">
      <form name="jump" id="jump">
      <select name="menu" onchange="location=this.options[this.selectedIndex].value">
      <option value="">&gt;Select One&lt;</option>
      <mvt:foreach iterator="tree" array="ads_cattree">
      <mvt:if expr="g.Category_Code EQ l.settings:tree:code">
      <option value="&mvt:global:sessionurl;Screen=CTGY&Store_Code=&mvta:store:code;&Category_Code=&mvta:tree:code;" selected>&mvt:tree:pad;&mvt:tree:PREFIX_SELECTED;&mvt:tree:name;&mvt:tree:SUFFIX_SELECTED;<mvt:if EXPR = " l.settings:tree:product_count "> (&mvt:tree:product_count;)</mvt:if></option>
      <mvt:else>
      <option value="&mvt:global:sessionurl;Screen=CTGY&Store_Code=&mvta:store:code;&Category_Code=&mvta:tree:code;">&mvt:tree:pad;&mvt:tree:prefix;&mvt:tree:name;&mvt:tree:suffix;<mvt:if EXPR = " l.settings:tree:product_count "> (&mvt:tree:product_count;)</mvt:if></option>
      </mvt:if>
      </mvt:foreach>
      </select>
      </form>
      <mvt:else>
      <mvt:foreach iterator="tree" array="ads_cattree">
      <mvt:if expr="g.Category_Code EQ l.settings:tree:code">
      <mvt:if expr="l.settings:tree:image">
      &mvt:tree:pad;<img src="&mvt:tree:image;" border="0" alt="&mvt:tree:name;"><br>
      <mvt:else>
      &mvt:tree:pad;&mvt:tree:PREFIX_SELECTED;<a href="&mvt:global:sessionurl;Screen=CTGY&Store_Code=&mvta:store:code;&Category_Code=&mvta:tree:code;" class="level&mvt:tree:level;">&mvt:tree:name;</a>&mvt:tree:SUFFIX_SELECTED;<mvt:if expr=" l.settings:tree:product_count "> (&mvt:tree:product_count;)</mvt:if><br>
      </mvt:if>
      <mvt:else>
      <mvt:if expr="l.settings:tree:image">
      &mvt:tree:pad;<a href="&mvt:global:sessionurl;Screen=CTGY&Store_Code=&mvta:store:code;&Category_Code=&mvta:tree:code;" class="level&mvt:tree:level;"><img src="&mvt:tree:image;" border="0" alt="&mvt:tree:name;"></a><br>
      <mvt:else>
      &mvt:tree:pad;&mvt:tree:prefix;<a href="&mvt:global:sessionurl;Screen=CTGY&Store_Code=&mvta:store:code;&Category_Code=&mvta:tree:code;" class="level&mvt:tree:level;">&mvt:tree:name;</a>&mvt:tree:suffix;<mvt:if EXPR = " l.settings:tree:product_count "> (&mvt:tree:product_count;)</mvt:if><br>
      </mvt:if>
      </mvt:if>
      </mvt:foreach>
      </mvt:if>
    • To display the above sections, Insert Item Render Tokens where the Category Tree Templates are to be rendered. Make sure that the "ads-ultcattree" item is assigned to the associated pages:
      • <mvt:item name="ads-ultcattreeplus" param="open|1"/> - Merchant Style navigation with Levels 0 & 1 always displaying. This is the default part of the ELSE statement so no [settingsvar] needs to be specified
      • <mvt:item name="ads-ultcattreeplus" param="open|0|jump"/> - Traditional Style Jump Menu, where "jump" is the parameter passed as [settingsvar] variable value.
      • <mvt:item name="ads-ultcattreeplus" param="open|0|jumpalt"/> - Advanced Search/Configurator Style Jump Menu, where "jumpalt" is the parameter passed as [settingsvar] variable value
 


"architects of the web since 1998"
Learn more about our services

Build Your Business Online!
SERVICES | PRODUCTS | ACCOUNT LOGIN | STORE POLICIES | ABOUT US | CONTACT US | HOME

Copyright © 2006, Advanced Development Solutions, Inc.   -  Hosting by HOSTASAURUS
MIVA and related terms used on this page are registerd trademarks of the MIVA Corporation.