Change log

Ultimate Migration Guide (Step by Step)

0

So you’ve decided to move your site across to Treepl CMS. Good choice.

And you’ve decided to do it yourself. Good for you! You’re probably going to be doing this quite a few times so let’s make it fun…

Set aside a good chunk of uninterrupted time, crank up your favourite tunes and grab a strong drink. It’s migration time.

The below sections are ordered to try and minimise the amount of back and forth when creating the various components of a site.If a section doesn’t apply to your site, feel free to skip right over it.

Migration tools are in development that will progressively make the below steps easier. These sections will be updated as those tools are released.

The BC to Treepl CMS Migration App now converts BC Liquid tags, ie: {module_…} and {tag_…} to Treepl CMS Liquid tags! For more info on this, view the Forum discussion here.

1
Download the BC Site via FTP

Parityhigh Effortlow Timelow Docshigh Migration Toolactive

Download all files available via FTP from your BC site, if for no other reason than to just have a backup. However, these files can be referenced in the following steps as well.

You can also automatically migrate all files in the BC file system directly to your Treepl CMS site via the BC to Treepl CMS Migration App.

There is also now the ability to download a .zip archive of your BC site, including data from the following modules:

  • Pages
  • Page Templates
  • Module Layouts
  • Static files
  • Apps
  • Content Holders
  • System Pages
  • Email Templates
  • Web Apps

Further Resources:

BC FTP connection details BC .zip archive

2
Deep-Clean the BC Site (Optional)

Parityna Effortmed Timemed Docsna Migration Toolna

This step is optional, but you may want to take the opportunity to clear out the BC site of old pages, templates, files, etc. Particularly if it’s an old site, there can be a lot of junk floating around. And this can just get in your way during migration and could cause unnecessary work. However, be very careful not to remove assets that may still be in use somewhere (hence the backup in the previous step).

Once you’ve cleaned up, repeat the FTP download step to collect a new, clean, set of files.

3
Setup Treepl CMS Site Instance

Parityhigh Effortlow Timelow Docshigh Migration Toolna

So you can start work with the Treepl CMS platform you'll need to set up a Trial Site. Log into your Treepl Portal (portal.treepl.co) and click the "Create New Site" button.

Trial Site Documentation

View full article

Trial Sites are your development environments for starting a new site project before you publish to a custom domain name.

The number of Trial Sites available and the timeframe until they expire, depend on your Treepl CMS member status.

Quick Start

Setup a Trial Site

Once logged into your Treepl Portal (portal.treepl.co) you should arrive at the 'Trial Sites' page.

From here, use the ‘Create New Site’ button to start a new site instance, completing the information required for your site as follows:

Option Description
Site Name A descriptive name for your project.
Root Domain Either treepl.co or trialsite.co (for white-labelling).
Subdomain Usually autocompletes, but you can change if needed.
Hosting Plan An appropriate plan for your project requirements/budget.
Create From Choose a blank site or one of the free Treepl CMS templates (preview the templates via the blue button).
Data Center Choose the server location best for your site.
Country Set your sites primary location.
Timezone Set the server time to be used for all your site's date/time functions.

Click "Save" and within approximately 1 minute your site instances should spin up and ready to access.
(the instance will appear in your ‘Trial Sites’ list with a pending status until ready)

Manage a Trial Site

Once a Trial Site is ready, you'll see additional options available for managing your instance:

Option Description
URL View the Trial Site with the system generated subdomain.
Admin Navigate to the site admin.
Activate Start the site activation process to publish the site under a custom domain.
Duplicate Create an complete copy of the instance.
Edit details Access the instance settings.
Delete Remove the instance from your account.

4
Start BC Hosted Email Transfer Process (If Applicable)

Parityna Effortlow Timemed Docshigh Migration Toolpending

If your BC site has BC hosted emails, they can be transferred directly to Treepl CMS after following the below steps.

Transfer of BC Hosted Email Accounts

View full article

Managing Hosted Email Accounts with Treepl CMS

Hosted email accounts can be managed via your Treepl Portal.

After clicking the edit/pencil icon against the desired site in your ‘Live Sites’ list, you’ll see the ‘Email Accounts’ tab. Here you’ll find controls to manage existing email accounts, create new accounts or set up new email hosting altogether.

Starting New Hosted Email Service

To start a new hosted email service (when none is currently set up), click the “Get Started” button to begin the process.

Select the primary domain you’ll be using for email from the dropdown list available (you’ll be able to add domain aliases later).
Clicking ‘Save’ will provision the email service for that domain.

Email Domain Alias

Clicking the “+ Add domain alias” link under the primary domain listed for hosted email, you’re able to add additional domains that will be used as email domain aliases. That is, other domains that will also be mapped to ALL other email address you create here.

Once added, you’ll need to ensure MX and SPF records are in place as per the below articles.

Domain aliases create additional email addresses for ALL email users, although they don’t create additional email inboxes or count towards your site plan’s email user limit. They simply allow secondary domain/s to be used to deliver email messages to all existing email user’s inboxes (as an alias address).

Adding Email Addresses

Clicking the “Add New Email” button under the ‘Email Accounts’ heading allows you to set up new email users/inboxes for your domain/s, within the email limit of your site plan (shown in this sections heading, ie: ‘Email Accounts (0/3)’ indicates zero users added out of 3 available).

Upon creating a new email address, you’ll be prompted to enter the username portion of the address (preceding the ‘@yourdomainname.com’) and to set and confirm an account password.

Managing Email Accounts

Once you have email addresses added to your Treepl hosted email service you’ll be able to manage most aspects of the user accounts.

At a glance, you’ll see a list of existing addresses along with the storage quota used.

Clicking the context menu (3 dots) at the far right of the user address, allows you to reset the email account password for that address or delete the email account completely - removing that users inbox and all emails stored online for that address.

Expanding the email address listing, via the arrow icon on the far left, reveals the “+ Add email alias” link where you can create alternative email names that can be used to deliver email messages to this users inbox. Email aliases don’t create additional email inboxes or count towards your site plan’s email user limit.

Ensure your DNS records are in place for all domains used for Treepl hosted email, particularly for MX and SPF records, as per the articles below.

Transfer of BC Hosted Email Accounts (OpenSRS)

If you have existing email hosted with BC (via OpenSRS) and you wish to transfer the account to Treepl CMS the following steps need to be taken.

The owner of the BC site (the person paying the invoice - either the client if on direct billing or the Partner if you are reselling) is required to open a BC support ticket with the following information:

SUBJECT:
Transfer email accounts to Treepl CMS

SITE URL:
yourdomain/s.com

DETAILS:
Attention: Cristinel Anastasoaie
Requesting approval to move email accounts from Adobe's reseller account at OpenSRS to Treepl CMS for site/s:
yourdomain/s.com | -Site ID- (from you BC Partner Portal under 'My Sites')

For BC Partner Portal: -BC Partner Portal Code/ID- (from your BC Partner Portal under 'Settings' > 'Partner Settings')

BC support will likely escalate this ticket but will hopefully approve and respond within a day or two.

Once you, or the site owner, receives the approval response, please send an email to migration@treepl.co with BC's approval email attached as an .eml format or similar (OpenSRS want the message as an attachment rather than just forwarding it on).

Google "How to save a email in .eml format from <YOUR EMAIL CLIENT>" for instructions on doing this. If your email client does not support this, try saving the full email message as a HTML file or PDF as an alternative.

Treepl support will then liase with OpenSRS to continue the migration.

OpenSRS will also require verification of ownership of the domain by creating a TXT record in the relevant domain name's DNS, which Treepl will advise you, or the site owner, with the DNS record details.

Once the domain is verified, the process will soon be complete and Treepl Support will inform you of completion via email.

You can then proceed to further updating your DNS records, ensuring your MX records are correct, adding optional CNAME record for accessing webmail, and updating your SPF record for better email deliverability.

This process will simply reassign the OpenSRS email service from BC's reseller account to the Treepl CMS reseller account, under the domain name for those emails.
Once you go live with your trial site and assign the domain name to it, the email accounts will be automatically assigned to that live site for management and billing purposes.

Any account aliases or domain aliases you have configured for your email service will also be automatically brought over. After going live with the site, be sure to add any of those additional domains to the site instance and configure their DNS records as well.

Configuring your Email Client

As there are many different email clients across various operating systems and devices, we will not detail steps on adding or editing email accounts. However, below are all the connection details all email clients require in order to connect to your email service.

For further assistance with setting up accounts in your email client, refer to the programs help documentation, its support channels, or Google your email client name and version number for instructions.

Username:
[your full email address]

Password:
[your email account password]

Incoming and Outgoing mail server:
mail.b.hostedemail.com or mail.mailconfig.net

For those transferring from BC hosted email; for the foreseeable future you will likely be able to continue using mail.worldsecuresystems.com as the incoming/outgoing mail server. However, at some point this address will likely stop working so we advise updating this to the above details as soon as possible.

Incoming port settings:
Both IMAP and POP3 protocols are supported
IMAP 993 (SSL enabled) | 143 (SSL disabled)
POP3 995 (SSL enabled) | 110 (SSL disabled)
Authentication Password

Outgoing port settings:
SMTP 465 (SSL enabled) | 25 or 587 (TLS) | 8025 (SSL disabled)

Webmail

You can access your email accounts via a browser, without the need of an email client with the Webmail facility.
Using your email address and password log into Webmail here: https://mail.b.hostedemail.com or here: https://mail.mailconfig.net/.

Alternatively, you could set up a subdomain for accessing Webmail. For example 'mail.yourdomain.com' could be used to direct you to the Webmail address above specific to your domain.
See below for details on setting up CNAME Records to achieve this.

MX Records

If you are setting up hosted email accounts with Treepl CMS you will need to have the relevant MX record in your DNS.

Once logged into your DNS service, locate the DNS settings option.
If you have any existing MX records listed you’ll need to remove these.

Removing any existing MX records will stop that email service form working and you’ll likely lose access there. So be sure you have finished up with prior email accounts before proceeding.

DNS settings

Locate an option to add additional records.

Add Record

Choose a record type of “MX” and add @ to the Host/Name field (or leave it blank, depending on how your DNS service prefers it).

In the Value/Address field add mx.yourdomain.com.cust.b.hostedemail.com (replacing yourdomain.com with your actual domain name).

For the Priority field, you can leave any default value there or if no value exists add a priority of 10.

You can usually leave the "TTL" (Time To Live) set at the default. Generally though, the accepted value is 24 hours (86,400 seconds).

Record Values

Be sure to save/apply any changes and confirm you receive a successful message and no errors have occurred.
If unsure, or to double check, refresh the page or revisit the DNS settings to confirm your changes have applied.

Once the MX record has successfully propagated, you’re emails should then begin working.

Changes to your DNS may take an hour or two to become fully available on the internet.

CNAME Records for Webmail Access

Optionally, you may also like to set up a subdomain for a convenient way to log into the webmail service.
You can do this by adding a “CNAME” record type with a Host/Name of mail and a Value/Address of mail.yourdomain.com.cust.b.hostedemail.com
Then, when you visit mail.yourdomain.com you’ll be directed to the webmail login screen.


SPF Records

An SPF record is a TXT record that defines which authorised parties can send email on behalf of (in the name of) your own domain name.

There are various cases where Treepl CMS can send out emails in which you would want to appear as though they originated from you or your clients email address. Such as web form notifications, autoresponders, system messages, etc.

So that Treepl CMS can do this in an authorised, non-spam risk way, it is strongly advised that you add the following 'SPF' record to any domain name's DNS that will be used with Treepl CMS. The 'SPF' record would have @ as the Host/Name field (or left blank, depending on how your DNS service prefers it).

Use the SPF Generator to easily construct your SPF record, or to understand more about these values, or to manually construct your SPF record, see further details below.

SPF Generator

From your current DNS, eg: v=spf1 a mx include:_spf.google.com ~all





Instructions for manually creating, or updating, your SPF Record

For any domain name added to a Treepl CMS website that will utilise system email messages, you'll need to add include:_spf.trustedemail.co to your SPF Record, or create one if an SPF Record does not already exist.

Example:

v=spf1 include:_spf.trustedemail.co ~all

If your DNS services doesn't list 'SPF' as a record type choose 'TXT' as the record type instead.

Additionally, if you have Treepl hosted email (OpenSRS), your SPF record must also have include:_hosted.trustedemail.co.

So building on the example above we'd now have:

v=spf1 include:_spf.trustedemail.co include:_hosted.trustedemail.co ~all

It may be the case that you already have other 3rd parties sending emails on behalf of your domain and therefore already have an SPF record in place. In which case you'd need to add to this record and combine any existing entries with Treepl CMS values above.

Below is an example including an existing domain name of a 3rd party service (Google) plus Treepl CMS includes for both system emails and hosted emails:

v=spf1 include:_spf.trustedemail.co include:_hosted.trustedemail.co include:_spf.google.com ~all

For more information regarding SPF Record syntax refer to the official specification here.
And to check your SPF record syntax is valid you can use a service such this SPF Syntax Validator

5
Upload Site Assets

Parityhigh Effortlow Timelow Docshigh Migration Toolactive

Now we'll want to connect to our new Treepl CMS instance via FTP so we can upload some of our BC assets.

If working manually, we'll probably only want to upload assets relating to the front-end site, such as images, CSS, JS, documents, etc. We don't want to move over pages, templates or other layout files just yet.

Below are instructions for getting connected via FTP client.

FTP Access Documentation

View full article

Treepl CMS allows you to access site files through FTP/FTPS.
In this article you will learn how to connect to your Treepl website through FTP/FTPS.

FTPS is different to SFTP. SFTP is not currently supported.

Requirements

In order to connect to your Treepl CMS website through FTP you would need to have:

  • Live or trial website on Treepl CMS
  • FTP Client

Credentials

All Treepl sites’ FTP credentials follow the following pattern, using the sites’ system domain and your Partner email address:

Hostname:
[sitename].treepl.co
or
[sitename].trialsite.co
Username:
[sitename].treepl.co|[partner/admin-email]
or
[sitename].trialsite.co|[partner/admin-email]
Password:
[partner/site-password]

Replace [text in the brackets] with the relevant sitename (as shown in your Treepl Portal), username and password and use these credentials in your FTP client to connect to your website.

It is recommended to always use a secure connection via the supported FTPS configuration.

To do this in your FTP client may vary, however generally it involves selecting 'TLS/SSL' as an encryption type along with the standard FTP protocol selection.

Ensure to use 'explicit TLS/SSL' if the option is given, or set 'explicit' in your FTP client settings.

Users

All admin users of your site will have FTP access following the same credential pattern as described above but using their site admin email address and site admin password.

Directory Structure

You have the freedom of creating your own folders and files within your sites directory structure. Keep in mind though, that Treepl CMS has certain directories/folders within a sites file structure which are utilised for system functionality.

The default system directory structure (and FTP access) is outlined below:

  • ROOT
  • cms-assets
    • css
      • event-calendar.min.css
      • jquery.fancybox.min.css
      • main.css
    • includes
      • event-calendar.inc
    • js
      • event-calendar.min.js
      • jquery.fancybox.min.js
      • payment.js
  • Contact
    • ContentTemplates
      • Master.html
    • EmailTemplates
      • System Default.html
    • Forms
      • [your form name].html
    • MenuLayouts
      • [your_menu_alias]
        • Default
          • item.layout
          • menu.layout
          • sub_items.layout
    • ModuleLayouts
      • Custom
        • [YourCustomModule]
          • Detail_Detail.html
          • List.html
      • System
        • Banner
          • List.html
        • BannerGroup
          • List.html
        • Blog
          • Blog List Layout.html
          • General Blog Layout_Detail.html
        • BlogPost
          • List.html
          • Post Detail_Detail.html
        • Event
        • EventGroup
        • FAQGroup
          • List.html
        • FAQQuestion
          • List.html
        • GallerySlider
          • Detail_Detail.html
          • List.html
        • ItemAuthor
          • Detail_Detail.html
          • List.html
        • Page
          • Page Detail_Detail.html
          • Site Search List.html
        • PageFolder
          • Folder Detail_Detail.html
        • Slide
          • List.html
    • Pages
      • home.html
    • Snippets
    • SystemEmails
      • confirm-email-notification.html
      • invoice.html
      • password-retrieve-email.html
      • secure-zone-login-details.html
      • workflow-notification.html
    • SystemPages
      • 401.html
      • 403.html
      • 404.html
      • default-page.html
      • email-confirmation.html
      • error-page.html
      • form-submission-results.html
      • request-reset-password-result.html
      • request-reset-password.html
      • reset-password.html
    • WorkflowEmails
  • _tmp

Alternatively, you can automatically migrate all files in the BC file system directly to your Treepl CMS site via the BC to Treepl CMS Migration App.

6
Upload or Setup Placeholder Templates

Parityhigh Effortlow Timelow Docsmed Migration Toolactive

You can manually upload your BC page templates into your Treepl CMS instance via FTP into the ‘Content / ContentTemplates’ directory.

Alternatively the BC to Treepl CMS Migration App can be used to automate this process.

If manually migrating templates, don’t worry about editing the template code/markup at this stage. We just want to get them loaded in Treepl CMS so we can reference it in the following steps. We’ll work on the template code later.

If not using FTP, to manually create a content template, go to 'Content' > 'Content Templates'.

Click ‘Add New Template’ button.

Just complete ‘Name’ and choose whether it's the default template. Leave the content as is for now.

Repeat this for all required templates.

Content Templates Documentation

View full article

Content Templates are the framework of your HTML document when rendering Pages and module items, helping set up the common elements, scripts, and styles as well as any common footer elements and additional scripts.
Your site can include any number of Content Templates for various layout requirements or content types.

Quick Start

7
Upload or Setup Site Pages

Parityhigh Effortlow Timelow Docsmed Migration Toolactive

Upload your BC pages into your Treepl CMS instance via FTP into the ‘Content / Pages’ directory.

Alternatively the BC to Treepl CMS Migration App can be used to automate this process.

If manually migration pages, there will still be several properties you will want to set for each page, such as a more relevant system name, assigning it to a template, SEO and meta details, etc. and we’ll likely need to review the page content for any system tags or Liquid that needs replacing. However, all in good time and we’ll take those actions in a later step. For now we just want to get the bulk of the setup in place.

Pages Documentation

View full article

Pages allow the creation and management of standard page content and folders. Pages can be arranged within folders, secured from unauthorised access, hidden from either site search or search engines, assigned to templates and given full SEO properties among various other settings.
They can contain all manner of website content which can be managed via the WYSIWYG editor or directly via Code View.

Quick Start

8
Replicate Menus & Menu Layouts

Parityhigh Effortmed Timemed Docshigh Migration Toolactive

You can easily recreate your BC menus into your Treepl CMS instance via the admin ‘Content' > 'Menus’, and copy over and adjust your menu layouts.

Alternatively the BC to Treepl CMS Migration App can be used to automate this process.

If manually recreating your menus you can follow the documentation and tips below:

Menus Documentation

View full article

Menus allow the easy creation and management of dynamic navigation elements. These can be rendered anywhere throughout your site, whether in content templates, pages, snippets or most other layouts.
This modular approach to site navigation allows for links to be managed from a single location and with full access to the menu Layouts you can implement any 3rd party CSS framework or Javascript plug-in for advanced Menu functionality.

Quick Start

Creating a Menu

To create a new Menu, go to ‘Content’ > ‘Menus’ and click the “ADD MENU” button at the top of the page. Set the ‘Menu Name’ and ‘Menu Alias’ (described in more detail in the Settings section below) and click “SAVE” to continue setting up your new Menu - as described in the following sections below.

Editing a Menu

To edit an existing Menu, go to ‘Content’ > ‘Menus’ and click on the Menu name or the associated pencil icon on the far right of the list view.
Further options are as described in the following sections below.

Items

Under the ‘Items’ tab you can create new items by clicking the “+ Add New Item” button.

Menu items can also be created directly under other menu items (using the items “3 dots” context menu) to create nested/multi-level menu functionality, or by simply dragging and dropping an existing item onto the desired parent item.
Drag and drop can also be used to reorder item within the menu structure.

Creating a new item, or selecting an existing item, will display all the properties available to it which you can further edit as needed.

Item Properties

Property Liquid Description
Item Name {{item.itemName}} The menu item’s descriptive name which, by default, will display as the label text in your site menu.
URL {{item.itemUrl}} The page address or web link your menu item is to follow when clicked.
Use the link manager (link icon) to source internal module items and pages to link to, or manually add your own internal or external link path.
Target Frame {{item.itemTargetFrame}} The instruction for where the URL will open to with reference to a HTML document frame. Eg; _blank, _self, _parent, _top or custom named frame.
ID Name {{item.itemId}} A unique, identifying name assigned to the item for targeting with Javascript and/or CSS.
Class {{item.itemClass}} A style name assigned to the item for targeting with Javascript and/or CSS.
Title {{item.itemTitle}} The value of the items title attribute for SEO purposes, screen-readers and other assistive technology.
Custom Attribute {{item.itemCustomAttribute}} Any custom attributes you may wish to add at an item level. Typically used for configuring Javascript Menu plug-ins. Here you would add the full attribute name/value pair/s, eg: data-custom-name=”myCustomAttr”
Enabled {{item.itemEnabled}} Uncheck to disable the menu item from rendering on the front-end of your site.

Settings

Under the ‘Settings’ tab you can change the Name and Alias assign to the Menu.

Changing the Alias will result in any existing references to the previous Menu Alias breaking.

Layouts (Layout Groups)

A Layout Group provide full access to the HTML and Liquid markup of your Menu, allowing you to fully customise the layout and functionality of the menu as needed.

Menus can have any number of Layout Groups created for rendering menus on your site in different ways.

Layout Groups consist of 3 sub layouts which are responsible for the rendering process of the menu container, items and sub-items.

These Layout Groups can also be accessed via the File Manager or FTP in the /Content/MenuLayouts/<menu_alias>/ directory in the site's root.

The Default Layout Group is detailed below.

menu

You’ll notice how the ‘menu’ sub layout consists of the navigational wrapper (typically nav and/or ul elements) and sets up a Liquid forloop to call into the wrapper all of the Menu’s top level items using the ‘item’ sub layout to define how these will be rendered.

<nav class="{{this.alias}}">
	<ul>
	{% for item in this.items -%}
		{% include "/Content/MenuLayouts/{{this.alias}}/{{this.layoutGroup}}/item.layout" %}
	{% endfor -%}
	</ul>
</nav>

item

The ‘item’ sub layout consists of the individual item’s wrapper (typically an li element) and is where we can conditionally render the item’s attributes (such as values for href, target, title, custom attributes, etc...) via the use of Liquid tags and objects.

You’ll also notice the use of Liquid here to get the current page URL, match it against the menu item link and assign a selected class for targeting via your CSS.

{% assign isSelected = "" %}
{% if request.request_url.path == item.itemUrl %}
    {% assign isSelected = "selected" %}
{% endif -%}
<li{% if item.itemId != null %} id="{{item.itemId}}"{% endif -%}{% if item.itemClass != null or isSelected != null %} class="{{item.itemClass}} {{isSelected}}" {% endif -%}{% if item.itemCustomAttribute != null %}{{item.itemCustomAttribute}}{% endif -%}>
	<a href="{{item.itemUrl}}"{% if item.itemTargetFrame != null %} target="{{item.itemTargetFrame}}"{% endif -%} {% if item.itemTitle != "" %} title="{{item.itemTitle}}" {% endif -%}>{{item.itemName}}</a>
    {% include "/Content/MenuLayouts/{{this.alias}}/{{this.layoutGroup}}/sub_items.layout" %}
</li>

sub_items

The ‘sub_items’ sub layout consists of a conditional statement to only render a forloop if any sub-menu items exist for a given parent item. If so, we repeat the ‘item’ sub layout to again render the individual item and its properties and, once again any sub-menu items if present.

{% if item.items != null %}
    {% assign currentItem = item -%}
    <ul>
        {% for item in currentItem.items -%}
            {% include "/Content/MenuLayouts/{{this.alias}}/{{this.layoutGroup}}/item.layout" %}
        {% endfor -%}
    </ul>
{% endif -%}

BC Menu V2

If using BC’s menu v2 method for your menus, upload your menu layouts from ‘ModuleTemplates / Menu / <menu-name>’ into the corresponding Treepl CMS menu layouts in ‘Content / MenuLayouts / <menu_alias_name>’

The corresponding layouts from BC to Treepl CMS are:

  • “container.html” --> “menu.layout”
  • “group.html” --> “item.layout”
  • “childitem.html” --> “sub_items.layout”

Now, we’re finally going to get our hands dirty with some code.

We’ll need to convert the BC tags into the Treepl CMS way of doing things. Let’s reference the Menu documentation above while doing this.

Starting with the “menu.layout” file you'll want to weave your HTML markup into the Treepl CMS Liquid so that the Liquid logic renders the same markup you are referencing from BC.

Next, do the same with the “item.layout” file, weaving in the BC “group.html” markup.

Finally, the “sub_items.layout” file,

Repeat for each menu group you are using.

If you have multiple menus using the same layout group in BC, simply copy the same code you just set up into each menu layout files (menus don’t share layouts in Treepl CMS).

BC Menu V1 (legacy module)

If using BC’s original/legacy menu method, we’ll need to reference the rendered source code for your menu in the browser.

Load one of your BC site pages that features the menu. View the page source (right click, 'View Source') and identify the complete section of menu elements including the BC JS references.

Copy the menu elements into your “menu.layout” file so we can start working on converting that code.

Back in the source view, for the two JS references BC outputs, right click on the source links and save those JS files to your BC site files in an appropriate directory and than upload those to Treepl CMS in the corresponding directory.

Back in your menu layout, we'll relink the JS references to point to the new location.

Work through recoding the menu HTML into the Treepl CMS menu layouts to complete the process.

9
Setup Secure Zones

Parityhigh Effortlow Timelow Docshigh Migration Toolactive

Recreating all Secure Zones from BC into Treepl CMS is a fairly straight forward process.

Alternatively the BC to Treepl CMS Migration App can be used to automate this process.

If manually recreating your Secure Zones, you can follow the steps below:

Go to ‘Content’ > ‘Secure Zones’

Click ‘Add Secure Zone’ button.

Complete ‘Name’ and ‘Landing Page’ then “Next” to save and move to ‘Step 2: Secure Content’.

Pages will be ready for you to secure, however most other content we havn't migrated over yet so you'll need to revisit this section to secure all relevant items.

Click “Next” to save and move to ‘Step 3: Members’

Here you can manage the members subscribed to the secure zone.

For further documentation expand the box below:

Secure Zones Documentation

View full article

Secure Zones provide a way of creating restricted content on your website that only registered Secure Zone Members are able to access after successfully logging in.

Multiple Secure Zones can be added to create different member’s only areas or tiered membership structures.

Creating Secure Zones

Secure Zones can be found under ‘Content’ > ‘Secure Zones’ where a list of any available Secure Zones will be shown along with the number of Members subscribed to each zone.

You’ll also be able to create, edit or delete Secure Zones - as detailed below.

1
Details

Option Description
Secure Zones

Assign a name for your Secure Zone. This name will be used throughout the admin when referencing this Secure Zone and may also be displayed to the site user on the front-end or in Secure Zone related system emails.

Landing Page

Selecting a Page here determines the page to redirect a user to after a Secure Zone signup form submission. If multiple Secure Zones are selected for the signup form, the landing page used will be determined by the last selected Secure Zone in the list. This landing page can be overridden by use of the custom confirmation page method.

Type

Sets the access type to this Secure Zone.

“Free Access” allows subscriptions without requiring payment.

“Paid Access” allows pricing to be assigned to the Secure Zone via subscription forms.

Membership Renewal Rate

When 'Paid Access' type is applied this sets the billing recursion to this Secure Zone.

“Daily” billing recurs every day from initial subscription date.

“Weekly” billing recurs every week from initial subscription date.

“Monthly” billing recurs every month from initial subscription date.

“Yearly” billing recurs every year from initial subscription date.

When using Daily recurence, 5 hours is added to the secure zone expiration date to avoid loss of access while pending notification of successful payment.

Currency / Price

When 'Paid Access' type is applied this sets the billing currency and price.

The curreny options are defined under 'Settings' > 'Domains' > "Currency and Format"

Subscription expiry date

Sets the default membership expiry setting when users subscribe to this Secure Zone*.

“Not Specified” sets no default option for membership expiry.

“Custom Date” defines the default expiry date for users subscribing to this Secure Zone*.

“Number of Days” defines the default number of days before expiry for users subscribing to this Secure Zone*.

*Unless alternative expiry date methods are used in the signup form which will override this setting.

2
Secure Content

Option Description
Select Source Content

Choose the CMS content type to be listed in the window below (ie: Pages, System and Custom Modules...).

All available items from the selected Content Source will display in the left hand window and can be selected and moved to the right hand window in order to assign those items to this Secure Zone’s protection.
Likewise, protected items on the right can be selected and moved to the left in order to unassign them.

Moving items can be achieved by clicking the single arrow icons (in the direction of the desired move), or by dragging and dropping the items into the desired side.
Multiple items can be selected by holding down Ctrl (on PC) or Command (on MAC) and clicking multiple items.
The double arrows will move all items (regardless of selection) from one side to the other.

To secure Folders/directories and uploaded files, such as PDF’s, Word Docs, etc. see the 'Files and Folders' section below.

3
Members

A list of currently subscribed Members will be listed here along with their email address along with the ability to click through to their individual CRM records (by clicking their name or the pencil icon to the right), or removing the Member from the Secure Zone (by clicking the associated trash can icon to the right).
Quick searching the list is also possible via the search field just above the list view.

You can also subscribe existing CRM contacts to the Secure Zone by clicking the “Add New Member” button at the top of the page.
From the ‘Email Address’ field a dropdown list of existing contacts will be presented for selection. Start typing a known email address to filter the list to those matching your search.

The “Send email details to user” checkbox allows you to send the ‘Secure Zone Login Details’ system email to the contact at the same time as subscribing them.

4
Files & Folders

This interface allows files and folders, from the website, to be be selected from the left ‘All content’ region and moved into the right ‘Secure content’ region.

After selecting the required items (which will highlight), clicking the lock icon in the middle will list the selected items in the ‘Secure content’ region.

Multiple items can be selected by Ctrl (on PC) or Command (on MAC) clicking subsequent items.

Unsecuring items can be done in the same way but in reverse, removing items by selecting them from the right ‘Secured content’ region and clicking the unlock icon.

The “Clear All” button at the bottom can be used to unsecure all items at once.

Securing a folder will in turn secure all child items, even though they are not explicitly listed as being secured. Likewise, you do not need to secure every individual child item of a folder if that parent folder is secured.

Files and folders can also be assign to Secure Zones via the File Manager.

To secure Pages and Module items see the 'Secure Content' section above.

Editing Secure Zones

From the Secure Zone section (‘Content’ > ‘Secure Zones’) you can edit any existing Secure Zones from the list view by clicking on it’s name or the pencil icon on the right.
Secure Zones can also be deleted by clicking on the trashcan icon.

Adding a Login Form

Secure Zone login forms can be added anywhere within your site and the required form code can be obtained from the Components Manager.

For example, on a standard Page, in the ‘Content’ editor field, open the Components Manager (at the top right of this field), choose ‘Secure Zone’ > ‘Login Form’ and select “Login Form”.
The markup and form code will be copied to your clipboard ready to paste into the ‘Content’ field (or any other content area or layout within your site).

You can customise this markup as needed providing the form and inputs remain in place.

By default, the user will remain on the page they were on upon a successful login form submission, and a URL parameter will be added to the current page address of ?login=success.
However, this behaviour can be overridden by use of the custom confirmation page method, redirecting the user to a defined page, again with the URL parameter ?login=success added to the page address.

For example, you could set the confirmation page so the user is taken into their account page after logging in.

Alternatively, you can instruct the login process to redirect the user to a specific Secure Zone's Landing Page (defined in that Secure Zone's settings) by adding the following hidden input to the form code, replacing [secureZoneID] below with the ID of your Secure Zone:

<input type="hidden" name="secureZoneId" value="[secureZoneID]">

If the user submits incorrect login details, the ‘Forbidden’ (403) system page will be displayed.

If a visit to a secured page/item is attempted while the user is not logged in, the ‘Unauthorised’ (401) system page will be displayed.

These system pages can be customised and are found under ‘Settings’ > ‘System Pages’.

See System Pages documentation for more details.

Logged in users will be logged into all Secure Zones they are subscribed to and will have access to all the secured content corresponding to those Secure Zones.

A logged in session will expire after 24hrs regardless of member activity on the site during that session. Members will be required to log in again after their session has expired if they attempt further access.

Rendering Logged In Member Data

When a user is logged in to a secure zone, the request.currentmember property (part of the request object) will return the logged in member's data. An example is below:

{
    
    ...
    
    "is_logged": true,
    "currentmember": {
        "id": 162,
        "email": "asmith@example.com",
        "firstname": "Alex",
        "lastname": "Smith",
        "address": null,
        "city": null,
        "state": null,
        "zipcode": null,
        "country": "Australia",
        "site": null,
        "phone": null,
        "createddatetime": "2018-11-21T15:17:22.717",
        "updateddatetime": "2018-11-21T15:17:22.763",
        "securezones": [
            {
            "id": 2,
            "name": "Members Secure Zone",
            "landingpageid": 2541,
            "createddatetime": "2018-11-21T15:17:23.037",
            "updateddatetime": "2018-11-21T15:17:23.037"
            }
        ]
    }
}

For more information about retrieving this Liquid data, see the request object documentation.

Adding a Logout Action

You’ll probably also want to give users the ability to log out of their secured session.
You can do this by generating a logout link from the Component Manager under ‘Secure Zone’ > ‘Logout Action’. Which will copy the following code to your clipboard:

<a href="/public/api/members/logout">Logout</a>

You can also add to this link with a redirect parameter if you would like users to be redirected to a specific page upon logout. Add the redirectURL parameter along with your page URL to the link path like so:

<a href="/public/api/members/logout?redirectURL=/YOUR-REDIRECT-PAGE">Logout</a>

Adding a Signup Form

If you’d like website users to be able to subscribe themselves to a Secure Zone, or even multiple Secure Zones, you’ll need to create a Form (‘Content’ > ‘Forms’) in order to add the user to the CRM and store their credentials for the Secure Zone/s.

This form can also contain any other fields, subscriptions, payments, etc. so you can customise this for your specific requirements.

The only requirement for the Form to be able to subscribe a user to a Secure Zone is to have a system email address field and a Secure Zone selected from the ‘Settings’ tab. However, additional Secure Zone options can be added such as Secure Zone expiry date/days and set/confirm password fields.

See Forms documentation for more details on form fields and settings.

After a user submits a Secure Zone subscription form they may receive up to three system emails. A first-time subscriber will receive the ‘Confirm Email Notification’ email, to check they are a valid user (confirmed email addresses will not continue to receive this email). Secondly, they will receive the ‘Secure Zone Login Details’ email, providing details about the Secure Zone/s they are now subscribed to. And third, they may receive a Auto-response email if one has been configured for the form used.

Both of these emails can be customised and are found under ‘Email Notifications’ > ‘System Emails’.

See System Emails documentation for more details.

Manually Approve Secure Zone Subscribers

If you’d like to allow users to create their accounts via the front-end of the website but not be able to log in until an admin users has approved them, you would configure the sign up form with your desired fields (and likely the password fields), but you would not select a secure zone to be assigned upon submission, under the forms ‘Settings’ tab.

After reviewing the account request, the admin user would simply subscribe the Contact to the appropriate Secure Zone/s and, if needed, send out either the Password Recovery email and/or the Login Details email. Or otherwise inform the user that their request has been approved.

When a first-time user submits a form with password fields present, they will receive the ‘Confirm Email Notification’ system email and will need to follow the validation link and confirm their email address before they are able to log in.

Manually Subscribing Contacts

Adding Contacts to a Secure Zone during creation of the Secure Zone or while editing a Secure Zone is one way of subscribing Contacts, as noted in the above Creating Secure Zones section. However, you can also subscribe Contacts directly from their CRM record.
Locate the Contact in the CRM and navigate to the ‘Subscriptions’ tab. Here you find options to select from available Secure Zones, set the subscription expiry dates, or send password recovery or login details system emails to the Contact.

Resetting Password

A password reset workflow can be initiated either by the site user, from the front-end of the site (if made available), or by an admin user from the site admin area.

On the front-end, providing a link has been made available to the site’s ‘Request Reset Password’ system page (usually a link is included with the login form), the Member can submit the form on this page to trigger the password reset workflow. This workflow will send the Member an email with a unique, temporary link to the ‘Reset Password’ system page where they’ll be able to create a new password.
Upon submitting the password reset, the user will be directed to the ‘Request Reset Password Result’ system page.

All of these system pages can be customised and are found under ‘Settings’ > ‘System Pages’.

See System Pages documentation for more details.

From the site admin, an admin user can also initiate the same password reset workflow for an individual Contact.
First, locate the Contact in the CRM, or from the list of members in the Secure Zones section. Once in the Contact’s record, navigate to the ‘Subscriptions’ tab and click the “Send Password Recovery E-mail” button.

The temporary link for a password reset is valid for 24hrs.

Email Domain Sender Verification

As the Secure Zone module requires various system emails be sent out to website users, it’s strongly recommended to review your ‘From’ email domains that you’re using for these outbound system emails.
By default, the ‘trustedemail.co’ domain is set as the ‘From’ address for system emails and as such is already verified. However, if you are personalising these emails with your own email addresses, ensure you have the relevant SPF records in place for those domains and that you’ve added the domain to the verified senders list under ‘Settings’ > ‘Domains’ > ‘Email Domains’ tab.
Failing to configure these settings for custom sending addresses may result in lower deliverability rates.

10
Setup Mailing Lists (MailChimp)

Paritylow Effortmed Timelow Docshigh Migration Toolpending

Before you can set up Mailing Lists in Treepl CMS you need to connect a MailChimp account using their provided API key.

Below are documentation for setting up the API connection and further inofrmation about adding Mailing Lists.

API Provider Documentation

View full article

Found under ‘Email Marketing’ > ‘API Provider’, this section allows for the connection of a supported email marketing provider.

Select the service provider form the dropdown list and then enter your API key provided by your email marketing provider.

Mailchimp API Key

To generate your Mailchimp API key, log into your Mailchimp account and click on your profile name in the top right of the screen. Select ‘Account’ from the dropdown. Then click on the ‘Extras’ tab and select ‘API keys’.

Under the “Your API keys” heading, click the “Create API Key” button and your key will be generated.
Copy the key value and add it to the Treepl ‘API Provider’ section and save the settings.

Your Mailchimp integration is now complete and you can start managing Mailing List and Subscribers directly from within Treepl CMS.

Mailing Lists Documentation

View full article

Found under ‘Email Marketing’ > ‘Mailing List’ is where you’re able to manage Mailing List and their Subscribers.

If you have set up an email marketing provider integration with Treepl CMS, this section will be integrated with that service and allow synchronisation of data.

Current email marketing integration allows for Mailchimp connections only. See the ‘API Provider’ documentation in the ‘Related Articles’ section below for setting up your integration.

Existing lists can be managed here, with any changes or removal of the lists reflected in your email marketing provider account.

Creating a new list here will prompt you for all the required information that your email marketing provider will need, and upon saving, the Mailing List will be created in both Treepl CMS and your email marketing provider in real-time.

You can also view and manage list subscribers under the “Subscribers” tab with the ability to remove (unsubscribe) contacts or manually add them.
From this section you can only add subscribers from already existing contacts within your site, locating the contact by starting to type their email address into the input field.
The subscribed contact will then be pushed to the matching list at your email marketing provider.

As at version 2.3, Mailing List and subscriber changes will only be pushed up to Mailchimp. Changes made to Mailing Lists within Mailchimp are not currently pulled back into Treepl CSM. With the exception of an unsubscribe event (either from within the Mailchimp admin or via an unsubscribe link) which will be reflected in both Mailchimp and Treepl CMS in real-time.
Further syncronisation methods are coming soon.

Currently, Email Campaigns would generally be managed in MailChimp for full functionality of the MailChimp service. However, basic Email Campaigns can be add via Treepl CMS and pushed to MailChimp.
More documentation coming soon on this.

11
Setup Site Search

Paritymed Effortlow Timelow Docsmed Migration Toolpending

You don’t need to set up any Site Search module in Treepl CMS. This functionality is ready to use simply by inserting the search form and component tag.

So there is nothing you need to do in this step.

Later in the migration we’ll need to replace any BC site search forms so we’ll reference back to this documentation:

Site Search Component Documentation

View full article

This component outputs data relating to a site search request passed in a URL parameter SearchKeyword to any page (typically from a search form submission).

{% component type: "site_search", source: "Page", layout: "Site Search List" %}

Search queries are currently made against all of the following modules:

  • Pages
  • Blogs (Blogs and Posts)
  • Events (Groups and Items)
  • Banners (Groups and Items)
  • Galleries/Sliders (Groups and Items)
  • FAQs (Groups and Items)
  • Custom Modules
  • Authors
  • Products/Catalogs

Parameters and Options

Parameter Values Required Description
type site_search

This is the name of the entity that needs to be used for the component retrieving function.

source Page (default)
<Entity name/ID>
The entity name or ID that the layout is to be referenced from.
layout Site Search List (default)
<Your Layout name>

The layout name you want to use for rendering the component. The layout name is referenced from the available Layouts of the source specified.

While this parameter is required to render your Layout markup, if the parameter is blank, has an incorrectly referenced Layout, or is removed altogether then the component will still output the modules item data to a Liquid collection which can be accessed via the collectionVariable parameter.

sortBy id
parentid
name
weighting
url
urlslug
releasedate
expirydate
LastUpdatedDate
Author
ItemCategories
ItemTags
<CustomPropertyName>
...and any other top level properties available for the module
ftpfullpath

The name of the property to sort by. If empty or not present, alpha/numeric sorting will be used.

Remove spaces from custom property names here.

sortOrder ASC (default)
DESC

ASC sorts the items in ascending order while DESC sorts in descending order (based on alpha/numeric or date sorting).
If empty or not present, alpha/numeric sorting will be used.
random false (default)
true

Retrieves matched search results at random. For example, if you limit the results to 5 but 10 items are matched to the search term, 5 of the 10 results will be output at random. If pagination applied, th esecond page will be the 5 remaining random items.

If used in conjunction with sortOrder the sorting criteria will be applied to the randomly retrieved results.

limit 10 (default)
<number>

The maximum number of items returned. If displayPagination is enabled this determines the maximum number of items per page.
enablePagination true (default)
false

Enables/disables pagination for the component.

This is useful for avoiding pagniation affects for a specific component when multiple components of the same module are output on the same page and do use pagination.

displayPagination false (default)
true

Displays pagination if there are more items available than the limit set.
emptyMessage <Your custom message>
Custom content that is rendered if no value is passed to the SearchKeyword parameter (not if no search results are found). The default is no content.
Liquid variables are supported here, although Liquid logic tags and HTML are not.

If using Liquid variables with filters added, be sure to change any double quotes to single quotes. For eg:
emptyMessage: “{{ myVariable | prepend: 'Error: ' }}”

To use HTML in your empty message, first capture it using a Liquid capture, then insert the capture variable into the emptyMessage parameter.

object item (default)
collection

Determines the method for Liquid rendering.
item returns each item iteratively, one after another, for output (generally, output to a container element with no need for looping through the data).
collection returns all items as one collection for output (your container element and looping logic would be handled in the Components Layout).
collectionVariable <yourLiquidVariableName>
Assigns the data to a Liquid collection enabling further access to the data on the Page or Template using Liquid.

Your collectionVariable value must only contain English letters, numbers or underscores. Spaces or special characters are not supported.

<customParameter> <your custom value>
You can add your own additional parameters (name/value pairs) to the Component tag. These will be passed to the Components Layout (and the collectionVariable if used) for use via Liquid.

Your <customParameter> name must only contain English letters, numbers or underscores. Spaces or special characters are not supported.

You can use HTML as the value here, just be sure to change any double quotes in your HTML to single quotes.

Liquid Output

For an example of the Liquid data that will be output from this components, please see the ‘Basic Site Search Demo’ link in the External Resources section below.

Accessing the Data

This data is accessible in two main ways:

1. Using Liquid in the specified Layout via the this object.

{{this['name']}}

2. Directly on the Page or Template via a Liquid Collection if collectionVariable was added to the Component tag.

An example using collectionVariable with value "searchResults" is as follows:

{% component type: "site_search", source: "Page", layout: "", collectionVariable: "searchResults" %}

Looping through the collection to render all the item names in a list:

<ul>
{% for sr in searchResults.items %}
    <li>{{sr['name']}}</li>
{% endfor %}
</ul>

Accessing a specific item within the collection. In this case the first item name (zero based index):

{{searchResults.items[0]['name']}}

12
Replicate Existing URL Redirects

Parityhigh Effortmed Timemed Docshigh Migration Toolactive

While you can import URL Redirects into Treepl CMS in bulk, BC doesn't have an export function available from their admin, so you’ll need to enter URL redirects manually. Alternatively the BC to Treepl CMS Migration App can be used to automate this process.

See below for more information on URL Redirects.

URL Redirects Documentation

View full article

You may want to do this if migrating a previous website to a new website structure within Treepl CMS where page addresses need to change or are structured differently, or if changing the URL/path of an existing page. Creating a 301 redirect will help you maintain SEO ranking for that URL while moving it’s address.

Quick Start

Managing URL Redirects

When adding or editing a URL redirect you’ll need to enter in the source URL (the previous URL path) and the destination URL (where you’d like the visitor the end up if attempting to access the source URL).
You’ll also be able to turn the redirect off and on at any time using the ‘Enable’ checkbox.

The option to set the case sensitivity of your redirects is also available, which is particularly helpful if migration from a previous platform where URLs were case sensitive and need to be handled as such.

If you have many URL Redirects listed, you can use the search filter at the top of the list to help quickly locate items containing your keyword search.

Removing a URL redirect completely can be done using the trashcan icon to the right of the item.

Import / Export

URL Redirects can also be imported, exported or deleted in bulk via the context menu () next to the "Add New URL" button.

13
Setup Admin User Roles

Paritymed Effortlow Timelow Docsmed Migration Toolpending

While we won’t be adding Admin Users just yet, we’ll still get the User Roles set up and in place ready to assign users to in a later step.

To set up Admin User Roles, go to ‘Settings’ > ‘Admin User Roles’

Click ‘Add Admin Role’ button.

Complete a 'Name' for your Role and configure the permissions, turning off checkboxes to block users access to those items.

Many permission items have nested items for further fine-grain control.

14
Setup Email Notification Workflow/s

Paritymed Effortlow Timelow Docshigh Migration Toolactive

We’ll set up the default Notification Workflow email (and additional ones if needed - make sure you’re site plan supports multiple Workflow Emails if you need more than one Workflow)

You can optionally, upload your BC workflow email layouts into your Treepl CMS instance via FTP into the ‘Content / SystemEmails’ directory. However, if you only have a few email layouts it may be better to set these up via the Admin as you'll need to configure other settings as well.

Alternatively the BC to Treepl CMS Migration App can be used to automate this process.

See below for documentation on Workflows.

Workflows Documentation

View full article

A Workflow is an action (or rule) that determines how a notification is handled. Workflows allow for greater control of email notifications that get sent when Forms are submitted on the front-end of your website. In this case we’re looking at Email Notifications.

Workflows consist of 3 main components. The ‘trigger’, which would be a form submission occurring on your website. The ‘action’, which is the workflow rule determining how the email notification will be sent and the ‘content’, which is the actual message delivered.

To help further visualise how all this comes together we can nest these components together as in the below diagram.

Custom Workflow Components Diagram

The outer layer is the form triggering the Workflow, which in turn governs the email content components to be used. Noting here that an email can consist of an overall template as well as the message body.

Furthermore, the trigger can activate multiple Workflows, in the case where various email notifications may need to be sent with different content and/or different recipients.

Built-In 'Inquiry Workflow'

Let’s first look at the built-in ‘Inquiry Workflow’ available by default.

This Workflow cannot be renamed or deleted as it’s the system default available to all website plans. You can add additional custom workflows if your website plan includes the Custom Workflow feature.

Assigning a Workflow

You can assign a workflow to a form under the forms settings tab, found under ‘Content’ > ‘Forms’, choosing the desired form (or creating one), and navigating to the ‘Settings’ tab.

Select the workflow from the ‘Workflow’ dropdown list and save the form.

If no Workflow is selected the form will not trigger any notification and so no admin users will be notified.

The ‘Email Notification’ section found here is for enabling an email autoresponder to be sent out to the users upon form submission. More on this can be found in the documentation around Forms.

Edit a Workflow

You can also customise the workflow recipient/s.

Under ‘Email Notifications’ > ‘Workflows’ you’ll find the workflows available and you can edit a chosen workflow’s settings. The built-in workflow has its name and the workflow email to be used preset, and from here you can add the email addresses of the recipients that are to be notified. Multiple recipients can be added.

Workflow Notification Email

The preset workflow email is labeled ‘Workflow Notification’ and we can access this email, again under ‘Email Notifications’ > ‘System Emails’ and choosing the item called ‘Workflow Notification’.

This is only for the built-in workflow email notification. If you create your own custom email notifications they will be found under ‘Email Notifications’ > ‘Workflow Emails’ (see Custom Workflows section below).

The email notification can be assigned an email template, which can be further edited under ‘Email Notifications’ > ‘Email Templates’. As well as a “Subject” line, “From email” address and “From name” which would likely represent the staff member responsible for these notifications and to whom the recipient/s would likely reply to.

Dynamic content can be added to the email body, rendering information from the form submission as well as inserting most other Liquid components and logic (suitable for email content).

Email Notification Template

Similar to above, the built-in “System Default” email template can be edited or you can create your own custom templates. Again, with the ability to insert dynamic content related to the notification or other website data accessible via Liquid.

Custom Workflows

Now, to look at setting up custom workflows.

In this case, you’ll likely be creating all the various workflow components from scratch and bypassing the system built-in options. So I suggest working backwards (from the email template through to the form) to avoid stepping on your own toes, otherwise, you’ll need to assign items to items you’re working on that haven’t yet been created.

So, starting at the email templates level, under ‘Email Notifications’ > ‘Email Templates’, we’d create a new template. You could duplicate the “System Template” as a starting point, using the ‘Duplicate’ action, or start from scratch with your own code.

Once the template has been created and saved we can move on to the custom workflow email, under ‘Email Notifications’ > ‘Workflow Emails’.

Set an appropriate name, assign the template we just created and configure the subject, and senders details. For the content, you can use the “Email Data” button to insert dynamic Liquid collections for further coding along with your custom HTML and message.

You may even want to go back to the system notification email and copy it’s HTML and Liquid code as a starting point.

After saving your email content, we can add a custom workflow rule to control when the email notification is sent. Under ‘Email Notifications’ > ‘Workflows’, click “Add New Workflow” and set an appropriate name for your workflow. Assign the workflow email we just created and then add the email addresses of any recipients who need to receive this notification and save the workflow.

Finally, assign your custom workflow to a form (or create a new form) under ‘Content’ > ‘Forms’, choosing the desired form to work with and navigating to it’s ‘Settings’ tab where we can assign the Workflow.

Save the form and your new custom workflow will now be triggered upon its submission.


Triggering Different Workflows

A form can be configured, via its ‘Settings’ tab, to trigger single, or multiple, predefined Workflows. However, there may be cases where you want to trigger a different Workflow/s based on conditions during the form's submission on the website.

An example of this might be allowing the user to select which department an enquiry is to be sent to. Or perhaps the condition is dynamically set, without user input, based on other variables such as Liquid data or detecting a users selection of another input via Javascript.

You can achieve this by adding an input to the form with name="customWorkflows" and value="[WorkflowID]" where [WorkflowID] is to be replaced with your desired workflow’s ID.

You can find the Workflow ID by navigating to the appropriate Workflow in the Treepl CMS Admin and noting the trailing number in the URL.
eg: https://[YOURSITE]/admin/custom-workflow/2

Insure your site plan supports multiple Workflows in order to utilise this method.

In the first example, where the user can select the appropriate workflow, you could add a dropdown to the form with the following values:

<select name="customWorkflows">
    <option value="[WorkflowID]">Sales Enquiry</option>
    <option value="[WorkflowID]">Technical Support</option>
</select>

Or the second example, where the Workflow is set based on other conditions such as a Liquid variable, you could have a hidden input field like so:

<input type="hidden" name="customWorkflows" value="{{myWorkflowVariable}}">

Or, if setting the Workflow ID with Javascript based on the selection made in another dropdown:

<input type="hidden" name="customWorkflows" value="1">

<select name="enquiryType">
    <option value="">- Please select -</option>
    <option value="Sales Enquiry" data-workflowid="1">Sales Enquiry</option>
    <option value="Technical Support" data-workflowid="2">Technical Support</option>
</select>
<script>
    var workflow = document.querySelector('input[name="customWorkflows"]');
    var selector = document.querySelector('select[name="enquiryType"]');
    
    selector.addEventListener('change', changeWorkflow);
    
    function changeWorkflow(el) {
        var dataID = el.target.options[el.target.options.selectedIndex].getAttribute('data-workflowid');
        workflow.value = dataID;
    }
</script>

You can even trigger multiple Workflows by changing the input type to a multi-selection style input, such as checkboxes:

<input type="checkbox" name="customWorkflows" value="1">
<input type="checkbox" name="customWorkflows" value="2">

Or even with a comma separated list of Workflow ID’s in a text input.

<input type="text" name="customWorkflows" value="1,2">

Triggering Workflows based on form inputs, with either a valid or invalid value for the Workflow ID, will override any Workflow settings configured in the forms ‘Settings’ tab, even if no Workflow is enabled there.

SPF Records

An SPF record is a TXT record that defines which authorised parties can send email on behalf of (in the name of) your own domain name.

There are various cases where Treepl CMS can send out emails in which you would want to appear as though they originated from you or your clients email address. Such as web form notifications, autoresponders, system messages, etc.

So that Treepl CMS can do this in an authorised, non-spam risk way, it is strongly advised that you add the following 'SPF' record to any domain name's DNS that will be used with Treepl CMS. The 'SPF' record would have @ as the Host/Name field (or left blank, depending on how your DNS service prefers it).

Use the SPF Generator to easily construct your SPF record, or to understand more about these values, or to manually construct your SPF record, see further details below.

SPF Generator

From your current DNS, eg: v=spf1 a mx include:_spf.google.com ~all





Instructions for manually creating, or updating, your SPF Record

For any domain name added to a Treepl CMS website that will utilise system email messages, you'll need to add include:_spf.trustedemail.co to your SPF Record, or create one if an SPF Record does not already exist.

Example:

v=spf1 include:_spf.trustedemail.co ~all

If your DNS services doesn't list 'SPF' as a record type choose 'TXT' as the record type instead.

Additionally, if you have Treepl hosted email (OpenSRS), your SPF record must also have include:_hosted.trustedemail.co.

So building on the example above we'd now have:

v=spf1 include:_spf.trustedemail.co include:_hosted.trustedemail.co ~all

It may be the case that you already have other 3rd parties sending emails on behalf of your domain and therefore already have an SPF record in place. In which case you'd need to add to this record and combine any existing entries with Treepl CMS values above.

Below is an example including an existing domain name of a 3rd party service (Google) plus Treepl CMS includes for both system emails and hosted emails:

v=spf1 include:_spf.trustedemail.co include:_hosted.trustedemail.co include:_spf.google.com ~all

For more information regarding SPF Record syntax refer to the official specification here.
And to check your SPF record syntax is valid you can use a service such this SPF Syntax Validator

15
Replicate Web Forms

Parityhigh Effortlow Timemed Docshigh Migration Toolpartial

You can create new web forms in the Treepl admin for each of your BC Web Forms and copy over and adjust your form layout/code.

Alternatively the BC to Treepl CMS Migration App can be used to automate this process.

See below for documentation on Forms.

Forms Documentation

View full article

0

Forms are an essential part of collecting user information on your website.
Treepl CMS makes managing forms easy and powerful.

Quick Start

Creating a Form

Found under 'Content' > 'Forms' in the admin, you can create as many forms as needed, add system and custom fields, edit the forms HTML layout and configure advanced settings such as notifications and Form behaviour.

Forms - Create / Edit

To create a new form click the blue 'ADD NEW FORM' button at the top of the page, or to edit an existing form click on the form name or the associated pencil icon on the far right.

1
Form Builder

When creating or editing a form you'll be able to set the name, alias and type of the form and build out the desired fields using the form builder.

Name Description
Name Descriptive name for the form.
Form Alias System reference for the form.

Changing the alias will result in any existing references to the previous Form alias breaking.

Type

Generic
If payments are collected via the form, this option configures the form for general collection of any arbitrary amount.

SingleItem
If payments are collected via the form, this option configures the form for collection of payment against Event or Module items that have a price.

CheckOut
If payments are collected via the form, this option configures the form for use in the shop checkout process, collecting the order total.

Simply click on the system field button on the left to add them to your form preview on the right.
You can also create custom fields of various data types by clicking the '+ Add custom field' link under the system field button.

By dragging the form preview fields around you can rearrange the order they will be output in the default HTML form layout.
Fields added to your form preview can also be further edited by hovering over the field and clicking the pencil icon.
Likewise, clicking the trashcan icon will remove the field from your form configuration.

Field options vary depending on the data type chosen, however most fields can also be set to "required", which will enforce those fields to be completed before a successful submission can be made.

Make sure you save both the field you are working on AND the whole form itself (with the save button at the bottom of the page) to ensure all changes are applied.

System Fields

Name Description
Email Field to accept users email address into the CRM.
First Name Field to accept users first name into the CRM.
Last Name Field to accept users last name into the CRM.
Phone Field to accept users phone number into the CRM.
Site Field to accept users website address into the CRM.
Address Field to accept users address line (unit/number and street) into the CRM.
City Field to accept users city/suburb/provence into the CRM.
State Field to accept users state/territory into the CRM.
ZipCode Field to accept users zipcode/postcode into the CRM.
Country Field to accept users country into the CRM (will accept any string value; country name, country code or otherwise)
Status Field to accept an arbitary value into the CRM to assign any particular status to a user.
Notes Field to accept an arbitary value into the CRM to assign any particular notes to a user.
Mailing Lists When an Email Marketing provider is enabled for your site and Mailing Lists have been created, they will be listed for this form field option where you can select which mailing list/s the user will be subscribed to.
Accept Payment Adds payment related fields to the form, including a dropdown to select payment method (based on payment gateway/s enabled) and an amount field.
The amount field is expecting a value set via a custom property in the form's component tag, eg: {% component type: "form", alias: "<form_alias>", price: "9.95" %}
Or otherwise passed as a Liquid variable called paymentAmount (as is the case when used in conjunction with a paid Event).
Accept Event Subscription Adds Event related fields and Liquid data to the form, including the appropriate Event component tag and an allocations (seats) field.
The form is expecting an Event ID to be provided via a custom property in the form's component tag, eg: {% component type: "form", alias: "<registration_form_alias>", eventId: "{{this['id']}}" %}

This assumes the Event form is placed on the Event detail layout, where {{this['id']}} will work. Otherwise, the Event ID will need to be hard-coded manually or added via an alternative Liquid variable.

Password Adds a password field and corresponding confirm password field, which needs to match for a successful form submission. Password will be assigned to the user in the CRM.
Secure Zone Expiry Date Adds a date field which will assign the provided date as the users Secure Zone Expiry Date.

Cannot be combined with below Secure Zone Expiry Duration

Secure Zone Expiry Duration Adds a number field which will assign the provided value as the users Secure Zone Expiry Days.

Cannot be combined with above Secure Zone Expiry Date

reCAPTCHA v2 Adds Google reCAPTCHA v2 spam protection to the form.

Cannot be combined with below reCAPTURE v3

reCAPTCHA v3 Adds Google reCAPTCHA v3 spam protection to the form.

Cannot be combined with above reCAPTURE v2

Field Types

Type Data Description
DateTime string This field will accept any string as it's value.
Although, may want to use a standard date format (such as ISO 8601) or implement a date picker plugin to correctly format a date so you can better use that data later in your code.
CheckboxList comma-separated list Allow multiple options to be selected from a list of available options as checkboxes.
DropdownList comma-separated list Allow a single option to be selected from a dropdown list of available options.
ListboxList comma-separated list Allow multiple options to be selected from a list of available options.
RadioList comma-separated list Allow a single option to be selected from a list of available options as radio buttons.
Multiline string Multiline inputs allow larger amounts of text to be entered along with line breaks.
String string String inputs allow for a single line of text.
Boolean true/false Booleans allow only a true of false selection. When not selected its submitted value will be blank and when selected its value is "on".
Upload path A file input allowing users to select a file form their computer to upload.

If using the Upload field type you must add enctype="multipart/form-data" as an attribute to your form element.

Upon successful upload the file will be listed in the CRM under 'Form Submissions' and the file will be stored on the server using a directory structure in the following format:
/_form_submissions/<form_id>/<submission_id>/<file_name.ext>-<dateStamp>

The multiple parameter is currently not supported for file type inputs. To add multiple file upload fields to your form you will need to add additional upload fields in the Form Builder and insert the corresponding HTML into your form layout.

2
Edit Layout

Upon first creation of a Form, the Layout will auto-generate the default Form code that will be used to render your fully functioning Form to the page.
Whilst this default Form Layout has not been edited it will continue to auto-update if any fields are added or edited.
If however, your Form Layout has been customised, you will need to manually adjust it for any fields added or modified in the Form Builder.

To get the correct form field code for any system or custom field added via the Form Builder, click the “Form Fields” button and select the desired field from the list. Doing this will copy the field code to your clipboard ready for pasting into the Layout.

The Form Layout can also be reset back to default by clicking the “Restore to Default” button.

This will remove any custom code changes made in this Layout.

3
Settings

Form Settings allow you to control aspects of the Forms behaviour after it is submitted, such as the Workflow triggered, Secure Zone subscription process and Auto-responder settings.

Option Description
Workflow

Assign the Workflow/s to be triggered upon successful form submission.

You can also programatically trigger Workflow Notifications - see below for details.

Secure Zone

Subscribe the user to a Secure Zone/s upon successful form submission.

This setting will redirect the user to the Secure Zone's landing page after successful form submission (unless a custom redirect is enabled - see below for details) and will also trigger the 'Secure Zone Login Details' System Email to be sent to the user.

Auto-response

The auto-response is an email sent out to the user after the Form has been submitted from the front-end of the website.

Option Description
Enable Enable the auto-response email to be sent.
Template The Email Template to be used for the auto-response email.
From Name

The display name used for the email sender.

This field supports Liquid which can be used to insert dynamic content such as member details, form submission details or even data from other modules.

From Email The email address used for the email sender and reply address.
Subject

The subject line used for the auto-response email.

This field supports Liquid which can be used to insert dynamic content such as member details, form submission details or even data from other modules.

Body

The content of your auto-response email.

This field supports Liquid which can be used to insert dynamic content such as member details, form submission details or even data from other modules.

Redirecting Forms to a Custom Confirmation Page

By default, form submissions will direct users to the /_form-submission-results/ system page. However, you can override this behaviour and redirect users to any other page you require.

To do this, you can add a hidden form input with name redirectURL and set it's value to the new page URL:
(If this input is included in the form and it's value is empty it will continue to redirect to the default confirmation page.)

<input type="hidden" name="redirectURL" value="/my-new-confirmation-page">

Triggering Different Workflows

A form can be configured, via its ‘Settings’ tab, to trigger single, or multiple, predefined Workflows. However, there may be cases where you want to trigger a different Workflow/s based on conditions during the form's submission on the website.

An example of this might be allowing the user to select which department an enquiry is to be sent to. Or perhaps the condition is dynamically set, without user input, based on other variables such as Liquid data or detecting a users selection of another input via Javascript.

You can achieve this by adding an input to the form with name="customWorkflows" and value="[WorkflowID]" where [WorkflowID] is to be replaced with your desired workflow’s ID.

You can find the Workflow ID by navigating to the appropriate Workflow in the Treepl CMS Admin and noting the trailing number in the URL.
eg: https://[YOURSITE]/admin/custom-workflow/2

Insure your site plan supports multiple Workflows in order to utilise this method.

In the first example, where the user can select the appropriate workflow, you could add a dropdown to the form with the following values:

<select name="customWorkflows">
    <option value="[WorkflowID]">Sales Enquiry</option>
    <option value="[WorkflowID]">Technical Support</option>
</select>

Or the second example, where the Workflow is set based on other conditions such as a Liquid variable, you could have a hidden input field like so:

<input type="hidden" name="customWorkflows" value="{{myWorkflowVariable}}">

Or, if setting the Workflow ID with Javascript based on the selection made in another dropdown:

<input type="hidden" name="customWorkflows" value="1">

<select name="enquiryType">
    <option value="">- Please select -</option>
    <option value="Sales Enquiry" data-workflowid="1">Sales Enquiry</option>
    <option value="Technical Support" data-workflowid="2">Technical Support</option>
</select>
<script>
    var workflow = document.querySelector('input[name="customWorkflows"]');
    var selector = document.querySelector('select[name="enquiryType"]');
    
    selector.addEventListener('change', changeWorkflow);
    
    function changeWorkflow(el) {
        var dataID = el.target.options[el.target.options.selectedIndex].getAttribute('data-workflowid');
        workflow.value = dataID;
    }
</script>

You can even trigger multiple Workflows by changing the input type to a multi-selection style input, such as checkboxes:

<input type="checkbox" name="customWorkflows" value="1">
<input type="checkbox" name="customWorkflows" value="2">

Or even with a comma separated list of Workflow ID’s in a text input.

<input type="text" name="customWorkflows" value="1,2">

Triggering Workflows based on form inputs, with either a valid or invalid value for the Workflow ID, will override any Workflow settings configured in the forms ‘Settings’ tab, even if no Workflow is enabled there.

JSON Response & AJAX Form Submission

The form supports jsonResponse=1 as a parameter in the form's action attribute.

You can then render the JSON response using the formSubmissionData object or use it to handle the form submission via AJAX (see Related Articles and External Resources below for more details).

<form action="/forms/cases.ashx?form=my_form&jsonResponse=1" method="post">

16
Replicate System Pages

Parityhigh Effortlow Timelow Docshigh Migration Toolactive

This process can be automated with the BC to Treepl CMS Migration App.

Or, if manually migrating system pages, locate your relevant BC System Pages either in your downloaded BC site files, or in the “Develop” tab of the BC Admin under ‘Layouts / SystemMessages’, or directly in the BC Admin under ‘Site Manager’ > ‘System Pages.

You’ll need to copy over the HTML from these into the corresponding system page in Treepl CMS found in the Admin under ‘Settings / System Pages’

While you can upload system pages into Treepl CMS, you'd first need to rename the relevant BC files to match those of Treepl CMS in order to override them. However, this is not recommended as you'll lose the default layouts and Liquid markup required for those layouts.

For more information refer to the below documentation article.

System Pages Documentation

View full article

System Pages, under 'Settings', is where you’ll find all those pages required by certain system functionality, error messages and confirmations. Such as the Page Not Found 404 error page. Form Submission Results page for a confirmation message when someone submits a form on your site, and various secure zone pages for password reset workflows, etc.

This section gives you control over how these pages are presented and allows for creative improvements for your user’s experience.

For example, you could insert a site search on the 404 ‘Page Not Found’ page, or dynamically list your most recent blog posts, to improve your visitors experience if they, for whatever reason, fall on a broken page link or incorrect URL. Or perhaps you want to provide further security information or instructions during the password reset workflow.

Treepl CMS provides full creative and development control over such system pages.

System Page Descriptions

Name Description
401

This page is presented to the user if they are not authorized to access the current resource/URL, but authorisation may be possible (ie: via a Secure Zone login).

403

This page is presented to the user if the current resource/URL attempting to be accessed is forbidden and cannot be accessed in this manner.

404

This page is presented to the user if the current resource/URL attempting to be accessed is not found (either temporarily or permanently).

checkout

The eCommerce checkout page for submitting a shopping cart order and any payment details.

default-page

The default page presented to the user following any undeclared or unknow system actions.

email-confirmation

This page is presented to the user after they have completed the process of verifying their email address (ie: after subscribing to a Secure Zone).

error-page

The default page presented to the user following any undeclared or unknow system error.

form-submission-results

The default page presented to the user after a form submission (either if successful or if a submission error has occured).

missing-home-page

This page is presented to the user if there is no system home page specified and they are attempting to access the root domain for the web site.

offline-credit-card-payment

This page is presented to the user after following the system generated link from the 'Deferred Order Payment' system email. This page contains a payment form allowing the payment of an existing unpaid order.

order-receipt

This page is presented to the user after a check out form submission (either if successful or if a submission error has occured).

request-reset-password

The default system page holding the password reset request form.

request-reset-password-result

The default system page presented to the user after a password reset form submission (either if successful or if a submission error has occured.

reset-password

This page is presented to the user after they have followed a tokenised password reset link and provides the form for setting and confirming a new password.

shopping_cart

The eCommerce shopping cart page for displaying pending order items and overall order details, as well as th eability to select shipping options, enter discount codes, redeem gift vouchers and other shopping cart functionality.

Review your HTML for any BC specific tags or modules which will need to be converted to Treepl CMS equivalents. Either making note of them to come back to once other items are set up, or replace them now if you can. For example, you may have a site search form on your 404 Not Found page, or a secure zone login form on your 401 or 403 pages.

17
Replicate System Emails

Parityhigh Effortlow Timelow Docshigh Migration Toolactive

This process can be automated with the BC to Treepl CMS Migration App.

Or, if manually migrating system emails, locate your relevant BC System Emails, either in your downloaded BC site files, or in the “Develop” tab of the BC Admin under ‘Layouts / OutboundEmails’, or directly in the BC Admin under ‘Site Manager’ > ‘System Emails’.

You’ll need to copy over the HTML from these into the corresponding system emails in Treepl CMS found in the Admin under ‘Email Notifications / System Emails’

While you can upload system emails into Treepl CMS, you'd first need to rename the relevant BC files to match those of Treepl CMS in order to override them. However, this is not recommended as you'll lose the default layouts and Liquid markup required for those layouts.

Review your HTML for any BC specific tags or modules which will need to be converted to Treepl CMS equivalents. Be sure to reference the default tags already in the email layouts in Treepl CMS to identify which ones can replace your BC tags.

For more information refer to the below documentation article.

System Emails Documentation

View full article

System Email Descriptions

Name Description
Password Retrieve Email

The email layout used when a reset of a member's password has been requested (either via the admin or a 'Password Reset' request form on the website).
This email is sent to the member's email address.

Secure Zone Login Details

The email layout used when a user registers to a Secure Zone, or when a member's Secure Zone details are manually sent from the admin.
This email is sent to the member's email address.

Workflow Notification

The email layout used when the system default Workflow is triggered.
This email is sent to any recipients added to the Workflow settings.

Confirm Email Notification

The email layout used when the system needs to confirm the user’s email address. Typically when subscribing to a secure zone.
This email is sent to the email address provided during the form submission.

GiftVoucher

The email layout used when an eCommerce order includes the purchase of a gift voucher product.
This email is sent to the supplied recipient to deliver the gift voucher details to them.

Invite Admin User

The email layout used when adding an Admin user to your web site instance, providing them with the details to finalise their admin access.

Restore Admin User Password

The email layout used when resetting a site admin's password, providing them with a unique, time sensitive link allowing a new password to be set.

Supplier Notification

The email layout used when an eCommerce order includes a product/s with a supplier assigned to them.
This email is sent to the supplier's email address providing them with details of the order relevant to them.

Low Stock Notification

The email layout used when an eCommerce order includes a product/s that inventory level subsiquently falls below the assigned low stock threshold.

Invoice

The email layout used when a payment is made via a form submission, paid subscription, check out, etc.
This email is sent to the purchasers email address.

Admin Reset Member Password

The email layout used when a member's password has been reset by a site admin user, providing the member with the new password and the email address of the admin that changed it.

OfflineCreditCardPayment

The email layout used when sending an order payment request to a member for an unpaid order, providing them with a unique link to the 'Deferred Payment Order' system page identifying the order to be paid.

System Email Fields

Each system email has the following system fields allowing you to customise the email headers, content and layout.

Option Description Liquid Support
Template

Templates are used as a wrapper for the system email and are handy for setting a single, consistant layout for different content/messages. There are two default options plus any custom templates you may have added:

  • Don’t Use a Template
  • System Default
  • <YOUR CUSTOM TEMPLATE/S>

Email templates can be created or further edited under ‘Email Notifications’ > ‘Email Templates’.
Any custom email templates will also appear here for selection.

Subject

This is the subject line of the email sent to the recipient.
eg: “This email is about resetting your password

From Email

This is the sending email address of the email sent to the recipient.
eg: “support@yoursitename.com

From Name

This is the sending name of the email sent to the recipient.
eg: “Your Site Name

Content

This is the body content of the email sent to the recipient.
A basic message is included in each system email to get you started. However, HTML (suitable for email) along with most other Liquid components and logic can be added here to further customise the message sent to the recipient.

Currently, system fields 'Subject' and 'From Name' for the "Workflow Notification" email do support Liquid tags.

18
Replicate Categories

Parityhigh Effortlow Timelow Docshigh Migration Toolactive

You can manually recreate any Categories set up in your BC site into Treepl CMS under ‘Settings / Categories’

Alternatively the BC to Treepl CMS Migration App can be used to automate this process.

For more information about Categories see the below documentation article.

Categories Documentation

View full article

Categories are a simple way to classify items under a common subject or even a simplified way to create relationships between items.

Categories can be managed under ‘Settings’ > ‘Categories’. Or they can be created on the fly within any module configured to support Categories.

When managing categories, you can type your new category name at the top and use the “Add” button to add it to the list of categories available.
Click the pencile icon to edit and existing Category, and to remove a category, simply click the “x” icon next to its name.

Categories vs Tags

Categories are a global classification system, as they can be applied to any supporting content module throughout the CMS - not just the module where they might have been created. As such, all Category items will display everywhere where a Category option is present. This is unlike Tags, which are only relative to the specific module where they were created and are being used. They do not become available for other content modules to use.

How to use Categories

Generally, the intended use for Categories is to display filtered content, on the front-end website, specific to a particular category. Or even to group content items into categories for clearer display or organisation of content.

You may also have other use cases where Categories may prove useful, such as cross-linking multiple items together in a type of relationship.

The simplest way to display content filtered by Category is to use the Component Manager to configure your desired module.
In the screenshot example below, we’re filtering Blog Posts by a Category called “Blog: News & Events”.

Categories - Component Manager

This generates the following module tag:

{% component type: "module", source: "Blog", layout: "Blog List Layout", filterBy: "ItemCategories", filterValue: "Blog: News & Events" %}

Create Dynamic Category Listings

Listing categorised items on a page manually, as per the above example, may not be feasible if you’re categories are many or changeable. And, in the case of a Blog, you’ll probably want to keep the Posts displaying within the main Blog layout.
Creating category links to dynamically change the listings page is straightforward and powerful.

Let’s say, on a Blog Post detail page you want to link to all other Blog Posts that also share common Categories to the current Post.

In your Blog Post Detail layout you might start by listing out all the currenty assigned Categories like so (this will be the same for any type of module):

{% for cat in this.itemcategories %}
    {{cat}},
{% endfor %}

Now, to make these dynamic links to the Blog listing page we’ll make the following adjustments. Adding the anchor element, which we'll link to your main Blog page, along with an appended URL parameter that will form our unique reference to each specific category:

{% for cat in this.itemcategories %}
<a href="/my-blog?cat={{cat | url_encode}}">
    {{cat}}
</a>,
{% endfor %}

Next, we adjust our overall listing page. So in the case of a Blog, this would be the “General Blog Layout” in the Blog module’s Layout section, under “Blog Layouts”.

Categories - General Blog Layout

Instead of simply listing the Blog’s Post’s as per the default component tag, like:

{% component type:"module", source: "Blog Post", layout:"List", filterBy:"parentid", filterValue:"{{this.id}}" %}

We want to make some conditions here so that categorised post’s can be listed if one of our dynamic category links are being used instead.

Our adjusted code might look like this:

{% if request.request_url.params.cat %}
{% assign filterValue = request.request_url.params.cat %}
{% assign filterBy = 'ItemCategories' %}
{% else %}
{% assign filterValue = this.id %}
{% assign filterBy = 'parentid' %}
{% endif %}

{% component type:"module", source: "Blog Post", layout:"List", filterBy: "{{filterBy}}", filterValue: "{{filterValue}}" %}

The above code looks for our category URL parameter, and if present, adjusts the filterBy and filterValue attributes, allowing the component to filter by the desired Catergory and output the filtered Blog Posts.
When the category URL parameter is not being used (ie: not present) the filters revert to the default values, listing all Blog Posts.

19
Contacts & Cases

Paritymed Effortmed Timemed Docslow Migration Toolactive

The BC to Treepl CMS Migration App can be used to migrate both contact records and cases.

Alternatively, you can import contact records directly into the Treepl CMS Contacts module. However, Cases can not yet be imported in this way and would need to be added manaully if not using the Migration App.

Also note that Treepl CMS Contact fields are limited, so it's still advisable to export BC CRM data for archive/backup purposes if advanced CRM fields exist and later import that data when the advanced CRM is available.

20
Replicate Content Holders

Parityhigh Effortlow Timelow Docsmed Migration Toolactive

The BC to Treepl CMS Migration App can be used to automate this process.

Alternatively, if manually migrating, locate your relevant BC Content Holders, either in your downloaded BC site files, or in the “Develop” tab of the BC Admin under ‘System / ContentHolders, or directly in the BC Admin under ‘Site Manager’ > ‘Content Holders’.

Upload your BC Content Holders into your Treepl CMS instance via FTP into the ‘Content / Snippets’ directory.

If not using FTP, create and copy over the HTML from these into the Treepl CMS admin area under ‘Content / Snippets’.

Review your HTML for any BC specific tags or modules which will need to be converted to Treepl CMS equivalents. Either making note of them to come back to once other items are set up, or replace them now if you can.

Snippets Documentation

View full article

Snippets allow the creation of reusable blocks of code or isolated sections of content.
This helps keep code clean and more easily maintainable, eliminating the need to repeat yourself and the risk of inconsistent code.

Quick Start

Snippets Component Documentation

View full article

This component renders the contents of a Snippet (similar to Content Holders in BC).

{% component type: "snippet", alias: "<snippet_alias>" %}

Parameters and Options

Parameter Values Required Description
type snippet

This is the name of the entity that needs to be used for the component retrieving function.

alias <alias_name> The alias name of the module.
collectionVariable <yourLiquidVariableName>
Assigns the data to a Liquid collection enabling further access to the data on the Page or Template using Liquid.
If using this parameter, the module will not render its layout.

Your collectionVariable value must only contain English letters, numbers or underscores. Spaces or special characters are not supported.

<customParameter> <your custom value>
You can add your own additional parameters (name/value pairs) to the Component tag. These will be passed to the Components Layout (and the collectionVariable if used) for use via Liquid.

Your <customParameter> name must only contain English letters, numbers or underscores. Spaces or special characters are not supported.

You can use HTML as the value here, just be sure to change any double quotes in your HTML to single quotes.

Liquid Output

The below example is for a Snippet with some content relating to the topic HTML but is otherwise the default data you will get from this Component.

{
  "Name": "DEMO HTML Snippet",
  "Alias": "demo_html_snippet",
  "Content": "<p>The <strong>Hyper Text Markup Language</strong> (HTML) is mainly used for writing web pages.</p>",
  "Parent": {
  "Id": 2359,
  "Url": "/bc-migration-guides/ultimate-migration-guide-step-by-step",
  "ParentId": 2355,
  "LastUpdatedDate": "2020-09-09T19:27:22",
  "Name": "Ultimate Migration Guide (Step by Step)",
  "UrlSlug": "ultimate-migration-guide-step-by-step",
  "Enabled": true,
  "ReleaseDate": "2019-02-17T00:00:00",
  "ExpiryDate": "2099-11-30T00:00:00",
  "Weighting": 800,
  "Description": "<div class=\"migration-guide\">\r\n    <div style=\"display:none;\">21</div>\r\n    <p>So you’ve decided to move your site across to Treepl CMS. Good choice.</p>\r\n    <p>And you’ve decided to do it yourself. Good for you! You’re probably going to be doing this quite a few times so let’s make it fun…</p>\r\n    <p>Set aside a good chunk of uninterrupted time, crank up your favourite tunes and grab a strong drink. It’s migration time.</p>\r\n    <p class=\"notice-note\">The below sections are ordered to try and minimise the amount of back and forth when creating the various components of a site.If a section doesn’t apply to your site, feel free to skip right over it.</p>\r\n    <p class=\"notice-note\">Migration tools are in development that will progressively make the below steps easier. These sections will be updated as those tools are released.</p>\r\n    <p class=\"notice-tip\">The BC to Treepl CMS Migration App now converts BC Liquid tags, ie: <code>{module_…}</code> and <code>{tag_…}</code> to Treepl CMS Liquid tags! For more info on this, view the Forum discussion <a href=\"https://forum.treepl.co/t/attention-to-bc-to-treepl-app-users/497\" target=\"_blank\">here</a>.</p>\r\n    <h2 id=\"secBCSiteFTPDownload\" class=\"circle-wrap\"><div class=\"circle\">22</div>Download the BC Site via FTP</h2>\r\n    {% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secBCSiteFTPDownload\", parity: \"high\", effort: \"low\", time: \"low\", docs: \"high\", tool: \"high\" %}\r\n    \r\n    <p>Download all files available via FTP from your BC site, if for no other reason than to just have a backup. However, these files can be referenced in the following steps as well.</p>\r\n    <p>You can also automatically migrate all files in the BC file system directly to your Treepl CMS site via the <a href=\"https://www.bcappstore.com/apps/bc-to-treepl\" target=\"_blank\">BC to Treepl CMS  Migration App</a>.</p>\r\n    <p>There is also now the ability to download a .zip archive of your BC site, including data from the following modules:</p>\r\n    <ul>\r\n    \t<li>Pages</li>\r\n        <li>Page Templates</li>\r\n        <li>Module Layouts</li>\r\n        <li>Static files</li>\r\n        <li>Apps</li>\r\n        <li>Content Holders</li>\r\n        <li>System Pages</li>\r\n        <li>Email Templates</li>\r\n        <li>Web Apps</li>\r\n    </ul>\r\n    <p><b>Further Resources:</b></p>\r\n    <a class=\"btn small\" href=\"https://docs.worldsecuresystems.com/user-manual/site-design/bc-and-dreamweaver/connect-to-your-site-using-dreamweaver\" target=\"_blank\">BC FTP connection details</a>\r\n    <a class=\"btn small\" href=\"https://docs.worldsecuresystems.com/Partners/downloading-your-website#Downloadingyoursitearchive\" target=\"_blank\">BC .zip archive</a>\r\n    \r\n    <h2 id=\"secBCSiteDeepClean\" class=\"circle-wrap\"><div class=\"circle\">23</div>Deep-Clean the BC Site (Optional)</h2>\r\n    {% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secBCSiteDeepClean\", parity: \"na\", effort: \"med\", time: \"med\", docs: \"na\", tool: \"na\" %}\r\n    <p>This step is optional, but you may want to take the opportunity to clear out the BC site of old pages, templates, files, etc. Particularly if it’s an old site, there can be a lot of junk floating around. And this can just get in your way during migration and could cause unnecessary work. However, be very careful not to remove assets that may still be in use somewhere (hence the backup in the previous step).</p>\r\n    <p>Once you’ve cleaned up, repeat the FTP download step to collect a new, clean, set of files.</p>\r\n    \r\n    <h2 id=\"secTreeplCMSInstance\" class=\"circle-wrap\"><div class=\"circle\">24</div>Setup Treepl CMS Site Instance</h2>\r\n    {% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secTreeplCMSInstance\", parity: \"high\", effort: \"low\", time: \"low\", docs: \"high\", tool: \"na\" %}\r\n    <p>So you can start work with the Treepl CMS platform you'll need to set up a Trial Site. Log into your Treepl Portal (portal.treepl.co) and click the \"Create New Site\" button.</p>\r\n    <div class=\"tab-content faqsOpenCloseHolder\">\r\n    <div class=\"faqs-open-close \">\r\n        <a class=\"opener\" href=\"#\"><i class=\"fas fa-angle-right\"></i>Trial Site Documentation</a>\r\n        <div class=\"slide js-slide-hidden\">\r\n            {% component source: \"Documentation Post\", layout: \"Body Detail\", filterBy: \"id\", filterValue: \"2151\", limit: \"1\", type: \"module\" %}\r\n        </div>\r\n    </div>\r\n    </div>\r\n    \r\n    <h2 id=\"secHostedEmailTransfer\" class=\"circle-wrap\"><div class=\"circle\">25</div>Start BC Hosted Email Transfer Process (If Applicable)</h2>\r\n    {% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secHostedEmailTransfer\", parity: \"na\", effort: \"low\", time: \"med\", docs: \"high\", tool: \"low\" %}\r\n    <p>If your BC site has BC hosted emails, they can be transferred directly to Treepl CMS after following the below steps.</p>\r\n    <div class=\"tab-content faqsOpenCloseHolder\">\r\n    <div class=\"faqs-open-close \">\r\n        <a class=\"opener\" href=\"#\"><i class=\"fas fa-angle-right\"></i>Transfer of BC Hosted Email Accounts</a>\r\n        <div class=\"slide js-slide-hidden\">\r\n            {% component source: \"Documentation Post\", layout: \"Body Detail\", filterBy: \"id\", filterValue: \"2185\", limit: \"1\", type: \"module\" %}\r\n        </div>\r\n    </div>\r\n    </div>\r\n    \r\n    <h2 id=\"secUploadSiteAssets\" class=\"circle-wrap\"><div class=\"circle\">26</div>Upload Site Assets</h2>\r\n    {% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secUploadSiteAssets\", parity: \"high\", effort: \"low\", time: \"low\", docs: \"high\", tool: \"high\" %}\r\n    <p>Now we'll want to connect to our new Treepl CMS instance via FTP so we can upload some of our BC assets.</p>\r\n    <p>If working manually, we'll probably only want to upload assets relating to the front-end site, such as images, CSS, JS, documents, etc. We don't want to move over pages, templates or other layout files just yet.</p>\r\n    <p>Below are instructions for getting connected via FTP client.</p>\r\n    <div class=\"tab-content faqsOpenCloseHolder\">\r\n        <div class=\"faqs-open-close \">\r\n            <a class=\"opener\" href=\"#\"><i class=\"fas fa-angle-right\"></i>FTP Access Documentation</a>\r\n            <div class=\"slide js-slide-hidden\">\r\n                {% component source: \"Documentation Post\", layout: \"Body Detail\", filterBy: \"id\", filterValue: \"1936\", limit: \"1\", type: \"module\" %}\r\n            </div>\r\n        </div>\r\n    </div>\r\n    <p>Alternatively, you can automatically migrate all files in the BC file system directly to your Treepl CMS site via the <a href=\"https://www.bcappstore.com/apps/bc-to-treepl\" target=\"_blank\">BC to Treepl CMS  Migration App</a>.</p>\r\n    \r\n    <h2 id=\"secSetupPlaceholderTemplates\" class=\"circle-wrap\"><div class=\"circle\">27</div>Upload or Setup Placeholder Templates</h2>\r\n    {% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secSetupPlaceholderTemplates\", parity: \"high\", effort: \"low\", time: \"low\", docs: \"med\", tool: \"high\" %}\r\n    <p>You can manually upload your BC page templates into your Treepl CMS instance via FTP into the ‘Content / ContentTemplates’ directory.</p>\r\n    <p>Alternatively the <a href=\"https://www.bcappstore.com/apps/bc-to-treepl\" target=\"_blank\">BC to Treepl CMS  Migration App</a> can be used to automate this process.</p>\r\n    <p>If manually migrating templates, don’t worry about editing the template code/markup at this stage. We just want to get them loaded in Treepl CMS so we can reference it in the following steps. We’ll work on the template code later.</p>\r\n    \r\n    <p>If not using FTP, to manually create a content template, go to 'Content' &gt; 'Content Templates'.</p>\r\n    <p>Click ‘Add New Template’ button.</p>\r\n    <p>Just complete ‘Name’ and choose whether it's the default template. Leave the content as is for now.</p>\r\n    <p>Repeat this for all required templates.</p>\r\n    \r\n    <div class=\"tab-content faqsOpenCloseHolder\">\r\n    <div class=\"faqs-open-close \">\r\n        <a class=\"opener\" href=\"#\"><i class=\"fas fa-angle-right\"></i>Content Templates Documentation</a>\r\n        <div class=\"slide js-slide-hidden\">\r\n            {% component source: \"Documentation Post\", layout: \"Body Detail\", filterBy: \"id\", filterValue: \"2132\", limit: \"1\", type: \"module\" %}\r\n        </div>\r\n    </div>\r\n    </div>\r\n    \r\n    <h2 id=\"secSetupSitePages\" class=\"circle-wrap\"><div class=\"circle\">28</div>Upload or Setup Site Pages</h2>\r\n    {% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secSetupSitePages\", parity: \"high\", effort: \"low\", time: \"low\", docs: \"med\", tool: \"high\" %}\r\n    <p>Upload your BC pages into your Treepl CMS instance via FTP into the ‘Content / Pages’ directory.</p>\r\n    <p>Alternatively the <a href=\"https://www.bcappstore.com/apps/bc-to-treepl\" target=\"_blank\">BC to Treepl CMS  Migration App</a> can be used to automate this process.</p>\r\n    <p>If manually migration pages, there will still be several properties you will want to set for each page, such as a more relevant system name, assigning it to a template, SEO and meta details, etc. and we’ll likely need to review the page content for any system tags or Liquid\r\n        that needs replacing. However, all in good time and we’ll take those actions in a later step. For now we just want to get the bulk of the setup in place.</p>\r\n    \r\n    <div class=\"tab-content faqsOpenCloseHolder\">\r\n    <div class=\"faqs-open-close \">\r\n        <a class=\"opener\" href=\"#\"><i class=\"fas fa-angle-right\"></i>Pages Documentation</a>\r\n        <div class=\"slide js-slide-hidden\">\r\n            {% component source: \"Documentation Post\", layout: \"Body Detail\", filterBy: \"id\", filterValue: \"2131\", limit: \"1\", type: \"module\" %}\r\n        </div>\r\n    </div>\r\n    </div>\r\n    \r\n    <h2 id=\"secReplicateMenus\" class=\"circle-wrap\"><div class=\"circle\">29</div>Replicate Menus & Menu Layouts</h2>\r\n    {% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secReplicateMenus\", parity: \"high\", effort: \"med\", time: \"med\", docs: \"high\", tool: \"high\" %}\r\n    <p>You can easily recreate your BC menus into your Treepl CMS instance via the admin ‘Content' > 'Menus’, and copy over and adjust your menu layouts.</p>\r\n    <p>Alternatively the <a href=\"https://www.bcappstore.com/apps/bc-to-treepl\" target=\"_blank\">BC to Treepl CMS  Migration App</a> can be used to automate this process.</p>\r\n    <p>If manually recreating your menus you can follow the documentation and tips below:</p>\r\n    \r\n    <div class=\"tab-content faqsOpenCloseHolder\">\r\n        <div class=\"faqs-open-close \">\r\n            <a class=\"opener\" href=\"#\"><i class=\"fas fa-angle-right\"></i>Menus Documentation</a>\r\n            <div class=\"slide js-slide-hidden\">\r\n                {% component source: \"Documentation Post\", layout: \"Body Detail\", filterBy: \"id\", filterValue: \"1966\", limit: \"1\", type: \"module\" %}\r\n            </div>\r\n        </div>\r\n    </div>\r\n    \r\n    <h3>BC Menu V2</h3>\r\n    <p>If using BC’s menu v2 method for your menus, upload your menu layouts from ‘ModuleTemplates / Menu / &lt;menu-name&gt;’ into the corresponding Treepl CMS menu layouts in ‘Content / MenuLayouts / &lt;menu_alias_name&gt;’</p>\r\n    <p>The corresponding layouts from BC to Treepl CMS are:</p>\r\n    <ul>\r\n        <li>“container.html” --&gt; “menu.layout”</li>\r\n        <li>“group.html” --&gt; “item.layout”</li>\r\n        <li>“childitem.html” --&gt; “sub_items.layout”</li>\r\n    </ul>\r\n    <p>Now, we’re finally going to get our hands dirty with some code.</p>\r\n    <p>We’ll need to convert the BC tags into the Treepl CMS way of doing things. Let’s reference the Menu documentation above while doing this.</p>\r\n    <p>Starting with the “menu.layout” file you'll want to weave your HTML markup into the Treepl CMS Liquid so that the Liquid logic renders the same markup you are referencing from BC.</p>\r\n    <p>Next, do the same with the “item.layout” file, weaving in the BC “group.html” markup.</p>\r\n    <p>Finally, the “sub_items.layout” file,</p>\r\n    <p>Repeat for each menu group you are using.</p>\r\n    <p>If you have multiple menus using the same layout group in BC, simply copy the same code you just set up into each menu layout files (menus don’t share layouts in Treepl CMS).</p>\r\n    \r\n    <h3>BC Menu V1 (legacy module)</h3>\r\n    <p>If using BC’s original/legacy menu method, we’ll need to reference the rendered source code for your menu in the browser.</p>\r\n    <p>Load one of your BC site pages that features the menu. View the page source (right click, 'View Source') and identify the complete section of menu elements including the BC JS references.</p>\r\n    <p>Copy the menu elements into your “menu.layout” file so we can start working on converting that code.</p>\r\n    <p>Back in the source view, for the two JS references BC outputs, right click on the source links and save those JS files to your BC site files in an appropriate directory and than upload those to Treepl CMS in the corresponding directory.</p>\r\n    <p>Back in your menu layout, we'll relink the JS references to point to the new location.</p>\r\n    <p>Work through recoding the menu HTML into the Treepl CMS menu layouts to complete the process.</p>\r\n    \r\n    \r\n    <h2 id=\"secSetupSecureZones\" class=\"circle-wrap\"><div class=\"circle\">30</div>Setup Secure Zones</h2>\r\n    {% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secSetupSecureZones\", parity: \"high\", effort: \"low\", time: \"low\", docs: \"high\", tool: \"high\" %}\r\n    <p>Recreating all Secure Zones from BC into Treepl CMS is a fairly straight forward process.</p>\r\n    <p>Alternatively the <a href=\"https://www.bcappstore.com/apps/bc-to-treepl\" target=\"_blank\">BC to Treepl CMS  Migration App</a> can be used to automate this process.</p>\r\n    <p>If manually recreating your Secure Zones, you can follow the steps below:</p>\r\n    <p>Go to ‘Content’ &gt; ‘Secure Zones’</p>\r\n    <p>Click ‘Add Secure Zone’ button.</p>\r\n    <p>Complete ‘Name’ and ‘Landing Page’ then “Next” to save and move to ‘Step 2: Secure Content’.</p>\r\n    <p>Pages will be ready for you to secure, however most other content we havn't migrated over yet so you'll need to revisit this section to secure all relevant items.</p>\r\n    <p>Click “Next” to save and move to ‘Step 3: Members’</p>\r\n    <p>Here you can manage the members subscribed to the secure zone.</p>\r\n    <p>For further documentation expand the box below:</p>\r\n    <div class=\"tab-content faqsOpenCloseHolder\">\r\n        <div class=\"faqs-open-close \">\r\n            <a class=\"opener\" href=\"#\"><i class=\"fas fa-angle-right\"></i>Secure Zones Documentation</a>\r\n            <div class=\"slide js-slide-hidden\">\r\n                {% component source: \"Documentation Post\", layout: \"Body Detail\", filterBy: \"id\", filterValue: \"2199\", limit: \"1\", type: \"module\" %}\r\n            </div>\r\n        </div>\r\n    </div>\r\n    \r\n    <h2 id=\"secSetupMailingListsMC\" class=\"circle-wrap\"><div class=\"circle\">31</div>Setup Mailing Lists (MailChimp)</h2>\r\n    {% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secSetupMailingListsMC\", parity: \"low\", effort: \"med\", time: \"low\", docs: \"high\", tool: \"low\" %}\r\n    <p>Before you can set up Mailing Lists in Treepl CMS you need to connect a MailChimp account using their provided API key.</p>\r\n    <p>Below are documentation for setting up the API connection and further inofrmation about adding Mailing Lists.</p>\r\n    \r\n    <div class=\"tab-content faqsOpenCloseHolder\">\r\n        <div class=\"faqs-open-close \">\r\n            <a class=\"opener\" href=\"#\"><i class=\"fas fa-angle-right\"></i>API Provider Documentation</a>\r\n            <div class=\"slide js-slide-hidden\">\r\n                {% component source: \"Documentation Post\", layout: \"Body Detail\", filterBy: \"id\", filterValue: \"2311\", limit: \"1\", type: \"module\" %}\r\n            </div>\r\n        </div>\r\n        <div class=\"faqs-open-close \">\r\n            <a class=\"opener\" href=\"#\"><i class=\"fas fa-angle-right\"></i>Mailing Lists Documentation</a>\r\n            <div class=\"slide js-slide-hidden\">\r\n                {% component source: \"Documentation Post\", layout: \"Body Detail\", filterBy: \"id\", filterValue: \"2310\", limit: \"1\", type: \"module\" %}\r\n            </div>\r\n        </div>\r\n    </div>\r\n    \r\n    <p>Currently, Email Campaigns would generally be managed in MailChimp for full functionality of the MailChimp service. However, basic Email Campaigns can be add via Treepl CMS and pushed to MailChimp.<br>\r\n    <em>More documentation coming soon on this.</em></p>\r\n    \r\n    <h2 id=\"secSetupSiteSearch\" class=\"circle-wrap\"><div class=\"circle\">32</div>Setup Site Search</h2>\r\n    {% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secSetupSiteSearch\", parity: \"med\", effort: \"low\", time: \"low\", docs: \"med\", tool: \"low\" %}\r\n    <p>You don’t need to set up any Site Search module in Treepl CMS. This functionality is ready to use simply by inserting the search form and component tag.</p>\r\n    <p>So there is nothing you need to do in this step.</p>\r\n    <p>Later in the migration we’ll need to replace any BC site search forms so we’ll reference back to this documentation:</p>\r\n    <div class=\"tab-content faqsOpenCloseHolder\">\r\n        <div class=\"faqs-open-close \">\r\n            <a class=\"opener\" href=\"#\"><i class=\"fas fa-angle-right\"></i>Site Search Documentation - COMING SOON...</a>\r\n            <div class=\"slide js-slide-hidden\">\r\n                {% component source: \"Documentation Post\", layout: \"Body Detail\", filterBy: \"id\", filterValue: \"2356\", limit: \"1\", type: \"module\" %}\r\n            </div>\r\n        </div>\r\n        <div class=\"faqs-open-close \">\r\n            <a class=\"opener\" href=\"#\"><i class=\"fas fa-angle-right\"></i>Site Search Component Documentation</a>\r\n            <div class=\"slide js-slide-hidden\">\r\n                {% component source: \"Documentation Post\", layout: \"Body Detail\", filterBy: \"id\", filterValue: \"1959\", limit: \"1\", type: \"module\" %}\r\n            </div>\r\n        </div>\r\n    </div>\r\n    \r\n    <h2 id=\"secReplicateURLRedirects\" class=\"circle-wrap\"><div class=\"circle\">33</div>Replicate Existing URL Redirects</h2>\r\n    {% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secReplicateURLRedirects\", parity: \"high\", effort: \"med\", time: \"med\", docs: \"high\", tool: \"high\" %}\r\n    <p>While you can import URL Redirects into Treepl CMS in bulk, BC doesn't have an export function available from their admin, so you’ll need to enter URL redirects manually. Alternatively the <a href=\"https://www.bcappstore.com/apps/bc-to-treepl\" target=\"_blank\">BC to Treepl CMS  Migration App</a> can be used to automate this process.</p>\r\n    <p>See below for more information on URL Redirects.</p>\r\n    <div class=\"tab-content faqsOpenCloseHolder\">\r\n        <div class=\"faqs-open-close \">\r\n            <a class=\"opener\" href=\"#\"><i class=\"fas fa-angle-right\"></i>URL Redirects Documentation</a>\r\n            <div class=\"slide js-slide-hidden\">\r\n                {% component source: \"Documentation Post\", layout: \"Body Detail\", filterBy: \"id\", filterValue: \"2210\", limit: \"1\", type: \"module\" %}\r\n            </div>\r\n        </div>\r\n    </div>\r\n    \r\n    <h2 id=\"secSetupAdminUserRoles\" class=\"circle-wrap\"><div class=\"circle\">34</div>Setup Admin User Roles</h2>\r\n    {% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secSetupAdminUserRoles\", parity: \"med\", effort: \"low\", time: \"low\", docs: \"med\", tool: \"low\" %}\r\n    <p>While we won’t be adding Admin Users just yet, we’ll still get the User Roles set up and in place ready to assign users to in a later step.</p>\r\n    <p>To set up Admin User Roles, go to ‘Settings’ &gt; ‘Admin User Roles’</p>\r\n    <p>Click ‘Add Admin Role’ button.</p>\r\n    <p>Complete a 'Name' for your Role and configure the permissions, turning off checkboxes to block users access to those items.</p>\r\n    <p class=\"notice-note\">Many permission items have nested items for further fine-grain control.</p>\r\n    \r\n    \r\n    \r\n    <h2 id=\"secSetupNotificationWorkflow\" class=\"circle-wrap\"><div class=\"circle\">35</div>Setup Email Notification Workflow/s</h2>\r\n    {% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secSetupNotificationWorkflow\", parity: \"med\", effort: \"low\", time: \"low\", docs: \"high\", tool: \"high\" %}\r\n    <p>We’ll set up the default Notification Workflow email (and additional ones if needed - make sure you’re site plan supports multiple Workflow Emails if you need more than one Workflow)</p>\r\n    <p>You can optionally, upload your BC workflow email layouts into your Treepl CMS instance via FTP into the ‘Content / SystemEmails’ directory. However, if you only have a few email layouts it may be better to set these up via the Admin as you'll need to configure other settings as well.</p>\r\n    <p>Alternatively the <a href=\"https://www.bcappstore.com/apps/bc-to-treepl\" target=\"_blank\">BC to Treepl CMS  Migration App</a> can be used to automate this process.</p>\r\n    <p>See below for documentation on Workflows.</p>\r\n    <div class=\"tab-content faqsOpenCloseHolder\">\r\n        <div class=\"faqs-open-close \">\r\n            <a class=\"opener\" href=\"#\"><i class=\"fas fa-angle-right\"></i>Workflows Documentation</a>\r\n            <div class=\"slide js-slide-hidden\">\r\n                {% component source: \"Documentation Post\", layout: \"Body Detail\", filterBy: \"id\", filterValue: \"2208\", limit: \"1\", type: \"module\" %}\r\n            </div>\r\n        </div>\r\n    </div>\r\n    \r\n    \r\n    \r\n    \r\n    <h2 id=\"secReplicateWebForms\" class=\"circle-wrap\"><div class=\"circle\">36</div>Replicate Web Forms</h2>\r\n    {% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secReplicateWebForms\", parity: \"high\", effort: \"low\", time: \"med\", docs: \"high\", tool: \"med\" %}\r\n    <p>You can create new web forms in the Treepl admin for each of your BC Web Forms and copy over and adjust your form layout/code.</p>\r\n    <p>Alternatively the <a href=\"https://www.bcappstore.com/apps/bc-to-treepl\" target=\"_blank\">BC to Treepl CMS  Migration App</a> can be used to automate this process.</p>\r\n    <p>See below for documentation on Forms.</p>\r\n    <div class=\"tab-content faqsOpenCloseHolder\">\r\n        <div class=\"faqs-open-close \">\r\n            <a class=\"opener\" href=\"#\"><i class=\"fas fa-angle-right\"></i>Forms Documentation</a>\r\n            <div class=\"slide js-slide-hidden\">\r\n                {% component source: \"Documentation Post\", layout: \"Body Detail\", filterBy: \"id\", filterValue: \"2041\", limit: \"1\", type: \"module\" %}\r\n            </div>\r\n        </div>\r\n    </div>\r\n    \r\n    <h2 id=\"secReplicateSystemPages\" class=\"circle-wrap\"><div class=\"circle\">37</div>Replicate System Pages</h2>\r\n    {% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secReplicateSystemPages\", parity: \"high\", effort: \"low\", time: \"low\", docs: \"high\", tool: \"high\" %}\r\n    <p>This process can be automated with the <a href=\"https://www.bcappstore.com/apps/bc-to-treepl\" target=\"_blank\">BC to Treepl CMS  Migration App</a>.</p>\r\n    <p>Or, if manually migrating system pages, locate your relevant BC System Pages either in your downloaded BC site files, or in the “Develop” tab of the BC Admin under ‘Layouts / SystemMessages’, or directly in the BC Admin under ‘Site Manager’ &gt; ‘System Pages.</p>\r\n    <p>You’ll need to copy over the HTML from these into the corresponding system page in Treepl CMS found in the Admin under ‘Settings / System Pages’</p>\r\n    <p>While you can upload system pages into Treepl CMS, you'd first need to rename the relevant BC files to match those of Treepl CMS in order to override them. However, this is not recommended as you'll lose the default layouts and Liquid markup required for those layouts.</p>\r\n    <p>For more information refer to the below documentation article.</p>\r\n    <div class=\"tab-content faqsOpenCloseHolder\">\r\n        <div class=\"faqs-open-close \">\r\n            <a class=\"opener\" href=\"#\"><i class=\"fas fa-angle-right\"></i>System Pages Documentation</a>\r\n            <div class=\"slide js-slide-hidden\">\r\n                {% component source: \"Documentation Post\", layout: \"Body Detail\", filterBy: \"id\", filterValue: \"2207\", limit: \"1\", type: \"module\" %}\r\n            </div>\r\n        </div>\r\n    </div>\r\n    <p>Review your HTML for any BC specific tags or modules which will need to be converted to Treepl CMS equivalents. Either making note of them to come back to once other items are set up, or replace them now if you can. For example, you may have a\r\n        site search form on your 404 Not Found page, or a secure zone login form on your 401 or 403 pages.</p>\r\n    \r\n    <h2 id=\"secReplicateSystemEmails\" class=\"circle-wrap\"><div class=\"circle\">38</div>Replicate System Emails</h2>\r\n    {% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secReplicateSystemEmails\", parity: \"high\", effort: \"low\", time: \"low\", docs: \"high\", tool: \"high\" %}\r\n    <p>This process can be automated with the <a href=\"https://www.bcappstore.com/apps/bc-to-treepl\" target=\"_blank\">BC to Treepl CMS  Migration App</a>.</p>\r\n    <p>Or, if manually migrating system emails, locate your relevant BC System Emails, either in your downloaded BC site files, or in the “Develop” tab of the BC Admin under ‘Layouts / OutboundEmails’, or directly in the BC Admin under ‘Site Manager’ &gt; ‘System Emails’.</p>\r\n    <p>You’ll need to copy over the HTML from these into the corresponding system emails in Treepl CMS found in the Admin under ‘Email Notifications / System Emails’</p>\r\n        <p>While you can upload system emails into Treepl CMS, you'd first need to rename the relevant BC files to match those of Treepl CMS in order to override them. However, this is not recommended as you'll lose the default layouts and Liquid markup required for those layouts.</p>\r\n    <p>Review your HTML for any BC specific tags or modules which will need to be converted to Treepl CMS equivalents. Be sure to reference the default tags already in the email layouts in Treepl CMS to identify which ones can replace your BC tags.</p>\r\n    <p>For more information refer to the below documentation article.</p>\r\n    <div class=\"tab-content faqsOpenCloseHolder\">\r\n        <div class=\"faqs-open-close \">\r\n            <a class=\"opener\" href=\"#\"><i class=\"fas fa-angle-right\"></i>System Emails Documentation</a>\r\n            <div class=\"slide js-slide-hidden\">\r\n                {% component source: \"Documentation Post\", layout: \"Body Detail\", filterBy: \"id\", filterValue: \"2205\", limit: \"1\", type: \"module\" %}\r\n            </div>\r\n        </div>\r\n    </div>\r\n    \r\n    <h2 id=\"secReplicateCategories\" class=\"circle-wrap\"><div class=\"circle\">39</div>Replicate Categories</h2>\r\n    {% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secReplicateCategories\", parity: \"high\", effort: \"low\", time: \"low\", docs: \"high\", tool: \"high\" %}\r\n    <p>You can manually recreate any Categories set up in your BC site into Treepl CMS under ‘Settings / Categories’</p>\r\n    <p>Alternatively the <a href=\"https://www.bcappstore.com/apps/bc-to-treepl\" target=\"_blank\">BC to Treepl CMS  Migration App</a> can be used to automate this process.</p>\r\n    <p>For more information about Categories see the below documentation article.</p>\r\n    <div class=\"tab-content faqsOpenCloseHolder\">\r\n        <div class=\"faqs-open-close \">\r\n            <a class=\"opener\" href=\"#\"><i class=\"fas fa-angle-right\"></i>Categories Documentation</a>\r\n            <div class=\"slide js-slide-hidden\">\r\n                {% component source: \"Documentation Post\", layout: \"Body Detail\", filterBy: \"id\", filterValue: \"2308\", limit: \"1\", type: \"module\" %}\r\n            </div>\r\n        </div>\r\n    </div>\r\n    \r\n    <h2 id=\"secContactsAndCases\" class=\"circle-wrap\"><div class=\"circle\">40</div>Contacts & Cases</h2>\r\n    {% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secContactsAndCases\", parity: \"med\", effort: \"med\", time: \"med\", docs: \"low\", tool: \"high\" %}\r\n    <p>The <a href=\"https://www.bcappstore.com/apps/bc-to-treepl\" target=\"_blank\">BC to Treepl CMS  Migration App</a> can be used to migrate both contact records and cases.</p>\r\n    <p>Alternatively, you can import contact records directly into the Treepl CMS Contacts module. However, Cases can not yet be imported in this way and would need to be added manaully if not using the Migration App.</p>\r\n    <p>Also note that Treepl CMS Contact fields are limited, so it's still advisable to export BC CRM data for archive/backup purposes if advanced CRM fields exist and later import that data when the advanced CRM is available.</p>\r\n\r\n    \r\n    <h2 id=\"secReplicateContentHolders\" class=\"circle-wrap\"><div class=\"circle\">41</div>Replicate Content Holders</h2>\r\n    {% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secReplicateContentHolders\", parity: \"high\", effort: \"low\", time: \"low\", docs: \"med\", tool: \"high\" %}\r\n    <p>The <a href=\"https://www.bcappstore.com/apps/bc-to-treepl\" target=\"_blank\">BC to Treepl CMS  Migration App</a> can be used to automate this process.</p>\r\n    <p>Alternatively, if manually migrating, locate your relevant BC Content Holders, either in your downloaded BC site files, or in the “Develop” tab of the BC Admin under ‘System / ContentHolders, or directly in the BC Admin under ‘Site Manager’ &gt; ‘Content Holders’.</p>\r\n    <p>Upload your BC Content Holders into your Treepl CMS instance via FTP into the ‘Content / Snippets’ directory.</p>\r\n    <p>If not using FTP, create and copy over the HTML from these into the Treepl CMS admin area under ‘Content / Snippets’.</p>\r\n    <p>Review your HTML for any BC specific tags or modules which will need to be converted to Treepl CMS equivalents. Either making note of them to come back to once other items are set up, or replace them now if you can.</p>\r\n    \r\n    \r\n    <div class=\"tab-content faqsOpenCloseHolder\">\r\n        <div class=\"faqs-open-close \">\r\n            <a class=\"opener\" href=\"#\"><i class=\"fas fa-angle-right\"></i>Snippets Documentation</a>\r\n            <div class=\"slide js-slide-hidden\">\r\n                {% component source: \"Documentation Post\", layout: \"Body Detail\", filterBy: \"id\", filterValue: \"2133\", limit: \"1\", type: \"module\" %}\r\n            </div>\r\n        </div>\r\n        <div class=\"faqs-open-close \">\r\n            <a class=\"opener\" href=\"#\"><i class=\"fas fa-angle-right\"></i>Snippets Component Documentation</a>\r\n            <div class=\"slide js-slide-hidden\">\r\n                {% component source: \"Documentation Post\", layout: \"Body Detail\", filterBy: \"id\", filterValue: \"1950\", limit: \"1\", type: \"module\" %}\r\n            </div>\r\n        </div>\r\n    </div>\r\n    \r\n    \r\n    \r\n    \r\n    <h2 id=\"secBuiltInModules\" class=\"circle-wrap\"><div class=\"circle\">42</div>Built-In Modules:</h2>\r\n    <h3 id=\"secBlogs\">Blogs</h3>\r\n    {% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secBuiltInModulesBlogs\", parity: \"high\", effort: \"med\", time: \"med\", docs: \"med\", tool: \"high\" %}\r\n    <p>BC Blogs can be replicated in Treepl CMS either in the built-in Blog module or by using Custom Modules to configure your own blog structure.</p>\r\n    <p>The <a href=\"https://www.bcappstore.com/apps/bc-to-treepl\" target=\"_blank\">BC to Treepl CMS Migration App</a> can be used to automate this process, including Release Dates, Tags, Categories, Authors and SEO data.</p>\r\n    <p>If manually transferring your blogs, for a method of extracting the BC Blog data see this helpful Treepl CMS Forum post (includes code snippets and demo video):</p>\r\n    <a class=\"btn small\" href=\"https://forum.treepl.co/t/bc-blog-export-helper/61\" target=\"_blank\">BC Blog Export Helper</a>\r\n    <p>You can also upload your BC module layouts into your Treepl CMS instance via FTP into the ‘Content / ModuleLayouts / &lt;Blog&gt; &amp; &lt;BlogPost&gt;’ directories.</p>\r\n    <p>For more information about the Blog module see the documentation articles.</p>\r\n    <div class=\"tab-content faqsOpenCloseHolder\">\r\n        <div class=\"faqs-open-close \">\r\n            <a class=\"opener\" href=\"#\"><i class=\"fas fa-angle-right\"></i>Blog module Documentation</a>\r\n            <div class=\"slide js-slide-hidden\">\r\n                {% component source: \"Documentation Post\", layout: \"Body Detail\", filterBy: \"id\", filterValue: \"2135\", limit: \"1\", type: \"module\" %}\r\n            </div>\r\n        </div>\r\n        <div class=\"faqs-open-close \">\r\n            <a class=\"opener\" href=\"#\"><i class=\"fas fa-angle-right\"></i>Blog component Documentation</a>\r\n            <div class=\"slide js-slide-hidden\">\r\n                {% component source: \"Documentation Post\", layout: \"Body Detail\", filterBy: \"id\", filterValue: \"2141\", limit: \"1\", type: \"module\" %}\r\n            </div>\r\n        </div>\r\n        <div class=\"faqs-open-close \">\r\n            <a class=\"opener\" href=\"#\"><i class=\"fas fa-angle-right\"></i>Blog Post component Documentation</a>\r\n            <div class=\"slide js-slide-hidden\">\r\n                {% component source: \"Documentation Post\", layout: \"Body Detail\", filterBy: \"id\", filterValue: \"2142\", limit: \"1\", type: \"module\" %}\r\n            </div>\r\n        </div>\r\n    </div>\r\n    \r\n    <h3 id=\"secEvents\">Events</h3>\r\n    {% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secBuiltInModulesEvents\", parity: \"high\", effort: \"high\", time: \"med\", docs: \"low\", tool: \"high\" %}\r\n    <p>Treepl CMS Events are similar to BC Events and can be set up quite easily.</p>\r\n    <p>The <a href=\"https://www.bcappstore.com/apps/bc-to-treepl\" target=\"_blank\">BC to Treepl CMS  Migration App</a> can be used to automate Event migrations as well as transfer Event booking data from the CRM into Treepl CMS CRM.</p>\r\n    <p>For manual migrations, getting the data out of BC is a problem... although, you could likely use a similar approach to the Blog Export Helper above.</p>\r\n    <p>You can also upload your BC module layouts into your Treepl CMS instance via FTP into the ‘Content / ModuleLayouts / &lt;Event&gt; &amp; &lt;EventGroup&gt;’ directories.</p>\r\n    \r\n    <h3 id=\"secPhotoGalleries\">Photo Galleries</h3>\r\n    {% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secBuiltInModulesGalleries\", parity: \"med\", effort: \"med\", time: \"med\", docs: \"med\", tool: \"high\" %}\r\n    <p>Galleries in Treepl CMS work more like WebApps, so each image is an item within the parent module. This brings greater control in the long run, however migrating images and data to this new format can make migration a little more involved.</p>\r\n    <p>The <a href=\"https://www.bcappstore.com/apps/bc-to-treepl\" target=\"_blank\">BC to Treepl CMS Migration App</a> can be used to automate this process.</p>\r\n    <p>If manually transferring your galleries, see this very helpful method of extracting the BC data in a ready format for Treepl CMS posted in the Treepl CMS Forum:</p>\r\n    <a class=\"btn small\" href=\"https://forum.treepl.co/t/bc-photo-gallery-exporter/107\" target=\"_blank\">BC Photo Galleries Export Helper</a>\r\n    <p>For more information about the Galleries/Sliders module see the documentation articles.</p>\r\n    <div class=\"tab-content faqsOpenCloseHolder\">\r\n        <div class=\"faqs-open-close \">\r\n            <a class=\"opener\" href=\"#\"><i class=\"fas fa-angle-right\"></i>Gallery/Slider Group module</a>\r\n            <div class=\"slide js-slide-hidden\">\r\n                {% component source: \"Documentation Post\", layout: \"Body Detail\", filterBy: \"id\", filterValue: \"2140\", limit: \"1\", type: \"module\" %}\r\n            </div>\r\n        </div>\r\n    </div>\r\n    <div class=\"tab-content faqsOpenCloseHolder\">\r\n        <div class=\"faqs-open-close \">\r\n            <a class=\"opener\" href=\"#\"><i class=\"fas fa-angle-right\"></i>Gallery/Slider Item module</a>\r\n            <div class=\"slide js-slide-hidden\">\r\n                {% component source: \"Documentation Post\", layout: \"Body Detail\", filterBy: \"id\", filterValue: \"2143\", limit: \"1\", type: \"module\" %}\r\n            </div>\r\n        </div>\r\n    </div>\r\n    \r\n    <h3 id=\"secNews\">News</h3>\r\n    {% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secBuiltInModulesNews\", parity: \"med\", effort: \"low\", time: \"low\", docs: \"med\", tool: \"high\" %}\r\n    <p>There is no “News” module specifically in Treepl CMS, however using the Blog would likely be a more than suitable alternative (see migrating Blogs section above).</p>\r\n    <p>The <a href=\"https://www.bcappstore.com/apps/bc-to-treepl\" target=\"_blank\">BC to Treepl CMS Migration App</a> can be used to automate this process and a separate Blog module will be created for News items.</p>\r\n    <p>If migrating manually, since BC doesn't provide export functionality for extracting the BC News data, you could likely use a similar approach to the Blog Export Helper above.</p>\r\n    <p>You can also upload your BC module layouts into your Treepl CMS instance via FTP into the ‘Content / ModuleLayouts / &lt;Your Custom Module OR Blog&gt;’ directory.</p>\r\n    \r\n    \r\n    <h3 id=\"secMediaDownloads\">Media Downloads</h3>\r\n    {% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secBuiltInModulesMedia\", parity: \"low\", effort: \"med\", time: \"med\", docs: \"low\", tool: \"high\" %}\r\n    <p>There is no direct “Media Downloads” module in Treepl CMS, however setting up a Custom Module along with the ‘<a href=\"https://docs.treepl.co/documentation_group/extras/force-download-handler\" target=\"_blank\">Force Download Handler</a>’ option would see very similar results with greater flexibility.<br>\r\n    (see migrating WebApps section in a later step).</p>\r\n    <p>You can manually migrate Media Downloads or alternatively the <a href=\"https://www.bcappstore.com/apps/bc-to-treepl\" target=\"_blank\">BC to Treepl CMS  Migration App</a> can be used to automate this process.</p>\r\n    <p>For manual migrations, a very helpful method of extracting the BC data in a ready format for Treepl CMS, see this helpful Treepl CMS Forum post:</p>\r\n    <a class=\"btn small\" href=\"https://forum.treepl.co/t/bc-media-downloads-exporter/235\" target=\"_blank\">BC Media Downloads Export Helper</a>\r\n    \r\n    \r\n    <h3 id=\"secFAQs\">FAQs</h3>\r\n    {% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secBuiltInModulesFAQs\", parity: \"high\", effort: \"med\", time: \"med\", docs: \"low\", tool: \"high\" %}\r\n    <p>FAQs in Treepl CMS work more like WebApps, so each FAQ is an item within the parent module (Question Group). This brings greater control in the long run, however migrating FAQs and data to this new format may make migration a little more involved.</p>\r\n    <p>You can manually migrate FAQs or alternatively the <a href=\"https://www.bcappstore.com/apps/bc-to-treepl\" target=\"_blank\">BC to Treepl CMS  Migration App</a> can be used to automate this process.</p>\r\n    <p>For manual migrations, you could likely use a similar approach to the Blog Export Helper above.</p>\r\n    <p>You can also upload your BC module layouts into your Treepl CMS instance via FTP into the ‘Content / ModuleLayouts / &lt;FAQGropu&gt; &amp; &lt;FAQQuestion&gt;’ directories.</p>\r\n    <p>For more information about the FAQs module see the documentation articles.</p>\r\n    <div class=\"tab-content faqGroupOpenCloseHolder\">\r\n        <div class=\"faqs-open-close \">\r\n            <a class=\"opener\" href=\"#\"><i class=\"fas fa-angle-right\"></i>FAQ Group module</a>\r\n            <div class=\"slide js-slide-hidden\">\r\n                {% component source: \"Documentation Post\", layout: \"Body Detail\", filterBy: \"id\", filterValue: \"2144\", limit: \"1\", type: \"module\" %}\r\n            </div>\r\n        </div>\r\n    </div>\r\n    <div class=\"tab-content faqItemOpenCloseHolder\">\r\n        <div class=\"faqs-open-close \">\r\n            <a class=\"opener\" href=\"#\"><i class=\"fas fa-angle-right\"></i>FAQ Item module</a>\r\n            <div class=\"slide js-slide-hidden\">\r\n                {% component source: \"Documentation Post\", layout: \"Body Detail\", filterBy: \"id\", filterValue: \"2145\", limit: \"1\", type: \"module\" %}\r\n            </div>\r\n        </div>\r\n    </div>\r\n    \r\n    \r\n    <h3 id=\"secAdRotators\">Ad Rotators</h3>\r\n    {% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secBuiltInModulesRotators\", parity: \"med\", effort: \"med\", time: \"med\", docs: \"med\", tool: \"high\" %}\r\n    <p>The Banner module in Treepl CMS was built to replace the BC Ad Rotators and is set up much like the other modules in Treepl CMS and is therefore flexible for you to configure the layouts and behaviour as needed.</p>\r\n    <p>The <a href=\"https://www.bcappstore.com/apps/bc-to-treepl\" target=\"_blank\">BC to Treepl CMS Migration App</a> can be used to automate this process.</p>\r\n    <p>If migrating manually, since BC doesn't provide export functionality for extracting the BC Ad Rotator data, you could likely use a similar approach to the Blog Export Helper above.</p>\r\n    <p>For more information about the Banners module see the documentation articles.</p>\r\n    <div class=\"tab-content faqsOpenCloseHolder\">\r\n        <div class=\"faqs-open-close \">\r\n            <a class=\"opener\" href=\"#\"><i class=\"fas fa-angle-right\"></i>Banner Documentation</a>\r\n            <div class=\"slide js-slide-hidden\">\r\n                {% component source: \"Documentation Post\", layout: \"Body Detail\", filterBy: \"id\", filterValue: \"2136\", limit: \"1\", type: \"module\" %}\r\n            </div>\r\n        </div>\r\n    </div>\r\n    <div class=\"tab-content faqsOpenCloseHolder\">\r\n        <div class=\"faqs-open-close \">\r\n            <a class=\"opener\" href=\"#\"><i class=\"fas fa-angle-right\"></i>Banner Group module</a>\r\n            <div class=\"slide js-slide-hidden\">\r\n                {% component source: \"Documentation Post\", layout: \"Body Detail\", filterBy: \"id\", filterValue: \"2146\", limit: \"1\", type: \"module\" %}\r\n            </div>\r\n        </div>\r\n    </div>\r\n    <div class=\"tab-content faqsOpenCloseHolder\">\r\n        <div class=\"faqs-open-close \">\r\n            <a class=\"opener\" href=\"#\"><i class=\"fas fa-angle-right\"></i>Banner Item module</a>\r\n            <div class=\"slide js-slide-hidden\">\r\n                {% component source: \"Documentation Post\", layout: \"Body Detail\", filterBy: \"id\", filterValue: \"2147\", limit: \"1\", type: \"module\" %}\r\n            </div>\r\n        </div>\r\n    </div>\r\n    \r\n    <h2 id=\"secCustomModulesWebApps\" class=\"circle-wrap\"><div class=\"circle\">43</div>Custom Modules (WebApps)</h2>\r\n    {% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secCustomModulesWebApps\", parity: \"high\", effort: \"low\", time: \"med\", docs: \"high\", tool: \"high\" %}\r\n    <p>Generally, WebApps will transfer over quite easily as Custom Modules in Treepl CMS were built around an improved “WebApp” model. Therefore they have a very similar concept with how items are added and list and detail layouts are constructed. Combined with the fact that WebApp data can be easily exported from BC and imported into Treepl CMS, WebApps will likely be an easier job migrating then the other built-in BC modules.</p>\r\n    <p>If you have very complex WebApps there may be more time required to study the different methods with rendering data and converting complex Liquid markup, but the data migration should be relatively straight forward via export/import.</p>\r\n    <p>You can further simplify this process with the <a href=\"https://www.bcappstore.com/apps/bc-to-treepl\" target=\"_blank\">BC to Treepl CMS  Migration App</a>, which can migration not only the item data but the WebApp layouts, settings and set up all custom fields including Datasource fields (converting the reference for Treepl CMS use).</p>\r\n    <p>If manually migrating WebApps, you'll will first need to set up your Custom Module with all it's correspondign properties and settings in order to import those matching fields from BC.</p>\r\n    <p>You can also upload your BC module layouts into your Treepl CMS instance via FTP into the ‘Content / ModuleLayouts / &lt;Your Custom Module&gt;’ directory.</p>\r\n    <p>Refer to the Custom Module documentation for more details:</p>\r\n    <a class=\"btn small\" href=\"/documentation_group/content-modules/custom-modules-aka-webapps\" target=\"_blank\">Custom Modules (AKA WebApps)</a>\r\n    \r\n    \r\n    \r\n    <h2 id=\"secEcommerce\" class=\"circle-wrap\"><div class=\"circle\">44</div>eCommerce</h2>\r\n    <p>To get up and running with eCommerce in Treepl CMS, see the getting started article below.</p>\r\n    <div class=\"tab-content faqsOpenCloseHolder\">\r\n        <div class=\"faqs-open-close \">\r\n            <a class=\"opener\" href=\"#\"><i class=\"fas fa-angle-right\"></i>Getting Started with eCommerce</a>\r\n            <div class=\"slide js-slide-hidden\">\r\n                {% component source: \"Documentation Post\", layout: \"Body Detail\", filterBy: \"id\", filterValue: \"2522\", limit: \"1\", type: \"module\" %}\r\n            </div>\r\n        </div>\r\n    </div>\r\n    <h3 id=\"secPaymentGateways\">Payment Gateways</h3>\r\n    {% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secPaymentGateways\", parity: \"med\", effort: \"low\", time: \"low\", docs: \"low\", tool: \"na\" %}\r\n    <p>Since the Payment Gateway settings contain sensitive details you will need to manually set up your Payment Gateway in your new Treepl CMS site by going to ‘Settings’ > ‘Payment’.</p>\r\n\r\n<h3 id=\"secTaxCodes\">Tax Codes</h3>\r\n{% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secTaxCodes\", parity: \"high\", effort: \"low\", time: \"low\", docs: \"low\", tool: \"high\" %}\r\n<p>Tax Codes follow the same structure in Treepl CMS so you can simply enter all the same codes under ‘eCommerce’ > ‘Taxes’.</p>\r\n<p>If you are implementing all or many of the US State taxes you’ll be able to add these automatically when you click “Add New Tax” and select ‘United States’ as the assigned country.</p>\r\n<p>There is no manual export option from BC, nor is there an import option in Treepl CMS for this.</p>\r\n<p>You can also automatically migrate Tax Codes via the <a href=\"https://www.bcappstore.com/apps/bc-to-treepl\" target=\"_blank\">BC to Treepl CMS Migration App</a>.</p>\r\n<h3 id=\"secShippingOptions\">Shipping Options</h3>\r\n{% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secShippingOptions\", parity: \"med\", effort: \"low\", time: \"low\", docs: \"low\", tool: \"high\" %}\r\n<p>Shipping Codes follow a very similar format in Treepl CMS so you can simply enter all the same codes under ‘eCommerce’ > Shipping options.</p>\r\n<p>This is for user-defined shipping rules at least. Integration of shipping providers is still pending release.</p>\r\n<p>There is no manual export option from BC, nor is there an import option in Treepl CMS for this. </p>\r\n<p>You can also automatically migrate user-defined Shipping Options via the <a href=\"https://www.bcappstore.com/apps/bc-to-treepl\" target=\"_blank\">BC to Treepl CMS Migration App</a>.</p>\r\n<h3 id=\"secCatalogs\">Catalogs</h3>\r\n{% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secCatalogs\", parity: \"high\", effort: \"low\", time: \"low\", docs: \"low\", tool: \"high\" %}\r\n<p>You can import your Catalogues into Treepl CMS if you have a spreadsheet available, although there is no export feature in BC.</p>\r\n<p>Creating Catalogs manually can be done much the same way as adding any other module item in Treepl CMS via ‘eCommerce’ > ‘Catalogs’ and you will have similar options available.</p>\r\n<p>Options from BC that are not currently available are; Price visibility, XML feed, and Browse Panel settings.</p> \r\n<p>You can also automatically migrate Catalogs via the <a href=\"https://www.bcappstore.com/apps/bc-to-treepl\" target=\"_blank\">BC to Treepl CMS Migration App</a>.</p>\r\n<h3 id=\"secProducts\">Products</h3>\r\n{% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secProducts\", parity: \"high\", effort: \"low\", time: \"low\", docs: \"low\", tool: \"high\" %}\r\n<p>You can import your Products into Treepl CMS with an export from BC, or if you have a spreadsheet available (after formatting to match Treepl CMS import file).</p>\r\n<p>Creating Products manually can be done much the same way as adding any other module item in Treepl CMS via ‘eCommerce’ > ‘Products’ and you will have similar options available.</p>\r\n<p>Additionally, you can add a variety of custom fields to customise your products module (for example, adding additional image fields would be how you’d add the “Poplets” feature from BC).</p>\r\n<p>Options from BC that are not currently available are; Downloadable Product, Capture Details, Commission Payable.</p>\r\n<p>You can also automatically migrate Products via the <a href=\"https://www.bcappstore.com/apps/bc-to-treepl\" target=\"_blank\">BC to Treepl CMS Migration App</a>.</p>\r\n<h3 id=\"secDiscountCodes\">Discount Codes</h3>\r\n{% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secDiscountCodes\", parity: \"high\", effort: \"low\", time: \"low\", docs: \"low\", tool: \"high\" %}\r\n<p>Discount Codes follow the same structure in Treepl CMS so you can simply enter all the same codes under ‘eCommerce’ > ‘Discount codes’.</p>\r\n<p>There is no manual export option from BC, nor is there an import option in Treepl CMS for this.</p>\r\n<p>You can also automatically migrate Discount Codes via the <a href=\"https://www.bcappstore.com/apps/bc-to-treepl\" target=\"_blank\">BC to Treepl CMS Migration App</a>.</p>\r\n<h3 id=\"secGiftVouchers\">Gift Vouchers</h3>\r\n{% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secGiftVouchers\", parity: \"high\", effort: \"low\", time: \"low\", docs: \"low\", tool: \"high\" %}\r\n<p>Gift Vouchers follow the same structure in Treepl CMS so you can simply enter all the same vouchers under ‘eCommerce’ > ‘Gift vouchers’.</p>\r\n<p>There is no manual export option from BC, nor is there an import option in Treepl CMS for this.</p>\r\n<p>You can also automatically migrate Gift Vouchers via the <a href=\"https://www.bcappstore.com/apps/bc-to-treepl\" target=\"_blank\">BC to Treepl CMS Migration App</a>.</p>\r\n\r\n\r\n<p class=\"notice-note\">eCommerce features not yet available include; cart lifetime setting, XML product feed, digital/downloadable products, integrated shipping providers.</p>\r\n    \r\n    \r\n    \r\n    \r\n    \r\n    \r\n    \r\n    \r\n    \r\n    \r\n    \r\n    \r\n    \r\n    \r\n    <h2 id=\"secRevisitSiteTemplates\" class=\"circle-wrap\"><div class=\"circle\">45</div>Revisit Site Templates</h2>\r\n    {% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secRevisitSiteTemplates\", parity: \"high\", effort: \"med\", time: \"med\", docs: \"med\", tool: \"high\" %}\r\n    <p>Now let's review the Site Templates markup and replace BC modules and Liquid with Treepl CMS methods.</p>\r\n    <p>The <a href=\"https://www.bcappstore.com/apps/bc-to-treepl\" target=\"_blank\">BC to Treepl CMS  Migration App</a> can be used to automate much of this process. However, it's recommended to check through the markup for any exceptions.</p>\r\n    <p>Some common examples are:</p>\r\n    <ul>\r\n        <li>Dynamic HEAD elements</li>\r\n        <li>pagecontent tag</li>\r\n        <li>menus</li>\r\n        <li>content holder</li>\r\n        <li>includes</li>\r\n        <li>modules: BC's module syntax (old and new) converted to Treepl CMS 'Component' syntax</li>\r\n    </ul>\r\n    <p>Review the relevant Component types and all their properties and syntax:</p>\r\n    <a class=\"btn small\" href=\"/documentation_group/component-types/\" target=\"_blank\">All Component Types</a>\r\n    \r\n    \r\n    <h2 id=\"secRevisitSitePages\" class=\"circle-wrap\"><div class=\"circle\">46</div>Revisit Site Pages</h2>\r\n    {% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secRevisitSitePages\", parity: \"high\", effort: \"med\", time: \"med\", docs: \"med\", tool: \"high\" %}\r\n    <p>Like above, let's review the Site Pages markup and replace BC modules and Liquid with Treepl CMS methods.</p>\r\n    <p>Usign the <a href=\"https://www.bcappstore.com/apps/bc-to-treepl\" target=\"_blank\">BC to Treepl CMS  Migration App</a> can automate many BC to Treepl CMS Liquid and tag conversions.</p>\r\n    <p>For manual migrations, some common examples are:</p>\r\n    <ul>\r\n        <li>menus</li>\r\n        <li>content holder</li>\r\n        <li>includes</li>\r\n        <li>modules: BC's module syntax (old and new) converted to Treepl CMS 'Component' syntax</li>\r\n    </ul>\r\n    <p>Review the relevant Component types and all their properties and syntax:</p>\r\n    <a class=\"btn small\" href=\"/documentation_group/component-types/\" target=\"_blank\">All Component Types</a>\r\n    \r\n    \r\n    <h2 id=\"secSetupSEOandSitemap\" class=\"circle-wrap\"><div class=\"circle\">47</div>Setup SEO & Sitemap</h2>\r\n    {% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secSetupSEOandSitemap\", parity: \"med\", effort: \"low\", time: \"low\", docs: \"med\", tool: \"low\" %}\r\n    <p>Add primary domain, language, country, and configure sitemap automation (and possibly enable all items for search engine visibility).</p>\r\n    <p>For more information about SEO settings see the documentation article.</p>\r\n    <div class=\"tab-content faqsOpenCloseHolder\">\r\n        <div class=\"faqs-open-close \">\r\n            <a class=\"opener\" href=\"#\"><i class=\"fas fa-angle-right\"></i>SEO Documentation</a>\r\n            <div class=\"slide js-slide-hidden\">\r\n                {% component source: \"Documentation Post\", layout: \"Body Detail\", filterBy: \"id\", filterValue: \"2212\", limit: \"1\", type: \"module\" %}\r\n            </div>\r\n        </div>\r\n    </div>\r\n    <p>On initial setup, it's recommended to manually generate the sitemap to review the items listed - ensuring all your relevant site items are configured for search engine visibility.</p>\r\n    \r\n    \r\n    <h2 id=\"secChecksAndTroubleshooting\" class=\"circle-wrap\"><div class=\"circle\">48</div>Checks and Troubleshooting</h2>\r\n    {% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secChecksAndTroubleshooting\", parity: \"na\", effort: \"med\", time: \"med\", docs: \"med\", tool: \"na\" %}\r\n\r\n    <p>Run back through the steps above as a quick checklist to review all your site items.</p>\r\n    <p>Comparing your new Treepl CMS site front-end alongside the BC site to check for consistancy.</p>\r\n    <p>Note any URL differences due to page/directory naming or restructuring and ensure URL Redirect are setup for these.</p>\r\n</div>\r\n",
  "ItemTags": [
  "Migrations"
],
  "Author_Name": "",
  "Author_Url": "",
  "Author": "",
  "SEOTitle": "",
  "MetaTitle": "",
  "MetaDescription": "",
  "ShowPageForSearchEngine": true,
  "CanonicalLink": "",
  "EnableAMP": false,
  "AMPContent": "",
  "CodeEditor": true,
  "ExternalId": 0,
  "SocialMetaTags": "",
  "OpenGraphProperties": "",
  "DisableForSiteSearch": false,
  "SeoPriority": "",
  "CreatedByMemberId": 0,
  "ItemCategories": "",
  "ItemCategoryIdList": "",
  "SKUCode": "",
  "SiteSearchKeywords": "",
  "Active": true,
  "IgnoreUpdates": false,
  "UpdateNotes": "",
  "UpdatesLog": "<ul>\n    <li>Added note about new BC .zip Archive functionality</li>\n    <li>Updated BC to Treepl CMS Migration App compatibility - as per v9.0.4 (Catalogs, Discount codes, Gift vouchers, Products, Shipping options, Tax codes)</li>\n</ul>",
  "ExternalResources": "",
  "AdditionalRelatedArticle_Name": "",
  "AdditionalRelatedArticle_Url": "",
  "AdditionalRelatedArticle": "",
  "AdditionalRelatedArticle2_Name": "",
  "AdditionalRelatedArticle2_Url": "",
  "AdditionalRelatedArticle2": "",
  "Authors": "2418",
  "Module_ID": 1870,
  "Module_Alias": "DocumentationPost",
  "ParentName": "BC Migration Guides",
  "ParentUrl": "/bc-migration-guides",
  "TemplateName": "Docs Template",
  "IsHome": false
},
  "Enabled": true,
  "Params": {}
}

Accessing the Data

You can also directly render this data on the Page or Template via a Liquid Collection if collectionVariable was added to the Component tag.

An example using collectionVariable with value "snippetExample" is as follows:

{% component type: "snippet", alias: "demo_html_snippet", collectionVariable: "snippetExample" %}

Rendering the collection data to a page:

<p><strong>{{snippetExample['name']}}</strong></p>
<div>{{snippetExample['content']}}</div>

49
Built-In Modules:

Blogs

Parityhigh Effortmed Timemed Docsmed Migration Toolactive

BC Blogs can be replicated in Treepl CMS either in the built-in Blog module or by using Custom Modules to configure your own blog structure.

The BC to Treepl CMS Migration App can be used to automate this process, including Release Dates, Tags, Categories, Authors and SEO data.

If manually transferring your blogs, for a method of extracting the BC Blog data see this helpful Treepl CMS Forum post (includes code snippets and demo video):

BC Blog Export Helper

You can also upload your BC module layouts into your Treepl CMS instance via FTP into the ‘Content / ModuleLayouts / <Blog> & <BlogPost>’ directories.

For more information about the Blog module see the documentation articles.

Blog module Documentation

View full article

Blogs provide a robust blogging platform allowing multiple Blogs per site with unlimited Posts and custom layouts.

Quick Start

Blog component Documentation

View full article

This module component fetches data relating to Blogs.

{% component type: "module", source: "Blog", layout: "Blog List Layout" %}

Parameters and Options

Parameter Values Required Description
type module (default)
module_of_member

This is the name of the entity that needs to be used for the component retrieving function.

module is the standard retrieving function to retrieve all items.

module_of_member retrieves only those items "Added by" the currently logged in user (identified by the CreatedByMemberId property in the module items Liquid data).

The "Added by" System Property will only be available where the modules settings have "Allow Add New Items" turned on under the "Site User Permissions".

source Blog (default) The entity/alias name or ID that the data is to be sourced from.
layout Blog List Layout (default)
<Your Layout name>

The layout name you want to use for rendering the component. The layout name is referenced from the available Layouts of the source specified.

While this parameter is required to render your Layout markup, if the parameter is blank, has an incorrectly referenced Layout, or is removed altogether then the component will still output the modules item data to a Liquid collection which can be accessed via the collectionVariable parameter.

filterBy id
parentid
name
weighting
url
urlslug
releasedate
expirydate
LastUpdatedDate
Author
ItemCategories
ItemTags
<CustomPropertyName>
...and any other top level properties available for the module

The name of the property to filter by. If empty or not present, no filtering will be used.

Remove spaces from custom property names here.

filterValue <your value>
Your specific value to filter by, eg: name, id, number, date, etc.
Liquid variables can be used here also. If present but no value set, no items will be returned.
sortBy id
parentid
name
weighting
url
urlslug
releasedate
expirydate
LastUpdatedDate
Author
ItemCategories
ItemTags
<CustomPropertyName>
...and any other top level properties available for the module

The name of the property to sort by. If empty or not present, alpha/numeric sorting will be used.

Remove spaces from custom property names here.

sortOrder ASC (default)
DESC

ASC sorts the items in ascending order while DESC sorts in descending order (based on alpha/numeric or date sorting).
If empty or not present, alpha/numeric sorting will be used.
random false (default)
true

Displays the available items in a random order.

If used in conjunction with sortBy, that sorting criteria will be applied to the randomly retrieved results. So, if retrieving all, or most, of the items they will not appear to be random since they will then be sorted back into a logical order. To overcome this, set the sortBy parameter to 'enabled' (or another unused property) as this will not provide any viable sorting criteria* and the items will not be sorted from their initial random order.
* Unless there are weighted items, which will always override the random option.

limit 10 (default)
<number>

The maximum number of items returned. If displayPagination is enabled this determines the maximum number of items per page.
enablePagination true (default)
false

Enables/disables pagination for the component.

This is useful for avoiding pagniation affects for a specific component when multiple components of the same module are output on the same page and do use pagination.

displayPagination false (default)
true

Displays pagination if there are more items available than the limit set.
emptyMessage <Your custom message>
Custom content that is rendered if no items are returned by the Component. The default is no content.
Liquid variables are supported here, although Liquid logic tags and HTML are not.

If using Liquid variables with filters added, be sure to change any double quotes to single quotes. For eg:
emptyMessage: “{{ myVariable | prepend: 'Error: ' }}”

To use HTML in your empty message, first capture it using a Liquid capture, then insert the capture variable into the emptyMessage parameter.

object item (default)
collection

Determines the method for Liquid rendering.
item returns each item iteratively, one after another, for output (generally, output to a container element with no need for looping through the data).
collection returns all items as one collection for output (your container element and looping logic would be handled in the Components Layout).
collectionVariable <yourLiquidVariableName>
Assigns the data to a Liquid collection enabling further access to the data on the Page or Template using Liquid.

Your collectionVariable value must only contain English letters, numbers or underscores. Spaces or special characters are not supported.

isSearchResult false (default)
true

Allows search parameters in the URL to override the components output. Therefore, this parameter can be used to output module specific search results from a submitted search form.

Likewise, Tag, Category, and Archive components can be used in conjunction with this parameter for filtering the module's output.

URL search parameters will override any corresponding parameters in the component. If no search parameters are present in the URL, isSearchResult will be ignored.

Any value other than true, (including an empty value), will disable the search functionality and the component will output its regular data.

searchScope eg:
{'prop_ParentId':'1234', 'prop_ReleaseDate_Min':'2018-07-01', 'prop_ReleaseDate_Max':'2018-07-31', 'prop_KeyWords':'Your Keywords', 'prop_ItemTags':['tag1','tag2'], 'page':'2'}

Allows a search on the module without search parameters needed in the URL. Instead, search parameters are added to the value of this parameter. Therefore, this parameter can be used to output module specific search results from hard-coded (or Liquid) values without the use of a search form.

Added search parameters will override any corresponding parameters otherwise configured on the component. If no search parameters are present, searchScope will be ignored.

This value supports Liquid and can therefore be constructed with Liquid data/variables.

<customParameter> <your custom value>
You can add your own additional parameters (name/value pairs) to the Component tag. These will be passed to the Components Layout (and the collectionVariable if used) for use via Liquid.

Your <customParameter> name must only contain English letters, numbers or underscores. Spaces or special characters are not supported.

You can use HTML as the value here, just be sure to change any double quotes in your HTML to single quotes.

Liquid Output

The below example has 3 sample items (Blogs), but is otherwise the default structure you will get from this Component.

{
  "Pagination": {
  "CurrentPage": 1,
  "ItemsPerPage": 10,
  "NumberOfPages": 1,
  "TotalItemsCount": 3
},
  "Items": [
  {
    "Id": 2286,
    "Url": "/demo-custom-blog",
    "ParentId": -1,
    "LastUpdatedDate": "2019-02-28T20:44:51",
    "Name": "DEMO Custom Blog",
    "UrlSlug": "demo-custom-blog",
    "Enabled": true,
    "ReleaseDate": "2018-12-14T18:00:00",
    "ExpiryDate": "2099-12-10T18:00:00",
    "Weighting": 0,
    "Description": "<p>This is a description for my blog.<br>\r\nIt has Categories and Tags applied and can be filtered by Category, Tag and Month.<br>\r\nPagination is also enabled.</p>",
    "ItemTags": null,
    "Author_Name": null,
    "Author_Url": null,
    "Author": "",
    "SEOTitle": "",
    "MetaTitle": "",
    "MetaDescription": "",
    "ShowPageForSearchEngine": true,
    "CanonicalLink": "",
    "EnableAMP": false,
    "AMPContent": "",
    "CodeEditor": true,
    "ExternalId": 0,
    "SocialMetaTags": "",
    "OpenGraphProperties": {
      "title": "",
      "type": "",
      "url": "",
      "locale": "",
      "image": ""
    },
    "DisableForSiteSearch": false,
    "SeoPriority": "",
    "CreatedByMemberId": 0,
    "ItemCategories": null,
    "ItemCategoryIdList": null,
    "SKUCode": "",
    "SiteSearchKeywords": "",
    "Module_ID": 1528,
    "Module_Alias": "Blog"
  },
  {
    "Id": 2464,
    "Url": "/demo-custom-blog-2",
    "ParentId": -1,
    "LastUpdatedDate": "2019-12-18T06:51:47",
    "Name": "DEMO Custom Blog 2",
    "UrlSlug": "demo-custom-blog-2",
    "Enabled": true,
    "ReleaseDate": "2019-11-06T00:00:00",
    "ExpiryDate": "2099-12-12T00:00:00",
    "Weighting": 0,
    "Description": "<p>This is a description for my blog.<br>\nIt has Categories and Tags enabled and can be filtered by Keyword/Search, Category, Tag and Month.<br>\nFor the depreciated blog layout <a href=\"/demo-custom-blog\">see here</a>.\n</p>",
    "ItemTags": null,
    "Author_Name": null,
    "Author_Url": null,
    "Author": "",
    "SEOTitle": "",
    "MetaTitle": "",
    "MetaDescription": "",
    "ShowPageForSearchEngine": false,
    "CanonicalLink": "",
    "EnableAMP": false,
    "AMPContent": "",
    "CodeEditor": true,
    "ExternalId": 0,
    "SocialMetaTags": "",
    "OpenGraphProperties": "",
    "DisableForSiteSearch": false,
    "SeoPriority": "0.5",
    "CreatedByMemberId": 0,
    "ItemCategories": null,
    "ItemCategoryIdList": null,
    "SKUCode": "",
    "SiteSearchKeywords": "",
    "Module_ID": 1528,
    "Module_Alias": "Blog"
  },
  {
    "Id": 2279,
    "Url": "/demo-html-blog",
    "ParentId": -1,
    "LastUpdatedDate": "2019-02-28T20:44:51",
    "Name": "DEMO HTML Blog",
    "UrlSlug": "demo-html-blog",
    "Enabled": true,
    "ReleaseDate": "2018-11-25T18:00:00",
    "ExpiryDate": "2099-12-11T07:00:00",
    "Weighting": 0,
    "Description": "",
    "ItemTags": null,
    "Author_Name": null,
    "Author_Url": null,
    "Author": "",
    "SEOTitle": "",
    "MetaTitle": "",
    "MetaDescription": "",
    "ShowPageForSearchEngine": true,
    "CanonicalLink": "",
    "EnableAMP": false,
    "AMPContent": "",
    "CodeEditor": false,
    "ExternalId": 0,
    "SocialMetaTags": "",
    "OpenGraphProperties": "",
    "DisableForSiteSearch": false,
    "SeoPriority": "",
    "CreatedByMemberId": 0,
    "ItemCategories": null,
    "ItemCategoryIdList": null,
    "SKUCode": "",
    "SiteSearchKeywords": "",
    "Module_ID": 1528,
    "Module_Alias": "Blog"
  }
],
  "Params": {},
  "Parent": {
  "Id": 2141,
  "Url": "/component-types/module-blog",
  "ParentId": 2127,
  "LastUpdatedDate": "2020-05-20T00:49:29",
  "Name": "module (Blog)",
  "UrlSlug": "module-blog",
  "Enabled": true,
  "ReleaseDate": "2018-09-04T00:00:00",
  "ExpiryDate": "2099-12-09T00:00:00",
  "Weighting": 970,
  "Description": "<p>This module component fetches data relating to Blogs.</p>\r\n\r\n{% component type: \"snippet\", alias: \"code_block_processor\", data: \"{{data}}\", lang: \"liquid\" %}\r\n\r\n\r\n{% component type: \"snippet\", alias: \"section_parameters\" %}\r\n\r\n{% component type: \"snippet\", alias: \"param_table_head\" %}\r\n    {% component type: \"snippet\", alias: \"param_type\", required: \"true\", values: \"module <em>(default)</em>,module_of_member\" %}\r\n    {% component type: \"snippet\", alias: \"param_source\", required: \"true\", values: \"Blog <em>(default)</em>\" %}\r\n    {% component type: \"snippet\", alias: \"param_layout\", required: \"true\", values: \"Blog List Layout <em>(default)</em><br>&lt;Your Layout name&gt;\" %}\r\n    {% component type: \"snippet\", alias: \"param_filterby\" %}\r\n    {% component type: \"snippet\", alias: \"param_filtervalue\" %}\r\n    {% component type: \"snippet\", alias: \"param_sortby\" %}\r\n    {% component type: \"snippet\", alias: \"param_sortorder\" %}\r\n    {% component type: \"snippet\", alias: \"param_random\" %}\r\n    {% component type: \"snippet\", alias: \"param_limit\" %}\r\n    {% component type: \"snippet\", alias: \"param_enablepagination\" %}\r\n    {% component type: \"snippet\", alias: \"param_displaypagination\" %}\r\n    {% component type: \"snippet\", alias: \"param_emptymessage\" %}\r\n    {% component type: \"snippet\", alias: \"param_object\" %}\r\n    {% component type: \"snippet\", alias: \"param_collectionvariable\" %}\r\n    {% component type: \"snippet\", alias: \"param_issearchresult\" %}\r\n    {% component type: \"snippet\", alias: \"param_searchscope\" %}\r\n    {% component type: \"snippet\", alias: \"param_customparameter\" %}\r\n{% component type: \"snippet\", alias: \"param_table_foot\" %}\r\n\r\n\r\n{% component type: \"snippet\", alias: \"section_output\" %}\r\n\r\n{% component source: \"Blog\", layout: "", type: \"module\", collectionVariable: \"allBlogs\" %}\r\n<p>The below example has 3 sample <code>items</code> (Blogs), but is otherwise the default structure you will get from this Component.</p>\r\n{% component type: \"snippet\", alias: \"code_block_processor\", data: \"{{allBlogs}}\", lang: \"json\" %}\r\n\r\n{% component type: \"snippet\", alias: \"section_accessing_data\" %}\r\n\r\n<p>This data is accessible in two main ways:</p>\r\n\r\n<p>1. Using Liquid in the specified Layout via the <code>this</code> object.</p>\r\n\r\n{% component type: \"snippet\", alias: \"code_block_processor\", data: \"{{data}}\", lang: \"liquid\" %}\r\n\r\n<p>2. Directly on the Page or Template via a Liquid Collection if <code>collectionVariable</code> was added to the Component tag.</p>\r\n\r\n<p>An example using <code>collectionVariable</code> with value \"allBlogs\" to list all \"Blog\" across the site:</p>\r\n<p class=\"notice-note\">Here we suppress any Layout from rendering by setting <code>layout: \"\"</code> as an empty attribute.</p>\r\n\r\n{% component type: \"snippet\", alias: \"code_block_processor\", data: \"{{data}}\", lang: \"liquid\" %}\r\n\r\n<p><em>Looping through the collection to render all the item URLs in a list, giving us:</em></p>\r\n\r\n<ul>\r\n    \r\n        <li>/demo-custom-blog</li>\r\n    \r\n        <li>/demo-custom-blog-2</li>\r\n    \r\n        <li>/demo-html-blog</li>\r\n    \r\n</ul>\r\n<br>\r\n<p><em>The code:</em></p>\r\n\r\n{% component type: \"snippet\", alias: \"code_block_processor\", data: \"{{data}}\", lang: \"liquid\" %}\r\n\r\n<p><em>Accessing a specific item within the collection. In this case the second item (zero based index), which in our example would render the value <code>/demo-custom-blog-2</code></em></p>\r\n\r\n{% component type: \"snippet\", alias: \"code_block_processor\", data: \"{{data}}\", lang: \"liquid\" %}\r\n\r\n{% component type: \"snippet\", alias: \"section_counter\" %}\r\n",
  "ItemTags": [
  "Blogs"
],
  "Author_Name": "",
  "Author_Url": "",
  "Author": "",
  "SEOTitle": "",
  "MetaTitle": "",
  "MetaDescription": "",
  "ShowPageForSearchEngine": true,
  "CanonicalLink": "",
  "EnableAMP": false,
  "AMPContent": "",
  "CodeEditor": true,
  "ExternalId": 0,
  "SocialMetaTags": "",
  "OpenGraphProperties": "",
  "DisableForSiteSearch": false,
  "SeoPriority": "",
  "CreatedByMemberId": 0,
  "ItemCategories": "",
  "ItemCategoryIdList": "",
  "SKUCode": "",
  "SiteSearchKeywords": "",
  "Active": true,
  "IgnoreUpdates": false,
  "UpdateNotes": "'module_of_member' parameter details added.",
  "UpdatesLog": "",
  "ExternalResources": "<ul><li><a href=\"/demo-cs/all-blogs\">Demo Site Listing All Blogs</a></li></ul>",
  "AdditionalRelatedArticle_Name": "",
  "AdditionalRelatedArticle_Url": "",
  "AdditionalRelatedArticle": "",
  "AdditionalRelatedArticle2_Name": "",
  "AdditionalRelatedArticle2_Url": "",
  "AdditionalRelatedArticle2": "",
  "Authors": "2418",
  "Module_ID": 1870,
  "Module_Alias": "DocumentationPost",
  "Pagination": {
  "CurrentPage": 1,
  "ItemsPerPage": 1,
  "NumberOfPages": 1,
  "TotalItemsCount": 1
},
  "Params": {},
  "Parent": {
  "Id": 2359,
  "Url": "/bc-migration-guides/ultimate-migration-guide-step-by-step",
  "ParentId": 2355,
  "LastUpdatedDate": "2020-09-09T19:27:22",
  "Name": "Ultimate Migration Guide (Step by Step)",
  "UrlSlug": "ultimate-migration-guide-step-by-step",
  "Enabled": true,
  "ReleaseDate": "2019-02-17T00:00:00",
  "ExpiryDate": "2099-11-30T00:00:00",
  "Weighting": 800,
  "Description": "<div class=\"migration-guide\">\r\n    <div style=\"display:none;\">50</div>\r\n    <p>So you’ve decided to move your site across to Treepl CMS. Good choice.</p>\r\n    <p>And you’ve decided to do it yourself. Good for you! You’re probably going to be doing this quite a few times so let’s make it fun…</p>\r\n    <p>Set aside a good chunk of uninterrupted time, crank up your favourite tunes and grab a strong drink. It’s migration time.</p>\r\n    <p class=\"notice-note\">The below sections are ordered to try and minimise the amount of back and forth when creating the various components of a site.If a section doesn’t apply to your site, feel free to skip right over it.</p>\r\n    <p class=\"notice-note\">Migration tools are in development that will progressively make the below steps easier. These sections will be updated as those tools are released.</p>\r\n    <p class=\"notice-tip\">The BC to Treepl CMS Migration App now converts BC Liquid tags, ie: <code>{module_…}</code> and <code>{tag_…}</code> to Treepl CMS Liquid tags! For more info on this, view the Forum discussion <a href=\"https://forum.treepl.co/t/attention-to-bc-to-treepl-app-users/497\" target=\"_blank\">here</a>.</p>\r\n    <h2 id=\"secBCSiteFTPDownload\" class=\"circle-wrap\"><div class=\"circle\">51</div>Download the BC Site via FTP</h2>\r\n    {% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secBCSiteFTPDownload\", parity: \"high\", effort: \"low\", time: \"low\", docs: \"high\", tool: \"high\" %}\r\n    \r\n    <p>Download all files available via FTP from your BC site, if for no other reason than to just have a backup. However, these files can be referenced in the following steps as well.</p>\r\n    <p>You can also automatically migrate all files in the BC file system directly to your Treepl CMS site via the <a href=\"https://www.bcappstore.com/apps/bc-to-treepl\" target=\"_blank\">BC to Treepl CMS  Migration App</a>.</p>\r\n    <p>There is also now the ability to download a .zip archive of your BC site, including data from the following modules:</p>\r\n    <ul>\r\n    \t<li>Pages</li>\r\n        <li>Page Templates</li>\r\n        <li>Module Layouts</li>\r\n        <li>Static files</li>\r\n        <li>Apps</li>\r\n        <li>Content Holders</li>\r\n        <li>System Pages</li>\r\n        <li>Email Templates</li>\r\n        <li>Web Apps</li>\r\n    </ul>\r\n    <p><b>Further Resources:</b></p>\r\n    <a class=\"btn small\" href=\"https://docs.worldsecuresystems.com/user-manual/site-design/bc-and-dreamweaver/connect-to-your-site-using-dreamweaver\" target=\"_blank\">BC FTP connection details</a>\r\n    <a class=\"btn small\" href=\"https://docs.worldsecuresystems.com/Partners/downloading-your-website#Downloadingyoursitearchive\" target=\"_blank\">BC .zip archive</a>\r\n    \r\n    <h2 id=\"secBCSiteDeepClean\" class=\"circle-wrap\"><div class=\"circle\">52</div>Deep-Clean the BC Site (Optional)</h2>\r\n    {% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secBCSiteDeepClean\", parity: \"na\", effort: \"med\", time: \"med\", docs: \"na\", tool: \"na\" %}\r\n    <p>This step is optional, but you may want to take the opportunity to clear out the BC site of old pages, templates, files, etc. Particularly if it’s an old site, there can be a lot of junk floating around. And this can just get in your way during migration and could cause unnecessary work. However, be very careful not to remove assets that may still be in use somewhere (hence the backup in the previous step).</p>\r\n    <p>Once you’ve cleaned up, repeat the FTP download step to collect a new, clean, set of files.</p>\r\n    \r\n    <h2 id=\"secTreeplCMSInstance\" class=\"circle-wrap\"><div class=\"circle\">53</div>Setup Treepl CMS Site Instance</h2>\r\n    {% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secTreeplCMSInstance\", parity: \"high\", effort: \"low\", time: \"low\", docs: \"high\", tool: \"na\" %}\r\n    <p>So you can start work with the Treepl CMS platform you'll need to set up a Trial Site. Log into your Treepl Portal (portal.treepl.co) and click the \"Create New Site\" button.</p>\r\n    <div class=\"tab-content faqsOpenCloseHolder\">\r\n    <div class=\"faqs-open-close \">\r\n        <a class=\"opener\" href=\"#\"><i class=\"fas fa-angle-right\"></i>Trial Site Documentation</a>\r\n        <div class=\"slide js-slide-hidden\">\r\n            {% component source: \"Documentation Post\", layout: \"Body Detail\", filterBy: \"id\", filterValue: \"2151\", limit: \"1\", type: \"module\" %}\r\n        </div>\r\n    </div>\r\n    </div>\r\n    \r\n    <h2 id=\"secHostedEmailTransfer\" class=\"circle-wrap\"><div class=\"circle\">54</div>Start BC Hosted Email Transfer Process (If Applicable)</h2>\r\n    {% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secHostedEmailTransfer\", parity: \"na\", effort: \"low\", time: \"med\", docs: \"high\", tool: \"low\" %}\r\n    <p>If your BC site has BC hosted emails, they can be transferred directly to Treepl CMS after following the below steps.</p>\r\n    <div class=\"tab-content faqsOpenCloseHolder\">\r\n    <div class=\"faqs-open-close \">\r\n        <a class=\"opener\" href=\"#\"><i class=\"fas fa-angle-right\"></i>Transfer of BC Hosted Email Accounts</a>\r\n        <div class=\"slide js-slide-hidden\">\r\n            {% component source: \"Documentation Post\", layout: \"Body Detail\", filterBy: \"id\", filterValue: \"2185\", limit: \"1\", type: \"module\" %}\r\n        </div>\r\n    </div>\r\n    </div>\r\n    \r\n    <h2 id=\"secUploadSiteAssets\" class=\"circle-wrap\"><div class=\"circle\">55</div>Upload Site Assets</h2>\r\n    {% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secUploadSiteAssets\", parity: \"high\", effort: \"low\", time: \"low\", docs: \"high\", tool: \"high\" %}\r\n    <p>Now we'll want to connect to our new Treepl CMS instance via FTP so we can upload some of our BC assets.</p>\r\n    <p>If working manually, we'll probably only want to upload assets relating to the front-end site, such as images, CSS, JS, documents, etc. We don't want to move over pages, templates or other layout files just yet.</p>\r\n    <p>Below are instructions for getting connected via FTP client.</p>\r\n    <div class=\"tab-content faqsOpenCloseHolder\">\r\n        <div class=\"faqs-open-close \">\r\n            <a class=\"opener\" href=\"#\"><i class=\"fas fa-angle-right\"></i>FTP Access Documentation</a>\r\n            <div class=\"slide js-slide-hidden\">\r\n                {% component source: \"Documentation Post\", layout: \"Body Detail\", filterBy: \"id\", filterValue: \"1936\", limit: \"1\", type: \"module\" %}\r\n            </div>\r\n        </div>\r\n    </div>\r\n    <p>Alternatively, you can automatically migrate all files in the BC file system directly to your Treepl CMS site via the <a href=\"https://www.bcappstore.com/apps/bc-to-treepl\" target=\"_blank\">BC to Treepl CMS  Migration App</a>.</p>\r\n    \r\n    <h2 id=\"secSetupPlaceholderTemplates\" class=\"circle-wrap\"><div class=\"circle\">56</div>Upload or Setup Placeholder Templates</h2>\r\n    {% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secSetupPlaceholderTemplates\", parity: \"high\", effort: \"low\", time: \"low\", docs: \"med\", tool: \"high\" %}\r\n    <p>You can manually upload your BC page templates into your Treepl CMS instance via FTP into the ‘Content / ContentTemplates’ directory.</p>\r\n    <p>Alternatively the <a href=\"https://www.bcappstore.com/apps/bc-to-treepl\" target=\"_blank\">BC to Treepl CMS  Migration App</a> can be used to automate this process.</p>\r\n    <p>If manually migrating templates, don’t worry about editing the template code/markup at this stage. We just want to get them loaded in Treepl CMS so we can reference it in the following steps. We’ll work on the template code later.</p>\r\n    \r\n    <p>If not using FTP, to manually create a content template, go to 'Content' &gt; 'Content Templates'.</p>\r\n    <p>Click ‘Add New Template’ button.</p>\r\n    <p>Just complete ‘Name’ and choose whether it's the default template. Leave the content as is for now.</p>\r\n    <p>Repeat this for all required templates.</p>\r\n    \r\n    <div class=\"tab-content faqsOpenCloseHolder\">\r\n    <div class=\"faqs-open-close \">\r\n        <a class=\"opener\" href=\"#\"><i class=\"fas fa-angle-right\"></i>Content Templates Documentation</a>\r\n        <div class=\"slide js-slide-hidden\">\r\n            {% component source: \"Documentation Post\", layout: \"Body Detail\", filterBy: \"id\", filterValue: \"2132\", limit: \"1\", type: \"module\" %}\r\n        </div>\r\n    </div>\r\n    </div>\r\n    \r\n    <h2 id=\"secSetupSitePages\" class=\"circle-wrap\"><div class=\"circle\">57</div>Upload or Setup Site Pages</h2>\r\n    {% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secSetupSitePages\", parity: \"high\", effort: \"low\", time: \"low\", docs: \"med\", tool: \"high\" %}\r\n    <p>Upload your BC pages into your Treepl CMS instance via FTP into the ‘Content / Pages’ directory.</p>\r\n    <p>Alternatively the <a href=\"https://www.bcappstore.com/apps/bc-to-treepl\" target=\"_blank\">BC to Treepl CMS  Migration App</a> can be used to automate this process.</p>\r\n    <p>If manually migration pages, there will still be several properties you will want to set for each page, such as a more relevant system name, assigning it to a template, SEO and meta details, etc. and we’ll likely need to review the page content for any system tags or Liquid\r\n        that needs replacing. However, all in good time and we’ll take those actions in a later step. For now we just want to get the bulk of the setup in place.</p>\r\n    \r\n    <div class=\"tab-content faqsOpenCloseHolder\">\r\n    <div class=\"faqs-open-close \">\r\n        <a class=\"opener\" href=\"#\"><i class=\"fas fa-angle-right\"></i>Pages Documentation</a>\r\n        <div class=\"slide js-slide-hidden\">\r\n            {% component source: \"Documentation Post\", layout: \"Body Detail\", filterBy: \"id\", filterValue: \"2131\", limit: \"1\", type: \"module\" %}\r\n        </div>\r\n    </div>\r\n    </div>\r\n    \r\n    <h2 id=\"secReplicateMenus\" class=\"circle-wrap\"><div class=\"circle\">58</div>Replicate Menus & Menu Layouts</h2>\r\n    {% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secReplicateMenus\", parity: \"high\", effort: \"med\", time: \"med\", docs: \"high\", tool: \"high\" %}\r\n    <p>You can easily recreate your BC menus into your Treepl CMS instance via the admin ‘Content' > 'Menus’, and copy over and adjust your menu layouts.</p>\r\n    <p>Alternatively the <a href=\"https://www.bcappstore.com/apps/bc-to-treepl\" target=\"_blank\">BC to Treepl CMS  Migration App</a> can be used to automate this process.</p>\r\n    <p>If manually recreating your menus you can follow the documentation and tips below:</p>\r\n    \r\n    <div class=\"tab-content faqsOpenCloseHolder\">\r\n        <div class=\"faqs-open-close \">\r\n            <a class=\"opener\" href=\"#\"><i class=\"fas fa-angle-right\"></i>Menus Documentation</a>\r\n            <div class=\"slide js-slide-hidden\">\r\n                {% component source: \"Documentation Post\", layout: \"Body Detail\", filterBy: \"id\", filterValue: \"1966\", limit: \"1\", type: \"module\" %}\r\n            </div>\r\n        </div>\r\n    </div>\r\n    \r\n    <h3>BC Menu V2</h3>\r\n    <p>If using BC’s menu v2 method for your menus, upload your menu layouts from ‘ModuleTemplates / Menu / &lt;menu-name&gt;’ into the corresponding Treepl CMS menu layouts in ‘Content / MenuLayouts / &lt;menu_alias_name&gt;’</p>\r\n    <p>The corresponding layouts from BC to Treepl CMS are:</p>\r\n    <ul>\r\n        <li>“container.html” --&gt; “menu.layout”</li>\r\n        <li>“group.html” --&gt; “item.layout”</li>\r\n        <li>“childitem.html” --&gt; “sub_items.layout”</li>\r\n    </ul>\r\n    <p>Now, we’re finally going to get our hands dirty with some code.</p>\r\n    <p>We’ll need to convert the BC tags into the Treepl CMS way of doing things. Let’s reference the Menu documentation above while doing this.</p>\r\n    <p>Starting with the “menu.layout” file you'll want to weave your HTML markup into the Treepl CMS Liquid so that the Liquid logic renders the same markup you are referencing from BC.</p>\r\n    <p>Next, do the same with the “item.layout” file, weaving in the BC “group.html” markup.</p>\r\n    <p>Finally, the “sub_items.layout” file,</p>\r\n    <p>Repeat for each menu group you are using.</p>\r\n    <p>If you have multiple menus using the same layout group in BC, simply copy the same code you just set up into each menu layout files (menus don’t share layouts in Treepl CMS).</p>\r\n    \r\n    <h3>BC Menu V1 (legacy module)</h3>\r\n    <p>If using BC’s original/legacy menu method, we’ll need to reference the rendered source code for your menu in the browser.</p>\r\n    <p>Load one of your BC site pages that features the menu. View the page source (right click, 'View Source') and identify the complete section of menu elements including the BC JS references.</p>\r\n    <p>Copy the menu elements into your “menu.layout” file so we can start working on converting that code.</p>\r\n    <p>Back in the source view, for the two JS references BC outputs, right click on the source links and save those JS files to your BC site files in an appropriate directory and than upload those to Treepl CMS in the corresponding directory.</p>\r\n    <p>Back in your menu layout, we'll relink the JS references to point to the new location.</p>\r\n    <p>Work through recoding the menu HTML into the Treepl CMS menu layouts to complete the process.</p>\r\n    \r\n    \r\n    <h2 id=\"secSetupSecureZones\" class=\"circle-wrap\"><div class=\"circle\">59</div>Setup Secure Zones</h2>\r\n    {% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secSetupSecureZones\", parity: \"high\", effort: \"low\", time: \"low\", docs: \"high\", tool: \"high\" %}\r\n    <p>Recreating all Secure Zones from BC into Treepl CMS is a fairly straight forward process.</p>\r\n    <p>Alternatively the <a href=\"https://www.bcappstore.com/apps/bc-to-treepl\" target=\"_blank\">BC to Treepl CMS  Migration App</a> can be used to automate this process.</p>\r\n    <p>If manually recreating your Secure Zones, you can follow the steps below:</p>\r\n    <p>Go to ‘Content’ &gt; ‘Secure Zones’</p>\r\n    <p>Click ‘Add Secure Zone’ button.</p>\r\n    <p>Complete ‘Name’ and ‘Landing Page’ then “Next” to save and move to ‘Step 2: Secure Content’.</p>\r\n    <p>Pages will be ready for you to secure, however most other content we havn't migrated over yet so you'll need to revisit this section to secure all relevant items.</p>\r\n    <p>Click “Next” to save and move to ‘Step 3: Members’</p>\r\n    <p>Here you can manage the members subscribed to the secure zone.</p>\r\n    <p>For further documentation expand the box below:</p>\r\n    <div class=\"tab-content faqsOpenCloseHolder\">\r\n        <div class=\"faqs-open-close \">\r\n            <a class=\"opener\" href=\"#\"><i class=\"fas fa-angle-right\"></i>Secure Zones Documentation</a>\r\n            <div class=\"slide js-slide-hidden\">\r\n                {% component source: \"Documentation Post\", layout: \"Body Detail\", filterBy: \"id\", filterValue: \"2199\", limit: \"1\", type: \"module\" %}\r\n            </div>\r\n        </div>\r\n    </div>\r\n    \r\n    <h2 id=\"secSetupMailingListsMC\" class=\"circle-wrap\"><div class=\"circle\">60</div>Setup Mailing Lists (MailChimp)</h2>\r\n    {% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secSetupMailingListsMC\", parity: \"low\", effort: \"med\", time: \"low\", docs: \"high\", tool: \"low\" %}\r\n    <p>Before you can set up Mailing Lists in Treepl CMS you need to connect a MailChimp account using their provided API key.</p>\r\n    <p>Below are documentation for setting up the API connection and further inofrmation about adding Mailing Lists.</p>\r\n    \r\n    <div class=\"tab-content faqsOpenCloseHolder\">\r\n        <div class=\"faqs-open-close \">\r\n            <a class=\"opener\" href=\"#\"><i class=\"fas fa-angle-right\"></i>API Provider Documentation</a>\r\n            <div class=\"slide js-slide-hidden\">\r\n                {% component source: \"Documentation Post\", layout: \"Body Detail\", filterBy: \"id\", filterValue: \"2311\", limit: \"1\", type: \"module\" %}\r\n            </div>\r\n        </div>\r\n        <div class=\"faqs-open-close \">\r\n            <a class=\"opener\" href=\"#\"><i class=\"fas fa-angle-right\"></i>Mailing Lists Documentation</a>\r\n            <div class=\"slide js-slide-hidden\">\r\n                {% component source: \"Documentation Post\", layout: \"Body Detail\", filterBy: \"id\", filterValue: \"2310\", limit: \"1\", type: \"module\" %}\r\n            </div>\r\n        </div>\r\n    </div>\r\n    \r\n    <p>Currently, Email Campaigns would generally be managed in MailChimp for full functionality of the MailChimp service. However, basic Email Campaigns can be add via Treepl CMS and pushed to MailChimp.<br>\r\n    <em>More documentation coming soon on this.</em></p>\r\n    \r\n    <h2 id=\"secSetupSiteSearch\" class=\"circle-wrap\"><div class=\"circle\">61</div>Setup Site Search</h2>\r\n    {% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secSetupSiteSearch\", parity: \"med\", effort: \"low\", time: \"low\", docs: \"med\", tool: \"low\" %}\r\n    <p>You don’t need to set up any Site Search module in Treepl CMS. This functionality is ready to use simply by inserting the search form and component tag.</p>\r\n    <p>So there is nothing you need to do in this step.</p>\r\n    <p>Later in the migration we’ll need to replace any BC site search forms so we’ll reference back to this documentation:</p>\r\n    <div class=\"tab-content faqsOpenCloseHolder\">\r\n        <div class=\"faqs-open-close \">\r\n            <a class=\"opener\" href=\"#\"><i class=\"fas fa-angle-right\"></i>Site Search Documentation - COMING SOON...</a>\r\n            <div class=\"slide js-slide-hidden\">\r\n                {% component source: \"Documentation Post\", layout: \"Body Detail\", filterBy: \"id\", filterValue: \"2356\", limit: \"1\", type: \"module\" %}\r\n            </div>\r\n        </div>\r\n        <div class=\"faqs-open-close \">\r\n            <a class=\"opener\" href=\"#\"><i class=\"fas fa-angle-right\"></i>Site Search Component Documentation</a>\r\n            <div class=\"slide js-slide-hidden\">\r\n                {% component source: \"Documentation Post\", layout: \"Body Detail\", filterBy: \"id\", filterValue: \"1959\", limit: \"1\", type: \"module\" %}\r\n            </div>\r\n        </div>\r\n    </div>\r\n    \r\n    <h2 id=\"secReplicateURLRedirects\" class=\"circle-wrap\"><div class=\"circle\">62</div>Replicate Existing URL Redirects</h2>\r\n    {% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secReplicateURLRedirects\", parity: \"high\", effort: \"med\", time: \"med\", docs: \"high\", tool: \"high\" %}\r\n    <p>While you can import URL Redirects into Treepl CMS in bulk, BC doesn't have an export function available from their admin, so you’ll need to enter URL redirects manually. Alternatively the <a href=\"https://www.bcappstore.com/apps/bc-to-treepl\" target=\"_blank\">BC to Treepl CMS  Migration App</a> can be used to automate this process.</p>\r\n    <p>See below for more information on URL Redirects.</p>\r\n    <div class=\"tab-content faqsOpenCloseHolder\">\r\n        <div class=\"faqs-open-close \">\r\n            <a class=\"opener\" href=\"#\"><i class=\"fas fa-angle-right\"></i>URL Redirects Documentation</a>\r\n            <div class=\"slide js-slide-hidden\">\r\n                {% component source: \"Documentation Post\", layout: \"Body Detail\", filterBy: \"id\", filterValue: \"2210\", limit: \"1\", type: \"module\" %}\r\n            </div>\r\n        </div>\r\n    </div>\r\n    \r\n    <h2 id=\"secSetupAdminUserRoles\" class=\"circle-wrap\"><div class=\"circle\">63</div>Setup Admin User Roles</h2>\r\n    {% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secSetupAdminUserRoles\", parity: \"med\", effort: \"low\", time: \"low\", docs: \"med\", tool: \"low\" %}\r\n    <p>While we won’t be adding Admin Users just yet, we’ll still get the User Roles set up and in place ready to assign users to in a later step.</p>\r\n    <p>To set up Admin User Roles, go to ‘Settings’ &gt; ‘Admin User Roles’</p>\r\n    <p>Click ‘Add Admin Role’ button.</p>\r\n    <p>Complete a 'Name' for your Role and configure the permissions, turning off checkboxes to block users access to those items.</p>\r\n    <p class=\"notice-note\">Many permission items have nested items for further fine-grain control.</p>\r\n    \r\n    \r\n    \r\n    <h2 id=\"secSetupNotificationWorkflow\" class=\"circle-wrap\"><div class=\"circle\">64</div>Setup Email Notification Workflow/s</h2>\r\n    {% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secSetupNotificationWorkflow\", parity: \"med\", effort: \"low\", time: \"low\", docs: \"high\", tool: \"high\" %}\r\n    <p>We’ll set up the default Notification Workflow email (and additional ones if needed - make sure you’re site plan supports multiple Workflow Emails if you need more than one Workflow)</p>\r\n    <p>You can optionally, upload your BC workflow email layouts into your Treepl CMS instance via FTP into the ‘Content / SystemEmails’ directory. However, if you only have a few email layouts it may be better to set these up via the Admin as you'll need to configure other settings as well.</p>\r\n    <p>Alternatively the <a href=\"https://www.bcappstore.com/apps/bc-to-treepl\" target=\"_blank\">BC to Treepl CMS  Migration App</a> can be used to automate this process.</p>\r\n    <p>See below for documentation on Workflows.</p>\r\n    <div class=\"tab-content faqsOpenCloseHolder\">\r\n        <div class=\"faqs-open-close \">\r\n            <a class=\"opener\" href=\"#\"><i class=\"fas fa-angle-right\"></i>Workflows Documentation</a>\r\n            <div class=\"slide js-slide-hidden\">\r\n                {% component source: \"Documentation Post\", layout: \"Body Detail\", filterBy: \"id\", filterValue: \"2208\", limit: \"1\", type: \"module\" %}\r\n            </div>\r\n        </div>\r\n    </div>\r\n    \r\n    \r\n    \r\n    \r\n    <h2 id=\"secReplicateWebForms\" class=\"circle-wrap\"><div class=\"circle\">65</div>Replicate Web Forms</h2>\r\n    {% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secReplicateWebForms\", parity: \"high\", effort: \"low\", time: \"med\", docs: \"high\", tool: \"med\" %}\r\n    <p>You can create new web forms in the Treepl admin for each of your BC Web Forms and copy over and adjust your form layout/code.</p>\r\n    <p>Alternatively the <a href=\"https://www.bcappstore.com/apps/bc-to-treepl\" target=\"_blank\">BC to Treepl CMS  Migration App</a> can be used to automate this process.</p>\r\n    <p>See below for documentation on Forms.</p>\r\n    <div class=\"tab-content faqsOpenCloseHolder\">\r\n        <div class=\"faqs-open-close \">\r\n            <a class=\"opener\" href=\"#\"><i class=\"fas fa-angle-right\"></i>Forms Documentation</a>\r\n            <div class=\"slide js-slide-hidden\">\r\n                {% component source: \"Documentation Post\", layout: \"Body Detail\", filterBy: \"id\", filterValue: \"2041\", limit: \"1\", type: \"module\" %}\r\n            </div>\r\n        </div>\r\n    </div>\r\n    \r\n    <h2 id=\"secReplicateSystemPages\" class=\"circle-wrap\"><div class=\"circle\">66</div>Replicate System Pages</h2>\r\n    {% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secReplicateSystemPages\", parity: \"high\", effort: \"low\", time: \"low\", docs: \"high\", tool: \"high\" %}\r\n    <p>This process can be automated with the <a href=\"https://www.bcappstore.com/apps/bc-to-treepl\" target=\"_blank\">BC to Treepl CMS  Migration App</a>.</p>\r\n    <p>Or, if manually migrating system pages, locate your relevant BC System Pages either in your downloaded BC site files, or in the “Develop” tab of the BC Admin under ‘Layouts / SystemMessages’, or directly in the BC Admin under ‘Site Manager’ &gt; ‘System Pages.</p>\r\n    <p>You’ll need to copy over the HTML from these into the corresponding system page in Treepl CMS found in the Admin under ‘Settings / System Pages’</p>\r\n    <p>While you can upload system pages into Treepl CMS, you'd first need to rename the relevant BC files to match those of Treepl CMS in order to override them. However, this is not recommended as you'll lose the default layouts and Liquid markup required for those layouts.</p>\r\n    <p>For more information refer to the below documentation article.</p>\r\n    <div class=\"tab-content faqsOpenCloseHolder\">\r\n        <div class=\"faqs-open-close \">\r\n            <a class=\"opener\" href=\"#\"><i class=\"fas fa-angle-right\"></i>System Pages Documentation</a>\r\n            <div class=\"slide js-slide-hidden\">\r\n                {% component source: \"Documentation Post\", layout: \"Body Detail\", filterBy: \"id\", filterValue: \"2207\", limit: \"1\", type: \"module\" %}\r\n            </div>\r\n        </div>\r\n    </div>\r\n    <p>Review your HTML for any BC specific tags or modules which will need to be converted to Treepl CMS equivalents. Either making note of them to come back to once other items are set up, or replace them now if you can. For example, you may have a\r\n        site search form on your 404 Not Found page, or a secure zone login form on your 401 or 403 pages.</p>\r\n    \r\n    <h2 id=\"secReplicateSystemEmails\" class=\"circle-wrap\"><div class=\"circle\">67</div>Replicate System Emails</h2>\r\n    {% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secReplicateSystemEmails\", parity: \"high\", effort: \"low\", time: \"low\", docs: \"high\", tool: \"high\" %}\r\n    <p>This process can be automated with the <a href=\"https://www.bcappstore.com/apps/bc-to-treepl\" target=\"_blank\">BC to Treepl CMS  Migration App</a>.</p>\r\n    <p>Or, if manually migrating system emails, locate your relevant BC System Emails, either in your downloaded BC site files, or in the “Develop” tab of the BC Admin under ‘Layouts / OutboundEmails’, or directly in the BC Admin under ‘Site Manager’ &gt; ‘System Emails’.</p>\r\n    <p>You’ll need to copy over the HTML from these into the corresponding system emails in Treepl CMS found in the Admin under ‘Email Notifications / System Emails’</p>\r\n        <p>While you can upload system emails into Treepl CMS, you'd first need to rename the relevant BC files to match those of Treepl CMS in order to override them. However, this is not recommended as you'll lose the default layouts and Liquid markup required for those layouts.</p>\r\n    <p>Review your HTML for any BC specific tags or modules which will need to be converted to Treepl CMS equivalents. Be sure to reference the default tags already in the email layouts in Treepl CMS to identify which ones can replace your BC tags.</p>\r\n    <p>For more information refer to the below documentation article.</p>\r\n    <div class=\"tab-content faqsOpenCloseHolder\">\r\n        <div class=\"faqs-open-close \">\r\n            <a class=\"opener\" href=\"#\"><i class=\"fas fa-angle-right\"></i>System Emails Documentation</a>\r\n            <div class=\"slide js-slide-hidden\">\r\n                {% component source: \"Documentation Post\", layout: \"Body Detail\", filterBy: \"id\", filterValue: \"2205\", limit: \"1\", type: \"module\" %}\r\n            </div>\r\n        </div>\r\n    </div>\r\n    \r\n    <h2 id=\"secReplicateCategories\" class=\"circle-wrap\"><div class=\"circle\">68</div>Replicate Categories</h2>\r\n    {% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secReplicateCategories\", parity: \"high\", effort: \"low\", time: \"low\", docs: \"high\", tool: \"high\" %}\r\n    <p>You can manually recreate any Categories set up in your BC site into Treepl CMS under ‘Settings / Categories’</p>\r\n    <p>Alternatively the <a href=\"https://www.bcappstore.com/apps/bc-to-treepl\" target=\"_blank\">BC to Treepl CMS  Migration App</a> can be used to automate this process.</p>\r\n    <p>For more information about Categories see the below documentation article.</p>\r\n    <div class=\"tab-content faqsOpenCloseHolder\">\r\n        <div class=\"faqs-open-close \">\r\n            <a class=\"opener\" href=\"#\"><i class=\"fas fa-angle-right\"></i>Categories Documentation</a>\r\n            <div class=\"slide js-slide-hidden\">\r\n                {% component source: \"Documentation Post\", layout: \"Body Detail\", filterBy: \"id\", filterValue: \"2308\", limit: \"1\", type: \"module\" %}\r\n            </div>\r\n        </div>\r\n    </div>\r\n    \r\n    <h2 id=\"secContactsAndCases\" class=\"circle-wrap\"><div class=\"circle\">69</div>Contacts & Cases</h2>\r\n    {% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secContactsAndCases\", parity: \"med\", effort: \"med\", time: \"med\", docs: \"low\", tool: \"high\" %}\r\n    <p>The <a href=\"https://www.bcappstore.com/apps/bc-to-treepl\" target=\"_blank\">BC to Treepl CMS  Migration App</a> can be used to migrate both contact records and cases.</p>\r\n    <p>Alternatively, you can import contact records directly into the Treepl CMS Contacts module. However, Cases can not yet be imported in this way and would need to be added manaully if not using the Migration App.</p>\r\n    <p>Also note that Treepl CMS Contact fields are limited, so it's still advisable to export BC CRM data for archive/backup purposes if advanced CRM fields exist and later import that data when the advanced CRM is available.</p>\r\n\r\n    \r\n    <h2 id=\"secReplicateContentHolders\" class=\"circle-wrap\"><div class=\"circle\">70</div>Replicate Content Holders</h2>\r\n    {% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secReplicateContentHolders\", parity: \"high\", effort: \"low\", time: \"low\", docs: \"med\", tool: \"high\" %}\r\n    <p>The <a href=\"https://www.bcappstore.com/apps/bc-to-treepl\" target=\"_blank\">BC to Treepl CMS  Migration App</a> can be used to automate this process.</p>\r\n    <p>Alternatively, if manually migrating, locate your relevant BC Content Holders, either in your downloaded BC site files, or in the “Develop” tab of the BC Admin under ‘System / ContentHolders, or directly in the BC Admin under ‘Site Manager’ &gt; ‘Content Holders’.</p>\r\n    <p>Upload your BC Content Holders into your Treepl CMS instance via FTP into the ‘Content / Snippets’ directory.</p>\r\n    <p>If not using FTP, create and copy over the HTML from these into the Treepl CMS admin area under ‘Content / Snippets’.</p>\r\n    <p>Review your HTML for any BC specific tags or modules which will need to be converted to Treepl CMS equivalents. Either making note of them to come back to once other items are set up, or replace them now if you can.</p>\r\n    \r\n    \r\n    <div class=\"tab-content faqsOpenCloseHolder\">\r\n        <div class=\"faqs-open-close \">\r\n            <a class=\"opener\" href=\"#\"><i class=\"fas fa-angle-right\"></i>Snippets Documentation</a>\r\n            <div class=\"slide js-slide-hidden\">\r\n                {% component source: \"Documentation Post\", layout: \"Body Detail\", filterBy: \"id\", filterValue: \"2133\", limit: \"1\", type: \"module\" %}\r\n            </div>\r\n        </div>\r\n        <div class=\"faqs-open-close \">\r\n            <a class=\"opener\" href=\"#\"><i class=\"fas fa-angle-right\"></i>Snippets Component Documentation</a>\r\n            <div class=\"slide js-slide-hidden\">\r\n                {% component source: \"Documentation Post\", layout: \"Body Detail\", filterBy: \"id\", filterValue: \"1950\", limit: \"1\", type: \"module\" %}\r\n            </div>\r\n        </div>\r\n    </div>\r\n    \r\n    \r\n    \r\n    \r\n    <h2 id=\"secBuiltInModules\" class=\"circle-wrap\"><div class=\"circle\">71</div>Built-In Modules:</h2>\r\n    <h3 id=\"secBlogs\">Blogs</h3>\r\n    {% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secBuiltInModulesBlogs\", parity: \"high\", effort: \"med\", time: \"med\", docs: \"med\", tool: \"high\" %}\r\n    <p>BC Blogs can be replicated in Treepl CMS either in the built-in Blog module or by using Custom Modules to configure your own blog structure.</p>\r\n    <p>The <a href=\"https://www.bcappstore.com/apps/bc-to-treepl\" target=\"_blank\">BC to Treepl CMS Migration App</a> can be used to automate this process, including Release Dates, Tags, Categories, Authors and SEO data.</p>\r\n    <p>If manually transferring your blogs, for a method of extracting the BC Blog data see this helpful Treepl CMS Forum post (includes code snippets and demo video):</p>\r\n    <a class=\"btn small\" href=\"https://forum.treepl.co/t/bc-blog-export-helper/61\" target=\"_blank\">BC Blog Export Helper</a>\r\n    <p>You can also upload your BC module layouts into your Treepl CMS instance via FTP into the ‘Content / ModuleLayouts / &lt;Blog&gt; &amp; &lt;BlogPost&gt;’ directories.</p>\r\n    <p>For more information about the Blog module see the documentation articles.</p>\r\n    <div class=\"tab-content faqsOpenCloseHolder\">\r\n        <div class=\"faqs-open-close \">\r\n            <a class=\"opener\" href=\"#\"><i class=\"fas fa-angle-right\"></i>Blog module Documentation</a>\r\n            <div class=\"slide js-slide-hidden\">\r\n                {% component source: \"Documentation Post\", layout: \"Body Detail\", filterBy: \"id\", filterValue: \"2135\", limit: \"1\", type: \"module\" %}\r\n            </div>\r\n        </div>\r\n        <div class=\"faqs-open-close \">\r\n            <a class=\"opener\" href=\"#\"><i class=\"fas fa-angle-right\"></i>Blog component Documentation</a>\r\n            <div class=\"slide js-slide-hidden\">\r\n                {% component source: \"Documentation Post\", layout: \"Body Detail\", filterBy: \"id\", filterValue: \"2141\", limit: \"1\", type: \"module\" %}\r\n            </div>\r\n        </div>\r\n        <div class=\"faqs-open-close \">\r\n            <a class=\"opener\" href=\"#\"><i class=\"fas fa-angle-right\"></i>Blog Post component Documentation</a>\r\n            <div class=\"slide js-slide-hidden\">\r\n                {% component source: \"Documentation Post\", layout: \"Body Detail\", filterBy: \"id\", filterValue: \"2142\", limit: \"1\", type: \"module\" %}\r\n            </div>\r\n        </div>\r\n    </div>\r\n    \r\n    <h3 id=\"secEvents\">Events</h3>\r\n    {% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secBuiltInModulesEvents\", parity: \"high\", effort: \"high\", time: \"med\", docs: \"low\", tool: \"high\" %}\r\n    <p>Treepl CMS Events are similar to BC Events and can be set up quite easily.</p>\r\n    <p>The <a href=\"https://www.bcappstore.com/apps/bc-to-treepl\" target=\"_blank\">BC to Treepl CMS  Migration App</a> can be used to automate Event migrations as well as transfer Event booking data from the CRM into Treepl CMS CRM.</p>\r\n    <p>For manual migrations, getting the data out of BC is a problem... although, you could likely use a similar approach to the Blog Export Helper above.</p>\r\n    <p>You can also upload your BC module layouts into your Treepl CMS instance via FTP into the ‘Content / ModuleLayouts / &lt;Event&gt; &amp; &lt;EventGroup&gt;’ directories.</p>\r\n    \r\n    <h3 id=\"secPhotoGalleries\">Photo Galleries</h3>\r\n    {% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secBuiltInModulesGalleries\", parity: \"med\", effort: \"med\", time: \"med\", docs: \"med\", tool: \"high\" %}\r\n    <p>Galleries in Treepl CMS work more like WebApps, so each image is an item within the parent module. This brings greater control in the long run, however migrating images and data to this new format can make migration a little more involved.</p>\r\n    <p>The <a href=\"https://www.bcappstore.com/apps/bc-to-treepl\" target=\"_blank\">BC to Treepl CMS Migration App</a> can be used to automate this process.</p>\r\n    <p>If manually transferring your galleries, see this very helpful method of extracting the BC data in a ready format for Treepl CMS posted in the Treepl CMS Forum:</p>\r\n    <a class=\"btn small\" href=\"https://forum.treepl.co/t/bc-photo-gallery-exporter/107\" target=\"_blank\">BC Photo Galleries Export Helper</a>\r\n    <p>For more information about the Galleries/Sliders module see the documentation articles.</p>\r\n    <div class=\"tab-content faqsOpenCloseHolder\">\r\n        <div class=\"faqs-open-close \">\r\n            <a class=\"opener\" href=\"#\"><i class=\"fas fa-angle-right\"></i>Gallery/Slider Group module</a>\r\n            <div class=\"slide js-slide-hidden\">\r\n                {% component source: \"Documentation Post\", layout: \"Body Detail\", filterBy: \"id\", filterValue: \"2140\", limit: \"1\", type: \"module\" %}\r\n            </div>\r\n        </div>\r\n    </div>\r\n    <div class=\"tab-content faqsOpenCloseHolder\">\r\n        <div class=\"faqs-open-close \">\r\n            <a class=\"opener\" href=\"#\"><i class=\"fas fa-angle-right\"></i>Gallery/Slider Item module</a>\r\n            <div class=\"slide js-slide-hidden\">\r\n                {% component source: \"Documentation Post\", layout: \"Body Detail\", filterBy: \"id\", filterValue: \"2143\", limit: \"1\", type: \"module\" %}\r\n            </div>\r\n        </div>\r\n    </div>\r\n    \r\n    <h3 id=\"secNews\">News</h3>\r\n    {% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secBuiltInModulesNews\", parity: \"med\", effort: \"low\", time: \"low\", docs: \"med\", tool: \"high\" %}\r\n    <p>There is no “News” module specifically in Treepl CMS, however using the Blog would likely be a more than suitable alternative (see migrating Blogs section above).</p>\r\n    <p>The <a href=\"https://www.bcappstore.com/apps/bc-to-treepl\" target=\"_blank\">BC to Treepl CMS Migration App</a> can be used to automate this process and a separate Blog module will be created for News items.</p>\r\n    <p>If migrating manually, since BC doesn't provide export functionality for extracting the BC News data, you could likely use a similar approach to the Blog Export Helper above.</p>\r\n    <p>You can also upload your BC module layouts into your Treepl CMS instance via FTP into the ‘Content / ModuleLayouts / &lt;Your Custom Module OR Blog&gt;’ directory.</p>\r\n    \r\n    \r\n    <h3 id=\"secMediaDownloads\">Media Downloads</h3>\r\n    {% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secBuiltInModulesMedia\", parity: \"low\", effort: \"med\", time: \"med\", docs: \"low\", tool: \"high\" %}\r\n    <p>There is no direct “Media Downloads” module in Treepl CMS, however setting up a Custom Module along with the ‘<a href=\"https://docs.treepl.co/documentation_group/extras/force-download-handler\" target=\"_blank\">Force Download Handler</a>’ option would see very similar results with greater flexibility.<br>\r\n    (see migrating WebApps section in a later step).</p>\r\n    <p>You can manually migrate Media Downloads or alternatively the <a href=\"https://www.bcappstore.com/apps/bc-to-treepl\" target=\"_blank\">BC to Treepl CMS  Migration App</a> can be used to automate this process.</p>\r\n    <p>For manual migrations, a very helpful method of extracting the BC data in a ready format for Treepl CMS, see this helpful Treepl CMS Forum post:</p>\r\n    <a class=\"btn small\" href=\"https://forum.treepl.co/t/bc-media-downloads-exporter/235\" target=\"_blank\">BC Media Downloads Export Helper</a>\r\n    \r\n    \r\n    <h3 id=\"secFAQs\">FAQs</h3>\r\n    {% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secBuiltInModulesFAQs\", parity: \"high\", effort: \"med\", time: \"med\", docs: \"low\", tool: \"high\" %}\r\n    <p>FAQs in Treepl CMS work more like WebApps, so each FAQ is an item within the parent module (Question Group). This brings greater control in the long run, however migrating FAQs and data to this new format may make migration a little more involved.</p>\r\n    <p>You can manually migrate FAQs or alternatively the <a href=\"https://www.bcappstore.com/apps/bc-to-treepl\" target=\"_blank\">BC to Treepl CMS  Migration App</a> can be used to automate this process.</p>\r\n    <p>For manual migrations, you could likely use a similar approach to the Blog Export Helper above.</p>\r\n    <p>You can also upload your BC module layouts into your Treepl CMS instance via FTP into the ‘Content / ModuleLayouts / &lt;FAQGropu&gt; &amp; &lt;FAQQuestion&gt;’ directories.</p>\r\n    <p>For more information about the FAQs module see the documentation articles.</p>\r\n    <div class=\"tab-content faqGroupOpenCloseHolder\">\r\n        <div class=\"faqs-open-close \">\r\n            <a class=\"opener\" href=\"#\"><i class=\"fas fa-angle-right\"></i>FAQ Group module</a>\r\n            <div class=\"slide js-slide-hidden\">\r\n                {% component source: \"Documentation Post\", layout: \"Body Detail\", filterBy: \"id\", filterValue: \"2144\", limit: \"1\", type: \"module\" %}\r\n            </div>\r\n        </div>\r\n    </div>\r\n    <div class=\"tab-content faqItemOpenCloseHolder\">\r\n        <div class=\"faqs-open-close \">\r\n            <a class=\"opener\" href=\"#\"><i class=\"fas fa-angle-right\"></i>FAQ Item module</a>\r\n            <div class=\"slide js-slide-hidden\">\r\n                {% component source: \"Documentation Post\", layout: \"Body Detail\", filterBy: \"id\", filterValue: \"2145\", limit: \"1\", type: \"module\" %}\r\n            </div>\r\n        </div>\r\n    </div>\r\n    \r\n    \r\n    <h3 id=\"secAdRotators\">Ad Rotators</h3>\r\n    {% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secBuiltInModulesRotators\", parity: \"med\", effort: \"med\", time: \"med\", docs: \"med\", tool: \"high\" %}\r\n    <p>The Banner module in Treepl CMS was built to replace the BC Ad Rotators and is set up much like the other modules in Treepl CMS and is therefore flexible for you to configure the layouts and behaviour as needed.</p>\r\n    <p>The <a href=\"https://www.bcappstore.com/apps/bc-to-treepl\" target=\"_blank\">BC to Treepl CMS Migration App</a> can be used to automate this process.</p>\r\n    <p>If migrating manually, since BC doesn't provide export functionality for extracting the BC Ad Rotator data, you could likely use a similar approach to the Blog Export Helper above.</p>\r\n    <p>For more information about the Banners module see the documentation articles.</p>\r\n    <div class=\"tab-content faqsOpenCloseHolder\">\r\n        <div class=\"faqs-open-close \">\r\n            <a class=\"opener\" href=\"#\"><i class=\"fas fa-angle-right\"></i>Banner Documentation</a>\r\n            <div class=\"slide js-slide-hidden\">\r\n                {% component source: \"Documentation Post\", layout: \"Body Detail\", filterBy: \"id\", filterValue: \"2136\", limit: \"1\", type: \"module\" %}\r\n            </div>\r\n        </div>\r\n    </div>\r\n    <div class=\"tab-content faqsOpenCloseHolder\">\r\n        <div class=\"faqs-open-close \">\r\n            <a class=\"opener\" href=\"#\"><i class=\"fas fa-angle-right\"></i>Banner Group module</a>\r\n            <div class=\"slide js-slide-hidden\">\r\n                {% component source: \"Documentation Post\", layout: \"Body Detail\", filterBy: \"id\", filterValue: \"2146\", limit: \"1\", type: \"module\" %}\r\n            </div>\r\n        </div>\r\n    </div>\r\n    <div class=\"tab-content faqsOpenCloseHolder\">\r\n        <div class=\"faqs-open-close \">\r\n            <a class=\"opener\" href=\"#\"><i class=\"fas fa-angle-right\"></i>Banner Item module</a>\r\n            <div class=\"slide js-slide-hidden\">\r\n                {% component source: \"Documentation Post\", layout: \"Body Detail\", filterBy: \"id\", filterValue: \"2147\", limit: \"1\", type: \"module\" %}\r\n            </div>\r\n        </div>\r\n    </div>\r\n    \r\n    <h2 id=\"secCustomModulesWebApps\" class=\"circle-wrap\"><div class=\"circle\">72</div>Custom Modules (WebApps)</h2>\r\n    {% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secCustomModulesWebApps\", parity: \"high\", effort: \"low\", time: \"med\", docs: \"high\", tool: \"high\" %}\r\n    <p>Generally, WebApps will transfer over quite easily as Custom Modules in Treepl CMS were built around an improved “WebApp” model. Therefore they have a very similar concept with how items are added and list and detail layouts are constructed. Combined with the fact that WebApp data can be easily exported from BC and imported into Treepl CMS, WebApps will likely be an easier job migrating then the other built-in BC modules.</p>\r\n    <p>If you have very complex WebApps there may be more time required to study the different methods with rendering data and converting complex Liquid markup, but the data migration should be relatively straight forward via export/import.</p>\r\n    <p>You can further simplify this process with the <a href=\"https://www.bcappstore.com/apps/bc-to-treepl\" target=\"_blank\">BC to Treepl CMS  Migration App</a>, which can migration not only the item data but the WebApp layouts, settings and set up all custom fields including Datasource fields (converting the reference for Treepl CMS use).</p>\r\n    <p>If manually migrating WebApps, you'll will first need to set up your Custom Module with all it's correspondign properties and settings in order to import those matching fields from BC.</p>\r\n    <p>You can also upload your BC module layouts into your Treepl CMS instance via FTP into the ‘Content / ModuleLayouts / &lt;Your Custom Module&gt;’ directory.</p>\r\n    <p>Refer to the Custom Module documentation for more details:</p>\r\n    <a class=\"btn small\" href=\"/documentation_group/content-modules/custom-modules-aka-webapps\" target=\"_blank\">Custom Modules (AKA WebApps)</a>\r\n    \r\n    \r\n    \r\n    <h2 id=\"secEcommerce\" class=\"circle-wrap\"><div class=\"circle\">73</div>eCommerce</h2>\r\n    <p>To get up and running with eCommerce in Treepl CMS, see the getting started article below.</p>\r\n    <div class=\"tab-content faqsOpenCloseHolder\">\r\n        <div class=\"faqs-open-close \">\r\n            <a class=\"opener\" href=\"#\"><i class=\"fas fa-angle-right\"></i>Getting Started with eCommerce</a>\r\n            <div class=\"slide js-slide-hidden\">\r\n                {% component source: \"Documentation Post\", layout: \"Body Detail\", filterBy: \"id\", filterValue: \"2522\", limit: \"1\", type: \"module\" %}\r\n            </div>\r\n        </div>\r\n    </div>\r\n    <h3 id=\"secPaymentGateways\">Payment Gateways</h3>\r\n    {% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secPaymentGateways\", parity: \"med\", effort: \"low\", time: \"low\", docs: \"low\", tool: \"na\" %}\r\n    <p>Since the Payment Gateway settings contain sensitive details you will need to manually set up your Payment Gateway in your new Treepl CMS site by going to ‘Settings’ > ‘Payment’.</p>\r\n\r\n<h3 id=\"secTaxCodes\">Tax Codes</h3>\r\n{% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secTaxCodes\", parity: \"high\", effort: \"low\", time: \"low\", docs: \"low\", tool: \"high\" %}\r\n<p>Tax Codes follow the same structure in Treepl CMS so you can simply enter all the same codes under ‘eCommerce’ > ‘Taxes’.</p>\r\n<p>If you are implementing all or many of the US State taxes you’ll be able to add these automatically when you click “Add New Tax” and select ‘United States’ as the assigned country.</p>\r\n<p>There is no manual export option from BC, nor is there an import option in Treepl CMS for this.</p>\r\n<p>You can also automatically migrate Tax Codes via the <a href=\"https://www.bcappstore.com/apps/bc-to-treepl\" target=\"_blank\">BC to Treepl CMS Migration App</a>.</p>\r\n<h3 id=\"secShippingOptions\">Shipping Options</h3>\r\n{% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secShippingOptions\", parity: \"med\", effort: \"low\", time: \"low\", docs: \"low\", tool: \"high\" %}\r\n<p>Shipping Codes follow a very similar format in Treepl CMS so you can simply enter all the same codes under ‘eCommerce’ > Shipping options.</p>\r\n<p>This is for user-defined shipping rules at least. Integration of shipping providers is still pending release.</p>\r\n<p>There is no manual export option from BC, nor is there an import option in Treepl CMS for this. </p>\r\n<p>You can also automatically migrate user-defined Shipping Options via the <a href=\"https://www.bcappstore.com/apps/bc-to-treepl\" target=\"_blank\">BC to Treepl CMS Migration App</a>.</p>\r\n<h3 id=\"secCatalogs\">Catalogs</h3>\r\n{% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secCatalogs\", parity: \"high\", effort: \"low\", time: \"low\", docs: \"low\", tool: \"high\" %}\r\n<p>You can import your Catalogues into Treepl CMS if you have a spreadsheet available, although there is no export feature in BC.</p>\r\n<p>Creating Catalogs manually can be done much the same way as adding any other module item in Treepl CMS via ‘eCommerce’ > ‘Catalogs’ and you will have similar options available.</p>\r\n<p>Options from BC that are not currently available are; Price visibility, XML feed, and Browse Panel settings.</p> \r\n<p>You can also automatically migrate Catalogs via the <a href=\"https://www.bcappstore.com/apps/bc-to-treepl\" target=\"_blank\">BC to Treepl CMS Migration App</a>.</p>\r\n<h3 id=\"secProducts\">Products</h3>\r\n{% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secProducts\", parity: \"high\", effort: \"low\", time: \"low\", docs: \"low\", tool: \"high\" %}\r\n<p>You can import your Products into Treepl CMS with an export from BC, or if you have a spreadsheet available (after formatting to match Treepl CMS import file).</p>\r\n<p>Creating Products manually can be done much the same way as adding any other module item in Treepl CMS via ‘eCommerce’ > ‘Products’ and you will have similar options available.</p>\r\n<p>Additionally, you can add a variety of custom fields to customise your products module (for example, adding additional image fields would be how you’d add the “Poplets” feature from BC).</p>\r\n<p>Options from BC that are not currently available are; Downloadable Product, Capture Details, Commission Payable.</p>\r\n<p>You can also automatically migrate Products via the <a href=\"https://www.bcappstore.com/apps/bc-to-treepl\" target=\"_blank\">BC to Treepl CMS Migration App</a>.</p>\r\n<h3 id=\"secDiscountCodes\">Discount Codes</h3>\r\n{% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secDiscountCodes\", parity: \"high\", effort: \"low\", time: \"low\", docs: \"low\", tool: \"high\" %}\r\n<p>Discount Codes follow the same structure in Treepl CMS so you can simply enter all the same codes under ‘eCommerce’ > ‘Discount codes’.</p>\r\n<p>There is no manual export option from BC, nor is there an import option in Treepl CMS for this.</p>\r\n<p>You can also automatically migrate Discount Codes via the <a href=\"https://www.bcappstore.com/apps/bc-to-treepl\" target=\"_blank\">BC to Treepl CMS Migration App</a>.</p>\r\n<h3 id=\"secGiftVouchers\">Gift Vouchers</h3>\r\n{% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secGiftVouchers\", parity: \"high\", effort: \"low\", time: \"low\", docs: \"low\", tool: \"high\" %}\r\n<p>Gift Vouchers follow the same structure in Treepl CMS so you can simply enter all the same vouchers under ‘eCommerce’ > ‘Gift vouchers’.</p>\r\n<p>There is no manual export option from BC, nor is there an import option in Treepl CMS for this.</p>\r\n<p>You can also automatically migrate Gift Vouchers via the <a href=\"https://www.bcappstore.com/apps/bc-to-treepl\" target=\"_blank\">BC to Treepl CMS Migration App</a>.</p>\r\n\r\n\r\n<p class=\"notice-note\">eCommerce features not yet available include; cart lifetime setting, XML product feed, digital/downloadable products, integrated shipping providers.</p>\r\n    \r\n    \r\n    \r\n    \r\n    \r\n    \r\n    \r\n    \r\n    \r\n    \r\n    \r\n    \r\n    \r\n    \r\n    <h2 id=\"secRevisitSiteTemplates\" class=\"circle-wrap\"><div class=\"circle\">74</div>Revisit Site Templates</h2>\r\n    {% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secRevisitSiteTemplates\", parity: \"high\", effort: \"med\", time: \"med\", docs: \"med\", tool: \"high\" %}\r\n    <p>Now let's review the Site Templates markup and replace BC modules and Liquid with Treepl CMS methods.</p>\r\n    <p>The <a href=\"https://www.bcappstore.com/apps/bc-to-treepl\" target=\"_blank\">BC to Treepl CMS  Migration App</a> can be used to automate much of this process. However, it's recommended to check through the markup for any exceptions.</p>\r\n    <p>Some common examples are:</p>\r\n    <ul>\r\n        <li>Dynamic HEAD elements</li>\r\n        <li>pagecontent tag</li>\r\n        <li>menus</li>\r\n        <li>content holder</li>\r\n        <li>includes</li>\r\n        <li>modules: BC's module syntax (old and new) converted to Treepl CMS 'Component' syntax</li>\r\n    </ul>\r\n    <p>Review the relevant Component types and all their properties and syntax:</p>\r\n    <a class=\"btn small\" href=\"/documentation_group/component-types/\" target=\"_blank\">All Component Types</a>\r\n    \r\n    \r\n    <h2 id=\"secRevisitSitePages\" class=\"circle-wrap\"><div class=\"circle\">75</div>Revisit Site Pages</h2>\r\n    {% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secRevisitSitePages\", parity: \"high\", effort: \"med\", time: \"med\", docs: \"med\", tool: \"high\" %}\r\n    <p>Like above, let's review the Site Pages markup and replace BC modules and Liquid with Treepl CMS methods.</p>\r\n    <p>Usign the <a href=\"https://www.bcappstore.com/apps/bc-to-treepl\" target=\"_blank\">BC to Treepl CMS  Migration App</a> can automate many BC to Treepl CMS Liquid and tag conversions.</p>\r\n    <p>For manual migrations, some common examples are:</p>\r\n    <ul>\r\n        <li>menus</li>\r\n        <li>content holder</li>\r\n        <li>includes</li>\r\n        <li>modules: BC's module syntax (old and new) converted to Treepl CMS 'Component' syntax</li>\r\n    </ul>\r\n    <p>Review the relevant Component types and all their properties and syntax:</p>\r\n    <a class=\"btn small\" href=\"/documentation_group/component-types/\" target=\"_blank\">All Component Types</a>\r\n    \r\n    \r\n    <h2 id=\"secSetupSEOandSitemap\" class=\"circle-wrap\"><div class=\"circle\">76</div>Setup SEO & Sitemap</h2>\r\n    {% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secSetupSEOandSitemap\", parity: \"med\", effort: \"low\", time: \"low\", docs: \"med\", tool: \"low\" %}\r\n    <p>Add primary domain, language, country, and configure sitemap automation (and possibly enable all items for search engine visibility).</p>\r\n    <p>For more information about SEO settings see the documentation article.</p>\r\n    <div class=\"tab-content faqsOpenCloseHolder\">\r\n        <div class=\"faqs-open-close \">\r\n            <a class=\"opener\" href=\"#\"><i class=\"fas fa-angle-right\"></i>SEO Documentation</a>\r\n            <div class=\"slide js-slide-hidden\">\r\n                {% component source: \"Documentation Post\", layout: \"Body Detail\", filterBy: \"id\", filterValue: \"2212\", limit: \"1\", type: \"module\" %}\r\n            </div>\r\n        </div>\r\n    </div>\r\n    <p>On initial setup, it's recommended to manually generate the sitemap to review the items listed - ensuring all your relevant site items are configured for search engine visibility.</p>\r\n    \r\n    \r\n    <h2 id=\"secChecksAndTroubleshooting\" class=\"circle-wrap\"><div class=\"circle\">77</div>Checks and Troubleshooting</h2>\r\n    {% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secChecksAndTroubleshooting\", parity: \"na\", effort: \"med\", time: \"med\", docs: \"med\", tool: \"na\" %}\r\n\r\n    <p>Run back through the steps above as a quick checklist to review all your site items.</p>\r\n    <p>Comparing your new Treepl CMS site front-end alongside the BC site to check for consistancy.</p>\r\n    <p>Note any URL differences due to page/directory naming or restructuring and ensure URL Redirect are setup for these.</p>\r\n</div>\r\n",
  "ItemTags": [
  "Migrations"
],
  "Author_Name": "",
  "Author_Url": "",
  "Author": "",
  "SEOTitle": "",
  "MetaTitle": "",
  "MetaDescription": "",
  "ShowPageForSearchEngine": true,
  "CanonicalLink": "",
  "EnableAMP": false,
  "AMPContent": "",
  "CodeEditor": true,
  "ExternalId": 0,
  "SocialMetaTags": "",
  "OpenGraphProperties": "",
  "DisableForSiteSearch": false,
  "SeoPriority": "",
  "CreatedByMemberId": 0,
  "ItemCategories": "",
  "ItemCategoryIdList": "",
  "SKUCode": "",
  "SiteSearchKeywords": "",
  "Active": true,
  "IgnoreUpdates": false,
  "UpdateNotes": "",
  "UpdatesLog": "<ul>\n    <li>Added note about new BC .zip Archive functionality</li>\n    <li>Updated BC to Treepl CMS Migration App compatibility - as per v9.0.4 (Catalogs, Discount codes, Gift vouchers, Products, Shipping options, Tax codes)</li>\n</ul>",
  "ExternalResources": "",
  "AdditionalRelatedArticle_Name": "",
  "AdditionalRelatedArticle_Url": "",
  "AdditionalRelatedArticle": "",
  "AdditionalRelatedArticle2_Name": "",
  "AdditionalRelatedArticle2_Url": "",
  "AdditionalRelatedArticle2": "",
  "Authors": "2418",
  "Module_ID": 1870,
  "Module_Alias": "DocumentationPost",
  "ParentName": "BC Migration Guides",
  "ParentUrl": "/bc-migration-guides",
  "TemplateName": "Docs Template",
  "IsHome": false
}
}
}

Accessing the Data

This data is accessible in two main ways:

1. Using Liquid in the specified Layout via the this object.

{{this['url']}}

2. Directly on the Page or Template via a Liquid Collection if collectionVariable was added to the Component tag.

An example using collectionVariable with value "allBlogs" to list all "Blog" across the site:

Here we suppress any Layout from rendering by setting layout: "" as an empty attribute.

{% component type: "module", source: "Blog", layout: "", collectionVariable: "allBlogs" %}

Looping through the collection to render all the item URLs in a list, giving us:

  • /demo-custom-blog
  • /demo-custom-blog-2
  • /demo-html-blog

The code:

<ul>
    {% for i in allBlogs.items %}
        <li>{{i['url']}}</li>
    {% endfor %}
</ul>

Accessing a specific item within the collection. In this case the second item (zero based index), which in our example would render the value /demo-custom-blog-2

{{allBlogs.items[1]['url']}}

Counter

Along with the data output above, there is also a special liquid tag available {{counter}} which increments for each item. This tag is only available within Layouts when object: "item" is used in the Component tag.

Blog Post component Documentation

View full article

This module component fetches data relating to Blog Posts.

{% component type: "module", source: "Blog Post", layout: "List" %}

Parameters and Options

Parameter Values Required Description
type module (default)
module_of_member

This is the name of the entity that needs to be used for the component retrieving function.

module is the standard retrieving function to retrieve all items.

module_of_member retrieves only those items "Added by" the currently logged in user (identified by the CreatedByMemberId property in the module items Liquid data).

The "Added by" System Property will only be available where the modules settings have "Allow Add New Items" turned on under the "Site User Permissions".

source Blog Post (default) The entity/alias name or ID that the data is to be sourced from.
layout List (default)
<Your Layout name>

The layout name you want to use for rendering the component. The layout name is referenced from the available Layouts of the source specified.

While this parameter is required to render your Layout markup, if the parameter is blank, has an incorrectly referenced Layout, or is removed altogether then the component will still output the modules item data to a Liquid collection which can be accessed via the collectionVariable parameter.

filterBy id
parentid
name
weighting
url
urlslug
releasedate
expirydate
LastUpdatedDate
Author
ItemCategories
ItemTags
<CustomPropertyName>
...and any other top level properties available for the module

The name of the property to filter by. If empty or not present, no filtering will be used.

Remove spaces from custom property names here.

filterValue <your value>
Your specific value to filter by, eg: name, id, number, date, etc.
Liquid variables can be used here also. If present but no value set, no items will be returned.
sortBy id
parentid
name
weighting
url
urlslug
releasedate
expirydate
LastUpdatedDate
Author
ItemCategories
ItemTags
<CustomPropertyName>
...and any other top level properties available for the module

The name of the property to sort by. If empty or not present, alpha/numeric sorting will be used.

Remove spaces from custom property names here.

sortOrder ASC (default)
DESC

ASC sorts the items in ascending order while DESC sorts in descending order (based on alpha/numeric or date sorting).
If empty or not present, alpha/numeric sorting will be used.
random false (default)
true

Displays the available items in a random order.

If used in conjunction with sortBy, that sorting criteria will be applied to the randomly retrieved results. So, if retrieving all, or most, of the items they will not appear to be random since they will then be sorted back into a logical order. To overcome this, set the sortBy parameter to 'enabled' (or another unused property) as this will not provide any viable sorting criteria* and the items will not be sorted from their initial random order.
* Unless there are weighted items, which will always override the random option.

limit 10 (default)
<number>

The maximum number of items returned. If displayPagination is enabled this determines the maximum number of items per page.
displayPagination false (default)
true

Displays pagination if there are more items available than the limit set.
emptyMessage <Your custom message>
Custom content that is rendered if no items are returned by the Component. The default is no content.
Liquid variables are supported here, although Liquid logic tags and HTML are not.

If using Liquid variables with filters added, be sure to change any double quotes to single quotes. For eg:
emptyMessage: “{{ myVariable | prepend: 'Error: ' }}”

To use HTML in your empty message, first capture it using a Liquid capture, then insert the capture variable into the emptyMessage parameter.

object item (default)
collection

Determines the method for Liquid rendering.
item returns each item iteratively, one after another, for output (generally, output to a container element with no need for looping through the data).
collection returns all items as one collection for output (your container element and looping logic would be handled in the Components Layout).
collectionVariable <yourLiquidVariableName>
Assigns the data to a Liquid collection enabling further access to the data on the Page or Template using Liquid.

Your collectionVariable value must only contain English letters, numbers or underscores. Spaces or special characters are not supported.

isSearchResult false (default)
true

Allows search parameters in the URL to override the components output. Therefore, this parameter can be used to output module specific search results from a submitted search form.

Likewise, Tag, Category, and Archive components can be used in conjunction with this parameter for filtering the module's output.

URL search parameters will override any corresponding parameters in the component. If no search parameters are present in the URL, isSearchResult will be ignored.

Any value other than true, (including an empty value), will disable the search functionality and the component will output its regular data.

searchScope eg:
{'prop_ParentId':'1234', 'prop_ReleaseDate_Min':'2018-07-01', 'prop_ReleaseDate_Max':'2018-07-31', 'prop_KeyWords':'Your Keywords', 'prop_ItemTags':['tag1','tag2'], 'page':'2'}

Allows a search on the module without search parameters needed in the URL. Instead, search parameters are added to the value of this parameter. Therefore, this parameter can be used to output module specific search results from hard-coded (or Liquid) values without the use of a search form.

Added search parameters will override any corresponding parameters otherwise configured on the component. If no search parameters are present, searchScope will be ignored.

This value supports Liquid and can therefore be constructed with Liquid data/variables.

<customParameter> <your custom value>
You can add your own additional parameters (name/value pairs) to the Component tag. These will be passed to the Components Layout (and the collectionVariable if used) for use via Liquid.

Your <customParameter> name must only contain English letters, numbers or underscores. Spaces or special characters are not supported.

You can use HTML as the value here, just be sure to change any double quotes in your HTML to single quotes.

Liquid Output

The below example has 3 sample items but is otherwise the default structure you will get from this Component.

{
  "Pagination": {
  "CurrentPage": 1,
  "ItemsPerPage": 3,
  "NumberOfPages": 3,
  "TotalItemsCount": 7
},
  "Items": [
  {
    "Id": 2280,
    "Url": "/demo-html-blog/demo-html-post",
    "ParentId": 2279,
    "LastUpdatedDate": "2019-02-28T20:44:52",
    "Name": "DEMO HTML Post",
    "UrlSlug": "demo-html-post",
    "Enabled": true,
    "ReleaseDate": "2018-11-25T16:55:52.8064367",
    "ExpiryDate": "2099-12-10T16:55:52.8064367",
    "Weighting": 0,
    "Description": "<p>Orci phasellus egestas tellus rutrum tellus pellentesque. Sed enim ut sem viverra aliquet. Sed euismod nisi porta lorem mollis aliquam ut porttitor. Eget duis at tellus at urna condimentum mattis pellentesque. A condimentum vitae sapien pellentesque habitant morbi tristique senectus et. Viverra aliquet eget sit amet tellus cras adipiscing enim.</p><p><span class=\"fr-emoticon fr-deletable fr-emoticon-img\" style=\"background: url(https://cdnjs.cloudflare.com/ajax/libs/emojione/2.0.1/assets/svg/1f60e.svg);\">&nbsp;</span>&nbsp;</p>\r\n",
    "ItemTags": null,
    "Author_Name": "DEMO Author One",
    "Author_Url": "/_author/demo-author-one",
    "Author": 2274,
    "SEOTitle": "",
    "MetaTitle": "",
    "MetaDescription": "",
    "ShowPageForSearchEngine": true,
    "CanonicalLink": "",
    "EnableAMP": false,
    "AMPContent": "",
    "CodeEditor": true,
    "ExternalId": 0,
    "SocialMetaTags": "",
    "OpenGraphProperties": "",
    "DisableForSiteSearch": false,
    "SeoPriority": "",
    "CreatedByMemberId": 0,
    "ItemCategories": null,
    "ItemCategoryIdList": null,
    "SKUCode": "",
    "SiteSearchKeywords": "",
    "Image": null,
    "Module_ID": 1534,
    "Module_Alias": "BlogPost"
  },
  {
    "Id": 2287,
    "Url": "/demo-custom-blog/sample-post-one",
    "ParentId": 2286,
    "LastUpdatedDate": "2020-04-30T10:14:34",
    "Name": "Sample Post One",
    "UrlSlug": "sample-post-one",
    "Enabled": true,
    "ReleaseDate": "2019-04-14T18:00:00",
    "ExpiryDate": "2099-12-10T18:00:00",
    "Weighting": 0,
    "Description": "<p>Orci phasellus egestas tellus rutrum tellus pellentesque. Sed enim ut sem viverra aliquet. Sed euismod nisi porta lorem mollis aliquam ut porttitor. Eget duis at tellus at urna condimentum mattis pellentesque. A condimentum vitae sapien pellentesque habitant morbi tristique senectus et. Viverra aliquet eget sit amet tellus cras adipiscing enim.</p>\r\n<p>Non tellus orci ac auctor augue mauris. In hendrerit gravida rutrum quisque non. Morbi tempus iaculis urna id volutpat lacus laoreet. Nulla aliquet enim tortor at. Erat velit scelerisque in dictum non. Neque gravida in fermentum et sollicitudin ac orci phasellus. Luctus venenatis lectus magna fringilla urna porttitor. Lorem sed risus ultricies tristique nulla aliquet. Non consectetur a erat nam.</p>\r\n<p>Fames ac turpis egestas maecenas. Nibh sit amet commodo nulla facilisi. Id eu nisl nunc mi ipsum faucibus vitae aliquet. Quis viverra nibh cras pulvinar. Enim nulla aliquet porttitor lacus luctus accumsan tortor posuere ac. Orci eu lobortis elementum nibh tellus molestie nunc. Ut sem nulla pharetra diam sit amet. Massa vitae tortor condimentum lacinia quis vel eros.</p>\r\n<p>Sodales ut eu sem integer vitae justo eget. At risus viverra adipiscing at in tellus integer. Ac odio tempor orci dapibus ultrices. Diam ut venenatis tellus in metus vulputate eu scelerisque felis. Commodo ullamcorper a lacus vestibulum.</p>",
    "ItemTags": [
      "demo",
      "blog posts",
      "sample"
    ],
    "Author_Name": "DEMO Author One",
    "Author_Url": "/_author/demo-author-one",
    "Author": 2274,
    "SEOTitle": "",
    "MetaTitle": "",
    "MetaDescription": "",
    "ShowPageForSearchEngine": true,
    "CanonicalLink": "",
    "EnableAMP": false,
    "AMPContent": "",
    "CodeEditor": true,
    "ExternalId": 0,
    "SocialMetaTags": "",
    "OpenGraphProperties": "",
    "DisableForSiteSearch": false,
    "SeoPriority": "",
    "CreatedByMemberId": 0,
    "ItemCategories": [
      "Blog: News & Events"
    ],
    "ItemCategoryIdList": [
      "1"
    ],
    "SKUCode": "",
    "SiteSearchKeywords": "",
    "Image": "/images/community-img-01.jpg",
    "Module_ID": 1534,
    "Module_Alias": "BlogPost"
  },
  {
    "Id": 2319,
    "Url": "/demo-custom-blog/sample-post-three",
    "ParentId": 2286,
    "LastUpdatedDate": "2020-02-23T23:29:31",
    "Name": "Sample Post Three",
    "UrlSlug": "sample-post-three",
    "Enabled": true,
    "ReleaseDate": "2019-01-18T18:00:00",
    "ExpiryDate": "2099-12-10T18:00:00",
    "Weighting": 0,
    "Description": "<p>Orci phasellus egestas tellus rutrum tellus pellentesque. Sed enim ut sem viverra aliquet. Sed euismod nisi porta lorem mollis aliquam ut porttitor. Eget duis at tellus at urna condimentum mattis pellentesque. A condimentum vitae sapien pellentesque habitant morbi tristique senectus et. Viverra aliquet eget sit amet tellus cras adipiscing enim.</p><p>Non tellus orci ac auctor augue mauris. In hendrerit gravida rutrum quisque non. Morbi tempus iaculis urna id volutpat lacus laoreet. Nulla aliquet enim tortor at. Erat velit scelerisque in dictum non. Neque gravida in fermentum et sollicitudin ac orci phasellus. Luctus venenatis lectus magna fringilla urna porttitor. Lorem sed risus ultricies tristique nulla aliquet. Non consectetur a erat nam.</p><p>Fames ac turpis egestas maecenas. Nibh sit amet commodo nulla facilisi. Id eu nisl nunc mi ipsum faucibus vitae aliquet. Quis viverra nibh cras pulvinar. Enim nulla aliquet porttitor lacus luctus accumsan tortor posuere ac. Orci eu lobortis elementum nibh tellus molestie nunc. Ut sem nulla pharetra diam sit amet. Massa vitae tortor condimentum lacinia quis vel eros.</p><p>Sodales ut eu sem integer vitae justo eget. At risus viverra adipiscing at in tellus integer. Ac odio tempor orci dapibus ultrices. Diam ut venenatis tellus in metus vulputate eu scelerisque felis. Commodo ullamcorper a lacus vestibulum.</p><p>Orci phasellus egestas tellus rutrum tellus pellentesque. Sed enim ut sem viverra aliquet. Sed euismod nisi porta lorem mollis aliquam ut porttitor. Eget duis at tellus at urna condimentum mattis pellentesque. A condimentum vitae sapien pellentesque habitant morbi tristique senectus et. Viverra aliquet eget sit amet tellus cras adipiscing enim.</p><p>Non tellus orci ac auctor augue mauris. In hendrerit gravida rutrum quisque non. Morbi tempus iaculis urna id volutpat lacus laoreet. Nulla aliquet enim tortor at. Erat velit scelerisque in dictum non. Neque gravida in fermentum et sollicitudin ac orci phasellus. Luctus venenatis lectus magna fringilla urna porttitor. Lorem sed risus ultricies tristique nulla aliquet. Non consectetur a erat nam.</p><p>Fames ac turpis egestas maecenas. Nibh sit amet commodo nulla facilisi. Id eu nisl nunc mi ipsum faucibus vitae aliquet. Quis viverra nibh cras pulvinar. Enim nulla aliquet porttitor lacus luctus accumsan tortor posuere ac. Orci eu lobortis elementum nibh tellus molestie nunc. Ut sem nulla pharetra diam sit amet. Massa vitae tortor condimentum lacinia quis vel eros.</p><p>Sodales ut eu sem integer vitae justo eget. At risus viverra adipiscing at in tellus integer. Ac odio tempor orci dapibus ultrices. Diam ut venenatis tellus in metus vulputate eu scelerisque felis. Commodo ullamcorper a lacus vestibulum.</p>",
    "ItemTags": null,
    "Author_Name": null,
    "Author_Url": null,
    "Author": "",
    "SEOTitle": "",
    "MetaTitle": "",
    "MetaDescription": "",
    "ShowPageForSearchEngine": true,
    "CanonicalLink": "",
    "EnableAMP": false,
    "AMPContent": "",
    "CodeEditor": false,
    "ExternalId": 0,
    "SocialMetaTags": "",
    "OpenGraphProperties": {
      "title": "",
      "type": "",
      "url": "",
      "locale": "",
      "image": ""
    },
    "DisableForSiteSearch": false,
    "SeoPriority": "",
    "CreatedByMemberId": 0,
    "ItemCategories": null,
    "ItemCategoryIdList": null,
    "SKUCode": "",
    "SiteSearchKeywords": "",
    "Image": "/images/community-img-01.jpg",
    "Module_ID": 1534,
    "Module_Alias": "BlogPost"
  }
],
  "Params": {},
  "Parent": {
  "Id": 2142,
  "Url": "/component-types/module-blog-post",
  "ParentId": 2127,
  "LastUpdatedDate": "2020-05-20T00:49:19",
  "Name": "module (Blog Post)",
  "UrlSlug": "module-blog-post",
  "Enabled": true,
  "ReleaseDate": "2018-09-05T00:00:00",
  "ExpiryDate": "2099-12-09T00:00:00",
  "Weighting": 969,
  "Description": "\r\n\r\n<p>This module component fetches data relating to Blog Posts.</p>\r\n\r\n{% component type: \"snippet\", alias: \"code_block_processor\", data: \"{{data}}\", lang: \"liquid\" %}\r\n\r\n\r\n{% component type: \"snippet\", alias: \"section_parameters\" %}\r\n\r\n{% component type: \"snippet\", alias: \"param_table_head\" %}\r\n    {% component type: \"snippet\", alias: \"param_type\", required: \"true\", values: \"module <em>(default)</em>,module_of_member\" %}\r\n    {% component type: \"snippet\", alias: \"param_source\", required: \"true\", values: \"Blog Post <em>(default)</em>\" %}\r\n    {% component type: \"snippet\", alias: \"param_layout\", required: \"true\", values: \"List <em>(default)</em><br>&lt;Your Layout name&gt;\" %}\r\n    {% component type: \"snippet\", alias: \"param_filterby\" %}\r\n    {% component type: \"snippet\", alias: \"param_filtervalue\" %}\r\n    {% component type: \"snippet\", alias: \"param_sortby\" %}\r\n    {% component type: \"snippet\", alias: \"param_sortorder\" %}\r\n    {% component type: \"snippet\", alias: \"param_random\" %}\r\n    {% component type: \"snippet\", alias: \"param_limit\" %}\r\n    {% component type: \"snippet\", alias: \"param_displaypagination\" %}\r\n    {% component type: \"snippet\", alias: \"param_emptymessage\" %}\r\n    {% component type: \"snippet\", alias: \"param_object\" %}\r\n    {% component type: \"snippet\", alias: \"param_collectionvariable\" %}\r\n    {% component type: \"snippet\", alias: \"param_issearchresult\" %}\r\n    {% component type: \"snippet\", alias: \"param_searchscope\" %}\r\n    {% component type: \"snippet\", alias: \"param_customparameter\" %}\r\n{% component type: \"snippet\", alias: \"param_table_foot\" %}\r\n\r\n\r\n{% component type: \"snippet\", alias: \"section_output\" %}\r\n{% component source: \"Blog Post\", layout: "", type: \"module\", limit: \"3\", collectionVariable: \"allPosts\" %}\r\n<p>The below example has 3 sample <code>items</code> but is otherwise the default structure you will get from this Component.</p>\r\n{% component type: \"snippet\", alias: \"code_block_processor\", data: \"{{allPosts}}\", lang: \"json\" %}\r\n\r\n{% component type: \"snippet\", alias: \"section_accessing_data\" %}\r\n\r\n<p>This data is accessible in two main ways:</p>\r\n\r\n<p>1. Using Liquid in the specified Layout via the <code>this</code> object.</p>\r\n\r\n{% component type: \"snippet\", alias: \"code_block_processor\", data: \"{{data}}\", lang: \"liquid\" %}\r\n\r\n<p>2. Directly on the Page or Template via a Liquid Collection if <code>collectionVariable</code> was added to the Component tag.</p>\r\n\r\n<p>An example using <code>collectionVariable</code> with value \"allPosts\" to list all \"Blog Posts\" across the site:</p>\r\n<p class=\"notice-note\">Here we suppress any Layout from rendering by setting <code>layout: \"\"</code> as an empty attribute.</p>\r\n\r\n{% component type: \"snippet\", alias: \"code_block_processor\", data: \"{{data}}\", lang: \"liquid\" %}\r\n\r\n<p><em>Looping through the collection to render all the item URLs in a list, giving us:</em></p>\r\n\r\n<ul>\r\n    \r\n        <li>/demo-html-blog/demo-html-post</li>\r\n    \r\n        <li>/demo-custom-blog/sample-post-one</li>\r\n    \r\n        <li>/demo-custom-blog/sample-post-three</li>\r\n    \r\n</ul>\r\n<br>\r\n<p><em>The code:</em></p>\r\n\r\n{% component type: \"snippet\", alias: \"code_block_processor\", data: \"{{data}}\", lang: \"liquid\" %}\r\n\r\n<p><em>Accessing a specific item within the collection. In this case the third item (zero based index), which in our example would render the value <code>/demo-custom-blog/sample-post-three</code></em></p>\r\n\r\n{% component type: \"snippet\", alias: \"code_block_processor\", data: \"{{data}}\", lang: \"liquid\" %}\r\n\r\n<h2 id=\"secListFilteredPosts\">List Posts from a specific Blog</h2>\r\n<p>If you have more than one Blog on your site the above examples will list Posts from all Blogs as one single collection. However, typically you'd want to list all Posts from only the Blog they belong to (their \"parent\" Blog).</p>\r\n<p>To do this we add the <code>filterBy</code> and <code>filterValue</code> attributes to the Component tag.</p>\r\n<p>Typically, you would be listing Blog specific Posts on your Blog detail page/index page. In which case you would be editing the 'General Blog Layout' to insert your Component tag, which would look like this:</p>\r\n\r\n{% component type: \"snippet\", alias: \"code_block_processor\", data: \"{{data}}\", lang: \"liquid\" %}\r\n\r\n<p>As we are within the Blog's detail Layout (which represents the 'parent' Blog) we can reference its ID for the filter value using <code>{{this['id']}}</code> and instruct the Component tag to filter the Posts only by their parent (<code>filterBy: \"parentID\"</code>) - giving us only the relevant Posts for the current Blog.</p>\r\n<p>You may however, want to render a list of Posts on a standard page or within another modules layout,  where the Post's parent ID (the Blog it belongs to) is not readily available to us in the Liquid scope. In this case you would need to manually hardcode the desired parent Blog's ID into the component tag in place of the above Liquid generated ID (<code>filterValue: \"1234\"</code>).</p>\r\n<p class=\"notice-tip\">To obtain the Blog's ID from the admin, go to that Blog's list view (where you can see all of the Posts) and note the number in the URL address bar shown after the <code>parentID=</code> parameter.</p>\r\n\r\n{% component type: \"snippet\", alias: \"section_counter\" %}\r\n",
  "ItemTags": [
  "Blogs"
],
  "Author_Name": "",
  "Author_Url": "",
  "Author": "",
  "SEOTitle": "",
  "MetaTitle": "",
  "MetaDescription": "",
  "ShowPageForSearchEngine": true,
  "CanonicalLink": "",
  "EnableAMP": false,
  "AMPContent": "",
  "CodeEditor": true,
  "ExternalId": 0,
  "SocialMetaTags": "",
  "OpenGraphProperties": "",
  "DisableForSiteSearch": false,
  "SeoPriority": "",
  "CreatedByMemberId": 0,
  "ItemCategories": "",
  "ItemCategoryIdList": "",
  "SKUCode": "",
  "SiteSearchKeywords": "",
  "Active": true,
  "IgnoreUpdates": false,
  "UpdateNotes": "'module_of_member' parameter details added.",
  "UpdatesLog": "",
  "ExternalResources": "<ul><li><a href=\"/demo-cs/all-posts\">Demo Site All Posts</a></li><li><a href=\"/demo-html-blog\">Demo Site Blog</a></li></ul>",
  "AdditionalRelatedArticle_Name": "",
  "AdditionalRelatedArticle_Url": "",
  "AdditionalRelatedArticle": "",
  "AdditionalRelatedArticle2_Name": "",
  "AdditionalRelatedArticle2_Url": "",
  "AdditionalRelatedArticle2": "",
  "Authors": "2418",
  "Module_ID": 1870,
  "Module_Alias": "DocumentationPost",
  "Pagination": {
  "CurrentPage": 1,
  "ItemsPerPage": 1,
  "NumberOfPages": 1,
  "TotalItemsCount": 1
},
  "Params": {},
  "Parent": {
  "Id": 2359,
  "Url": "/bc-migration-guides/ultimate-migration-guide-step-by-step",
  "ParentId": 2355,
  "LastUpdatedDate": "2020-09-09T19:27:22",
  "Name": "Ultimate Migration Guide (Step by Step)",
  "UrlSlug": "ultimate-migration-guide-step-by-step",
  "Enabled": true,
  "ReleaseDate": "2019-02-17T00:00:00",
  "ExpiryDate": "2099-11-30T00:00:00",
  "Weighting": 800,
  "Description": "<div class=\"migration-guide\">\r\n    <div style=\"display:none;\">78</div>\r\n    <p>So you’ve decided to move your site across to Treepl CMS. Good choice.</p>\r\n    <p>And you’ve decided to do it yourself. Good for you! You’re probably going to be doing this quite a few times so let’s make it fun…</p>\r\n    <p>Set aside a good chunk of uninterrupted time, crank up your favourite tunes and grab a strong drink. It’s migration time.</p>\r\n    <p class=\"notice-note\">The below sections are ordered to try and minimise the amount of back and forth when creating the various components of a site.If a section doesn’t apply to your site, feel free to skip right over it.</p>\r\n    <p class=\"notice-note\">Migration tools are in development that will progressively make the below steps easier. These sections will be updated as those tools are released.</p>\r\n    <p class=\"notice-tip\">The BC to Treepl CMS Migration App now converts BC Liquid tags, ie: <code>{module_…}</code> and <code>{tag_…}</code> to Treepl CMS Liquid tags! For more info on this, view the Forum discussion <a href=\"https://forum.treepl.co/t/attention-to-bc-to-treepl-app-users/497\" target=\"_blank\">here</a>.</p>\r\n    <h2 id=\"secBCSiteFTPDownload\" class=\"circle-wrap\"><div class=\"circle\">79</div>Download the BC Site via FTP</h2>\r\n    {% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secBCSiteFTPDownload\", parity: \"high\", effort: \"low\", time: \"low\", docs: \"high\", tool: \"high\" %}\r\n    \r\n    <p>Download all files available via FTP from your BC site, if for no other reason than to just have a backup. However, these files can be referenced in the following steps as well.</p>\r\n    <p>You can also automatically migrate all files in the BC file system directly to your Treepl CMS site via the <a href=\"https://www.bcappstore.com/apps/bc-to-treepl\" target=\"_blank\">BC to Treepl CMS  Migration App</a>.</p>\r\n    <p>There is also now the ability to download a .zip archive of your BC site, including data from the following modules:</p>\r\n    <ul>\r\n    \t<li>Pages</li>\r\n        <li>Page Templates</li>\r\n        <li>Module Layouts</li>\r\n        <li>Static files</li>\r\n        <li>Apps</li>\r\n        <li>Content Holders</li>\r\n        <li>System Pages</li>\r\n        <li>Email Templates</li>\r\n        <li>Web Apps</li>\r\n    </ul>\r\n    <p><b>Further Resources:</b></p>\r\n    <a class=\"btn small\" href=\"https://docs.worldsecuresystems.com/user-manual/site-design/bc-and-dreamweaver/connect-to-your-site-using-dreamweaver\" target=\"_blank\">BC FTP connection details</a>\r\n    <a class=\"btn small\" href=\"https://docs.worldsecuresystems.com/Partners/downloading-your-website#Downloadingyoursitearchive\" target=\"_blank\">BC .zip archive</a>\r\n    \r\n    <h2 id=\"secBCSiteDeepClean\" class=\"circle-wrap\"><div class=\"circle\">80</div>Deep-Clean the BC Site (Optional)</h2>\r\n    {% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secBCSiteDeepClean\", parity: \"na\", effort: \"med\", time: \"med\", docs: \"na\", tool: \"na\" %}\r\n    <p>This step is optional, but you may want to take the opportunity to clear out the BC site of old pages, templates, files, etc. Particularly if it’s an old site, there can be a lot of junk floating around. And this can just get in your way during migration and could cause unnecessary work. However, be very careful not to remove assets that may still be in use somewhere (hence the backup in the previous step).</p>\r\n    <p>Once you’ve cleaned up, repeat the FTP download step to collect a new, clean, set of files.</p>\r\n    \r\n    <h2 id=\"secTreeplCMSInstance\" class=\"circle-wrap\"><div class=\"circle\">81</div>Setup Treepl CMS Site Instance</h2>\r\n    {% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secTreeplCMSInstance\", parity: \"high\", effort: \"low\", time: \"low\", docs: \"high\", tool: \"na\" %}\r\n    <p>So you can start work with the Treepl CMS platform you'll need to set up a Trial Site. Log into your Treepl Portal (portal.treepl.co) and click the \"Create New Site\" button.</p>\r\n    <div class=\"tab-content faqsOpenCloseHolder\">\r\n    <div class=\"faqs-open-close \">\r\n        <a class=\"opener\" href=\"#\"><i class=\"fas fa-angle-right\"></i>Trial Site Documentation</a>\r\n        <div class=\"slide js-slide-hidden\">\r\n            {% component source: \"Documentation Post\", layout: \"Body Detail\", filterBy: \"id\", filterValue: \"2151\", limit: \"1\", type: \"module\" %}\r\n        </div>\r\n    </div>\r\n    </div>\r\n    \r\n    <h2 id=\"secHostedEmailTransfer\" class=\"circle-wrap\"><div class=\"circle\">82</div>Start BC Hosted Email Transfer Process (If Applicable)</h2>\r\n    {% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secHostedEmailTransfer\", parity: \"na\", effort: \"low\", time: \"med\", docs: \"high\", tool: \"low\" %}\r\n    <p>If your BC site has BC hosted emails, they can be transferred directly to Treepl CMS after following the below steps.</p>\r\n    <div class=\"tab-content faqsOpenCloseHolder\">\r\n    <div class=\"faqs-open-close \">\r\n        <a class=\"opener\" href=\"#\"><i class=\"fas fa-angle-right\"></i>Transfer of BC Hosted Email Accounts</a>\r\n        <div class=\"slide js-slide-hidden\">\r\n            {% component source: \"Documentation Post\", layout: \"Body Detail\", filterBy: \"id\", filterValue: \"2185\", limit: \"1\", type: \"module\" %}\r\n        </div>\r\n    </div>\r\n    </div>\r\n    \r\n    <h2 id=\"secUploadSiteAssets\" class=\"circle-wrap\"><div class=\"circle\">83</div>Upload Site Assets</h2>\r\n    {% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secUploadSiteAssets\", parity: \"high\", effort: \"low\", time: \"low\", docs: \"high\", tool: \"high\" %}\r\n    <p>Now we'll want to connect to our new Treepl CMS instance via FTP so we can upload some of our BC assets.</p>\r\n    <p>If working manually, we'll probably only want to upload assets relating to the front-end site, such as images, CSS, JS, documents, etc. We don't want to move over pages, templates or other layout files just yet.</p>\r\n    <p>Below are instructions for getting connected via FTP client.</p>\r\n    <div class=\"tab-content faqsOpenCloseHolder\">\r\n        <div class=\"faqs-open-close \">\r\n            <a class=\"opener\" href=\"#\"><i class=\"fas fa-angle-right\"></i>FTP Access Documentation</a>\r\n            <div class=\"slide js-slide-hidden\">\r\n                {% component source: \"Documentation Post\", layout: \"Body Detail\", filterBy: \"id\", filterValue: \"1936\", limit: \"1\", type: \"module\" %}\r\n            </div>\r\n        </div>\r\n    </div>\r\n    <p>Alternatively, you can automatically migrate all files in the BC file system directly to your Treepl CMS site via the <a href=\"https://www.bcappstore.com/apps/bc-to-treepl\" target=\"_blank\">BC to Treepl CMS  Migration App</a>.</p>\r\n    \r\n    <h2 id=\"secSetupPlaceholderTemplates\" class=\"circle-wrap\"><div class=\"circle\">84</div>Upload or Setup Placeholder Templates</h2>\r\n    {% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secSetupPlaceholderTemplates\", parity: \"high\", effort: \"low\", time: \"low\", docs: \"med\", tool: \"high\" %}\r\n    <p>You can manually upload your BC page templates into your Treepl CMS instance via FTP into the ‘Content / ContentTemplates’ directory.</p>\r\n    <p>Alternatively the <a href=\"https://www.bcappstore.com/apps/bc-to-treepl\" target=\"_blank\">BC to Treepl CMS  Migration App</a> can be used to automate this process.</p>\r\n    <p>If manually migrating templates, don’t worry about editing the template code/markup at this stage. We just want to get them loaded in Treepl CMS so we can reference it in the following steps. We’ll work on the template code later.</p>\r\n    \r\n    <p>If not using FTP, to manually create a content template, go to 'Content' &gt; 'Content Templates'.</p>\r\n    <p>Click ‘Add New Template’ button.</p>\r\n    <p>Just complete ‘Name’ and choose whether it's the default template. Leave the content as is for now.</p>\r\n    <p>Repeat this for all required templates.</p>\r\n    \r\n    <div class=\"tab-content faqsOpenCloseHolder\">\r\n    <div class=\"faqs-open-close \">\r\n        <a class=\"opener\" href=\"#\"><i class=\"fas fa-angle-right\"></i>Content Templates Documentation</a>\r\n        <div class=\"slide js-slide-hidden\">\r\n            {% component source: \"Documentation Post\", layout: \"Body Detail\", filterBy: \"id\", filterValue: \"2132\", limit: \"1\", type: \"module\" %}\r\n        </div>\r\n    </div>\r\n    </div>\r\n    \r\n    <h2 id=\"secSetupSitePages\" class=\"circle-wrap\"><div class=\"circle\">85</div>Upload or Setup Site Pages</h2>\r\n    {% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secSetupSitePages\", parity: \"high\", effort: \"low\", time: \"low\", docs: \"med\", tool: \"high\" %}\r\n    <p>Upload your BC pages into your Treepl CMS instance via FTP into the ‘Content / Pages’ directory.</p>\r\n    <p>Alternatively the <a href=\"https://www.bcappstore.com/apps/bc-to-treepl\" target=\"_blank\">BC to Treepl CMS  Migration App</a> can be used to automate this process.</p>\r\n    <p>If manually migration pages, there will still be several properties you will want to set for each page, such as a more relevant system name, assigning it to a template, SEO and meta details, etc. and we’ll likely need to review the page content for any system tags or Liquid\r\n        that needs replacing. However, all in good time and we’ll take those actions in a later step. For now we just want to get the bulk of the setup in place.</p>\r\n    \r\n    <div class=\"tab-content faqsOpenCloseHolder\">\r\n    <div class=\"faqs-open-close \">\r\n        <a class=\"opener\" href=\"#\"><i class=\"fas fa-angle-right\"></i>Pages Documentation</a>\r\n        <div class=\"slide js-slide-hidden\">\r\n            {% component source: \"Documentation Post\", layout: \"Body Detail\", filterBy: \"id\", filterValue: \"2131\", limit: \"1\", type: \"module\" %}\r\n        </div>\r\n    </div>\r\n    </div>\r\n    \r\n    <h2 id=\"secReplicateMenus\" class=\"circle-wrap\"><div class=\"circle\">86</div>Replicate Menus & Menu Layouts</h2>\r\n    {% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secReplicateMenus\", parity: \"high\", effort: \"med\", time: \"med\", docs: \"high\", tool: \"high\" %}\r\n    <p>You can easily recreate your BC menus into your Treepl CMS instance via the admin ‘Content' > 'Menus’, and copy over and adjust your menu layouts.</p>\r\n    <p>Alternatively the <a href=\"https://www.bcappstore.com/apps/bc-to-treepl\" target=\"_blank\">BC to Treepl CMS  Migration App</a> can be used to automate this process.</p>\r\n    <p>If manually recreating your menus you can follow the documentation and tips below:</p>\r\n    \r\n    <div class=\"tab-content faqsOpenCloseHolder\">\r\n        <div class=\"faqs-open-close \">\r\n            <a class=\"opener\" href=\"#\"><i class=\"fas fa-angle-right\"></i>Menus Documentation</a>\r\n            <div class=\"slide js-slide-hidden\">\r\n                {% component source: \"Documentation Post\", layout: \"Body Detail\", filterBy: \"id\", filterValue: \"1966\", limit: \"1\", type: \"module\" %}\r\n            </div>\r\n        </div>\r\n    </div>\r\n    \r\n    <h3>BC Menu V2</h3>\r\n    <p>If using BC’s menu v2 method for your menus, upload your menu layouts from ‘ModuleTemplates / Menu / &lt;menu-name&gt;’ into the corresponding Treepl CMS menu layouts in ‘Content / MenuLayouts / &lt;menu_alias_name&gt;’</p>\r\n    <p>The corresponding layouts from BC to Treepl CMS are:</p>\r\n    <ul>\r\n        <li>“container.html” --&gt; “menu.layout”</li>\r\n        <li>“group.html” --&gt; “item.layout”</li>\r\n        <li>“childitem.html” --&gt; “sub_items.layout”</li>\r\n    </ul>\r\n    <p>Now, we’re finally going to get our hands dirty with some code.</p>\r\n    <p>We’ll need to convert the BC tags into the Treepl CMS way of doing things. Let’s reference the Menu documentation above while doing this.</p>\r\n    <p>Starting with the “menu.layout” file you'll want to weave your HTML markup into the Treepl CMS Liquid so that the Liquid logic renders the same markup you are referencing from BC.</p>\r\n    <p>Next, do the same with the “item.layout” file, weaving in the BC “group.html” markup.</p>\r\n    <p>Finally, the “sub_items.layout” file,</p>\r\n    <p>Repeat for each menu group you are using.</p>\r\n    <p>If you have multiple menus using the same layout group in BC, simply copy the same code you just set up into each menu layout files (menus don’t share layouts in Treepl CMS).</p>\r\n    \r\n    <h3>BC Menu V1 (legacy module)</h3>\r\n    <p>If using BC’s original/legacy menu method, we’ll need to reference the rendered source code for your menu in the browser.</p>\r\n    <p>Load one of your BC site pages that features the menu. View the page source (right click, 'View Source') and identify the complete section of menu elements including the BC JS references.</p>\r\n    <p>Copy the menu elements into your “menu.layout” file so we can start working on converting that code.</p>\r\n    <p>Back in the source view, for the two JS references BC outputs, right click on the source links and save those JS files to your BC site files in an appropriate directory and than upload those to Treepl CMS in the corresponding directory.</p>\r\n    <p>Back in your menu layout, we'll relink the JS references to point to the new location.</p>\r\n    <p>Work through recoding the menu HTML into the Treepl CMS menu layouts to complete the process.</p>\r\n    \r\n    \r\n    <h2 id=\"secSetupSecureZones\" class=\"circle-wrap\"><div class=\"circle\">87</div>Setup Secure Zones</h2>\r\n    {% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secSetupSecureZones\", parity: \"high\", effort: \"low\", time: \"low\", docs: \"high\", tool: \"high\" %}\r\n    <p>Recreating all Secure Zones from BC into Treepl CMS is a fairly straight forward process.</p>\r\n    <p>Alternatively the <a href=\"https://www.bcappstore.com/apps/bc-to-treepl\" target=\"_blank\">BC to Treepl CMS  Migration App</a> can be used to automate this process.</p>\r\n    <p>If manually recreating your Secure Zones, you can follow the steps below:</p>\r\n    <p>Go to ‘Content’ &gt; ‘Secure Zones’</p>\r\n    <p>Click ‘Add Secure Zone’ button.</p>\r\n    <p>Complete ‘Name’ and ‘Landing Page’ then “Next” to save and move to ‘Step 2: Secure Content’.</p>\r\n    <p>Pages will be ready for you to secure, however most other content we havn't migrated over yet so you'll need to revisit this section to secure all relevant items.</p>\r\n    <p>Click “Next” to save and move to ‘Step 3: Members’</p>\r\n    <p>Here you can manage the members subscribed to the secure zone.</p>\r\n    <p>For further documentation expand the box below:</p>\r\n    <div class=\"tab-content faqsOpenCloseHolder\">\r\n        <div class=\"faqs-open-close \">\r\n            <a class=\"opener\" href=\"#\"><i class=\"fas fa-angle-right\"></i>Secure Zones Documentation</a>\r\n            <div class=\"slide js-slide-hidden\">\r\n                {% component source: \"Documentation Post\", layout: \"Body Detail\", filterBy: \"id\", filterValue: \"2199\", limit: \"1\", type: \"module\" %}\r\n            </div>\r\n        </div>\r\n    </div>\r\n    \r\n    <h2 id=\"secSetupMailingListsMC\" class=\"circle-wrap\"><div class=\"circle\">88</div>Setup Mailing Lists (MailChimp)</h2>\r\n    {% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secSetupMailingListsMC\", parity: \"low\", effort: \"med\", time: \"low\", docs: \"high\", tool: \"low\" %}\r\n    <p>Before you can set up Mailing Lists in Treepl CMS you need to connect a MailChimp account using their provided API key.</p>\r\n    <p>Below are documentation for setting up the API connection and further inofrmation about adding Mailing Lists.</p>\r\n    \r\n    <div class=\"tab-content faqsOpenCloseHolder\">\r\n        <div class=\"faqs-open-close \">\r\n            <a class=\"opener\" href=\"#\"><i class=\"fas fa-angle-right\"></i>API Provider Documentation</a>\r\n            <div class=\"slide js-slide-hidden\">\r\n                {% component source: \"Documentation Post\", layout: \"Body Detail\", filterBy: \"id\", filterValue: \"2311\", limit: \"1\", type: \"module\" %}\r\n            </div>\r\n        </div>\r\n        <div class=\"faqs-open-close \">\r\n            <a class=\"opener\" href=\"#\"><i class=\"fas fa-angle-right\"></i>Mailing Lists Documentation</a>\r\n            <div class=\"slide js-slide-hidden\">\r\n                {% component source: \"Documentation Post\", layout: \"Body Detail\", filterBy: \"id\", filterValue: \"2310\", limit: \"1\", type: \"module\" %}\r\n            </div>\r\n        </div>\r\n    </div>\r\n    \r\n    <p>Currently, Email Campaigns would generally be managed in MailChimp for full functionality of the MailChimp service. However, basic Email Campaigns can be add via Treepl CMS and pushed to MailChimp.<br>\r\n    <em>More documentation coming soon on this.</em></p>\r\n    \r\n    <h2 id=\"secSetupSiteSearch\" class=\"circle-wrap\"><div class=\"circle\">89</div>Setup Site Search</h2>\r\n    {% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secSetupSiteSearch\", parity: \"med\", effort: \"low\", time: \"low\", docs: \"med\", tool: \"low\" %}\r\n    <p>You don’t need to set up any Site Search module in Treepl CMS. This functionality is ready to use simply by inserting the search form and component tag.</p>\r\n    <p>So there is nothing you need to do in this step.</p>\r\n    <p>Later in the migration we’ll need to replace any BC site search forms so we’ll reference back to this documentation:</p>\r\n    <div class=\"tab-content faqsOpenCloseHolder\">\r\n        <div class=\"faqs-open-close \">\r\n            <a class=\"opener\" href=\"#\"><i class=\"fas fa-angle-right\"></i>Site Search Documentation - COMING SOON...</a>\r\n            <div class=\"slide js-slide-hidden\">\r\n                {% component source: \"Documentation Post\", layout: \"Body Detail\", filterBy: \"id\", filterValue: \"2356\", limit: \"1\", type: \"module\" %}\r\n            </div>\r\n        </div>\r\n        <div class=\"faqs-open-close \">\r\n            <a class=\"opener\" href=\"#\"><i class=\"fas fa-angle-right\"></i>Site Search Component Documentation</a>\r\n            <div class=\"slide js-slide-hidden\">\r\n                {% component source: \"Documentation Post\", layout: \"Body Detail\", filterBy: \"id\", filterValue: \"1959\", limit: \"1\", type: \"module\" %}\r\n            </div>\r\n        </div>\r\n    </div>\r\n    \r\n    <h2 id=\"secReplicateURLRedirects\" class=\"circle-wrap\"><div class=\"circle\">90</div>Replicate Existing URL Redirects</h2>\r\n    {% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secReplicateURLRedirects\", parity: \"high\", effort: \"med\", time: \"med\", docs: \"high\", tool: \"high\" %}\r\n    <p>While you can import URL Redirects into Treepl CMS in bulk, BC doesn't have an export function available from their admin, so you’ll need to enter URL redirects manually. Alternatively the <a href=\"https://www.bcappstore.com/apps/bc-to-treepl\" target=\"_blank\">BC to Treepl CMS  Migration App</a> can be used to automate this process.</p>\r\n    <p>See below for more information on URL Redirects.</p>\r\n    <div class=\"tab-content faqsOpenCloseHolder\">\r\n        <div class=\"faqs-open-close \">\r\n            <a class=\"opener\" href=\"#\"><i class=\"fas fa-angle-right\"></i>URL Redirects Documentation</a>\r\n            <div class=\"slide js-slide-hidden\">\r\n                {% component source: \"Documentation Post\", layout: \"Body Detail\", filterBy: \"id\", filterValue: \"2210\", limit: \"1\", type: \"module\" %}\r\n            </div>\r\n        </div>\r\n    </div>\r\n    \r\n    <h2 id=\"secSetupAdminUserRoles\" class=\"circle-wrap\"><div class=\"circle\">91</div>Setup Admin User Roles</h2>\r\n    {% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secSetupAdminUserRoles\", parity: \"med\", effort: \"low\", time: \"low\", docs: \"med\", tool: \"low\" %}\r\n    <p>While we won’t be adding Admin Users just yet, we’ll still get the User Roles set up and in place ready to assign users to in a later step.</p>\r\n    <p>To set up Admin User Roles, go to ‘Settings’ &gt; ‘Admin User Roles’</p>\r\n    <p>Click ‘Add Admin Role’ button.</p>\r\n    <p>Complete a 'Name' for your Role and configure the permissions, turning off checkboxes to block users access to those items.</p>\r\n    <p class=\"notice-note\">Many permission items have nested items for further fine-grain control.</p>\r\n    \r\n    \r\n    \r\n    <h2 id=\"secSetupNotificationWorkflow\" class=\"circle-wrap\"><div class=\"circle\">92</div>Setup Email Notification Workflow/s</h2>\r\n    {% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secSetupNotificationWorkflow\", parity: \"med\", effort: \"low\", time: \"low\", docs: \"high\", tool: \"high\" %}\r\n    <p>We’ll set up the default Notification Workflow email (and additional ones if needed - make sure you’re site plan supports multiple Workflow Emails if you need more than one Workflow)</p>\r\n    <p>You can optionally, upload your BC workflow email layouts into your Treepl CMS instance via FTP into the ‘Content / SystemEmails’ directory. However, if you only have a few email layouts it may be better to set these up via the Admin as you'll need to configure other settings as well.</p>\r\n    <p>Alternatively the <a href=\"https://www.bcappstore.com/apps/bc-to-treepl\" target=\"_blank\">BC to Treepl CMS  Migration App</a> can be used to automate this process.</p>\r\n    <p>See below for documentation on Workflows.</p>\r\n    <div class=\"tab-content faqsOpenCloseHolder\">\r\n        <div class=\"faqs-open-close \">\r\n            <a class=\"opener\" href=\"#\"><i class=\"fas fa-angle-right\"></i>Workflows Documentation</a>\r\n            <div class=\"slide js-slide-hidden\">\r\n                {% component source: \"Documentation Post\", layout: \"Body Detail\", filterBy: \"id\", filterValue: \"2208\", limit: \"1\", type: \"module\" %}\r\n            </div>\r\n        </div>\r\n    </div>\r\n    \r\n    \r\n    \r\n    \r\n    <h2 id=\"secReplicateWebForms\" class=\"circle-wrap\"><div class=\"circle\">93</div>Replicate Web Forms</h2>\r\n    {% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secReplicateWebForms\", parity: \"high\", effort: \"low\", time: \"med\", docs: \"high\", tool: \"med\" %}\r\n    <p>You can create new web forms in the Treepl admin for each of your BC Web Forms and copy over and adjust your form layout/code.</p>\r\n    <p>Alternatively the <a href=\"https://www.bcappstore.com/apps/bc-to-treepl\" target=\"_blank\">BC to Treepl CMS  Migration App</a> can be used to automate this process.</p>\r\n    <p>See below for documentation on Forms.</p>\r\n    <div class=\"tab-content faqsOpenCloseHolder\">\r\n        <div class=\"faqs-open-close \">\r\n            <a class=\"opener\" href=\"#\"><i class=\"fas fa-angle-right\"></i>Forms Documentation</a>\r\n            <div class=\"slide js-slide-hidden\">\r\n                {% component source: \"Documentation Post\", layout: \"Body Detail\", filterBy: \"id\", filterValue: \"2041\", limit: \"1\", type: \"module\" %}\r\n            </div>\r\n        </div>\r\n    </div>\r\n    \r\n    <h2 id=\"secReplicateSystemPages\" class=\"circle-wrap\"><div class=\"circle\">94</div>Replicate System Pages</h2>\r\n    {% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secReplicateSystemPages\", parity: \"high\", effort: \"low\", time: \"low\", docs: \"high\", tool: \"high\" %}\r\n    <p>This process can be automated with the <a href=\"https://www.bcappstore.com/apps/bc-to-treepl\" target=\"_blank\">BC to Treepl CMS  Migration App</a>.</p>\r\n    <p>Or, if manually migrating system pages, locate your relevant BC System Pages either in your downloaded BC site files, or in the “Develop” tab of the BC Admin under ‘Layouts / SystemMessages’, or directly in the BC Admin under ‘Site Manager’ &gt; ‘System Pages.</p>\r\n    <p>You’ll need to copy over the HTML from these into the corresponding system page in Treepl CMS found in the Admin under ‘Settings / System Pages’</p>\r\n    <p>While you can upload system pages into Treepl CMS, you'd first need to rename the relevant BC files to match those of Treepl CMS in order to override them. However, this is not recommended as you'll lose the default layouts and Liquid markup required for those layouts.</p>\r\n    <p>For more information refer to the below documentation article.</p>\r\n    <div class=\"tab-content faqsOpenCloseHolder\">\r\n        <div class=\"faqs-open-close \">\r\n            <a class=\"opener\" href=\"#\"><i class=\"fas fa-angle-right\"></i>System Pages Documentation</a>\r\n            <div class=\"slide js-slide-hidden\">\r\n                {% component source: \"Documentation Post\", layout: \"Body Detail\", filterBy: \"id\", filterValue: \"2207\", limit: \"1\", type: \"module\" %}\r\n            </div>\r\n        </div>\r\n    </div>\r\n    <p>Review your HTML for any BC specific tags or modules which will need to be converted to Treepl CMS equivalents. Either making note of them to come back to once other items are set up, or replace them now if you can. For example, you may have a\r\n        site search form on your 404 Not Found page, or a secure zone login form on your 401 or 403 pages.</p>\r\n    \r\n    <h2 id=\"secReplicateSystemEmails\" class=\"circle-wrap\"><div class=\"circle\">95</div>Replicate System Emails</h2>\r\n    {% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secReplicateSystemEmails\", parity: \"high\", effort: \"low\", time: \"low\", docs: \"high\", tool: \"high\" %}\r\n    <p>This process can be automated with the <a href=\"https://www.bcappstore.com/apps/bc-to-treepl\" target=\"_blank\">BC to Treepl CMS  Migration App</a>.</p>\r\n    <p>Or, if manually migrating system emails, locate your relevant BC System Emails, either in your downloaded BC site files, or in the “Develop” tab of the BC Admin under ‘Layouts / OutboundEmails’, or directly in the BC Admin under ‘Site Manager’ &gt; ‘System Emails’.</p>\r\n    <p>You’ll need to copy over the HTML from these into the corresponding system emails in Treepl CMS found in the Admin under ‘Email Notifications / System Emails’</p>\r\n        <p>While you can upload system emails into Treepl CMS, you'd first need to rename the relevant BC files to match those of Treepl CMS in order to override them. However, this is not recommended as you'll lose the default layouts and Liquid markup required for those layouts.</p>\r\n    <p>Review your HTML for any BC specific tags or modules which will need to be converted to Treepl CMS equivalents. Be sure to reference the default tags already in the email layouts in Treepl CMS to identify which ones can replace your BC tags.</p>\r\n    <p>For more information refer to the below documentation article.</p>\r\n    <div class=\"tab-content faqsOpenCloseHolder\">\r\n        <div class=\"faqs-open-close \">\r\n            <a class=\"opener\" href=\"#\"><i class=\"fas fa-angle-right\"></i>System Emails Documentation</a>\r\n            <div class=\"slide js-slide-hidden\">\r\n                {% component source: \"Documentation Post\", layout: \"Body Detail\", filterBy: \"id\", filterValue: \"2205\", limit: \"1\", type: \"module\" %}\r\n            </div>\r\n        </div>\r\n    </div>\r\n    \r\n    <h2 id=\"secReplicateCategories\" class=\"circle-wrap\"><div class=\"circle\">96</div>Replicate Categories</h2>\r\n    {% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secReplicateCategories\", parity: \"high\", effort: \"low\", time: \"low\", docs: \"high\", tool: \"high\" %}\r\n    <p>You can manually recreate any Categories set up in your BC site into Treepl CMS under ‘Settings / Categories’</p>\r\n    <p>Alternatively the <a href=\"https://www.bcappstore.com/apps/bc-to-treepl\" target=\"_blank\">BC to Treepl CMS  Migration App</a> can be used to automate this process.</p>\r\n    <p>For more information about Categories see the below documentation article.</p>\r\n    <div class=\"tab-content faqsOpenCloseHolder\">\r\n        <div class=\"faqs-open-close \">\r\n            <a class=\"opener\" href=\"#\"><i class=\"fas fa-angle-right\"></i>Categories Documentation</a>\r\n            <div class=\"slide js-slide-hidden\">\r\n                {% component source: \"Documentation Post\", layout: \"Body Detail\", filterBy: \"id\", filterValue: \"2308\", limit: \"1\", type: \"module\" %}\r\n            </div>\r\n        </div>\r\n    </div>\r\n    \r\n    <h2 id=\"secContactsAndCases\" class=\"circle-wrap\"><div class=\"circle\">97</div>Contacts & Cases</h2>\r\n    {% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secContactsAndCases\", parity: \"med\", effort: \"med\", time: \"med\", docs: \"low\", tool: \"high\" %}\r\n    <p>The <a href=\"https://www.bcappstore.com/apps/bc-to-treepl\" target=\"_blank\">BC to Treepl CMS  Migration App</a> can be used to migrate both contact records and cases.</p>\r\n    <p>Alternatively, you can import contact records directly into the Treepl CMS Contacts module. However, Cases can not yet be imported in this way and would need to be added manaully if not using the Migration App.</p>\r\n    <p>Also note that Treepl CMS Contact fields are limited, so it's still advisable to export BC CRM data for archive/backup purposes if advanced CRM fields exist and later import that data when the advanced CRM is available.</p>\r\n\r\n    \r\n    <h2 id=\"secReplicateContentHolders\" class=\"circle-wrap\"><div class=\"circle\">98</div>Replicate Content Holders</h2>\r\n    {% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secReplicateContentHolders\", parity: \"high\", effort: \"low\", time: \"low\", docs: \"med\", tool: \"high\" %}\r\n    <p>The <a href=\"https://www.bcappstore.com/apps/bc-to-treepl\" target=\"_blank\">BC to Treepl CMS  Migration App</a> can be used to automate this process.</p>\r\n    <p>Alternatively, if manually migrating, locate your relevant BC Content Holders, either in your downloaded BC site files, or in the “Develop” tab of the BC Admin under ‘System / ContentHolders, or directly in the BC Admin under ‘Site Manager’ &gt; ‘Content Holders’.</p>\r\n    <p>Upload your BC Content Holders into your Treepl CMS instance via FTP into the ‘Content / Snippets’ directory.</p>\r\n    <p>If not using FTP, create and copy over the HTML from these into the Treepl CMS admin area under ‘Content / Snippets’.</p>\r\n    <p>Review your HTML for any BC specific tags or modules which will need to be converted to Treepl CMS equivalents. Either making note of them to come back to once other items are set up, or replace them now if you can.</p>\r\n    \r\n    \r\n    <div class=\"tab-content faqsOpenCloseHolder\">\r\n        <div class=\"faqs-open-close \">\r\n            <a class=\"opener\" href=\"#\"><i class=\"fas fa-angle-right\"></i>Snippets Documentation</a>\r\n            <div class=\"slide js-slide-hidden\">\r\n                {% component source: \"Documentation Post\", layout: \"Body Detail\", filterBy: \"id\", filterValue: \"2133\", limit: \"1\", type: \"module\" %}\r\n            </div>\r\n        </div>\r\n        <div class=\"faqs-open-close \">\r\n            <a class=\"opener\" href=\"#\"><i class=\"fas fa-angle-right\"></i>Snippets Component Documentation</a>\r\n            <div class=\"slide js-slide-hidden\">\r\n                {% component source: \"Documentation Post\", layout: \"Body Detail\", filterBy: \"id\", filterValue: \"1950\", limit: \"1\", type: \"module\" %}\r\n            </div>\r\n        </div>\r\n    </div>\r\n    \r\n    \r\n    \r\n    \r\n    <h2 id=\"secBuiltInModules\" class=\"circle-wrap\"><div class=\"circle\">99</div>Built-In Modules:</h2>\r\n    <h3 id=\"secBlogs\">Blogs</h3>\r\n    {% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secBuiltInModulesBlogs\", parity: \"high\", effort: \"med\", time: \"med\", docs: \"med\", tool: \"high\" %}\r\n    <p>BC Blogs can be replicated in Treepl CMS either in the built-in Blog module or by using Custom Modules to configure your own blog structure.</p>\r\n    <p>The <a href=\"https://www.bcappstore.com/apps/bc-to-treepl\" target=\"_blank\">BC to Treepl CMS Migration App</a> can be used to automate this process, including Release Dates, Tags, Categories, Authors and SEO data.</p>\r\n    <p>If manually transferring your blogs, for a method of extracting the BC Blog data see this helpful Treepl CMS Forum post (includes code snippets and demo video):</p>\r\n    <a class=\"btn small\" href=\"https://forum.treepl.co/t/bc-blog-export-helper/61\" target=\"_blank\">BC Blog Export Helper</a>\r\n    <p>You can also upload your BC module layouts into your Treepl CMS instance via FTP into the ‘Content / ModuleLayouts / &lt;Blog&gt; &amp; &lt;BlogPost&gt;’ directories.</p>\r\n    <p>For more information about the Blog module see the documentation articles.</p>\r\n    <div class=\"tab-content faqsOpenCloseHolder\">\r\n        <div class=\"faqs-open-close \">\r\n            <a class=\"opener\" href=\"#\"><i class=\"fas fa-angle-right\"></i>Blog module Documentation</a>\r\n            <div class=\"slide js-slide-hidden\">\r\n                {% component source: \"Documentation Post\", layout: \"Body Detail\", filterBy: \"id\", filterValue: \"2135\", limit: \"1\", type: \"module\" %}\r\n            </div>\r\n        </div>\r\n        <div class=\"faqs-open-close \">\r\n            <a class=\"opener\" href=\"#\"><i class=\"fas fa-angle-right\"></i>Blog component Documentation</a>\r\n            <div class=\"slide js-slide-hidden\">\r\n                {% component source: \"Documentation Post\", layout: \"Body Detail\", filterBy: \"id\", filterValue: \"2141\", limit: \"1\", type: \"module\" %}\r\n            </div>\r\n        </div>\r\n        <div class=\"faqs-open-close \">\r\n            <a class=\"opener\" href=\"#\"><i class=\"fas fa-angle-right\"></i>Blog Post component Documentation</a>\r\n            <div class=\"slide js-slide-hidden\">\r\n                {% component source: \"Documentation Post\", layout: \"Body Detail\", filterBy: \"id\", filterValue: \"2142\", limit: \"1\", type: \"module\" %}\r\n            </div>\r\n        </div>\r\n    </div>\r\n    \r\n    <h3 id=\"secEvents\">Events</h3>\r\n    {% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secBuiltInModulesEvents\", parity: \"high\", effort: \"high\", time: \"med\", docs: \"low\", tool: \"high\" %}\r\n    <p>Treepl CMS Events are similar to BC Events and can be set up quite easily.</p>\r\n    <p>The <a href=\"https://www.bcappstore.com/apps/bc-to-treepl\" target=\"_blank\">BC to Treepl CMS  Migration App</a> can be used to automate Event migrations as well as transfer Event booking data from the CRM into Treepl CMS CRM.</p>\r\n    <p>For manual migrations, getting the data out of BC is a problem... although, you could likely use a similar approach to the Blog Export Helper above.</p>\r\n    <p>You can also upload your BC module layouts into your Treepl CMS instance via FTP into the ‘Content / ModuleLayouts / &lt;Event&gt; &amp; &lt;EventGroup&gt;’ directories.</p>\r\n    \r\n    <h3 id=\"secPhotoGalleries\">Photo Galleries</h3>\r\n    {% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secBuiltInModulesGalleries\", parity: \"med\", effort: \"med\", time: \"med\", docs: \"med\", tool: \"high\" %}\r\n    <p>Galleries in Treepl CMS work more like WebApps, so each image is an item within the parent module. This brings greater control in the long run, however migrating images and data to this new format can make migration a little more involved.</p>\r\n    <p>The <a href=\"https://www.bcappstore.com/apps/bc-to-treepl\" target=\"_blank\">BC to Treepl CMS Migration App</a> can be used to automate this process.</p>\r\n    <p>If manually transferring your galleries, see this very helpful method of extracting the BC data in a ready format for Treepl CMS posted in the Treepl CMS Forum:</p>\r\n    <a class=\"btn small\" href=\"https://forum.treepl.co/t/bc-photo-gallery-exporter/107\" target=\"_blank\">BC Photo Galleries Export Helper</a>\r\n    <p>For more information about the Galleries/Sliders module see the documentation articles.</p>\r\n    <div class=\"tab-content faqsOpenCloseHolder\">\r\n        <div class=\"faqs-open-close \">\r\n            <a class=\"opener\" href=\"#\"><i class=\"fas fa-angle-right\"></i>Gallery/Slider Group module</a>\r\n            <div class=\"slide js-slide-hidden\">\r\n                {% component source: \"Documentation Post\", layout: \"Body Detail\", filterBy: \"id\", filterValue: \"2140\", limit: \"1\", type: \"module\" %}\r\n            </div>\r\n        </div>\r\n    </div>\r\n    <div class=\"tab-content faqsOpenCloseHolder\">\r\n        <div class=\"faqs-open-close \">\r\n            <a class=\"opener\" href=\"#\"><i class=\"fas fa-angle-right\"></i>Gallery/Slider Item module</a>\r\n            <div class=\"slide js-slide-hidden\">\r\n                {% component source: \"Documentation Post\", layout: \"Body Detail\", filterBy: \"id\", filterValue: \"2143\", limit: \"1\", type: \"module\" %}\r\n            </div>\r\n        </div>\r\n    </div>\r\n    \r\n    <h3 id=\"secNews\">News</h3>\r\n    {% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secBuiltInModulesNews\", parity: \"med\", effort: \"low\", time: \"low\", docs: \"med\", tool: \"high\" %}\r\n    <p>There is no “News” module specifically in Treepl CMS, however using the Blog would likely be a more than suitable alternative (see migrating Blogs section above).</p>\r\n    <p>The <a href=\"https://www.bcappstore.com/apps/bc-to-treepl\" target=\"_blank\">BC to Treepl CMS Migration App</a> can be used to automate this process and a separate Blog module will be created for News items.</p>\r\n    <p>If migrating manually, since BC doesn't provide export functionality for extracting the BC News data, you could likely use a similar approach to the Blog Export Helper above.</p>\r\n    <p>You can also upload your BC module layouts into your Treepl CMS instance via FTP into the ‘Content / ModuleLayouts / &lt;Your Custom Module OR Blog&gt;’ directory.</p>\r\n    \r\n    \r\n    <h3 id=\"secMediaDownloads\">Media Downloads</h3>\r\n    {% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secBuiltInModulesMedia\", parity: \"low\", effort: \"med\", time: \"med\", docs: \"low\", tool: \"high\" %}\r\n    <p>There is no direct “Media Downloads” module in Treepl CMS, however setting up a Custom Module along with the ‘<a href=\"https://docs.treepl.co/documentation_group/extras/force-download-handler\" target=\"_blank\">Force Download Handler</a>’ option would see very similar results with greater flexibility.<br>\r\n    (see migrating WebApps section in a later step).</p>\r\n    <p>You can manually migrate Media Downloads or alternatively the <a href=\"https://www.bcappstore.com/apps/bc-to-treepl\" target=\"_blank\">BC to Treepl CMS  Migration App</a> can be used to automate this process.</p>\r\n    <p>For manual migrations, a very helpful method of extracting the BC data in a ready format for Treepl CMS, see this helpful Treepl CMS Forum post:</p>\r\n    <a class=\"btn small\" href=\"https://forum.treepl.co/t/bc-media-downloads-exporter/235\" target=\"_blank\">BC Media Downloads Export Helper</a>\r\n    \r\n    \r\n    <h3 id=\"secFAQs\">FAQs</h3>\r\n    {% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secBuiltInModulesFAQs\", parity: \"high\", effort: \"med\", time: \"med\", docs: \"low\", tool: \"high\" %}\r\n    <p>FAQs in Treepl CMS work more like WebApps, so each FAQ is an item within the parent module (Question Group). This brings greater control in the long run, however migrating FAQs and data to this new format may make migration a little more involved.</p>\r\n    <p>You can manually migrate FAQs or alternatively the <a href=\"https://www.bcappstore.com/apps/bc-to-treepl\" target=\"_blank\">BC to Treepl CMS  Migration App</a> can be used to automate this process.</p>\r\n    <p>For manual migrations, you could likely use a similar approach to the Blog Export Helper above.</p>\r\n    <p>You can also upload your BC module layouts into your Treepl CMS instance via FTP into the ‘Content / ModuleLayouts / &lt;FAQGropu&gt; &amp; &lt;FAQQuestion&gt;’ directories.</p>\r\n    <p>For more information about the FAQs module see the documentation articles.</p>\r\n    <div class=\"tab-content faqGroupOpenCloseHolder\">\r\n        <div class=\"faqs-open-close \">\r\n            <a class=\"opener\" href=\"#\"><i class=\"fas fa-angle-right\"></i>FAQ Group module</a>\r\n            <div class=\"slide js-slide-hidden\">\r\n                {% component source: \"Documentation Post\", layout: \"Body Detail\", filterBy: \"id\", filterValue: \"2144\", limit: \"1\", type: \"module\" %}\r\n            </div>\r\n        </div>\r\n    </div>\r\n    <div class=\"tab-content faqItemOpenCloseHolder\">\r\n        <div class=\"faqs-open-close \">\r\n            <a class=\"opener\" href=\"#\"><i class=\"fas fa-angle-right\"></i>FAQ Item module</a>\r\n            <div class=\"slide js-slide-hidden\">\r\n                {% component source: \"Documentation Post\", layout: \"Body Detail\", filterBy: \"id\", filterValue: \"2145\", limit: \"1\", type: \"module\" %}\r\n            </div>\r\n        </div>\r\n    </div>\r\n    \r\n    \r\n    <h3 id=\"secAdRotators\">Ad Rotators</h3>\r\n    {% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secBuiltInModulesRotators\", parity: \"med\", effort: \"med\", time: \"med\", docs: \"med\", tool: \"high\" %}\r\n    <p>The Banner module in Treepl CMS was built to replace the BC Ad Rotators and is set up much like the other modules in Treepl CMS and is therefore flexible for you to configure the layouts and behaviour as needed.</p>\r\n    <p>The <a href=\"https://www.bcappstore.com/apps/bc-to-treepl\" target=\"_blank\">BC to Treepl CMS Migration App</a> can be used to automate this process.</p>\r\n    <p>If migrating manually, since BC doesn't provide export functionality for extracting the BC Ad Rotator data, you could likely use a similar approach to the Blog Export Helper above.</p>\r\n    <p>For more information about the Banners module see the documentation articles.</p>\r\n    <div class=\"tab-content faqsOpenCloseHolder\">\r\n        <div class=\"faqs-open-close \">\r\n            <a class=\"opener\" href=\"#\"><i class=\"fas fa-angle-right\"></i>Banner Documentation</a>\r\n            <div class=\"slide js-slide-hidden\">\r\n                {% component source: \"Documentation Post\", layout: \"Body Detail\", filterBy: \"id\", filterValue: \"2136\", limit: \"1\", type: \"module\" %}\r\n            </div>\r\n        </div>\r\n    </div>\r\n    <div class=\"tab-content faqsOpenCloseHolder\">\r\n        <div class=\"faqs-open-close \">\r\n            <a class=\"opener\" href=\"#\"><i class=\"fas fa-angle-right\"></i>Banner Group module</a>\r\n            <div class=\"slide js-slide-hidden\">\r\n                {% component source: \"Documentation Post\", layout: \"Body Detail\", filterBy: \"id\", filterValue: \"2146\", limit: \"1\", type: \"module\" %}\r\n            </div>\r\n        </div>\r\n    </div>\r\n    <div class=\"tab-content faqsOpenCloseHolder\">\r\n        <div class=\"faqs-open-close \">\r\n            <a class=\"opener\" href=\"#\"><i class=\"fas fa-angle-right\"></i>Banner Item module</a>\r\n            <div class=\"slide js-slide-hidden\">\r\n                {% component source: \"Documentation Post\", layout: \"Body Detail\", filterBy: \"id\", filterValue: \"2147\", limit: \"1\", type: \"module\" %}\r\n            </div>\r\n        </div>\r\n    </div>\r\n    \r\n    <h2 id=\"secCustomModulesWebApps\" class=\"circle-wrap\"><div class=\"circle\">100</div>Custom Modules (WebApps)</h2>\r\n    {% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secCustomModulesWebApps\", parity: \"high\", effort: \"low\", time: \"med\", docs: \"high\", tool: \"high\" %}\r\n    <p>Generally, WebApps will transfer over quite easily as Custom Modules in Treepl CMS were built around an improved “WebApp” model. Therefore they have a very similar concept with how items are added and list and detail layouts are constructed. Combined with the fact that WebApp data can be easily exported from BC and imported into Treepl CMS, WebApps will likely be an easier job migrating then the other built-in BC modules.</p>\r\n    <p>If you have very complex WebApps there may be more time required to study the different methods with rendering data and converting complex Liquid markup, but the data migration should be relatively straight forward via export/import.</p>\r\n    <p>You can further simplify this process with the <a href=\"https://www.bcappstore.com/apps/bc-to-treepl\" target=\"_blank\">BC to Treepl CMS  Migration App</a>, which can migration not only the item data but the WebApp layouts, settings and set up all custom fields including Datasource fields (converting the reference for Treepl CMS use).</p>\r\n    <p>If manually migrating WebApps, you'll will first need to set up your Custom Module with all it's correspondign properties and settings in order to import those matching fields from BC.</p>\r\n    <p>You can also upload your BC module layouts into your Treepl CMS instance via FTP into the ‘Content / ModuleLayouts / &lt;Your Custom Module&gt;’ directory.</p>\r\n    <p>Refer to the Custom Module documentation for more details:</p>\r\n    <a class=\"btn small\" href=\"/documentation_group/content-modules/custom-modules-aka-webapps\" target=\"_blank\">Custom Modules (AKA WebApps)</a>\r\n    \r\n    \r\n    \r\n    <h2 id=\"secEcommerce\" class=\"circle-wrap\"><div class=\"circle\">101</div>eCommerce</h2>\r\n    <p>To get up and running with eCommerce in Treepl CMS, see the getting started article below.</p>\r\n    <div class=\"tab-content faqsOpenCloseHolder\">\r\n        <div class=\"faqs-open-close \">\r\n            <a class=\"opener\" href=\"#\"><i class=\"fas fa-angle-right\"></i>Getting Started with eCommerce</a>\r\n            <div class=\"slide js-slide-hidden\">\r\n                {% component source: \"Documentation Post\", layout: \"Body Detail\", filterBy: \"id\", filterValue: \"2522\", limit: \"1\", type: \"module\" %}\r\n            </div>\r\n        </div>\r\n    </div>\r\n    <h3 id=\"secPaymentGateways\">Payment Gateways</h3>\r\n    {% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secPaymentGateways\", parity: \"med\", effort: \"low\", time: \"low\", docs: \"low\", tool: \"na\" %}\r\n    <p>Since the Payment Gateway settings contain sensitive details you will need to manually set up your Payment Gateway in your new Treepl CMS site by going to ‘Settings’ > ‘Payment’.</p>\r\n\r\n<h3 id=\"secTaxCodes\">Tax Codes</h3>\r\n{% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secTaxCodes\", parity: \"high\", effort: \"low\", time: \"low\", docs: \"low\", tool: \"high\" %}\r\n<p>Tax Codes follow the same structure in Treepl CMS so you can simply enter all the same codes under ‘eCommerce’ > ‘Taxes’.</p>\r\n<p>If you are implementing all or many of the US State taxes you’ll be able to add these automatically when you click “Add New Tax” and select ‘United States’ as the assigned country.</p>\r\n<p>There is no manual export option from BC, nor is there an import option in Treepl CMS for this.</p>\r\n<p>You can also automatically migrate Tax Codes via the <a href=\"https://www.bcappstore.com/apps/bc-to-treepl\" target=\"_blank\">BC to Treepl CMS Migration App</a>.</p>\r\n<h3 id=\"secShippingOptions\">Shipping Options</h3>\r\n{% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secShippingOptions\", parity: \"med\", effort: \"low\", time: \"low\", docs: \"low\", tool: \"high\" %}\r\n<p>Shipping Codes follow a very similar format in Treepl CMS so you can simply enter all the same codes under ‘eCommerce’ > Shipping options.</p>\r\n<p>This is for user-defined shipping rules at least. Integration of shipping providers is still pending release.</p>\r\n<p>There is no manual export option from BC, nor is there an import option in Treepl CMS for this. </p>\r\n<p>You can also automatically migrate user-defined Shipping Options via the <a href=\"https://www.bcappstore.com/apps/bc-to-treepl\" target=\"_blank\">BC to Treepl CMS Migration App</a>.</p>\r\n<h3 id=\"secCatalogs\">Catalogs</h3>\r\n{% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secCatalogs\", parity: \"high\", effort: \"low\", time: \"low\", docs: \"low\", tool: \"high\" %}\r\n<p>You can import your Catalogues into Treepl CMS if you have a spreadsheet available, although there is no export feature in BC.</p>\r\n<p>Creating Catalogs manually can be done much the same way as adding any other module item in Treepl CMS via ‘eCommerce’ > ‘Catalogs’ and you will have similar options available.</p>\r\n<p>Options from BC that are not currently available are; Price visibility, XML feed, and Browse Panel settings.</p> \r\n<p>You can also automatically migrate Catalogs via the <a href=\"https://www.bcappstore.com/apps/bc-to-treepl\" target=\"_blank\">BC to Treepl CMS Migration App</a>.</p>\r\n<h3 id=\"secProducts\">Products</h3>\r\n{% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secProducts\", parity: \"high\", effort: \"low\", time: \"low\", docs: \"low\", tool: \"high\" %}\r\n<p>You can import your Products into Treepl CMS with an export from BC, or if you have a spreadsheet available (after formatting to match Treepl CMS import file).</p>\r\n<p>Creating Products manually can be done much the same way as adding any other module item in Treepl CMS via ‘eCommerce’ > ‘Products’ and you will have similar options available.</p>\r\n<p>Additionally, you can add a variety of custom fields to customise your products module (for example, adding additional image fields would be how you’d add the “Poplets” feature from BC).</p>\r\n<p>Options from BC that are not currently available are; Downloadable Product, Capture Details, Commission Payable.</p>\r\n<p>You can also automatically migrate Products via the <a href=\"https://www.bcappstore.com/apps/bc-to-treepl\" target=\"_blank\">BC to Treepl CMS Migration App</a>.</p>\r\n<h3 id=\"secDiscountCodes\">Discount Codes</h3>\r\n{% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secDiscountCodes\", parity: \"high\", effort: \"low\", time: \"low\", docs: \"low\", tool: \"high\" %}\r\n<p>Discount Codes follow the same structure in Treepl CMS so you can simply enter all the same codes under ‘eCommerce’ > ‘Discount codes’.</p>\r\n<p>There is no manual export option from BC, nor is there an import option in Treepl CMS for this.</p>\r\n<p>You can also automatically migrate Discount Codes via the <a href=\"https://www.bcappstore.com/apps/bc-to-treepl\" target=\"_blank\">BC to Treepl CMS Migration App</a>.</p>\r\n<h3 id=\"secGiftVouchers\">Gift Vouchers</h3>\r\n{% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secGiftVouchers\", parity: \"high\", effort: \"low\", time: \"low\", docs: \"low\", tool: \"high\" %}\r\n<p>Gift Vouchers follow the same structure in Treepl CMS so you can simply enter all the same vouchers under ‘eCommerce’ > ‘Gift vouchers’.</p>\r\n<p>There is no manual export option from BC, nor is there an import option in Treepl CMS for this.</p>\r\n<p>You can also automatically migrate Gift Vouchers via the <a href=\"https://www.bcappstore.com/apps/bc-to-treepl\" target=\"_blank\">BC to Treepl CMS Migration App</a>.</p>\r\n\r\n\r\n<p class=\"notice-note\">eCommerce features not yet available include; cart lifetime setting, XML product feed, digital/downloadable products, integrated shipping providers.</p>\r\n    \r\n    \r\n    \r\n    \r\n    \r\n    \r\n    \r\n    \r\n    \r\n    \r\n    \r\n    \r\n    \r\n    \r\n    <h2 id=\"secRevisitSiteTemplates\" class=\"circle-wrap\"><div class=\"circle\">102</div>Revisit Site Templates</h2>\r\n    {% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secRevisitSiteTemplates\", parity: \"high\", effort: \"med\", time: \"med\", docs: \"med\", tool: \"high\" %}\r\n    <p>Now let's review the Site Templates markup and replace BC modules and Liquid with Treepl CMS methods.</p>\r\n    <p>The <a href=\"https://www.bcappstore.com/apps/bc-to-treepl\" target=\"_blank\">BC to Treepl CMS  Migration App</a> can be used to automate much of this process. However, it's recommended to check through the markup for any exceptions.</p>\r\n    <p>Some common examples are:</p>\r\n    <ul>\r\n        <li>Dynamic HEAD elements</li>\r\n        <li>pagecontent tag</li>\r\n        <li>menus</li>\r\n        <li>content holder</li>\r\n        <li>includes</li>\r\n        <li>modules: BC's module syntax (old and new) converted to Treepl CMS 'Component' syntax</li>\r\n    </ul>\r\n    <p>Review the relevant Component types and all their properties and syntax:</p>\r\n    <a class=\"btn small\" href=\"/documentation_group/component-types/\" target=\"_blank\">All Component Types</a>\r\n    \r\n    \r\n    <h2 id=\"secRevisitSitePages\" class=\"circle-wrap\"><div class=\"circle\">103</div>Revisit Site Pages</h2>\r\n    {% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secRevisitSitePages\", parity: \"high\", effort: \"med\", time: \"med\", docs: \"med\", tool: \"high\" %}\r\n    <p>Like above, let's review the Site Pages markup and replace BC modules and Liquid with Treepl CMS methods.</p>\r\n    <p>Usign the <a href=\"https://www.bcappstore.com/apps/bc-to-treepl\" target=\"_blank\">BC to Treepl CMS  Migration App</a> can automate many BC to Treepl CMS Liquid and tag conversions.</p>\r\n    <p>For manual migrations, some common examples are:</p>\r\n    <ul>\r\n        <li>menus</li>\r\n        <li>content holder</li>\r\n        <li>includes</li>\r\n        <li>modules: BC's module syntax (old and new) converted to Treepl CMS 'Component' syntax</li>\r\n    </ul>\r\n    <p>Review the relevant Component types and all their properties and syntax:</p>\r\n    <a class=\"btn small\" href=\"/documentation_group/component-types/\" target=\"_blank\">All Component Types</a>\r\n    \r\n    \r\n    <h2 id=\"secSetupSEOandSitemap\" class=\"circle-wrap\"><div class=\"circle\">104</div>Setup SEO & Sitemap</h2>\r\n    {% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secSetupSEOandSitemap\", parity: \"med\", effort: \"low\", time: \"low\", docs: \"med\", tool: \"low\" %}\r\n    <p>Add primary domain, language, country, and configure sitemap automation (and possibly enable all items for search engine visibility).</p>\r\n    <p>For more information about SEO settings see the documentation article.</p>\r\n    <div class=\"tab-content faqsOpenCloseHolder\">\r\n        <div class=\"faqs-open-close \">\r\n            <a class=\"opener\" href=\"#\"><i class=\"fas fa-angle-right\"></i>SEO Documentation</a>\r\n            <div class=\"slide js-slide-hidden\">\r\n                {% component source: \"Documentation Post\", layout: \"Body Detail\", filterBy: \"id\", filterValue: \"2212\", limit: \"1\", type: \"module\" %}\r\n            </div>\r\n        </div>\r\n    </div>\r\n    <p>On initial setup, it's recommended to manually generate the sitemap to review the items listed - ensuring all your relevant site items are configured for search engine visibility.</p>\r\n    \r\n    \r\n    <h2 id=\"secChecksAndTroubleshooting\" class=\"circle-wrap\"><div class=\"circle\">105</div>Checks and Troubleshooting</h2>\r\n    {% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secChecksAndTroubleshooting\", parity: \"na\", effort: \"med\", time: \"med\", docs: \"med\", tool: \"na\" %}\r\n\r\n    <p>Run back through the steps above as a quick checklist to review all your site items.</p>\r\n    <p>Comparing your new Treepl CMS site front-end alongside the BC site to check for consistancy.</p>\r\n    <p>Note any URL differences due to page/directory naming or restructuring and ensure URL Redirect are setup for these.</p>\r\n</div>\r\n",
  "ItemTags": [
  "Migrations"
],
  "Author_Name": "",
  "Author_Url": "",
  "Author": "",
  "SEOTitle": "",
  "MetaTitle": "",
  "MetaDescription": "",
  "ShowPageForSearchEngine": true,
  "CanonicalLink": "",
  "EnableAMP": false,
  "AMPContent": "",
  "CodeEditor": true,
  "ExternalId": 0,
  "SocialMetaTags": "",
  "OpenGraphProperties": "",
  "DisableForSiteSearch": false,
  "SeoPriority": "",
  "CreatedByMemberId": 0,
  "ItemCategories": "",
  "ItemCategoryIdList": "",
  "SKUCode": "",
  "SiteSearchKeywords": "",
  "Active": true,
  "IgnoreUpdates": false,
  "UpdateNotes": "",
  "UpdatesLog": "<ul>\n    <li>Added note about new BC .zip Archive functionality</li>\n    <li>Updated BC to Treepl CMS Migration App compatibility - as per v9.0.4 (Catalogs, Discount codes, Gift vouchers, Products, Shipping options, Tax codes)</li>\n</ul>",
  "ExternalResources": "",
  "AdditionalRelatedArticle_Name": "",
  "AdditionalRelatedArticle_Url": "",
  "AdditionalRelatedArticle": "",
  "AdditionalRelatedArticle2_Name": "",
  "AdditionalRelatedArticle2_Url": "",
  "AdditionalRelatedArticle2": "",
  "Authors": "2418",
  "Module_ID": 1870,
  "Module_Alias": "DocumentationPost",
  "ParentName": "BC Migration Guides",
  "ParentUrl": "/bc-migration-guides",
  "TemplateName": "Docs Template",
  "IsHome": false
}
}
}

Accessing the Data

This data is accessible in two main ways:

1. Using Liquid in the specified Layout via the this object.

{{this['url']}}

2. Directly on the Page or Template via a Liquid Collection if collectionVariable was added to the Component tag.

An example using collectionVariable with value "allPosts" to list all "Blog Posts" across the site:

Here we suppress any Layout from rendering by setting layout: "" as an empty attribute.

{% component type: "module", source: "Blog Posts", layout: "", collectionVariable: "allPosts" %}

Looping through the collection to render all the item URLs in a list, giving us:

  • /demo-html-blog/demo-html-post
  • /demo-custom-blog/sample-post-one
  • /demo-custom-blog/sample-post-three

The code:

<ul>
    {% for i in allPosts.items %}
        <li>{{i['url']}}</li>
    {% endfor %}
</ul>

Accessing a specific item within the collection. In this case the third item (zero based index), which in our example would render the value /demo-custom-blog/sample-post-three

{{allPosts.items[2]['url']}}

List Posts from a specific Blog

If you have more than one Blog on your site the above examples will list Posts from all Blogs as one single collection. However, typically you'd want to list all Posts from only the Blog they belong to (their "parent" Blog).

To do this we add the filterBy and filterValue attributes to the Component tag.

Typically, you would be listing Blog specific Posts on your Blog detail page/index page. In which case you would be editing the 'General Blog Layout' to insert your Component tag, which would look like this:

{% component type: "module", source: "Blog Posts", layout: "List", filterBy: "parentId", filterValue: "{{this['id']}}" %}

As we are within the Blog's detail Layout (which represents the 'parent' Blog) we can reference its ID for the filter value using {{this['id']}} and instruct the Component tag to filter the Posts only by their parent (filterBy: "parentID") - giving us only the relevant Posts for the current Blog.

You may however, want to render a list of Posts on a standard page or within another modules layout, where the Post's parent ID (the Blog it belongs to) is not readily available to us in the Liquid scope. In this case you would need to manually hardcode the desired parent Blog's ID into the component tag in place of the above Liquid generated ID (filterValue: "1234").

To obtain the Blog's ID from the admin, go to that Blog's list view (where you can see all of the Posts) and note the number in the URL address bar shown after the parentID= parameter.

Counter

Along with the data output above, there is also a special liquid tag available {{counter}} which increments for each item. This tag is only available within Layouts when object: "item" is used in the Component tag.

Events

Parityhigh Efforthigh Timemed Docslow Migration Toolactive

Treepl CMS Events are similar to BC Events and can be set up quite easily.

The BC to Treepl CMS Migration App can be used to automate Event migrations as well as transfer Event booking data from the CRM into Treepl CMS CRM.

For manual migrations, getting the data out of BC is a problem... although, you could likely use a similar approach to the Blog Export Helper above.

You can also upload your BC module layouts into your Treepl CMS instance via FTP into the ‘Content / ModuleLayouts / <Event> & <EventGroup>’ directories.

Photo Galleries

Paritymed Effortmed Timemed Docsmed Migration Toolactive

Galleries in Treepl CMS work more like WebApps, so each image is an item within the parent module. This brings greater control in the long run, however migrating images and data to this new format can make migration a little more involved.

The BC to Treepl CMS Migration App can be used to automate this process.

If manually transferring your galleries, see this very helpful method of extracting the BC data in a ready format for Treepl CMS posted in the Treepl CMS Forum:

BC Photo Galleries Export Helper

For more information about the Galleries/Sliders module see the documentation articles.

Gallery/Slider Group module

View full article

This module component fetches data relating to Gallery/Sliders.

{% component type: "module", source: "Gallery/Slider", layout: "List" %}

Parameters and Options

Parameter Values Required Description
type module (default)
module_of_member

This is the name of the entity that needs to be used for the component retrieving function.

module is the standard retrieving function to retrieve all items.

module_of_member retrieves only those items "Added by" the currently logged in user (identified by the CreatedByMemberId property in the module items Liquid data).

The "Added by" System Property will only be available where the modules settings have "Allow Add New Items" turned on under the "Site User Permissions".

source Gallery/Slider (default) The entity/alias name or ID that the data is to be sourced from.
layout List (default)
<Your Layout name>

The layout name you want to use for rendering the component. The layout name is referenced from the available Layouts of the source specified.

While this parameter is required to render your Layout markup, if the parameter is blank, has an incorrectly referenced Layout, or is removed altogether then the component will still output the modules item data to a Liquid collection which can be accessed via the collectionVariable parameter.

filterBy id
parentid
name
weighting
url
urlslug
releasedate
expirydate
LastUpdatedDate
Author
ItemCategories
ItemTags
<CustomPropertyName>
...and any other top level properties available for the module

The name of the property to filter by. If empty or not present, no filtering will be used.

Remove spaces from custom property names here.

filterValue <your value>
Your specific value to filter by, eg: name, id, number, date, etc.
Liquid variables can be used here also. If present but no value set, no items will be returned.
sortBy id
parentid
name
weighting
url
urlslug
releasedate
expirydate
LastUpdatedDate
Author
ItemCategories
ItemTags
<CustomPropertyName>
...and any other top level properties available for the module

The name of the property to sort by. If empty or not present, alpha/numeric sorting will be used.

Remove spaces from custom property names here.

sortOrder ASC (default)
DESC

ASC sorts the items in ascending order while DESC sorts in descending order (based on alpha/numeric or date sorting).
If empty or not present, alpha/numeric sorting will be used.
random false (default)
true

Displays the available items in a random order.

If used in conjunction with sortBy, that sorting criteria will be applied to the randomly retrieved results. So, if retrieving all, or most, of the items they will not appear to be random since they will then be sorted back into a logical order. To overcome this, set the sortBy parameter to 'enabled' (or another unused property) as this will not provide any viable sorting criteria* and the items will not be sorted from their initial random order.
* Unless there are weighted items, which will always override the random option.

limit 10 (default)
<number>

The maximum number of items returned. If displayPagination is enabled this determines the maximum number of items per page.
enablePagination true (default)
false

Enables/disables pagination for the component.

This is useful for avoiding pagniation affects for a specific component when multiple components of the same module are output on the same page and do use pagination.

displayPagination false (default)
true

Displays pagination if there are more items available than the limit set.
emptyMessage <Your custom message>
Custom content that is rendered if no items are returned by the Component. The default is no content.
Liquid variables are supported here, although Liquid logic tags and HTML are not.

If using Liquid variables with filters added, be sure to change any double quotes to single quotes. For eg:
emptyMessage: “{{ myVariable | prepend: 'Error: ' }}”

To use HTML in your empty message, first capture it using a Liquid capture, then insert the capture variable into the emptyMessage parameter.

object item (default)
collection

Determines the method for Liquid rendering.
item returns each item iteratively, one after another, for output (generally, output to a container element with no need for looping through the data).
collection returns all items as one collection for output (your container element and looping logic would be handled in the Components Layout).
collectionVariable <yourLiquidVariableName>
Assigns the data to a Liquid collection enabling further access to the data on the Page or Template using Liquid.

Your collectionVariable value must only contain English letters, numbers or underscores. Spaces or special characters are not supported.

isSearchResult false (default)
true

Allows search parameters in the URL to override the components output. Therefore, this parameter can be used to output module specific search results from a submitted search form.

Likewise, Tag, Category, and Archive components can be used in conjunction with this parameter for filtering the module's output.

URL search parameters will override any corresponding parameters in the component. If no search parameters are present in the URL, isSearchResult will be ignored.

Any value other than true, (including an empty value), will disable the search functionality and the component will output its regular data.

searchScope eg:
{'prop_ParentId':'1234', 'prop_ReleaseDate_Min':'2018-07-01', 'prop_ReleaseDate_Max':'2018-07-31', 'prop_KeyWords':'Your Keywords', 'prop_ItemTags':['tag1','tag2'], 'page':'2'}

Allows a search on the module without search parameters needed in the URL. Instead, search parameters are added to the value of this parameter. Therefore, this parameter can be used to output module specific search results from hard-coded (or Liquid) values without the use of a search form.

Added search parameters will override any corresponding parameters otherwise configured on the component. If no search parameters are present, searchScope will be ignored.

This value supports Liquid and can therefore be constructed with Liquid data/variables.

<customParameter> <your custom value>
You can add your own additional parameters (name/value pairs) to the Component tag. These will be passed to the Components Layout (and the collectionVariable if used) for use via Liquid.

Your <customParameter> name must only contain English letters, numbers or underscores. Spaces or special characters are not supported.

You can use HTML as the value here, just be sure to change any double quotes in your HTML to single quotes.

Liquid Output

The below example has 2 sample items (Gallery/Sliders), but is otherwise the default structure you will get from this Component.

{
  "Pagination": {
  "CurrentPage": 1,
  "ItemsPerPage": 10,
  "NumberOfPages": 1,
  "TotalItemsCount": 2
},
  "Items": [
  {
    "Id": 2296,
    "Url": "/_gallery-slider/demo-custom-gallery",
    "ParentId": 1564,
    "LastUpdatedDate": "2018-12-16T00:15:21",
    "Name": "DEMO Custom Gallery",
    "UrlSlug": "demo-custom-gallery",
    "Enabled": true,
    "ReleaseDate": "2018-12-15T18:00:00",
    "ExpiryDate": "2099-12-10T18:00:00",
    "Weighting": 0,
    "Description": "",
    "ItemTags": null,
    "Author_Name": null,
    "Author_Url": null,
    "Author": "",
    "SEOTitle": "",
    "MetaTitle": "",
    "MetaDescription": "",
    "ShowPageForSearchEngine": false,
    "CanonicalLink": "",
    "EnableAMP": false,
    "AMPContent": "",
    "CodeEditor": false,
    "ExternalId": 0,
    "SocialMetaTags": "",
    "OpenGraphProperties": "",
    "DisableForSiteSearch": false,
    "SeoPriority": "",
    "CreatedByMemberId": 0,
    "ItemCategories": null,
    "ItemCategoryIdList": null,
    "SKUCode": "",
    "SiteSearchKeywords": "",
    "Module_ID": 1540,
    "Module_Alias": "GallerySlider"
  },
  {
    "Id": 2295,
    "Url": "/_gallery-slider/demo-standard-gallery",
    "ParentId": 1564,
    "LastUpdatedDate": "2018-12-16T00:14:59",
    "Name": "DEMO Standard Gallery",
    "UrlSlug": "demo-standard-gallery",
    "Enabled": true,
    "ReleaseDate": "2018-12-15T18:00:00",
    "ExpiryDate": "2099-12-10T18:00:00",
    "Weighting": 0,
    "Description": "<p>Gallery description...</p>",
    "ItemTags": null,
    "Author_Name": null,
    "Author_Url": null,
    "Author": "",
    "SEOTitle": "",
    "MetaTitle": "",
    "MetaDescription": "",
    "ShowPageForSearchEngine": false,
    "CanonicalLink": "",
    "EnableAMP": false,
    "AMPContent": "",
    "CodeEditor": false,
    "ExternalId": 0,
    "SocialMetaTags": "",
    "OpenGraphProperties": "",
    "DisableForSiteSearch": false,
    "SeoPriority": "",
    "CreatedByMemberId": 0,
    "ItemCategories": null,
    "ItemCategoryIdList": null,
    "SKUCode": "",
    "SiteSearchKeywords": "",
    "Module_ID": 1540,
    "Module_Alias": "GallerySlider"
  }
],
  "Params": {},
  "Parent": {
  "Id": 2140,
  "Url": "/component-types/module-gallery-slider",
  "ParentId": 2127,
  "LastUpdatedDate": "2020-05-20T00:50:58",
  "Name": "module (Gallery/Slider)",
  "UrlSlug": "module-gallery-slider",
  "Enabled": true,
  "ReleaseDate": "2018-09-05T00:00:00",
  "ExpiryDate": "2099-12-09T00:00:00",
  "Weighting": 950,
  "Description": "<p>This module component fetches data relating to Gallery/Sliders.</p>\r\n\r\n{% component type: \"snippet\", alias: \"code_block_processor\", data: \"{{data}}\", lang: \"liquid\" %}\r\n\r\n\r\n{% component type: \"snippet\", alias: \"section_parameters\" %}\r\n\r\n{% component type: \"snippet\", alias: \"param_table_head\" %}\r\n    {% component type: \"snippet\", alias: \"param_type\", required: \"true\", values: \"module <em>(default)</em>,module_of_member\" %}\r\n    {% component type: \"snippet\", alias: \"param_source\", required: \"true\", values: \"Gallery/Slider <em>(default)</em>\" %}\r\n    {% component type: \"snippet\", alias: \"param_layout\", required: \"true\", values: \"List <em>(default)</em><br>&lt;Your Layout name&gt;\" %}\r\n    {% component type: \"snippet\", alias: \"param_filterby\" %}\r\n    {% component type: \"snippet\", alias: \"param_filtervalue\" %}\r\n    {% component type: \"snippet\", alias: \"param_sortby\" %}\r\n    {% component type: \"snippet\", alias: \"param_sortorder\" %}\r\n    {% component type: \"snippet\", alias: \"param_random\" %}\r\n    {% component type: \"snippet\", alias: \"param_limit\" %}\r\n    {% component type: \"snippet\", alias: \"param_enablepagination\" %}\r\n    {% component type: \"snippet\", alias: \"param_displaypagination\" %}\r\n    {% component type: \"snippet\", alias: \"param_emptymessage\" %}\r\n    {% component type: \"snippet\", alias: \"param_object\" %}\r\n    {% component type: \"snippet\", alias: \"param_collectionvariable\" %}\r\n    {% component type: \"snippet\", alias: \"param_issearchresult\" %}\r\n    {% component type: \"snippet\", alias: \"param_searchscope\" %}\r\n    {% component type: \"snippet\", alias: \"param_customparameter\" %}\r\n{% component type: \"snippet\", alias: \"param_table_foot\" %}\r\n\r\n{% component type: \"snippet\", alias: \"section_output\" %}\r\n\r\n{% component source: \"Gallery/Slider\", layout: "", type: \"module\", collectionVariable: \"allGalleries\" %}\r\n<p>The below example has 2 sample <code>items</code> (Gallery/Sliders), but is otherwise the default structure you will get from this Component.</p>\r\n{% component type: \"snippet\", alias: \"code_block_processor\", data: \"{{allGalleries}}\", lang: \"json\" %}\r\n\r\n{% component type: \"snippet\", alias: \"section_accessing_data\" %}\r\n\r\n<p>This data is accessible in two main ways:</p>\r\n\r\n<p>1. Using Liquid in the specified Layout via the <code>this</code> object.</p>\r\n\r\n{% component type: \"snippet\", alias: \"code_block_processor\", data: \"{{data}}\", lang: \"liquid\" %}\r\n\r\n<p>2. Directly on the Page or Template via a Liquid Collection if <code>collectionVariable</code> was added to the Component tag.</p>\r\n\r\n<p>An example using <code>collectionVariable</code> with value \"allGalleries\" to list all \"Gallery/Sliders\" across the site:</p>\r\n<p class=\"notice-note\">Here we suppress any Layout from rendering by setting <code>layout: \"\"</code> as an empty attribute.</p>\r\n\r\n{% component type: \"snippet\", alias: \"code_block_processor\", data: \"{{data}}\", lang: \"liquid\" %}\r\n\r\n<p><em>Looping through the collection to render all the item names in a list, giving us:</em></p>\r\n\r\n<ul>\r\n    \r\n        <li>DEMO Custom Gallery</li>\r\n    \r\n        <li>DEMO Standard Gallery</li>\r\n    \r\n</ul>\r\n<br>\r\n<p><em>The code:</em></p>\r\n\r\n{% component type: \"snippet\", alias: \"code_block_processor\", data: \"{{data}}\", lang: \"liquid\" %}\r\n\r\n<p><em>Accessing a specific item within the collection. In this case the second item (zero based index), which in our example would render the value <code>DEMO Standard Gallery</code></em></p>\r\n\r\n{% component type: \"snippet\", alias: \"code_block_processor\", data: \"{{data}}\", lang: \"liquid\" %}\r\n\r\n{% component type: \"snippet\", alias: \"section_counter\" %}\r\n",
  "ItemTags": [
  "Galleries/Sliders"
],
  "Author_Name": "",
  "Author_Url": "",
  "Author": "",
  "SEOTitle": "",
  "MetaTitle": "",
  "MetaDescription": "",
  "ShowPageForSearchEngine": true,
  "CanonicalLink": "",
  "EnableAMP": false,
  "AMPContent": "",
  "CodeEditor": true,
  "ExternalId": 0,
  "SocialMetaTags": "",
  "OpenGraphProperties": "",
  "DisableForSiteSearch": false,
  "SeoPriority": "",
  "CreatedByMemberId": 0,
  "ItemCategories": "",
  "ItemCategoryIdList": "",
  "SKUCode": "",
  "SiteSearchKeywords": "",
  "Active": true,
  "IgnoreUpdates": false,
  "UpdateNotes": "'module_of_member' parameter details added.",
  "UpdatesLog": "",
  "ExternalResources": "",
  "AdditionalRelatedArticle_Name": "",
  "AdditionalRelatedArticle_Url": "",
  "AdditionalRelatedArticle": "",
  "AdditionalRelatedArticle2_Name": "",
  "AdditionalRelatedArticle2_Url": "",
  "AdditionalRelatedArticle2": "",
  "Authors": "2418",
  "Module_ID": 1870,
  "Module_Alias": "DocumentationPost",
  "Pagination": {
  "CurrentPage": 1,
  "ItemsPerPage": 1,
  "NumberOfPages": 1,
  "TotalItemsCount": 1
},
  "Params": {},
  "Parent": {
  "Id": 2359,
  "Url": "/bc-migration-guides/ultimate-migration-guide-step-by-step",
  "ParentId": 2355,
  "LastUpdatedDate": "2020-09-09T19:27:22",
  "Name": "Ultimate Migration Guide (Step by Step)",
  "UrlSlug": "ultimate-migration-guide-step-by-step",
  "Enabled": true,
  "ReleaseDate": "2019-02-17T00:00:00",
  "ExpiryDate": "2099-11-30T00:00:00",
  "Weighting": 800,
  "Description": "<div class=\"migration-guide\">\r\n    <div style=\"display:none;\">106</div>\r\n    <p>So you’ve decided to move your site across to Treepl CMS. Good choice.</p>\r\n    <p>And you’ve decided to do it yourself. Good for you! You’re probably going to be doing this quite a few times so let’s make it fun…</p>\r\n    <p>Set aside a good chunk of uninterrupted time, crank up your favourite tunes and grab a strong drink. It’s migration time.</p>\r\n    <p class=\"notice-note\">The below sections are ordered to try and minimise the amount of back and forth when creating the various components of a site.If a section doesn’t apply to your site, feel free to skip right over it.</p>\r\n    <p class=\"notice-note\">Migration tools are in development that will progressively make the below steps easier. These sections will be updated as those tools are released.</p>\r\n    <p class=\"notice-tip\">The BC to Treepl CMS Migration App now converts BC Liquid tags, ie: <code>{module_…}</code> and <code>{tag_…}</code> to Treepl CMS Liquid tags! For more info on this, view the Forum discussion <a href=\"https://forum.treepl.co/t/attention-to-bc-to-treepl-app-users/497\" target=\"_blank\">here</a>.</p>\r\n    <h2 id=\"secBCSiteFTPDownload\" class=\"circle-wrap\"><div class=\"circle\">107</div>Download the BC Site via FTP</h2>\r\n    {% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secBCSiteFTPDownload\", parity: \"high\", effort: \"low\", time: \"low\", docs: \"high\", tool: \"high\" %}\r\n    \r\n    <p>Download all files available via FTP from your BC site, if for no other reason than to just have a backup. However, these files can be referenced in the following steps as well.</p>\r\n    <p>You can also automatically migrate all files in the BC file system directly to your Treepl CMS site via the <a href=\"https://www.bcappstore.com/apps/bc-to-treepl\" target=\"_blank\">BC to Treepl CMS  Migration App</a>.</p>\r\n    <p>There is also now the ability to download a .zip archive of your BC site, including data from the following modules:</p>\r\n    <ul>\r\n    \t<li>Pages</li>\r\n        <li>Page Templates</li>\r\n        <li>Module Layouts</li>\r\n        <li>Static files</li>\r\n        <li>Apps</li>\r\n        <li>Content Holders</li>\r\n        <li>System Pages</li>\r\n        <li>Email Templates</li>\r\n        <li>Web Apps</li>\r\n    </ul>\r\n    <p><b>Further Resources:</b></p>\r\n    <a class=\"btn small\" href=\"https://docs.worldsecuresystems.com/user-manual/site-design/bc-and-dreamweaver/connect-to-your-site-using-dreamweaver\" target=\"_blank\">BC FTP connection details</a>\r\n    <a class=\"btn small\" href=\"https://docs.worldsecuresystems.com/Partners/downloading-your-website#Downloadingyoursitearchive\" target=\"_blank\">BC .zip archive</a>\r\n    \r\n    <h2 id=\"secBCSiteDeepClean\" class=\"circle-wrap\"><div class=\"circle\">108</div>Deep-Clean the BC Site (Optional)</h2>\r\n    {% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secBCSiteDeepClean\", parity: \"na\", effort: \"med\", time: \"med\", docs: \"na\", tool: \"na\" %}\r\n    <p>This step is optional, but you may want to take the opportunity to clear out the BC site of old pages, templates, files, etc. Particularly if it’s an old site, there can be a lot of junk floating around. And this can just get in your way during migration and could cause unnecessary work. However, be very careful not to remove assets that may still be in use somewhere (hence the backup in the previous step).</p>\r\n    <p>Once you’ve cleaned up, repeat the FTP download step to collect a new, clean, set of files.</p>\r\n    \r\n    <h2 id=\"secTreeplCMSInstance\" class=\"circle-wrap\"><div class=\"circle\">109</div>Setup Treepl CMS Site Instance</h2>\r\n    {% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secTreeplCMSInstance\", parity: \"high\", effort: \"low\", time: \"low\", docs: \"high\", tool: \"na\" %}\r\n    <p>So you can start work with the Treepl CMS platform you'll need to set up a Trial Site. Log into your Treepl Portal (portal.treepl.co) and click the \"Create New Site\" button.</p>\r\n    <div class=\"tab-content faqsOpenCloseHolder\">\r\n    <div class=\"faqs-open-close \">\r\n        <a class=\"opener\" href=\"#\"><i class=\"fas fa-angle-right\"></i>Trial Site Documentation</a>\r\n        <div class=\"slide js-slide-hidden\">\r\n            {% component source: \"Documentation Post\", layout: \"Body Detail\", filterBy: \"id\", filterValue: \"2151\", limit: \"1\", type: \"module\" %}\r\n        </div>\r\n    </div>\r\n    </div>\r\n    \r\n    <h2 id=\"secHostedEmailTransfer\" class=\"circle-wrap\"><div class=\"circle\">110</div>Start BC Hosted Email Transfer Process (If Applicable)</h2>\r\n    {% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secHostedEmailTransfer\", parity: \"na\", effort: \"low\", time: \"med\", docs: \"high\", tool: \"low\" %}\r\n    <p>If your BC site has BC hosted emails, they can be transferred directly to Treepl CMS after following the below steps.</p>\r\n    <div class=\"tab-content faqsOpenCloseHolder\">\r\n    <div class=\"faqs-open-close \">\r\n        <a class=\"opener\" href=\"#\"><i class=\"fas fa-angle-right\"></i>Transfer of BC Hosted Email Accounts</a>\r\n        <div class=\"slide js-slide-hidden\">\r\n            {% component source: \"Documentation Post\", layout: \"Body Detail\", filterBy: \"id\", filterValue: \"2185\", limit: \"1\", type: \"module\" %}\r\n        </div>\r\n    </div>\r\n    </div>\r\n    \r\n    <h2 id=\"secUploadSiteAssets\" class=\"circle-wrap\"><div class=\"circle\">111</div>Upload Site Assets</h2>\r\n    {% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secUploadSiteAssets\", parity: \"high\", effort: \"low\", time: \"low\", docs: \"high\", tool: \"high\" %}\r\n    <p>Now we'll want to connect to our new Treepl CMS instance via FTP so we can upload some of our BC assets.</p>\r\n    <p>If working manually, we'll probably only want to upload assets relating to the front-end site, such as images, CSS, JS, documents, etc. We don't want to move over pages, templates or other layout files just yet.</p>\r\n    <p>Below are instructions for getting connected via FTP client.</p>\r\n    <div class=\"tab-content faqsOpenCloseHolder\">\r\n        <div class=\"faqs-open-close \">\r\n            <a class=\"opener\" href=\"#\"><i class=\"fas fa-angle-right\"></i>FTP Access Documentation</a>\r\n            <div class=\"slide js-slide-hidden\">\r\n                {% component source: \"Documentation Post\", layout: \"Body Detail\", filterBy: \"id\", filterValue: \"1936\", limit: \"1\", type: \"module\" %}\r\n            </div>\r\n        </div>\r\n    </div>\r\n    <p>Alternatively, you can automatically migrate all files in the BC file system directly to your Treepl CMS site via the <a href=\"https://www.bcappstore.com/apps/bc-to-treepl\" target=\"_blank\">BC to Treepl CMS  Migration App</a>.</p>\r\n    \r\n    <h2 id=\"secSetupPlaceholderTemplates\" class=\"circle-wrap\"><div class=\"circle\">112</div>Upload or Setup Placeholder Templates</h2>\r\n    {% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secSetupPlaceholderTemplates\", parity: \"high\", effort: \"low\", time: \"low\", docs: \"med\", tool: \"high\" %}\r\n    <p>You can manually upload your BC page templates into your Treepl CMS instance via FTP into the ‘Content / ContentTemplates’ directory.</p>\r\n    <p>Alternatively the <a href=\"https://www.bcappstore.com/apps/bc-to-treepl\" target=\"_blank\">BC to Treepl CMS  Migration App</a> can be used to automate this process.</p>\r\n    <p>If manually migrating templates, don’t worry about editing the template code/markup at this stage. We just want to get them loaded in Treepl CMS so we can reference it in the following steps. We’ll work on the template code later.</p>\r\n    \r\n    <p>If not using FTP, to manually create a content template, go to 'Content' &gt; 'Content Templates'.</p>\r\n    <p>Click ‘Add New Template’ button.</p>\r\n    <p>Just complete ‘Name’ and choose whether it's the default template. Leave the content as is for now.</p>\r\n    <p>Repeat this for all required templates.</p>\r\n    \r\n    <div class=\"tab-content faqsOpenCloseHolder\">\r\n    <div class=\"faqs-open-close \">\r\n        <a class=\"opener\" href=\"#\"><i class=\"fas fa-angle-right\"></i>Content Templates Documentation</a>\r\n        <div class=\"slide js-slide-hidden\">\r\n            {% component source: \"Documentation Post\", layout: \"Body Detail\", filterBy: \"id\", filterValue: \"2132\", limit: \"1\", type: \"module\" %}\r\n        </div>\r\n    </div>\r\n    </div>\r\n    \r\n    <h2 id=\"secSetupSitePages\" class=\"circle-wrap\"><div class=\"circle\">113</div>Upload or Setup Site Pages</h2>\r\n    {% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secSetupSitePages\", parity: \"high\", effort: \"low\", time: \"low\", docs: \"med\", tool: \"high\" %}\r\n    <p>Upload your BC pages into your Treepl CMS instance via FTP into the ‘Content / Pages’ directory.</p>\r\n    <p>Alternatively the <a href=\"https://www.bcappstore.com/apps/bc-to-treepl\" target=\"_blank\">BC to Treepl CMS  Migration App</a> can be used to automate this process.</p>\r\n    <p>If manually migration pages, there will still be several properties you will want to set for each page, such as a more relevant system name, assigning it to a template, SEO and meta details, etc. and we’ll likely need to review the page content for any system tags or Liquid\r\n        that needs replacing. However, all in good time and we’ll take those actions in a later step. For now we just want to get the bulk of the setup in place.</p>\r\n    \r\n    <div class=\"tab-content faqsOpenCloseHolder\">\r\n    <div class=\"faqs-open-close \">\r\n        <a class=\"opener\" href=\"#\"><i class=\"fas fa-angle-right\"></i>Pages Documentation</a>\r\n        <div class=\"slide js-slide-hidden\">\r\n            {% component source: \"Documentation Post\", layout: \"Body Detail\", filterBy: \"id\", filterValue: \"2131\", limit: \"1\", type: \"module\" %}\r\n        </div>\r\n    </div>\r\n    </div>\r\n    \r\n    <h2 id=\"secReplicateMenus\" class=\"circle-wrap\"><div class=\"circle\">114</div>Replicate Menus & Menu Layouts</h2>\r\n    {% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secReplicateMenus\", parity: \"high\", effort: \"med\", time: \"med\", docs: \"high\", tool: \"high\" %}\r\n    <p>You can easily recreate your BC menus into your Treepl CMS instance via the admin ‘Content' > 'Menus’, and copy over and adjust your menu layouts.</p>\r\n    <p>Alternatively the <a href=\"https://www.bcappstore.com/apps/bc-to-treepl\" target=\"_blank\">BC to Treepl CMS  Migration App</a> can be used to automate this process.</p>\r\n    <p>If manually recreating your menus you can follow the documentation and tips below:</p>\r\n    \r\n    <div class=\"tab-content faqsOpenCloseHolder\">\r\n        <div class=\"faqs-open-close \">\r\n            <a class=\"opener\" href=\"#\"><i class=\"fas fa-angle-right\"></i>Menus Documentation</a>\r\n            <div class=\"slide js-slide-hidden\">\r\n                {% component source: \"Documentation Post\", layout: \"Body Detail\", filterBy: \"id\", filterValue: \"1966\", limit: \"1\", type: \"module\" %}\r\n            </div>\r\n        </div>\r\n    </div>\r\n    \r\n    <h3>BC Menu V2</h3>\r\n    <p>If using BC’s menu v2 method for your menus, upload your menu layouts from ‘ModuleTemplates / Menu / &lt;menu-name&gt;’ into the corresponding Treepl CMS menu layouts in ‘Content / MenuLayouts / &lt;menu_alias_name&gt;’</p>\r\n    <p>The corresponding layouts from BC to Treepl CMS are:</p>\r\n    <ul>\r\n        <li>“container.html” --&gt; “menu.layout”</li>\r\n        <li>“group.html” --&gt; “item.layout”</li>\r\n        <li>“childitem.html” --&gt; “sub_items.layout”</li>\r\n    </ul>\r\n    <p>Now, we’re finally going to get our hands dirty with some code.</p>\r\n    <p>We’ll need to convert the BC tags into the Treepl CMS way of doing things. Let’s reference the Menu documentation above while doing this.</p>\r\n    <p>Starting with the “menu.layout” file you'll want to weave your HTML markup into the Treepl CMS Liquid so that the Liquid logic renders the same markup you are referencing from BC.</p>\r\n    <p>Next, do the same with the “item.layout” file, weaving in the BC “group.html” markup.</p>\r\n    <p>Finally, the “sub_items.layout” file,</p>\r\n    <p>Repeat for each menu group you are using.</p>\r\n    <p>If you have multiple menus using the same layout group in BC, simply copy the same code you just set up into each menu layout files (menus don’t share layouts in Treepl CMS).</p>\r\n    \r\n    <h3>BC Menu V1 (legacy module)</h3>\r\n    <p>If using BC’s original/legacy menu method, we’ll need to reference the rendered source code for your menu in the browser.</p>\r\n    <p>Load one of your BC site pages that features the menu. View the page source (right click, 'View Source') and identify the complete section of menu elements including the BC JS references.</p>\r\n    <p>Copy the menu elements into your “menu.layout” file so we can start working on converting that code.</p>\r\n    <p>Back in the source view, for the two JS references BC outputs, right click on the source links and save those JS files to your BC site files in an appropriate directory and than upload those to Treepl CMS in the corresponding directory.</p>\r\n    <p>Back in your menu layout, we'll relink the JS references to point to the new location.</p>\r\n    <p>Work through recoding the menu HTML into the Treepl CMS menu layouts to complete the process.</p>\r\n    \r\n    \r\n    <h2 id=\"secSetupSecureZones\" class=\"circle-wrap\"><div class=\"circle\">115</div>Setup Secure Zones</h2>\r\n    {% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secSetupSecureZones\", parity: \"high\", effort: \"low\", time: \"low\", docs: \"high\", tool: \"high\" %}\r\n    <p>Recreating all Secure Zones from BC into Treepl CMS is a fairly straight forward process.</p>\r\n    <p>Alternatively the <a href=\"https://www.bcappstore.com/apps/bc-to-treepl\" target=\"_blank\">BC to Treepl CMS  Migration App</a> can be used to automate this process.</p>\r\n    <p>If manually recreating your Secure Zones, you can follow the steps below:</p>\r\n    <p>Go to ‘Content’ &gt; ‘Secure Zones’</p>\r\n    <p>Click ‘Add Secure Zone’ button.</p>\r\n    <p>Complete ‘Name’ and ‘Landing Page’ then “Next” to save and move to ‘Step 2: Secure Content’.</p>\r\n    <p>Pages will be ready for you to secure, however most other content we havn't migrated over yet so you'll need to revisit this section to secure all relevant items.</p>\r\n    <p>Click “Next” to save and move to ‘Step 3: Members’</p>\r\n    <p>Here you can manage the members subscribed to the secure zone.</p>\r\n    <p>For further documentation expand the box below:</p>\r\n    <div class=\"tab-content faqsOpenCloseHolder\">\r\n        <div class=\"faqs-open-close \">\r\n            <a class=\"opener\" href=\"#\"><i class=\"fas fa-angle-right\"></i>Secure Zones Documentation</a>\r\n            <div class=\"slide js-slide-hidden\">\r\n                {% component source: \"Documentation Post\", layout: \"Body Detail\", filterBy: \"id\", filterValue: \"2199\", limit: \"1\", type: \"module\" %}\r\n            </div>\r\n        </div>\r\n    </div>\r\n    \r\n    <h2 id=\"secSetupMailingListsMC\" class=\"circle-wrap\"><div class=\"circle\">116</div>Setup Mailing Lists (MailChimp)</h2>\r\n    {% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secSetupMailingListsMC\", parity: \"low\", effort: \"med\", time: \"low\", docs: \"high\", tool: \"low\" %}\r\n    <p>Before you can set up Mailing Lists in Treepl CMS you need to connect a MailChimp account using their provided API key.</p>\r\n    <p>Below are documentation for setting up the API connection and further inofrmation about adding Mailing Lists.</p>\r\n    \r\n    <div class=\"tab-content faqsOpenCloseHolder\">\r\n        <div class=\"faqs-open-close \">\r\n            <a class=\"opener\" href=\"#\"><i class=\"fas fa-angle-right\"></i>API Provider Documentation</a>\r\n            <div class=\"slide js-slide-hidden\">\r\n                {% component source: \"Documentation Post\", layout: \"Body Detail\", filterBy: \"id\", filterValue: \"2311\", limit: \"1\", type: \"module\" %}\r\n            </div>\r\n        </div>\r\n        <div class=\"faqs-open-close \">\r\n            <a class=\"opener\" href=\"#\"><i class=\"fas fa-angle-right\"></i>Mailing Lists Documentation</a>\r\n            <div class=\"slide js-slide-hidden\">\r\n                {% component source: \"Documentation Post\", layout: \"Body Detail\", filterBy: \"id\", filterValue: \"2310\", limit: \"1\", type: \"module\" %}\r\n            </div>\r\n        </div>\r\n    </div>\r\n    \r\n    <p>Currently, Email Campaigns would generally be managed in MailChimp for full functionality of the MailChimp service. However, basic Email Campaigns can be add via Treepl CMS and pushed to MailChimp.<br>\r\n    <em>More documentation coming soon on this.</em></p>\r\n    \r\n    <h2 id=\"secSetupSiteSearch\" class=\"circle-wrap\"><div class=\"circle\">117</div>Setup Site Search</h2>\r\n    {% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secSetupSiteSearch\", parity: \"med\", effort: \"low\", time: \"low\", docs: \"med\", tool: \"low\" %}\r\n    <p>You don’t need to set up any Site Search module in Treepl CMS. This functionality is ready to use simply by inserting the search form and component tag.</p>\r\n    <p>So there is nothing you need to do in this step.</p>\r\n    <p>Later in the migration we’ll need to replace any BC site search forms so we’ll reference back to this documentation:</p>\r\n    <div class=\"tab-content faqsOpenCloseHolder\">\r\n        <div class=\"faqs-open-close \">\r\n            <a class=\"opener\" href=\"#\"><i class=\"fas fa-angle-right\"></i>Site Search Documentation - COMING SOON...</a>\r\n            <div class=\"slide js-slide-hidden\">\r\n                {% component source: \"Documentation Post\", layout: \"Body Detail\", filterBy: \"id\", filterValue: \"2356\", limit: \"1\", type: \"module\" %}\r\n            </div>\r\n        </div>\r\n        <div class=\"faqs-open-close \">\r\n            <a class=\"opener\" href=\"#\"><i class=\"fas fa-angle-right\"></i>Site Search Component Documentation</a>\r\n            <div class=\"slide js-slide-hidden\">\r\n                {% component source: \"Documentation Post\", layout: \"Body Detail\", filterBy: \"id\", filterValue: \"1959\", limit: \"1\", type: \"module\" %}\r\n            </div>\r\n        </div>\r\n    </div>\r\n    \r\n    <h2 id=\"secReplicateURLRedirects\" class=\"circle-wrap\"><div class=\"circle\">118</div>Replicate Existing URL Redirects</h2>\r\n    {% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secReplicateURLRedirects\", parity: \"high\", effort: \"med\", time: \"med\", docs: \"high\", tool: \"high\" %}\r\n    <p>While you can import URL Redirects into Treepl CMS in bulk, BC doesn't have an export function available from their admin, so you’ll need to enter URL redirects manually. Alternatively the <a href=\"https://www.bcappstore.com/apps/bc-to-treepl\" target=\"_blank\">BC to Treepl CMS  Migration App</a> can be used to automate this process.</p>\r\n    <p>See below for more information on URL Redirects.</p>\r\n    <div class=\"tab-content faqsOpenCloseHolder\">\r\n        <div class=\"faqs-open-close \">\r\n            <a class=\"opener\" href=\"#\"><i class=\"fas fa-angle-right\"></i>URL Redirects Documentation</a>\r\n            <div class=\"slide js-slide-hidden\">\r\n                {% component source: \"Documentation Post\", layout: \"Body Detail\", filterBy: \"id\", filterValue: \"2210\", limit: \"1\", type: \"module\" %}\r\n            </div>\r\n        </div>\r\n    </div>\r\n    \r\n    <h2 id=\"secSetupAdminUserRoles\" class=\"circle-wrap\"><div class=\"circle\">119</div>Setup Admin User Roles</h2>\r\n    {% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secSetupAdminUserRoles\", parity: \"med\", effort: \"low\", time: \"low\", docs: \"med\", tool: \"low\" %}\r\n    <p>While we won’t be adding Admin Users just yet, we’ll still get the User Roles set up and in place ready to assign users to in a later step.</p>\r\n    <p>To set up Admin User Roles, go to ‘Settings’ &gt; ‘Admin User Roles’</p>\r\n    <p>Click ‘Add Admin Role’ button.</p>\r\n    <p>Complete a 'Name' for your Role and configure the permissions, turning off checkboxes to block users access to those items.</p>\r\n    <p class=\"notice-note\">Many permission items have nested items for further fine-grain control.</p>\r\n    \r\n    \r\n    \r\n    <h2 id=\"secSetupNotificationWorkflow\" class=\"circle-wrap\"><div class=\"circle\">120</div>Setup Email Notification Workflow/s</h2>\r\n    {% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secSetupNotificationWorkflow\", parity: \"med\", effort: \"low\", time: \"low\", docs: \"high\", tool: \"high\" %}\r\n    <p>We’ll set up the default Notification Workflow email (and additional ones if needed - make sure you’re site plan supports multiple Workflow Emails if you need more than one Workflow)</p>\r\n    <p>You can optionally, upload your BC workflow email layouts into your Treepl CMS instance via FTP into the ‘Content / SystemEmails’ directory. However, if you only have a few email layouts it may be better to set these up via the Admin as you'll need to configure other settings as well.</p>\r\n    <p>Alternatively the <a href=\"https://www.bcappstore.com/apps/bc-to-treepl\" target=\"_blank\">BC to Treepl CMS  Migration App</a> can be used to automate this process.</p>\r\n    <p>See below for documentation on Workflows.</p>\r\n    <div class=\"tab-content faqsOpenCloseHolder\">\r\n        <div class=\"faqs-open-close \">\r\n            <a class=\"opener\" href=\"#\"><i class=\"fas fa-angle-right\"></i>Workflows Documentation</a>\r\n            <div class=\"slide js-slide-hidden\">\r\n                {% component source: \"Documentation Post\", layout: \"Body Detail\", filterBy: \"id\", filterValue: \"2208\", limit: \"1\", type: \"module\" %}\r\n            </div>\r\n        </div>\r\n    </div>\r\n    \r\n    \r\n    \r\n    \r\n    <h2 id=\"secReplicateWebForms\" class=\"circle-wrap\"><div class=\"circle\">121</div>Replicate Web Forms</h2>\r\n    {% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secReplicateWebForms\", parity: \"high\", effort: \"low\", time: \"med\", docs: \"high\", tool: \"med\" %}\r\n    <p>You can create new web forms in the Treepl admin for each of your BC Web Forms and copy over and adjust your form layout/code.</p>\r\n    <p>Alternatively the <a href=\"https://www.bcappstore.com/apps/bc-to-treepl\" target=\"_blank\">BC to Treepl CMS  Migration App</a> can be used to automate this process.</p>\r\n    <p>See below for documentation on Forms.</p>\r\n    <div class=\"tab-content faqsOpenCloseHolder\">\r\n        <div class=\"faqs-open-close \">\r\n            <a class=\"opener\" href=\"#\"><i class=\"fas fa-angle-right\"></i>Forms Documentation</a>\r\n            <div class=\"slide js-slide-hidden\">\r\n                {% component source: \"Documentation Post\", layout: \"Body Detail\", filterBy: \"id\", filterValue: \"2041\", limit: \"1\", type: \"module\" %}\r\n            </div>\r\n        </div>\r\n    </div>\r\n    \r\n    <h2 id=\"secReplicateSystemPages\" class=\"circle-wrap\"><div class=\"circle\">122</div>Replicate System Pages</h2>\r\n    {% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secReplicateSystemPages\", parity: \"high\", effort: \"low\", time: \"low\", docs: \"high\", tool: \"high\" %}\r\n    <p>This process can be automated with the <a href=\"https://www.bcappstore.com/apps/bc-to-treepl\" target=\"_blank\">BC to Treepl CMS  Migration App</a>.</p>\r\n    <p>Or, if manually migrating system pages, locate your relevant BC System Pages either in your downloaded BC site files, or in the “Develop” tab of the BC Admin under ‘Layouts / SystemMessages’, or directly in the BC Admin under ‘Site Manager’ &gt; ‘System Pages.</p>\r\n    <p>You’ll need to copy over the HTML from these into the corresponding system page in Treepl CMS found in the Admin under ‘Settings / System Pages’</p>\r\n    <p>While you can upload system pages into Treepl CMS, you'd first need to rename the relevant BC files to match those of Treepl CMS in order to override them. However, this is not recommended as you'll lose the default layouts and Liquid markup required for those layouts.</p>\r\n    <p>For more information refer to the below documentation article.</p>\r\n    <div class=\"tab-content faqsOpenCloseHolder\">\r\n        <div class=\"faqs-open-close \">\r\n            <a class=\"opener\" href=\"#\"><i class=\"fas fa-angle-right\"></i>System Pages Documentation</a>\r\n            <div class=\"slide js-slide-hidden\">\r\n                {% component source: \"Documentation Post\", layout: \"Body Detail\", filterBy: \"id\", filterValue: \"2207\", limit: \"1\", type: \"module\" %}\r\n            </div>\r\n        </div>\r\n    </div>\r\n    <p>Review your HTML for any BC specific tags or modules which will need to be converted to Treepl CMS equivalents. Either making note of them to come back to once other items are set up, or replace them now if you can. For example, you may have a\r\n        site search form on your 404 Not Found page, or a secure zone login form on your 401 or 403 pages.</p>\r\n    \r\n    <h2 id=\"secReplicateSystemEmails\" class=\"circle-wrap\"><div class=\"circle\">123</div>Replicate System Emails</h2>\r\n    {% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secReplicateSystemEmails\", parity: \"high\", effort: \"low\", time: \"low\", docs: \"high\", tool: \"high\" %}\r\n    <p>This process can be automated with the <a href=\"https://www.bcappstore.com/apps/bc-to-treepl\" target=\"_blank\">BC to Treepl CMS  Migration App</a>.</p>\r\n    <p>Or, if manually migrating system emails, locate your relevant BC System Emails, either in your downloaded BC site files, or in the “Develop” tab of the BC Admin under ‘Layouts / OutboundEmails’, or directly in the BC Admin under ‘Site Manager’ &gt; ‘System Emails’.</p>\r\n    <p>You’ll need to copy over the HTML from these into the corresponding system emails in Treepl CMS found in the Admin under ‘Email Notifications / System Emails’</p>\r\n        <p>While you can upload system emails into Treepl CMS, you'd first need to rename the relevant BC files to match those of Treepl CMS in order to override them. However, this is not recommended as you'll lose the default layouts and Liquid markup required for those layouts.</p>\r\n    <p>Review your HTML for any BC specific tags or modules which will need to be converted to Treepl CMS equivalents. Be sure to reference the default tags already in the email layouts in Treepl CMS to identify which ones can replace your BC tags.</p>\r\n    <p>For more information refer to the below documentation article.</p>\r\n    <div class=\"tab-content faqsOpenCloseHolder\">\r\n        <div class=\"faqs-open-close \">\r\n            <a class=\"opener\" href=\"#\"><i class=\"fas fa-angle-right\"></i>System Emails Documentation</a>\r\n            <div class=\"slide js-slide-hidden\">\r\n                {% component source: \"Documentation Post\", layout: \"Body Detail\", filterBy: \"id\", filterValue: \"2205\", limit: \"1\", type: \"module\" %}\r\n            </div>\r\n        </div>\r\n    </div>\r\n    \r\n    <h2 id=\"secReplicateCategories\" class=\"circle-wrap\"><div class=\"circle\">124</div>Replicate Categories</h2>\r\n    {% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secReplicateCategories\", parity: \"high\", effort: \"low\", time: \"low\", docs: \"high\", tool: \"high\" %}\r\n    <p>You can manually recreate any Categories set up in your BC site into Treepl CMS under ‘Settings / Categories’</p>\r\n    <p>Alternatively the <a href=\"https://www.bcappstore.com/apps/bc-to-treepl\" target=\"_blank\">BC to Treepl CMS  Migration App</a> can be used to automate this process.</p>\r\n    <p>For more information about Categories see the below documentation article.</p>\r\n    <div class=\"tab-content faqsOpenCloseHolder\">\r\n        <div class=\"faqs-open-close \">\r\n            <a class=\"opener\" href=\"#\"><i class=\"fas fa-angle-right\"></i>Categories Documentation</a>\r\n            <div class=\"slide js-slide-hidden\">\r\n                {% component source: \"Documentation Post\", layout: \"Body Detail\", filterBy: \"id\", filterValue: \"2308\", limit: \"1\", type: \"module\" %}\r\n            </div>\r\n        </div>\r\n    </div>\r\n    \r\n    <h2 id=\"secContactsAndCases\" class=\"circle-wrap\"><div class=\"circle\">125</div>Contacts & Cases</h2>\r\n    {% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secContactsAndCases\", parity: \"med\", effort: \"med\", time: \"med\", docs: \"low\", tool: \"high\" %}\r\n    <p>The <a href=\"https://www.bcappstore.com/apps/bc-to-treepl\" target=\"_blank\">BC to Treepl CMS  Migration App</a> can be used to migrate both contact records and cases.</p>\r\n    <p>Alternatively, you can import contact records directly into the Treepl CMS Contacts module. However, Cases can not yet be imported in this way and would need to be added manaully if not using the Migration App.</p>\r\n    <p>Also note that Treepl CMS Contact fields are limited, so it's still advisable to export BC CRM data for archive/backup purposes if advanced CRM fields exist and later import that data when the advanced CRM is available.</p>\r\n\r\n    \r\n    <h2 id=\"secReplicateContentHolders\" class=\"circle-wrap\"><div class=\"circle\">126</div>Replicate Content Holders</h2>\r\n    {% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secReplicateContentHolders\", parity: \"high\", effort: \"low\", time: \"low\", docs: \"med\", tool: \"high\" %}\r\n    <p>The <a href=\"https://www.bcappstore.com/apps/bc-to-treepl\" target=\"_blank\">BC to Treepl CMS  Migration App</a> can be used to automate this process.</p>\r\n    <p>Alternatively, if manually migrating, locate your relevant BC Content Holders, either in your downloaded BC site files, or in the “Develop” tab of the BC Admin under ‘System / ContentHolders, or directly in the BC Admin under ‘Site Manager’ &gt; ‘Content Holders’.</p>\r\n    <p>Upload your BC Content Holders into your Treepl CMS instance via FTP into the ‘Content / Snippets’ directory.</p>\r\n    <p>If not using FTP, create and copy over the HTML from these into the Treepl CMS admin area under ‘Content / Snippets’.</p>\r\n    <p>Review your HTML for any BC specific tags or modules which will need to be converted to Treepl CMS equivalents. Either making note of them to come back to once other items are set up, or replace them now if you can.</p>\r\n    \r\n    \r\n    <div class=\"tab-content faqsOpenCloseHolder\">\r\n        <div class=\"faqs-open-close \">\r\n            <a class=\"opener\" href=\"#\"><i class=\"fas fa-angle-right\"></i>Snippets Documentation</a>\r\n            <div class=\"slide js-slide-hidden\">\r\n                {% component source: \"Documentation Post\", layout: \"Body Detail\", filterBy: \"id\", filterValue: \"2133\", limit: \"1\", type: \"module\" %}\r\n            </div>\r\n        </div>\r\n        <div class=\"faqs-open-close \">\r\n            <a class=\"opener\" href=\"#\"><i class=\"fas fa-angle-right\"></i>Snippets Component Documentation</a>\r\n            <div class=\"slide js-slide-hidden\">\r\n                {% component source: \"Documentation Post\", layout: \"Body Detail\", filterBy: \"id\", filterValue: \"1950\", limit: \"1\", type: \"module\" %}\r\n            </div>\r\n        </div>\r\n    </div>\r\n    \r\n    \r\n    \r\n    \r\n    <h2 id=\"secBuiltInModules\" class=\"circle-wrap\"><div class=\"circle\">127</div>Built-In Modules:</h2>\r\n    <h3 id=\"secBlogs\">Blogs</h3>\r\n    {% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secBuiltInModulesBlogs\", parity: \"high\", effort: \"med\", time: \"med\", docs: \"med\", tool: \"high\" %}\r\n    <p>BC Blogs can be replicated in Treepl CMS either in the built-in Blog module or by using Custom Modules to configure your own blog structure.</p>\r\n    <p>The <a href=\"https://www.bcappstore.com/apps/bc-to-treepl\" target=\"_blank\">BC to Treepl CMS Migration App</a> can be used to automate this process, including Release Dates, Tags, Categories, Authors and SEO data.</p>\r\n    <p>If manually transferring your blogs, for a method of extracting the BC Blog data see this helpful Treepl CMS Forum post (includes code snippets and demo video):</p>\r\n    <a class=\"btn small\" href=\"https://forum.treepl.co/t/bc-blog-export-helper/61\" target=\"_blank\">BC Blog Export Helper</a>\r\n    <p>You can also upload your BC module layouts into your Treepl CMS instance via FTP into the ‘Content / ModuleLayouts / &lt;Blog&gt; &amp; &lt;BlogPost&gt;’ directories.</p>\r\n    <p>For more information about the Blog module see the documentation articles.</p>\r\n    <div class=\"tab-content faqsOpenCloseHolder\">\r\n        <div class=\"faqs-open-close \">\r\n            <a class=\"opener\" href=\"#\"><i class=\"fas fa-angle-right\"></i>Blog module Documentation</a>\r\n            <div class=\"slide js-slide-hidden\">\r\n                {% component source: \"Documentation Post\", layout: \"Body Detail\", filterBy: \"id\", filterValue: \"2135\", limit: \"1\", type: \"module\" %}\r\n            </div>\r\n        </div>\r\n        <div class=\"faqs-open-close \">\r\n            <a class=\"opener\" href=\"#\"><i class=\"fas fa-angle-right\"></i>Blog component Documentation</a>\r\n            <div class=\"slide js-slide-hidden\">\r\n                {% component source: \"Documentation Post\", layout: \"Body Detail\", filterBy: \"id\", filterValue: \"2141\", limit: \"1\", type: \"module\" %}\r\n            </div>\r\n        </div>\r\n        <div class=\"faqs-open-close \">\r\n            <a class=\"opener\" href=\"#\"><i class=\"fas fa-angle-right\"></i>Blog Post component Documentation</a>\r\n            <div class=\"slide js-slide-hidden\">\r\n                {% component source: \"Documentation Post\", layout: \"Body Detail\", filterBy: \"id\", filterValue: \"2142\", limit: \"1\", type: \"module\" %}\r\n            </div>\r\n        </div>\r\n    </div>\r\n    \r\n    <h3 id=\"secEvents\">Events</h3>\r\n    {% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secBuiltInModulesEvents\", parity: \"high\", effort: \"high\", time: \"med\", docs: \"low\", tool: \"high\" %}\r\n    <p>Treepl CMS Events are similar to BC Events and can be set up quite easily.</p>\r\n    <p>The <a href=\"https://www.bcappstore.com/apps/bc-to-treepl\" target=\"_blank\">BC to Treepl CMS  Migration App</a> can be used to automate Event migrations as well as transfer Event booking data from the CRM into Treepl CMS CRM.</p>\r\n    <p>For manual migrations, getting the data out of BC is a problem... although, you could likely use a similar approach to the Blog Export Helper above.</p>\r\n    <p>You can also upload your BC module layouts into your Treepl CMS instance via FTP into the ‘Content / ModuleLayouts / &lt;Event&gt; &amp; &lt;EventGroup&gt;’ directories.</p>\r\n    \r\n    <h3 id=\"secPhotoGalleries\">Photo Galleries</h3>\r\n    {% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secBuiltInModulesGalleries\", parity: \"med\", effort: \"med\", time: \"med\", docs: \"med\", tool: \"high\" %}\r\n    <p>Galleries in Treepl CMS work more like WebApps, so each image is an item within the parent module. This brings greater control in the long run, however migrating images and data to this new format can make migration a little more involved.</p>\r\n    <p>The <a href=\"https://www.bcappstore.com/apps/bc-to-treepl\" target=\"_blank\">BC to Treepl CMS Migration App</a> can be used to automate this process.</p>\r\n    <p>If manually transferring your galleries, see this very helpful method of extracting the BC data in a ready format for Treepl CMS posted in the Treepl CMS Forum:</p>\r\n    <a class=\"btn small\" href=\"https://forum.treepl.co/t/bc-photo-gallery-exporter/107\" target=\"_blank\">BC Photo Galleries Export Helper</a>\r\n    <p>For more information about the Galleries/Sliders module see the documentation articles.</p>\r\n    <div class=\"tab-content faqsOpenCloseHolder\">\r\n        <div class=\"faqs-open-close \">\r\n            <a class=\"opener\" href=\"#\"><i class=\"fas fa-angle-right\"></i>Gallery/Slider Group module</a>\r\n            <div class=\"slide js-slide-hidden\">\r\n                {% component source: \"Documentation Post\", layout: \"Body Detail\", filterBy: \"id\", filterValue: \"2140\", limit: \"1\", type: \"module\" %}\r\n            </div>\r\n        </div>\r\n    </div>\r\n    <div class=\"tab-content faqsOpenCloseHolder\">\r\n        <div class=\"faqs-open-close \">\r\n            <a class=\"opener\" href=\"#\"><i class=\"fas fa-angle-right\"></i>Gallery/Slider Item module</a>\r\n            <div class=\"slide js-slide-hidden\">\r\n                {% component source: \"Documentation Post\", layout: \"Body Detail\", filterBy: \"id\", filterValue: \"2143\", limit: \"1\", type: \"module\" %}\r\n            </div>\r\n        </div>\r\n    </div>\r\n    \r\n    <h3 id=\"secNews\">News</h3>\r\n    {% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secBuiltInModulesNews\", parity: \"med\", effort: \"low\", time: \"low\", docs: \"med\", tool: \"high\" %}\r\n    <p>There is no “News” module specifically in Treepl CMS, however using the Blog would likely be a more than suitable alternative (see migrating Blogs section above).</p>\r\n    <p>The <a href=\"https://www.bcappstore.com/apps/bc-to-treepl\" target=\"_blank\">BC to Treepl CMS Migration App</a> can be used to automate this process and a separate Blog module will be created for News items.</p>\r\n    <p>If migrating manually, since BC doesn't provide export functionality for extracting the BC News data, you could likely use a similar approach to the Blog Export Helper above.</p>\r\n    <p>You can also upload your BC module layouts into your Treepl CMS instance via FTP into the ‘Content / ModuleLayouts / &lt;Your Custom Module OR Blog&gt;’ directory.</p>\r\n    \r\n    \r\n    <h3 id=\"secMediaDownloads\">Media Downloads</h3>\r\n    {% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secBuiltInModulesMedia\", parity: \"low\", effort: \"med\", time: \"med\", docs: \"low\", tool: \"high\" %}\r\n    <p>There is no direct “Media Downloads” module in Treepl CMS, however setting up a Custom Module along with the ‘<a href=\"https://docs.treepl.co/documentation_group/extras/force-download-handler\" target=\"_blank\">Force Download Handler</a>’ option would see very similar results with greater flexibility.<br>\r\n    (see migrating WebApps section in a later step).</p>\r\n    <p>You can manually migrate Media Downloads or alternatively the <a href=\"https://www.bcappstore.com/apps/bc-to-treepl\" target=\"_blank\">BC to Treepl CMS  Migration App</a> can be used to automate this process.</p>\r\n    <p>For manual migrations, a very helpful method of extracting the BC data in a ready format for Treepl CMS, see this helpful Treepl CMS Forum post:</p>\r\n    <a class=\"btn small\" href=\"https://forum.treepl.co/t/bc-media-downloads-exporter/235\" target=\"_blank\">BC Media Downloads Export Helper</a>\r\n    \r\n    \r\n    <h3 id=\"secFAQs\">FAQs</h3>\r\n    {% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secBuiltInModulesFAQs\", parity: \"high\", effort: \"med\", time: \"med\", docs: \"low\", tool: \"high\" %}\r\n    <p>FAQs in Treepl CMS work more like WebApps, so each FAQ is an item within the parent module (Question Group). This brings greater control in the long run, however migrating FAQs and data to this new format may make migration a little more involved.</p>\r\n    <p>You can manually migrate FAQs or alternatively the <a href=\"https://www.bcappstore.com/apps/bc-to-treepl\" target=\"_blank\">BC to Treepl CMS  Migration App</a> can be used to automate this process.</p>\r\n    <p>For manual migrations, you could likely use a similar approach to the Blog Export Helper above.</p>\r\n    <p>You can also upload your BC module layouts into your Treepl CMS instance via FTP into the ‘Content / ModuleLayouts / &lt;FAQGropu&gt; &amp; &lt;FAQQuestion&gt;’ directories.</p>\r\n    <p>For more information about the FAQs module see the documentation articles.</p>\r\n    <div class=\"tab-content faqGroupOpenCloseHolder\">\r\n        <div class=\"faqs-open-close \">\r\n            <a class=\"opener\" href=\"#\"><i class=\"fas fa-angle-right\"></i>FAQ Group module</a>\r\n            <div class=\"slide js-slide-hidden\">\r\n                {% component source: \"Documentation Post\", layout: \"Body Detail\", filterBy: \"id\", filterValue: \"2144\", limit: \"1\", type: \"module\" %}\r\n            </div>\r\n        </div>\r\n    </div>\r\n    <div class=\"tab-content faqItemOpenCloseHolder\">\r\n        <div class=\"faqs-open-close \">\r\n            <a class=\"opener\" href=\"#\"><i class=\"fas fa-angle-right\"></i>FAQ Item module</a>\r\n            <div class=\"slide js-slide-hidden\">\r\n                {% component source: \"Documentation Post\", layout: \"Body Detail\", filterBy: \"id\", filterValue: \"2145\", limit: \"1\", type: \"module\" %}\r\n            </div>\r\n        </div>\r\n    </div>\r\n    \r\n    \r\n    <h3 id=\"secAdRotators\">Ad Rotators</h3>\r\n    {% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secBuiltInModulesRotators\", parity: \"med\", effort: \"med\", time: \"med\", docs: \"med\", tool: \"high\" %}\r\n    <p>The Banner module in Treepl CMS was built to replace the BC Ad Rotators and is set up much like the other modules in Treepl CMS and is therefore flexible for you to configure the layouts and behaviour as needed.</p>\r\n    <p>The <a href=\"https://www.bcappstore.com/apps/bc-to-treepl\" target=\"_blank\">BC to Treepl CMS Migration App</a> can be used to automate this process.</p>\r\n    <p>If migrating manually, since BC doesn't provide export functionality for extracting the BC Ad Rotator data, you could likely use a similar approach to the Blog Export Helper above.</p>\r\n    <p>For more information about the Banners module see the documentation articles.</p>\r\n    <div class=\"tab-content faqsOpenCloseHolder\">\r\n        <div class=\"faqs-open-close \">\r\n            <a class=\"opener\" href=\"#\"><i class=\"fas fa-angle-right\"></i>Banner Documentation</a>\r\n            <div class=\"slide js-slide-hidden\">\r\n                {% component source: \"Documentation Post\", layout: \"Body Detail\", filterBy: \"id\", filterValue: \"2136\", limit: \"1\", type: \"module\" %}\r\n            </div>\r\n        </div>\r\n    </div>\r\n    <div class=\"tab-content faqsOpenCloseHolder\">\r\n        <div class=\"faqs-open-close \">\r\n            <a class=\"opener\" href=\"#\"><i class=\"fas fa-angle-right\"></i>Banner Group module</a>\r\n            <div class=\"slide js-slide-hidden\">\r\n                {% component source: \"Documentation Post\", layout: \"Body Detail\", filterBy: \"id\", filterValue: \"2146\", limit: \"1\", type: \"module\" %}\r\n            </div>\r\n        </div>\r\n    </div>\r\n    <div class=\"tab-content faqsOpenCloseHolder\">\r\n        <div class=\"faqs-open-close \">\r\n            <a class=\"opener\" href=\"#\"><i class=\"fas fa-angle-right\"></i>Banner Item module</a>\r\n            <div class=\"slide js-slide-hidden\">\r\n                {% component source: \"Documentation Post\", layout: \"Body Detail\", filterBy: \"id\", filterValue: \"2147\", limit: \"1\", type: \"module\" %}\r\n            </div>\r\n        </div>\r\n    </div>\r\n    \r\n    <h2 id=\"secCustomModulesWebApps\" class=\"circle-wrap\"><div class=\"circle\">128</div>Custom Modules (WebApps)</h2>\r\n    {% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secCustomModulesWebApps\", parity: \"high\", effort: \"low\", time: \"med\", docs: \"high\", tool: \"high\" %}\r\n    <p>Generally, WebApps will transfer over quite easily as Custom Modules in Treepl CMS were built around an improved “WebApp” model. Therefore they have a very similar concept with how items are added and list and detail layouts are constructed. Combined with the fact that WebApp data can be easily exported from BC and imported into Treepl CMS, WebApps will likely be an easier job migrating then the other built-in BC modules.</p>\r\n    <p>If you have very complex WebApps there may be more time required to study the different methods with rendering data and converting complex Liquid markup, but the data migration should be relatively straight forward via export/import.</p>\r\n    <p>You can further simplify this process with the <a href=\"https://www.bcappstore.com/apps/bc-to-treepl\" target=\"_blank\">BC to Treepl CMS  Migration App</a>, which can migration not only the item data but the WebApp layouts, settings and set up all custom fields including Datasource fields (converting the reference for Treepl CMS use).</p>\r\n    <p>If manually migrating WebApps, you'll will first need to set up your Custom Module with all it's correspondign properties and settings in order to import those matching fields from BC.</p>\r\n    <p>You can also upload your BC module layouts into your Treepl CMS instance via FTP into the ‘Content / ModuleLayouts / &lt;Your Custom Module&gt;’ directory.</p>\r\n    <p>Refer to the Custom Module documentation for more details:</p>\r\n    <a class=\"btn small\" href=\"/documentation_group/content-modules/custom-modules-aka-webapps\" target=\"_blank\">Custom Modules (AKA WebApps)</a>\r\n    \r\n    \r\n    \r\n    <h2 id=\"secEcommerce\" class=\"circle-wrap\"><div class=\"circle\">129</div>eCommerce</h2>\r\n    <p>To get up and running with eCommerce in Treepl CMS, see the getting started article below.</p>\r\n    <div class=\"tab-content faqsOpenCloseHolder\">\r\n        <div class=\"faqs-open-close \">\r\n            <a class=\"opener\" href=\"#\"><i class=\"fas fa-angle-right\"></i>Getting Started with eCommerce</a>\r\n            <div class=\"slide js-slide-hidden\">\r\n                {% component source: \"Documentation Post\", layout: \"Body Detail\", filterBy: \"id\", filterValue: \"2522\", limit: \"1\", type: \"module\" %}\r\n            </div>\r\n        </div>\r\n    </div>\r\n    <h3 id=\"secPaymentGateways\">Payment Gateways</h3>\r\n    {% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secPaymentGateways\", parity: \"med\", effort: \"low\", time: \"low\", docs: \"low\", tool: \"na\" %}\r\n    <p>Since the Payment Gateway settings contain sensitive details you will need to manually set up your Payment Gateway in your new Treepl CMS site by going to ‘Settings’ > ‘Payment’.</p>\r\n\r\n<h3 id=\"secTaxCodes\">Tax Codes</h3>\r\n{% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secTaxCodes\", parity: \"high\", effort: \"low\", time: \"low\", docs: \"low\", tool: \"high\" %}\r\n<p>Tax Codes follow the same structure in Treepl CMS so you can simply enter all the same codes under ‘eCommerce’ > ‘Taxes’.</p>\r\n<p>If you are implementing all or many of the US State taxes you’ll be able to add these automatically when you click “Add New Tax” and select ‘United States’ as the assigned country.</p>\r\n<p>There is no manual export option from BC, nor is there an import option in Treepl CMS for this.</p>\r\n<p>You can also automatically migrate Tax Codes via the <a href=\"https://www.bcappstore.com/apps/bc-to-treepl\" target=\"_blank\">BC to Treepl CMS Migration App</a>.</p>\r\n<h3 id=\"secShippingOptions\">Shipping Options</h3>\r\n{% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secShippingOptions\", parity: \"med\", effort: \"low\", time: \"low\", docs: \"low\", tool: \"high\" %}\r\n<p>Shipping Codes follow a very similar format in Treepl CMS so you can simply enter all the same codes under ‘eCommerce’ > Shipping options.</p>\r\n<p>This is for user-defined shipping rules at least. Integration of shipping providers is still pending release.</p>\r\n<p>There is no manual export option from BC, nor is there an import option in Treepl CMS for this. </p>\r\n<p>You can also automatically migrate user-defined Shipping Options via the <a href=\"https://www.bcappstore.com/apps/bc-to-treepl\" target=\"_blank\">BC to Treepl CMS Migration App</a>.</p>\r\n<h3 id=\"secCatalogs\">Catalogs</h3>\r\n{% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secCatalogs\", parity: \"high\", effort: \"low\", time: \"low\", docs: \"low\", tool: \"high\" %}\r\n<p>You can import your Catalogues into Treepl CMS if you have a spreadsheet available, although there is no export feature in BC.</p>\r\n<p>Creating Catalogs manually can be done much the same way as adding any other module item in Treepl CMS via ‘eCommerce’ > ‘Catalogs’ and you will have similar options available.</p>\r\n<p>Options from BC that are not currently available are; Price visibility, XML feed, and Browse Panel settings.</p> \r\n<p>You can also automatically migrate Catalogs via the <a href=\"https://www.bcappstore.com/apps/bc-to-treepl\" target=\"_blank\">BC to Treepl CMS Migration App</a>.</p>\r\n<h3 id=\"secProducts\">Products</h3>\r\n{% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secProducts\", parity: \"high\", effort: \"low\", time: \"low\", docs: \"low\", tool: \"high\" %}\r\n<p>You can import your Products into Treepl CMS with an export from BC, or if you have a spreadsheet available (after formatting to match Treepl CMS import file).</p>\r\n<p>Creating Products manually can be done much the same way as adding any other module item in Treepl CMS via ‘eCommerce’ > ‘Products’ and you will have similar options available.</p>\r\n<p>Additionally, you can add a variety of custom fields to customise your products module (for example, adding additional image fields would be how you’d add the “Poplets” feature from BC).</p>\r\n<p>Options from BC that are not currently available are; Downloadable Product, Capture Details, Commission Payable.</p>\r\n<p>You can also automatically migrate Products via the <a href=\"https://www.bcappstore.com/apps/bc-to-treepl\" target=\"_blank\">BC to Treepl CMS Migration App</a>.</p>\r\n<h3 id=\"secDiscountCodes\">Discount Codes</h3>\r\n{% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secDiscountCodes\", parity: \"high\", effort: \"low\", time: \"low\", docs: \"low\", tool: \"high\" %}\r\n<p>Discount Codes follow the same structure in Treepl CMS so you can simply enter all the same codes under ‘eCommerce’ > ‘Discount codes’.</p>\r\n<p>There is no manual export option from BC, nor is there an import option in Treepl CMS for this.</p>\r\n<p>You can also automatically migrate Discount Codes via the <a href=\"https://www.bcappstore.com/apps/bc-to-treepl\" target=\"_blank\">BC to Treepl CMS Migration App</a>.</p>\r\n<h3 id=\"secGiftVouchers\">Gift Vouchers</h3>\r\n{% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secGiftVouchers\", parity: \"high\", effort: \"low\", time: \"low\", docs: \"low\", tool: \"high\" %}\r\n<p>Gift Vouchers follow the same structure in Treepl CMS so you can simply enter all the same vouchers under ‘eCommerce’ > ‘Gift vouchers’.</p>\r\n<p>There is no manual export option from BC, nor is there an import option in Treepl CMS for this.</p>\r\n<p>You can also automatically migrate Gift Vouchers via the <a href=\"https://www.bcappstore.com/apps/bc-to-treepl\" target=\"_blank\">BC to Treepl CMS Migration App</a>.</p>\r\n\r\n\r\n<p class=\"notice-note\">eCommerce features not yet available include; cart lifetime setting, XML product feed, digital/downloadable products, integrated shipping providers.</p>\r\n    \r\n    \r\n    \r\n    \r\n    \r\n    \r\n    \r\n    \r\n    \r\n    \r\n    \r\n    \r\n    \r\n    \r\n    <h2 id=\"secRevisitSiteTemplates\" class=\"circle-wrap\"><div class=\"circle\">130</div>Revisit Site Templates</h2>\r\n    {% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secRevisitSiteTemplates\", parity: \"high\", effort: \"med\", time: \"med\", docs: \"med\", tool: \"high\" %}\r\n    <p>Now let's review the Site Templates markup and replace BC modules and Liquid with Treepl CMS methods.</p>\r\n    <p>The <a href=\"https://www.bcappstore.com/apps/bc-to-treepl\" target=\"_blank\">BC to Treepl CMS  Migration App</a> can be used to automate much of this process. However, it's recommended to check through the markup for any exceptions.</p>\r\n    <p>Some common examples are:</p>\r\n    <ul>\r\n        <li>Dynamic HEAD elements</li>\r\n        <li>pagecontent tag</li>\r\n        <li>menus</li>\r\n        <li>content holder</li>\r\n        <li>includes</li>\r\n        <li>modules: BC's module syntax (old and new) converted to Treepl CMS 'Component' syntax</li>\r\n    </ul>\r\n    <p>Review the relevant Component types and all their properties and syntax:</p>\r\n    <a class=\"btn small\" href=\"/documentation_group/component-types/\" target=\"_blank\">All Component Types</a>\r\n    \r\n    \r\n    <h2 id=\"secRevisitSitePages\" class=\"circle-wrap\"><div class=\"circle\">131</div>Revisit Site Pages</h2>\r\n    {% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secRevisitSitePages\", parity: \"high\", effort: \"med\", time: \"med\", docs: \"med\", tool: \"high\" %}\r\n    <p>Like above, let's review the Site Pages markup and replace BC modules and Liquid with Treepl CMS methods.</p>\r\n    <p>Usign the <a href=\"https://www.bcappstore.com/apps/bc-to-treepl\" target=\"_blank\">BC to Treepl CMS  Migration App</a> can automate many BC to Treepl CMS Liquid and tag conversions.</p>\r\n    <p>For manual migrations, some common examples are:</p>\r\n    <ul>\r\n        <li>menus</li>\r\n        <li>content holder</li>\r\n        <li>includes</li>\r\n        <li>modules: BC's module syntax (old and new) converted to Treepl CMS 'Component' syntax</li>\r\n    </ul>\r\n    <p>Review the relevant Component types and all their properties and syntax:</p>\r\n    <a class=\"btn small\" href=\"/documentation_group/component-types/\" target=\"_blank\">All Component Types</a>\r\n    \r\n    \r\n    <h2 id=\"secSetupSEOandSitemap\" class=\"circle-wrap\"><div class=\"circle\">132</div>Setup SEO & Sitemap</h2>\r\n    {% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secSetupSEOandSitemap\", parity: \"med\", effort: \"low\", time: \"low\", docs: \"med\", tool: \"low\" %}\r\n    <p>Add primary domain, language, country, and configure sitemap automation (and possibly enable all items for search engine visibility).</p>\r\n    <p>For more information about SEO settings see the documentation article.</p>\r\n    <div class=\"tab-content faqsOpenCloseHolder\">\r\n        <div class=\"faqs-open-close \">\r\n            <a class=\"opener\" href=\"#\"><i class=\"fas fa-angle-right\"></i>SEO Documentation</a>\r\n            <div class=\"slide js-slide-hidden\">\r\n                {% component source: \"Documentation Post\", layout: \"Body Detail\", filterBy: \"id\", filterValue: \"2212\", limit: \"1\", type: \"module\" %}\r\n            </div>\r\n        </div>\r\n    </div>\r\n    <p>On initial setup, it's recommended to manually generate the sitemap to review the items listed - ensuring all your relevant site items are configured for search engine visibility.</p>\r\n    \r\n    \r\n    <h2 id=\"secChecksAndTroubleshooting\" class=\"circle-wrap\"><div class=\"circle\">133</div>Checks and Troubleshooting</h2>\r\n    {% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secChecksAndTroubleshooting\", parity: \"na\", effort: \"med\", time: \"med\", docs: \"med\", tool: \"na\" %}\r\n\r\n    <p>Run back through the steps above as a quick checklist to review all your site items.</p>\r\n    <p>Comparing your new Treepl CMS site front-end alongside the BC site to check for consistancy.</p>\r\n    <p>Note any URL differences due to page/directory naming or restructuring and ensure URL Redirect are setup for these.</p>\r\n</div>\r\n",
  "ItemTags": [
  "Migrations"
],
  "Author_Name": "",
  "Author_Url": "",
  "Author": "",
  "SEOTitle": "",
  "MetaTitle": "",
  "MetaDescription": "",
  "ShowPageForSearchEngine": true,
  "CanonicalLink": "",
  "EnableAMP": false,
  "AMPContent": "",
  "CodeEditor": true,
  "ExternalId": 0,
  "SocialMetaTags": "",
  "OpenGraphProperties": "",
  "DisableForSiteSearch": false,
  "SeoPriority": "",
  "CreatedByMemberId": 0,
  "ItemCategories": "",
  "ItemCategoryIdList": "",
  "SKUCode": "",
  "SiteSearchKeywords": "",
  "Active": true,
  "IgnoreUpdates": false,
  "UpdateNotes": "",
  "UpdatesLog": "<ul>\n    <li>Added note about new BC .zip Archive functionality</li>\n    <li>Updated BC to Treepl CMS Migration App compatibility - as per v9.0.4 (Catalogs, Discount codes, Gift vouchers, Products, Shipping options, Tax codes)</li>\n</ul>",
  "ExternalResources": "",
  "AdditionalRelatedArticle_Name": "",
  "AdditionalRelatedArticle_Url": "",
  "AdditionalRelatedArticle": "",
  "AdditionalRelatedArticle2_Name": "",
  "AdditionalRelatedArticle2_Url": "",
  "AdditionalRelatedArticle2": "",
  "Authors": "2418",
  "Module_ID": 1870,
  "Module_Alias": "DocumentationPost",
  "ParentName": "BC Migration Guides",
  "ParentUrl": "/bc-migration-guides",
  "TemplateName": "Docs Template",
  "IsHome": false
}
}
}

Accessing the Data

This data is accessible in two main ways:

1. Using Liquid in the specified Layout via the this object.

{{this['name']}}

2. Directly on the Page or Template via a Liquid Collection if collectionVariable was added to the Component tag.

An example using collectionVariable with value "allGalleries" to list all "Gallery/Sliders" across the site:

Here we suppress any Layout from rendering by setting layout: "" as an empty attribute.

{% component type: "module", source: "Gallery/Slider", layout: "", collectionVariable: "allGalleries" %}

Looping through the collection to render all the item names in a list, giving us:

  • DEMO Custom Gallery
  • DEMO Standard Gallery

The code:

<ul>
    {% for i in allGalleries.items %}
        <li>{{i['name']}}</li>
    {% endfor %}
</ul>

Accessing a specific item within the collection. In this case the second item (zero based index), which in our example would render the value DEMO Standard Gallery

{{allGalleries.items[1]['name']}}

Counter

Along with the data output above, there is also a special liquid tag available {{counter}} which increments for each item. This tag is only available within Layouts when object: "item" is used in the Component tag.

Gallery/Slider Item module

View full article

This module component fetches data relating to Slide items.

{% component type: "module", source: "Slide", layout: "List" %}

Parameters and Options

Parameter Values Required Description
type module (default)
module_of_member

This is the name of the entity that needs to be used for the component retrieving function.

module is the standard retrieving function to retrieve all items.

module_of_member retrieves only those items "Added by" the currently logged in user (identified by the CreatedByMemberId property in the module items Liquid data).

The "Added by" System Property will only be available where the modules settings have "Allow Add New Items" turned on under the "Site User Permissions".

source Slide (default) The entity/alias name or ID that the data is to be sourced from.
layout List (default)
<Your Layout name>

The layout name you want to use for rendering the component. The layout name is referenced from the available Layouts of the source specified.

While this parameter is required to render your Layout markup, if the parameter is blank, has an incorrectly referenced Layout, or is removed altogether then the component will still output the modules item data to a Liquid collection which can be accessed via the collectionVariable parameter.

filterBy id
parentid
name
weighting
url
urlslug
releasedate
expirydate
LastUpdatedDate
Author
ItemCategories
ItemTags
<CustomPropertyName>
...and any other top level properties available for the module

The name of the property to filter by. If empty or not present, no filtering will be used.

Remove spaces from custom property names here.

filterValue <your value>
Your specific value to filter by, eg: name, id, number, date, etc.
Liquid variables can be used here also. If present but no value set, no items will be returned.
sortBy id
parentid
name
weighting
url
urlslug
releasedate
expirydate
LastUpdatedDate
Author
ItemCategories
ItemTags
<CustomPropertyName>
...and any other top level properties available for the module

The name of the property to sort by. If empty or not present, alpha/numeric sorting will be used.

Remove spaces from custom property names here.

sortOrder ASC (default)
DESC

ASC sorts the items in ascending order while DESC sorts in descending order (based on alpha/numeric or date sorting).
If empty or not present, alpha/numeric sorting will be used.
random false (default)
true

Displays the available items in a random order.

If used in conjunction with sortBy, that sorting criteria will be applied to the randomly retrieved results. So, if retrieving all, or most, of the items they will not appear to be random since they will then be sorted back into a logical order. To overcome this, set the sortBy parameter to 'enabled' (or another unused property) as this will not provide any viable sorting criteria* and the items will not be sorted from their initial random order.
* Unless there are weighted items, which will always override the random option.

limit 10 (default)
<number>

The maximum number of items returned. If displayPagination is enabled this determines the maximum number of items per page.
enablePagination true (default)
false

Enables/disables pagination for the component.

This is useful for avoiding pagniation affects for a specific component when multiple components of the same module are output on the same page and do use pagination.

displayPagination false (default)
true

Displays pagination if there are more items available than the limit set.
emptyMessage <Your custom message>
Custom content that is rendered if no items are returned by the Component. The default is no content.
Liquid variables are supported here, although Liquid logic tags and HTML are not.

If using Liquid variables with filters added, be sure to change any double quotes to single quotes. For eg:
emptyMessage: “{{ myVariable | prepend: 'Error: ' }}”

To use HTML in your empty message, first capture it using a Liquid capture, then insert the capture variable into the emptyMessage parameter.

object item (default)
collection

Determines the method for Liquid rendering.
item returns each item iteratively, one after another, for output (generally, output to a container element with no need for looping through the data).
collection returns all items as one collection for output (your container element and looping logic would be handled in the Components Layout).
collectionVariable <yourLiquidVariableName>
Assigns the data to a Liquid collection enabling further access to the data on the Page or Template using Liquid.

Your collectionVariable value must only contain English letters, numbers or underscores. Spaces or special characters are not supported.

isSearchResult false (default)
true

Allows search parameters in the URL to override the components output. Therefore, this parameter can be used to output module specific search results from a submitted search form.

Likewise, Tag, Category, and Archive components can be used in conjunction with this parameter for filtering the module's output.

URL search parameters will override any corresponding parameters in the component. If no search parameters are present in the URL, isSearchResult will be ignored.

Any value other than true, (including an empty value), will disable the search functionality and the component will output its regular data.

searchScope eg:
{'prop_ParentId':'1234', 'prop_ReleaseDate_Min':'2018-07-01', 'prop_ReleaseDate_Max':'2018-07-31', 'prop_KeyWords':'Your Keywords', 'prop_ItemTags':['tag1','tag2'], 'page':'2'}

Allows a search on the module without search parameters needed in the URL. Instead, search parameters are added to the value of this parameter. Therefore, this parameter can be used to output module specific search results from hard-coded (or Liquid) values without the use of a search form.

Added search parameters will override any corresponding parameters otherwise configured on the component. If no search parameters are present, searchScope will be ignored.

This value supports Liquid and can therefore be constructed with Liquid data/variables.

<customParameter> <your custom value>
You can add your own additional parameters (name/value pairs) to the Component tag. These will be passed to the Components Layout (and the collectionVariable if used) for use via Liquid.

Your <customParameter> name must only contain English letters, numbers or underscores. Spaces or special characters are not supported.

You can use HTML as the value here, just be sure to change any double quotes in your HTML to single quotes.

Liquid Output

The below example has 3 sample items but is otherwise the default structure you will get from this Component.

{
  "Pagination": {
  "CurrentPage": 1,
  "ItemsPerPage": 10,
  "NumberOfPages": 1,
  "TotalItemsCount": 3
},
  "Items": [
  {
    "Id": 2302,
    "Url": "/_gallery-slider/demo-custom-gallery/custom-slide-one",
    "ParentId": 2296,
    "LastUpdatedDate": "2018-12-16T00:17:10",
    "Name": "Custom Slide One",
    "UrlSlug": "custom-slide-one",
    "Enabled": true,
    "ReleaseDate": "2018-12-15T18:00:00",
    "ExpiryDate": "2099-12-10T18:00:00",
    "Weighting": 0,
    "Description": "<p>Custom slide one description...</p>",
    "ItemTags": null,
    "Author_Name": null,
    "Author_Url": null,
    "Author": "",
    "SEOTitle": "",
    "MetaTitle": "",
    "MetaDescription": "",
    "ShowPageForSearchEngine": false,
    "CanonicalLink": "",
    "EnableAMP": false,
    "AMPContent": "",
    "CodeEditor": false,
    "ExternalId": 0,
    "SocialMetaTags": "",
    "OpenGraphProperties": "",
    "DisableForSiteSearch": false,
    "SeoPriority": "",
    "CreatedByMemberId": 0,
    "ItemCategories": null,
    "ItemCategoryIdList": null,
    "SKUCode": "",
    "SiteSearchKeywords": "",
    "ImageSrc": "/images/community-img-01.jpg",
    "Module_ID": 1774,
    "Module_Alias": "Slide"
  },
  {
    "Id": 2306,
    "Url": "/_gallery-slider/demo-standard-gallery/slide-one",
    "ParentId": 2295,
    "LastUpdatedDate": "2018-12-16T00:16:00",
    "Name": "Slide One",
    "UrlSlug": "slide-one",
    "Enabled": true,
    "ReleaseDate": "2018-12-15T18:00:00",
    "ExpiryDate": "2099-12-11T07:00:00",
    "Weighting": 0,
    "Description": "<p>Slide one description...</p>",
    "ItemTags": null,
    "Author_Name": null,
    "Author_Url": null,
    "Author": "",
    "SEOTitle": "",
    "MetaTitle": "",
    "MetaDescription": "",
    "ShowPageForSearchEngine": false,
    "CanonicalLink": "",
    "EnableAMP": false,
    "AMPContent": "",
    "CodeEditor": false,
    "ExternalId": 0,
    "SocialMetaTags": "",
    "OpenGraphProperties": "",
    "DisableForSiteSearch": false,
    "SeoPriority": "",
    "CreatedByMemberId": 0,
    "ItemCategories": null,
    "ItemCategoryIdList": null,
    "SKUCode": "",
    "SiteSearchKeywords": "",
    "ImageSrc": "/images/community-img-01.jpg",
    "Module_ID": 1774,
    "Module_Alias": "Slide"
  },
  {
    "Id": 2307,
    "Url": "/_gallery-slider/demo-standard-gallery/slide-two",
    "ParentId": 2295,
    "LastUpdatedDate": "2018-12-16T00:16:27",
    "Name": "Slide Two",
    "UrlSlug": "slide-two",
    "Enabled": true,
    "ReleaseDate": "2018-12-15T18:00:00",
    "ExpiryDate": "2099-12-10T18:00:00",
    "Weighting": 0,
    "Description": "<p>Slide two description...</p>",
    "ItemTags": null,
    "Author_Name": null,
    "Author_Url": null,
    "Author": "",
    "SEOTitle": "",
    "MetaTitle": "",
    "MetaDescription": "",
    "ShowPageForSearchEngine": false,
    "CanonicalLink": "",
    "EnableAMP": false,
    "AMPContent": "",
    "CodeEditor": false,
    "ExternalId": 0,
    "SocialMetaTags": "",
    "OpenGraphProperties": {
      "title": null,
      "type": null,
      "url": null,
      "locale": null,
      "image": null
    },
    "DisableForSiteSearch": false,
    "SeoPriority": "",
    "CreatedByMemberId": 0,
    "ItemCategories": null,
    "ItemCategoryIdList": null,
    "SKUCode": "",
    "SiteSearchKeywords": "",
    "ImageSrc": "/images/community-img-01.jpg",
    "Module_ID": 1774,
    "Module_Alias": "Slide"
  }
],
  "Params": {},
  "Parent": {
  "Id": 2143,
  "Url": "/component-types/module-slide",
  "ParentId": 2127,
  "LastUpdatedDate": "2020-05-20T00:51:18",
  "Name": "module (Slide)",
  "UrlSlug": "module-slide",
  "Enabled": true,
  "ReleaseDate": "2018-09-05T00:00:00",
  "ExpiryDate": "2099-12-09T00:00:00",
  "Weighting": 949,
  "Description": "<p>This module component fetches data relating to Slide items.</p>\r\n\r\n{% component type: \"snippet\", alias: \"code_block_processor\", data: \"{{data}}\", lang: \"liquid\" %}\r\n\r\n\r\n{% component type: \"snippet\", alias: \"section_parameters\" %}\r\n\r\n{% component type: \"snippet\", alias: \"param_table_head\" %}\r\n    {% component type: \"snippet\", alias: \"param_type\", required: \"true\", values: \"module <em>(default)</em>,module_of_member\" %}\r\n    {% component type: \"snippet\", alias: \"param_source\", required: \"true\", values: \"Slide <em>(default)</em>\" %}\r\n    {% component type: \"snippet\", alias: \"param_layout\", required: \"true\", values: \"List <em>(default)</em><br>&lt;Your Layout name&gt;\" %}\r\n    {% component type: \"snippet\", alias: \"param_filterby\" %}\r\n    {% component type: \"snippet\", alias: \"param_filtervalue\" %}\r\n    {% component type: \"snippet\", alias: \"param_sortby\" %}\r\n    {% component type: \"snippet\", alias: \"param_sortorder\" %}\r\n    {% component type: \"snippet\", alias: \"param_random\" %}\r\n    {% component type: \"snippet\", alias: \"param_limit\" %}\r\n    {% component type: \"snippet\", alias: \"param_enablepagination\" %}\r\n    {% component type: \"snippet\", alias: \"param_displaypagination\" %}\r\n    {% component type: \"snippet\", alias: \"param_emptymessage\" %}\r\n    {% component type: \"snippet\", alias: \"param_object\" %}\r\n    {% component type: \"snippet\", alias: \"param_collectionvariable\" %}\r\n    {% component type: \"snippet\", alias: \"param_issearchresult\" %}\r\n    {% component type: \"snippet\", alias: \"param_searchscope\" %}\r\n    {% component type: \"snippet\", alias: \"param_customparameter\" %}\r\n{% component type: \"snippet\", alias: \"param_table_foot\" %}\r\n\r\n\r\n{% component type: \"snippet\", alias: \"section_output\" %}\r\n\r\n{% component source: \"Slide\", layout: "", type: \"module\", collectionVariable: \"allSlides\" %}\r\n<p>The below example has 3 sample <code>items</code> but is otherwise the default structure you will get from this Component.</p>\r\n{% component type: \"snippet\", alias: \"code_block_processor\", data: \"{{allSlides}}\", lang: \"json\" %}\r\n\r\n{% component type: \"snippet\", alias: \"section_accessing_data\" %}\r\n\r\n<p>This data is accessible in two main ways:</p>\r\n\r\n<p>1. Using Liquid in the specified Layout via the <code>this</code> object.</p>\r\n\r\n{% component type: \"snippet\", alias: \"code_block_processor\", data: \"{{data}}\", lang: \"liquid\" %}\r\n\r\n<p>2. Directly on the Page or Template via a Liquid Collection if <code>collectionVariable</code> was added to the Component tag.</p>\r\n\r\n<p>An example using <code>collectionVariable</code> with value \"allSlides\" to list all \"Slide items\" across the site:</p>\r\n<p class=\"notice-note\">Here we suppress any Layout from rendering by setting <code>layout: \"\"</code> as an empty attribute.</p>\r\n\r\n{% component type: \"snippet\", alias: \"code_block_processor\", data: \"{{data}}\", lang: \"liquid\" %}\r\n\r\n<p><em>Looping through the collection to render all the item names in a list, giving us:</em></p>\r\n\r\n<ul>\r\n    \r\n        <li>Custom Slide One</li>\r\n    \r\n        <li>Slide One</li>\r\n    \r\n        <li>Slide Two</li>\r\n    \r\n</ul>\r\n<br>\r\n<p><em>The code:</em></p>\r\n\r\n{% component type: \"snippet\", alias: \"code_block_processor\", data: \"{{data}}\", lang: \"liquid\" %}\r\n\r\n<p><em>Accessing a specific item within the collection. In this case the second item (zero based index), which in our example would render the value <code>Slide One</code></em></p>\r\n\r\n{% component type: \"snippet\", alias: \"code_block_processor\", data: \"{{data}}\", lang: \"liquid\" %}\r\n\r\n<h2 id=\"secListFiltered\">List Slides from a specific Gallery</h2>\r\n<p>If you have more than one Gallery on your site the above examples will list Slides from all Gallery as one single collection. However, you may also want to list all Slides from only the Gallery they belong to (their \"parent\" Gallery).</p>\r\n<p>To do this we add the <code>filterBy</code> and <code>filterValue</code> attributes to the Component tag using the Galleryies ID to get the relevant items.</p>\r\n<p class=\"notice-tip\">You can use the Component Manager to correctly configure the Component tag and ID value. Alternatively, to obtain the Galleries ID manually from the admin, go to a Galleries list view (where you can see all of the Slide items) and note the number in the browser address bar shown after the <code>parentID=</code> parameter.</p>\r\n\r\n{% component type: \"snippet\", alias: \"section_counter\" %}\r\n",
  "ItemTags": [
  "Galleries/Sliders"
],
  "Author_Name": "",
  "Author_Url": "",
  "Author": "",
  "SEOTitle": "",
  "MetaTitle": "",
  "MetaDescription": "",
  "ShowPageForSearchEngine": true,
  "CanonicalLink": "",
  "EnableAMP": false,
  "AMPContent": "",
  "CodeEditor": true,
  "ExternalId": 0,
  "SocialMetaTags": "",
  "OpenGraphProperties": "",
  "DisableForSiteSearch": false,
  "SeoPriority": "",
  "CreatedByMemberId": 0,
  "ItemCategories": "",
  "ItemCategoryIdList": "",
  "SKUCode": "",
  "SiteSearchKeywords": "",
  "Active": true,
  "IgnoreUpdates": false,
  "UpdateNotes": "'module_of_member' parameter details added.",
  "UpdatesLog": "",
  "ExternalResources": "",
  "AdditionalRelatedArticle_Name": "",
  "AdditionalRelatedArticle_Url": "",
  "AdditionalRelatedArticle": "",
  "AdditionalRelatedArticle2_Name": "",
  "AdditionalRelatedArticle2_Url": "",
  "AdditionalRelatedArticle2": "",
  "Authors": "2418",
  "Module_ID": 1870,
  "Module_Alias": "DocumentationPost",
  "Pagination": {
  "CurrentPage": 1,
  "ItemsPerPage": 1,
  "NumberOfPages": 1,
  "TotalItemsCount": 1
},
  "Params": {},
  "Parent": {
  "Id": 2359,
  "Url": "/bc-migration-guides/ultimate-migration-guide-step-by-step",
  "ParentId": 2355,
  "LastUpdatedDate": "2020-09-09T19:27:22",
  "Name": "Ultimate Migration Guide (Step by Step)",
  "UrlSlug": "ultimate-migration-guide-step-by-step",
  "Enabled": true,
  "ReleaseDate": "2019-02-17T00:00:00",
  "ExpiryDate": "2099-11-30T00:00:00",
  "Weighting": 800,
  "Description": "<div class=\"migration-guide\">\r\n    <div style=\"display:none;\">134</div>\r\n    <p>So you’ve decided to move your site across to Treepl CMS. Good choice.</p>\r\n    <p>And you’ve decided to do it yourself. Good for you! You’re probably going to be doing this quite a few times so let’s make it fun…</p>\r\n    <p>Set aside a good chunk of uninterrupted time, crank up your favourite tunes and grab a strong drink. It’s migration time.</p>\r\n    <p class=\"notice-note\">The below sections are ordered to try and minimise the amount of back and forth when creating the various components of a site.If a section doesn’t apply to your site, feel free to skip right over it.</p>\r\n    <p class=\"notice-note\">Migration tools are in development that will progressively make the below steps easier. These sections will be updated as those tools are released.</p>\r\n    <p class=\"notice-tip\">The BC to Treepl CMS Migration App now converts BC Liquid tags, ie: <code>{module_…}</code> and <code>{tag_…}</code> to Treepl CMS Liquid tags! For more info on this, view the Forum discussion <a href=\"https://forum.treepl.co/t/attention-to-bc-to-treepl-app-users/497\" target=\"_blank\">here</a>.</p>\r\n    <h2 id=\"secBCSiteFTPDownload\" class=\"circle-wrap\"><div class=\"circle\">135</div>Download the BC Site via FTP</h2>\r\n    {% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secBCSiteFTPDownload\", parity: \"high\", effort: \"low\", time: \"low\", docs: \"high\", tool: \"high\" %}\r\n    \r\n    <p>Download all files available via FTP from your BC site, if for no other reason than to just have a backup. However, these files can be referenced in the following steps as well.</p>\r\n    <p>You can also automatically migrate all files in the BC file system directly to your Treepl CMS site via the <a href=\"https://www.bcappstore.com/apps/bc-to-treepl\" target=\"_blank\">BC to Treepl CMS  Migration App</a>.</p>\r\n    <p>There is also now the ability to download a .zip archive of your BC site, including data from the following modules:</p>\r\n    <ul>\r\n    \t<li>Pages</li>\r\n        <li>Page Templates</li>\r\n        <li>Module Layouts</li>\r\n        <li>Static files</li>\r\n        <li>Apps</li>\r\n        <li>Content Holders</li>\r\n        <li>System Pages</li>\r\n        <li>Email Templates</li>\r\n        <li>Web Apps</li>\r\n    </ul>\r\n    <p><b>Further Resources:</b></p>\r\n    <a class=\"btn small\" href=\"https://docs.worldsecuresystems.com/user-manual/site-design/bc-and-dreamweaver/connect-to-your-site-using-dreamweaver\" target=\"_blank\">BC FTP connection details</a>\r\n    <a class=\"btn small\" href=\"https://docs.worldsecuresystems.com/Partners/downloading-your-website#Downloadingyoursitearchive\" target=\"_blank\">BC .zip archive</a>\r\n    \r\n    <h2 id=\"secBCSiteDeepClean\" class=\"circle-wrap\"><div class=\"circle\">136</div>Deep-Clean the BC Site (Optional)</h2>\r\n    {% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secBCSiteDeepClean\", parity: \"na\", effort: \"med\", time: \"med\", docs: \"na\", tool: \"na\" %}\r\n    <p>This step is optional, but you may want to take the opportunity to clear out the BC site of old pages, templates, files, etc. Particularly if it’s an old site, there can be a lot of junk floating around. And this can just get in your way during migration and could cause unnecessary work. However, be very careful not to remove assets that may still be in use somewhere (hence the backup in the previous step).</p>\r\n    <p>Once you’ve cleaned up, repeat the FTP download step to collect a new, clean, set of files.</p>\r\n    \r\n    <h2 id=\"secTreeplCMSInstance\" class=\"circle-wrap\"><div class=\"circle\">137</div>Setup Treepl CMS Site Instance</h2>\r\n    {% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secTreeplCMSInstance\", parity: \"high\", effort: \"low\", time: \"low\", docs: \"high\", tool: \"na\" %}\r\n    <p>So you can start work with the Treepl CMS platform you'll need to set up a Trial Site. Log into your Treepl Portal (portal.treepl.co) and click the \"Create New Site\" button.</p>\r\n    <div class=\"tab-content faqsOpenCloseHolder\">\r\n    <div class=\"faqs-open-close \">\r\n        <a class=\"opener\" href=\"#\"><i class=\"fas fa-angle-right\"></i>Trial Site Documentation</a>\r\n        <div class=\"slide js-slide-hidden\">\r\n            {% component source: \"Documentation Post\", layout: \"Body Detail\", filterBy: \"id\", filterValue: \"2151\", limit: \"1\", type: \"module\" %}\r\n        </div>\r\n    </div>\r\n    </div>\r\n    \r\n    <h2 id=\"secHostedEmailTransfer\" class=\"circle-wrap\"><div class=\"circle\">138</div>Start BC Hosted Email Transfer Process (If Applicable)</h2>\r\n    {% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secHostedEmailTransfer\", parity: \"na\", effort: \"low\", time: \"med\", docs: \"high\", tool: \"low\" %}\r\n    <p>If your BC site has BC hosted emails, they can be transferred directly to Treepl CMS after following the below steps.</p>\r\n    <div class=\"tab-content faqsOpenCloseHolder\">\r\n    <div class=\"faqs-open-close \">\r\n        <a class=\"opener\" href=\"#\"><i class=\"fas fa-angle-right\"></i>Transfer of BC Hosted Email Accounts</a>\r\n        <div class=\"slide js-slide-hidden\">\r\n            {% component source: \"Documentation Post\", layout: \"Body Detail\", filterBy: \"id\", filterValue: \"2185\", limit: \"1\", type: \"module\" %}\r\n        </div>\r\n    </div>\r\n    </div>\r\n    \r\n    <h2 id=\"secUploadSiteAssets\" class=\"circle-wrap\"><div class=\"circle\">139</div>Upload Site Assets</h2>\r\n    {% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secUploadSiteAssets\", parity: \"high\", effort: \"low\", time: \"low\", docs: \"high\", tool: \"high\" %}\r\n    <p>Now we'll want to connect to our new Treepl CMS instance via FTP so we can upload some of our BC assets.</p>\r\n    <p>If working manually, we'll probably only want to upload assets relating to the front-end site, such as images, CSS, JS, documents, etc. We don't want to move over pages, templates or other layout files just yet.</p>\r\n    <p>Below are instructions for getting connected via FTP client.</p>\r\n    <div class=\"tab-content faqsOpenCloseHolder\">\r\n        <div class=\"faqs-open-close \">\r\n            <a class=\"opener\" href=\"#\"><i class=\"fas fa-angle-right\"></i>FTP Access Documentation</a>\r\n            <div class=\"slide js-slide-hidden\">\r\n                {% component source: \"Documentation Post\", layout: \"Body Detail\", filterBy: \"id\", filterValue: \"1936\", limit: \"1\", type: \"module\" %}\r\n            </div>\r\n        </div>\r\n    </div>\r\n    <p>Alternatively, you can automatically migrate all files in the BC file system directly to your Treepl CMS site via the <a href=\"https://www.bcappstore.com/apps/bc-to-treepl\" target=\"_blank\">BC to Treepl CMS  Migration App</a>.</p>\r\n    \r\n    <h2 id=\"secSetupPlaceholderTemplates\" class=\"circle-wrap\"><div class=\"circle\">140</div>Upload or Setup Placeholder Templates</h2>\r\n    {% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secSetupPlaceholderTemplates\", parity: \"high\", effort: \"low\", time: \"low\", docs: \"med\", tool: \"high\" %}\r\n    <p>You can manually upload your BC page templates into your Treepl CMS instance via FTP into the ‘Content / ContentTemplates’ directory.</p>\r\n    <p>Alternatively the <a href=\"https://www.bcappstore.com/apps/bc-to-treepl\" target=\"_blank\">BC to Treepl CMS  Migration App</a> can be used to automate this process.</p>\r\n    <p>If manually migrating templates, don’t worry about editing the template code/markup at this stage. We just want to get them loaded in Treepl CMS so we can reference it in the following steps. We’ll work on the template code later.</p>\r\n    \r\n    <p>If not using FTP, to manually create a content template, go to 'Content' &gt; 'Content Templates'.</p>\r\n    <p>Click ‘Add New Template’ button.</p>\r\n    <p>Just complete ‘Name’ and choose whether it's the default template. Leave the content as is for now.</p>\r\n    <p>Repeat this for all required templates.</p>\r\n    \r\n    <div class=\"tab-content faqsOpenCloseHolder\">\r\n    <div class=\"faqs-open-close \">\r\n        <a class=\"opener\" href=\"#\"><i class=\"fas fa-angle-right\"></i>Content Templates Documentation</a>\r\n        <div class=\"slide js-slide-hidden\">\r\n            {% component source: \"Documentation Post\", layout: \"Body Detail\", filterBy: \"id\", filterValue: \"2132\", limit: \"1\", type: \"module\" %}\r\n        </div>\r\n    </div>\r\n    </div>\r\n    \r\n    <h2 id=\"secSetupSitePages\" class=\"circle-wrap\"><div class=\"circle\">141</div>Upload or Setup Site Pages</h2>\r\n    {% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secSetupSitePages\", parity: \"high\", effort: \"low\", time: \"low\", docs: \"med\", tool: \"high\" %}\r\n    <p>Upload your BC pages into your Treepl CMS instance via FTP into the ‘Content / Pages’ directory.</p>\r\n    <p>Alternatively the <a href=\"https://www.bcappstore.com/apps/bc-to-treepl\" target=\"_blank\">BC to Treepl CMS  Migration App</a> can be used to automate this process.</p>\r\n    <p>If manually migration pages, there will still be several properties you will want to set for each page, such as a more relevant system name, assigning it to a template, SEO and meta details, etc. and we’ll likely need to review the page content for any system tags or Liquid\r\n        that needs replacing. However, all in good time and we’ll take those actions in a later step. For now we just want to get the bulk of the setup in place.</p>\r\n    \r\n    <div class=\"tab-content faqsOpenCloseHolder\">\r\n    <div class=\"faqs-open-close \">\r\n        <a class=\"opener\" href=\"#\"><i class=\"fas fa-angle-right\"></i>Pages Documentation</a>\r\n        <div class=\"slide js-slide-hidden\">\r\n            {% component source: \"Documentation Post\", layout: \"Body Detail\", filterBy: \"id\", filterValue: \"2131\", limit: \"1\", type: \"module\" %}\r\n        </div>\r\n    </div>\r\n    </div>\r\n    \r\n    <h2 id=\"secReplicateMenus\" class=\"circle-wrap\"><div class=\"circle\">142</div>Replicate Menus & Menu Layouts</h2>\r\n    {% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secReplicateMenus\", parity: \"high\", effort: \"med\", time: \"med\", docs: \"high\", tool: \"high\" %}\r\n    <p>You can easily recreate your BC menus into your Treepl CMS instance via the admin ‘Content' > 'Menus’, and copy over and adjust your menu layouts.</p>\r\n    <p>Alternatively the <a href=\"https://www.bcappstore.com/apps/bc-to-treepl\" target=\"_blank\">BC to Treepl CMS  Migration App</a> can be used to automate this process.</p>\r\n    <p>If manually recreating your menus you can follow the documentation and tips below:</p>\r\n    \r\n    <div class=\"tab-content faqsOpenCloseHolder\">\r\n        <div class=\"faqs-open-close \">\r\n            <a class=\"opener\" href=\"#\"><i class=\"fas fa-angle-right\"></i>Menus Documentation</a>\r\n            <div class=\"slide js-slide-hidden\">\r\n                {% component source: \"Documentation Post\", layout: \"Body Detail\", filterBy: \"id\", filterValue: \"1966\", limit: \"1\", type: \"module\" %}\r\n            </div>\r\n        </div>\r\n    </div>\r\n    \r\n    <h3>BC Menu V2</h3>\r\n    <p>If using BC’s menu v2 method for your menus, upload your menu layouts from ‘ModuleTemplates / Menu / &lt;menu-name&gt;’ into the corresponding Treepl CMS menu layouts in ‘Content / MenuLayouts / &lt;menu_alias_name&gt;’</p>\r\n    <p>The corresponding layouts from BC to Treepl CMS are:</p>\r\n    <ul>\r\n        <li>“container.html” --&gt; “menu.layout”</li>\r\n        <li>“group.html” --&gt; “item.layout”</li>\r\n        <li>“childitem.html” --&gt; “sub_items.layout”</li>\r\n    </ul>\r\n    <p>Now, we’re finally going to get our hands dirty with some code.</p>\r\n    <p>We’ll need to convert the BC tags into the Treepl CMS way of doing things. Let’s reference the Menu documentation above while doing this.</p>\r\n    <p>Starting with the “menu.layout” file you'll want to weave your HTML markup into the Treepl CMS Liquid so that the Liquid logic renders the same markup you are referencing from BC.</p>\r\n    <p>Next, do the same with the “item.layout” file, weaving in the BC “group.html” markup.</p>\r\n    <p>Finally, the “sub_items.layout” file,</p>\r\n    <p>Repeat for each menu group you are using.</p>\r\n    <p>If you have multiple menus using the same layout group in BC, simply copy the same code you just set up into each menu layout files (menus don’t share layouts in Treepl CMS).</p>\r\n    \r\n    <h3>BC Menu V1 (legacy module)</h3>\r\n    <p>If using BC’s original/legacy menu method, we’ll need to reference the rendered source code for your menu in the browser.</p>\r\n    <p>Load one of your BC site pages that features the menu. View the page source (right click, 'View Source') and identify the complete section of menu elements including the BC JS references.</p>\r\n    <p>Copy the menu elements into your “menu.layout” file so we can start working on converting that code.</p>\r\n    <p>Back in the source view, for the two JS references BC outputs, right click on the source links and save those JS files to your BC site files in an appropriate directory and than upload those to Treepl CMS in the corresponding directory.</p>\r\n    <p>Back in your menu layout, we'll relink the JS references to point to the new location.</p>\r\n    <p>Work through recoding the menu HTML into the Treepl CMS menu layouts to complete the process.</p>\r\n    \r\n    \r\n    <h2 id=\"secSetupSecureZones\" class=\"circle-wrap\"><div class=\"circle\">143</div>Setup Secure Zones</h2>\r\n    {% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secSetupSecureZones\", parity: \"high\", effort: \"low\", time: \"low\", docs: \"high\", tool: \"high\" %}\r\n    <p>Recreating all Secure Zones from BC into Treepl CMS is a fairly straight forward process.</p>\r\n    <p>Alternatively the <a href=\"https://www.bcappstore.com/apps/bc-to-treepl\" target=\"_blank\">BC to Treepl CMS  Migration App</a> can be used to automate this process.</p>\r\n    <p>If manually recreating your Secure Zones, you can follow the steps below:</p>\r\n    <p>Go to ‘Content’ &gt; ‘Secure Zones’</p>\r\n    <p>Click ‘Add Secure Zone’ button.</p>\r\n    <p>Complete ‘Name’ and ‘Landing Page’ then “Next” to save and move to ‘Step 2: Secure Content’.</p>\r\n    <p>Pages will be ready for you to secure, however most other content we havn't migrated over yet so you'll need to revisit this section to secure all relevant items.</p>\r\n    <p>Click “Next” to save and move to ‘Step 3: Members’</p>\r\n    <p>Here you can manage the members subscribed to the secure zone.</p>\r\n    <p>For further documentation expand the box below:</p>\r\n    <div class=\"tab-content faqsOpenCloseHolder\">\r\n        <div class=\"faqs-open-close \">\r\n            <a class=\"opener\" href=\"#\"><i class=\"fas fa-angle-right\"></i>Secure Zones Documentation</a>\r\n            <div class=\"slide js-slide-hidden\">\r\n                {% component source: \"Documentation Post\", layout: \"Body Detail\", filterBy: \"id\", filterValue: \"2199\", limit: \"1\", type: \"module\" %}\r\n            </div>\r\n        </div>\r\n    </div>\r\n    \r\n    <h2 id=\"secSetupMailingListsMC\" class=\"circle-wrap\"><div class=\"circle\">144</div>Setup Mailing Lists (MailChimp)</h2>\r\n    {% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secSetupMailingListsMC\", parity: \"low\", effort: \"med\", time: \"low\", docs: \"high\", tool: \"low\" %}\r\n    <p>Before you can set up Mailing Lists in Treepl CMS you need to connect a MailChimp account using their provided API key.</p>\r\n    <p>Below are documentation for setting up the API connection and further inofrmation about adding Mailing Lists.</p>\r\n    \r\n    <div class=\"tab-content faqsOpenCloseHolder\">\r\n        <div class=\"faqs-open-close \">\r\n            <a class=\"opener\" href=\"#\"><i class=\"fas fa-angle-right\"></i>API Provider Documentation</a>\r\n            <div class=\"slide js-slide-hidden\">\r\n                {% component source: \"Documentation Post\", layout: \"Body Detail\", filterBy: \"id\", filterValue: \"2311\", limit: \"1\", type: \"module\" %}\r\n            </div>\r\n        </div>\r\n        <div class=\"faqs-open-close \">\r\n            <a class=\"opener\" href=\"#\"><i class=\"fas fa-angle-right\"></i>Mailing Lists Documentation</a>\r\n            <div class=\"slide js-slide-hidden\">\r\n                {% component source: \"Documentation Post\", layout: \"Body Detail\", filterBy: \"id\", filterValue: \"2310\", limit: \"1\", type: \"module\" %}\r\n            </div>\r\n        </div>\r\n    </div>\r\n    \r\n    <p>Currently, Email Campaigns would generally be managed in MailChimp for full functionality of the MailChimp service. However, basic Email Campaigns can be add via Treepl CMS and pushed to MailChimp.<br>\r\n    <em>More documentation coming soon on this.</em></p>\r\n    \r\n    <h2 id=\"secSetupSiteSearch\" class=\"circle-wrap\"><div class=\"circle\">145</div>Setup Site Search</h2>\r\n    {% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secSetupSiteSearch\", parity: \"med\", effort: \"low\", time: \"low\", docs: \"med\", tool: \"low\" %}\r\n    <p>You don’t need to set up any Site Search module in Treepl CMS. This functionality is ready to use simply by inserting the search form and component tag.</p>\r\n    <p>So there is nothing you need to do in this step.</p>\r\n    <p>Later in the migration we’ll need to replace any BC site search forms so we’ll reference back to this documentation:</p>\r\n    <div class=\"tab-content faqsOpenCloseHolder\">\r\n        <div class=\"faqs-open-close \">\r\n            <a class=\"opener\" href=\"#\"><i class=\"fas fa-angle-right\"></i>Site Search Documentation - COMING SOON...</a>\r\n            <div class=\"slide js-slide-hidden\">\r\n                {% component source: \"Documentation Post\", layout: \"Body Detail\", filterBy: \"id\", filterValue: \"2356\", limit: \"1\", type: \"module\" %}\r\n            </div>\r\n        </div>\r\n        <div class=\"faqs-open-close \">\r\n            <a class=\"opener\" href=\"#\"><i class=\"fas fa-angle-right\"></i>Site Search Component Documentation</a>\r\n            <div class=\"slide js-slide-hidden\">\r\n                {% component source: \"Documentation Post\", layout: \"Body Detail\", filterBy: \"id\", filterValue: \"1959\", limit: \"1\", type: \"module\" %}\r\n            </div>\r\n        </div>\r\n    </div>\r\n    \r\n    <h2 id=\"secReplicateURLRedirects\" class=\"circle-wrap\"><div class=\"circle\">146</div>Replicate Existing URL Redirects</h2>\r\n    {% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secReplicateURLRedirects\", parity: \"high\", effort: \"med\", time: \"med\", docs: \"high\", tool: \"high\" %}\r\n    <p>While you can import URL Redirects into Treepl CMS in bulk, BC doesn't have an export function available from their admin, so you’ll need to enter URL redirects manually. Alternatively the <a href=\"https://www.bcappstore.com/apps/bc-to-treepl\" target=\"_blank\">BC to Treepl CMS  Migration App</a> can be used to automate this process.</p>\r\n    <p>See below for more information on URL Redirects.</p>\r\n    <div class=\"tab-content faqsOpenCloseHolder\">\r\n        <div class=\"faqs-open-close \">\r\n            <a class=\"opener\" href=\"#\"><i class=\"fas fa-angle-right\"></i>URL Redirects Documentation</a>\r\n            <div class=\"slide js-slide-hidden\">\r\n                {% component source: \"Documentation Post\", layout: \"Body Detail\", filterBy: \"id\", filterValue: \"2210\", limit: \"1\", type: \"module\" %}\r\n            </div>\r\n        </div>\r\n    </div>\r\n    \r\n    <h2 id=\"secSetupAdminUserRoles\" class=\"circle-wrap\"><div class=\"circle\">147</div>Setup Admin User Roles</h2>\r\n    {% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secSetupAdminUserRoles\", parity: \"med\", effort: \"low\", time: \"low\", docs: \"med\", tool: \"low\" %}\r\n    <p>While we won’t be adding Admin Users just yet, we’ll still get the User Roles set up and in place ready to assign users to in a later step.</p>\r\n    <p>To set up Admin User Roles, go to ‘Settings’ &gt; ‘Admin User Roles’</p>\r\n    <p>Click ‘Add Admin Role’ button.</p>\r\n    <p>Complete a 'Name' for your Role and configure the permissions, turning off checkboxes to block users access to those items.</p>\r\n    <p class=\"notice-note\">Many permission items have nested items for further fine-grain control.</p>\r\n    \r\n    \r\n    \r\n    <h2 id=\"secSetupNotificationWorkflow\" class=\"circle-wrap\"><div class=\"circle\">148</div>Setup Email Notification Workflow/s</h2>\r\n    {% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secSetupNotificationWorkflow\", parity: \"med\", effort: \"low\", time: \"low\", docs: \"high\", tool: \"high\" %}\r\n    <p>We’ll set up the default Notification Workflow email (and additional ones if needed - make sure you’re site plan supports multiple Workflow Emails if you need more than one Workflow)</p>\r\n    <p>You can optionally, upload your BC workflow email layouts into your Treepl CMS instance via FTP into the ‘Content / SystemEmails’ directory. However, if you only have a few email layouts it may be better to set these up via the Admin as you'll need to configure other settings as well.</p>\r\n    <p>Alternatively the <a href=\"https://www.bcappstore.com/apps/bc-to-treepl\" target=\"_blank\">BC to Treepl CMS  Migration App</a> can be used to automate this process.</p>\r\n    <p>See below for documentation on Workflows.</p>\r\n    <div class=\"tab-content faqsOpenCloseHolder\">\r\n        <div class=\"faqs-open-close \">\r\n            <a class=\"opener\" href=\"#\"><i class=\"fas fa-angle-right\"></i>Workflows Documentation</a>\r\n            <div class=\"slide js-slide-hidden\">\r\n                {% component source: \"Documentation Post\", layout: \"Body Detail\", filterBy: \"id\", filterValue: \"2208\", limit: \"1\", type: \"module\" %}\r\n            </div>\r\n        </div>\r\n    </div>\r\n    \r\n    \r\n    \r\n    \r\n    <h2 id=\"secReplicateWebForms\" class=\"circle-wrap\"><div class=\"circle\">149</div>Replicate Web Forms</h2>\r\n    {% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secReplicateWebForms\", parity: \"high\", effort: \"low\", time: \"med\", docs: \"high\", tool: \"med\" %}\r\n    <p>You can create new web forms in the Treepl admin for each of your BC Web Forms and copy over and adjust your form layout/code.</p>\r\n    <p>Alternatively the <a href=\"https://www.bcappstore.com/apps/bc-to-treepl\" target=\"_blank\">BC to Treepl CMS  Migration App</a> can be used to automate this process.</p>\r\n    <p>See below for documentation on Forms.</p>\r\n    <div class=\"tab-content faqsOpenCloseHolder\">\r\n        <div class=\"faqs-open-close \">\r\n            <a class=\"opener\" href=\"#\"><i class=\"fas fa-angle-right\"></i>Forms Documentation</a>\r\n            <div class=\"slide js-slide-hidden\">\r\n                {% component source: \"Documentation Post\", layout: \"Body Detail\", filterBy: \"id\", filterValue: \"2041\", limit: \"1\", type: \"module\" %}\r\n            </div>\r\n        </div>\r\n    </div>\r\n    \r\n    <h2 id=\"secReplicateSystemPages\" class=\"circle-wrap\"><div class=\"circle\">150</div>Replicate System Pages</h2>\r\n    {% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secReplicateSystemPages\", parity: \"high\", effort: \"low\", time: \"low\", docs: \"high\", tool: \"high\" %}\r\n    <p>This process can be automated with the <a href=\"https://www.bcappstore.com/apps/bc-to-treepl\" target=\"_blank\">BC to Treepl CMS  Migration App</a>.</p>\r\n    <p>Or, if manually migrating system pages, locate your relevant BC System Pages either in your downloaded BC site files, or in the “Develop” tab of the BC Admin under ‘Layouts / SystemMessages’, or directly in the BC Admin under ‘Site Manager’ &gt; ‘System Pages.</p>\r\n    <p>You’ll need to copy over the HTML from these into the corresponding system page in Treepl CMS found in the Admin under ‘Settings / System Pages’</p>\r\n    <p>While you can upload system pages into Treepl CMS, you'd first need to rename the relevant BC files to match those of Treepl CMS in order to override them. However, this is not recommended as you'll lose the default layouts and Liquid markup required for those layouts.</p>\r\n    <p>For more information refer to the below documentation article.</p>\r\n    <div class=\"tab-content faqsOpenCloseHolder\">\r\n        <div class=\"faqs-open-close \">\r\n            <a class=\"opener\" href=\"#\"><i class=\"fas fa-angle-right\"></i>System Pages Documentation</a>\r\n            <div class=\"slide js-slide-hidden\">\r\n                {% component source: \"Documentation Post\", layout: \"Body Detail\", filterBy: \"id\", filterValue: \"2207\", limit: \"1\", type: \"module\" %}\r\n            </div>\r\n        </div>\r\n    </div>\r\n    <p>Review your HTML for any BC specific tags or modules which will need to be converted to Treepl CMS equivalents. Either making note of them to come back to once other items are set up, or replace them now if you can. For example, you may have a\r\n        site search form on your 404 Not Found page, or a secure zone login form on your 401 or 403 pages.</p>\r\n    \r\n    <h2 id=\"secReplicateSystemEmails\" class=\"circle-wrap\"><div class=\"circle\">151</div>Replicate System Emails</h2>\r\n    {% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secReplicateSystemEmails\", parity: \"high\", effort: \"low\", time: \"low\", docs: \"high\", tool: \"high\" %}\r\n    <p>This process can be automated with the <a href=\"https://www.bcappstore.com/apps/bc-to-treepl\" target=\"_blank\">BC to Treepl CMS  Migration App</a>.</p>\r\n    <p>Or, if manually migrating system emails, locate your relevant BC System Emails, either in your downloaded BC site files, or in the “Develop” tab of the BC Admin under ‘Layouts / OutboundEmails’, or directly in the BC Admin under ‘Site Manager’ &gt; ‘System Emails’.</p>\r\n    <p>You’ll need to copy over the HTML from these into the corresponding system emails in Treepl CMS found in the Admin under ‘Email Notifications / System Emails’</p>\r\n        <p>While you can upload system emails into Treepl CMS, you'd first need to rename the relevant BC files to match those of Treepl CMS in order to override them. However, this is not recommended as you'll lose the default layouts and Liquid markup required for those layouts.</p>\r\n    <p>Review your HTML for any BC specific tags or modules which will need to be converted to Treepl CMS equivalents. Be sure to reference the default tags already in the email layouts in Treepl CMS to identify which ones can replace your BC tags.</p>\r\n    <p>For more information refer to the below documentation article.</p>\r\n    <div class=\"tab-content faqsOpenCloseHolder\">\r\n        <div class=\"faqs-open-close \">\r\n            <a class=\"opener\" href=\"#\"><i class=\"fas fa-angle-right\"></i>System Emails Documentation</a>\r\n            <div class=\"slide js-slide-hidden\">\r\n                {% component source: \"Documentation Post\", layout: \"Body Detail\", filterBy: \"id\", filterValue: \"2205\", limit: \"1\", type: \"module\" %}\r\n            </div>\r\n        </div>\r\n    </div>\r\n    \r\n    <h2 id=\"secReplicateCategories\" class=\"circle-wrap\"><div class=\"circle\">152</div>Replicate Categories</h2>\r\n    {% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secReplicateCategories\", parity: \"high\", effort: \"low\", time: \"low\", docs: \"high\", tool: \"high\" %}\r\n    <p>You can manually recreate any Categories set up in your BC site into Treepl CMS under ‘Settings / Categories’</p>\r\n    <p>Alternatively the <a href=\"https://www.bcappstore.com/apps/bc-to-treepl\" target=\"_blank\">BC to Treepl CMS  Migration App</a> can be used to automate this process.</p>\r\n    <p>For more information about Categories see the below documentation article.</p>\r\n    <div class=\"tab-content faqsOpenCloseHolder\">\r\n        <div class=\"faqs-open-close \">\r\n            <a class=\"opener\" href=\"#\"><i class=\"fas fa-angle-right\"></i>Categories Documentation</a>\r\n            <div class=\"slide js-slide-hidden\">\r\n                {% component source: \"Documentation Post\", layout: \"Body Detail\", filterBy: \"id\", filterValue: \"2308\", limit: \"1\", type: \"module\" %}\r\n            </div>\r\n        </div>\r\n    </div>\r\n    \r\n    <h2 id=\"secContactsAndCases\" class=\"circle-wrap\"><div class=\"circle\">153</div>Contacts & Cases</h2>\r\n    {% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secContactsAndCases\", parity: \"med\", effort: \"med\", time: \"med\", docs: \"low\", tool: \"high\" %}\r\n    <p>The <a href=\"https://www.bcappstore.com/apps/bc-to-treepl\" target=\"_blank\">BC to Treepl CMS  Migration App</a> can be used to migrate both contact records and cases.</p>\r\n    <p>Alternatively, you can import contact records directly into the Treepl CMS Contacts module. However, Cases can not yet be imported in this way and would need to be added manaully if not using the Migration App.</p>\r\n    <p>Also note that Treepl CMS Contact fields are limited, so it's still advisable to export BC CRM data for archive/backup purposes if advanced CRM fields exist and later import that data when the advanced CRM is available.</p>\r\n\r\n    \r\n    <h2 id=\"secReplicateContentHolders\" class=\"circle-wrap\"><div class=\"circle\">154</div>Replicate Content Holders</h2>\r\n    {% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secReplicateContentHolders\", parity: \"high\", effort: \"low\", time: \"low\", docs: \"med\", tool: \"high\" %}\r\n    <p>The <a href=\"https://www.bcappstore.com/apps/bc-to-treepl\" target=\"_blank\">BC to Treepl CMS  Migration App</a> can be used to automate this process.</p>\r\n    <p>Alternatively, if manually migrating, locate your relevant BC Content Holders, either in your downloaded BC site files, or in the “Develop” tab of the BC Admin under ‘System / ContentHolders, or directly in the BC Admin under ‘Site Manager’ &gt; ‘Content Holders’.</p>\r\n    <p>Upload your BC Content Holders into your Treepl CMS instance via FTP into the ‘Content / Snippets’ directory.</p>\r\n    <p>If not using FTP, create and copy over the HTML from these into the Treepl CMS admin area under ‘Content / Snippets’.</p>\r\n    <p>Review your HTML for any BC specific tags or modules which will need to be converted to Treepl CMS equivalents. Either making note of them to come back to once other items are set up, or replace them now if you can.</p>\r\n    \r\n    \r\n    <div class=\"tab-content faqsOpenCloseHolder\">\r\n        <div class=\"faqs-open-close \">\r\n            <a class=\"opener\" href=\"#\"><i class=\"fas fa-angle-right\"></i>Snippets Documentation</a>\r\n            <div class=\"slide js-slide-hidden\">\r\n                {% component source: \"Documentation Post\", layout: \"Body Detail\", filterBy: \"id\", filterValue: \"2133\", limit: \"1\", type: \"module\" %}\r\n            </div>\r\n        </div>\r\n        <div class=\"faqs-open-close \">\r\n            <a class=\"opener\" href=\"#\"><i class=\"fas fa-angle-right\"></i>Snippets Component Documentation</a>\r\n            <div class=\"slide js-slide-hidden\">\r\n                {% component source: \"Documentation Post\", layout: \"Body Detail\", filterBy: \"id\", filterValue: \"1950\", limit: \"1\", type: \"module\" %}\r\n            </div>\r\n        </div>\r\n    </div>\r\n    \r\n    \r\n    \r\n    \r\n    <h2 id=\"secBuiltInModules\" class=\"circle-wrap\"><div class=\"circle\">155</div>Built-In Modules:</h2>\r\n    <h3 id=\"secBlogs\">Blogs</h3>\r\n    {% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secBuiltInModulesBlogs\", parity: \"high\", effort: \"med\", time: \"med\", docs: \"med\", tool: \"high\" %}\r\n    <p>BC Blogs can be replicated in Treepl CMS either in the built-in Blog module or by using Custom Modules to configure your own blog structure.</p>\r\n    <p>The <a href=\"https://www.bcappstore.com/apps/bc-to-treepl\" target=\"_blank\">BC to Treepl CMS Migration App</a> can be used to automate this process, including Release Dates, Tags, Categories, Authors and SEO data.</p>\r\n    <p>If manually transferring your blogs, for a method of extracting the BC Blog data see this helpful Treepl CMS Forum post (includes code snippets and demo video):</p>\r\n    <a class=\"btn small\" href=\"https://forum.treepl.co/t/bc-blog-export-helper/61\" target=\"_blank\">BC Blog Export Helper</a>\r\n    <p>You can also upload your BC module layouts into your Treepl CMS instance via FTP into the ‘Content / ModuleLayouts / &lt;Blog&gt; &amp; &lt;BlogPost&gt;’ directories.</p>\r\n    <p>For more information about the Blog module see the documentation articles.</p>\r\n    <div class=\"tab-content faqsOpenCloseHolder\">\r\n        <div class=\"faqs-open-close \">\r\n            <a class=\"opener\" href=\"#\"><i class=\"fas fa-angle-right\"></i>Blog module Documentation</a>\r\n            <div class=\"slide js-slide-hidden\">\r\n                {% component source: \"Documentation Post\", layout: \"Body Detail\", filterBy: \"id\", filterValue: \"2135\", limit: \"1\", type: \"module\" %}\r\n            </div>\r\n        </div>\r\n        <div class=\"faqs-open-close \">\r\n            <a class=\"opener\" href=\"#\"><i class=\"fas fa-angle-right\"></i>Blog component Documentation</a>\r\n            <div class=\"slide js-slide-hidden\">\r\n                {% component source: \"Documentation Post\", layout: \"Body Detail\", filterBy: \"id\", filterValue: \"2141\", limit: \"1\", type: \"module\" %}\r\n            </div>\r\n        </div>\r\n        <div class=\"faqs-open-close \">\r\n            <a class=\"opener\" href=\"#\"><i class=\"fas fa-angle-right\"></i>Blog Post component Documentation</a>\r\n            <div class=\"slide js-slide-hidden\">\r\n                {% component source: \"Documentation Post\", layout: \"Body Detail\", filterBy: \"id\", filterValue: \"2142\", limit: \"1\", type: \"module\" %}\r\n            </div>\r\n        </div>\r\n    </div>\r\n    \r\n    <h3 id=\"secEvents\">Events</h3>\r\n    {% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secBuiltInModulesEvents\", parity: \"high\", effort: \"high\", time: \"med\", docs: \"low\", tool: \"high\" %}\r\n    <p>Treepl CMS Events are similar to BC Events and can be set up quite easily.</p>\r\n    <p>The <a href=\"https://www.bcappstore.com/apps/bc-to-treepl\" target=\"_blank\">BC to Treepl CMS  Migration App</a> can be used to automate Event migrations as well as transfer Event booking data from the CRM into Treepl CMS CRM.</p>\r\n    <p>For manual migrations, getting the data out of BC is a problem... although, you could likely use a similar approach to the Blog Export Helper above.</p>\r\n    <p>You can also upload your BC module layouts into your Treepl CMS instance via FTP into the ‘Content / ModuleLayouts / &lt;Event&gt; &amp; &lt;EventGroup&gt;’ directories.</p>\r\n    \r\n    <h3 id=\"secPhotoGalleries\">Photo Galleries</h3>\r\n    {% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secBuiltInModulesGalleries\", parity: \"med\", effort: \"med\", time: \"med\", docs: \"med\", tool: \"high\" %}\r\n    <p>Galleries in Treepl CMS work more like WebApps, so each image is an item within the parent module. This brings greater control in the long run, however migrating images and data to this new format can make migration a little more involved.</p>\r\n    <p>The <a href=\"https://www.bcappstore.com/apps/bc-to-treepl\" target=\"_blank\">BC to Treepl CMS Migration App</a> can be used to automate this process.</p>\r\n    <p>If manually transferring your galleries, see this very helpful method of extracting the BC data in a ready format for Treepl CMS posted in the Treepl CMS Forum:</p>\r\n    <a class=\"btn small\" href=\"https://forum.treepl.co/t/bc-photo-gallery-exporter/107\" target=\"_blank\">BC Photo Galleries Export Helper</a>\r\n    <p>For more information about the Galleries/Sliders module see the documentation articles.</p>\r\n    <div class=\"tab-content faqsOpenCloseHolder\">\r\n        <div class=\"faqs-open-close \">\r\n            <a class=\"opener\" href=\"#\"><i class=\"fas fa-angle-right\"></i>Gallery/Slider Group module</a>\r\n            <div class=\"slide js-slide-hidden\">\r\n                {% component source: \"Documentation Post\", layout: \"Body Detail\", filterBy: \"id\", filterValue: \"2140\", limit: \"1\", type: \"module\" %}\r\n            </div>\r\n        </div>\r\n    </div>\r\n    <div class=\"tab-content faqsOpenCloseHolder\">\r\n        <div class=\"faqs-open-close \">\r\n            <a class=\"opener\" href=\"#\"><i class=\"fas fa-angle-right\"></i>Gallery/Slider Item module</a>\r\n            <div class=\"slide js-slide-hidden\">\r\n                {% component source: \"Documentation Post\", layout: \"Body Detail\", filterBy: \"id\", filterValue: \"2143\", limit: \"1\", type: \"module\" %}\r\n            </div>\r\n        </div>\r\n    </div>\r\n    \r\n    <h3 id=\"secNews\">News</h3>\r\n    {% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secBuiltInModulesNews\", parity: \"med\", effort: \"low\", time: \"low\", docs: \"med\", tool: \"high\" %}\r\n    <p>There is no “News” module specifically in Treepl CMS, however using the Blog would likely be a more than suitable alternative (see migrating Blogs section above).</p>\r\n    <p>The <a href=\"https://www.bcappstore.com/apps/bc-to-treepl\" target=\"_blank\">BC to Treepl CMS Migration App</a> can be used to automate this process and a separate Blog module will be created for News items.</p>\r\n    <p>If migrating manually, since BC doesn't provide export functionality for extracting the BC News data, you could likely use a similar approach to the Blog Export Helper above.</p>\r\n    <p>You can also upload your BC module layouts into your Treepl CMS instance via FTP into the ‘Content / ModuleLayouts / &lt;Your Custom Module OR Blog&gt;’ directory.</p>\r\n    \r\n    \r\n    <h3 id=\"secMediaDownloads\">Media Downloads</h3>\r\n    {% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secBuiltInModulesMedia\", parity: \"low\", effort: \"med\", time: \"med\", docs: \"low\", tool: \"high\" %}\r\n    <p>There is no direct “Media Downloads” module in Treepl CMS, however setting up a Custom Module along with the ‘<a href=\"https://docs.treepl.co/documentation_group/extras/force-download-handler\" target=\"_blank\">Force Download Handler</a>’ option would see very similar results with greater flexibility.<br>\r\n    (see migrating WebApps section in a later step).</p>\r\n    <p>You can manually migrate Media Downloads or alternatively the <a href=\"https://www.bcappstore.com/apps/bc-to-treepl\" target=\"_blank\">BC to Treepl CMS  Migration App</a> can be used to automate this process.</p>\r\n    <p>For manual migrations, a very helpful method of extracting the BC data in a ready format for Treepl CMS, see this helpful Treepl CMS Forum post:</p>\r\n    <a class=\"btn small\" href=\"https://forum.treepl.co/t/bc-media-downloads-exporter/235\" target=\"_blank\">BC Media Downloads Export Helper</a>\r\n    \r\n    \r\n    <h3 id=\"secFAQs\">FAQs</h3>\r\n    {% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secBuiltInModulesFAQs\", parity: \"high\", effort: \"med\", time: \"med\", docs: \"low\", tool: \"high\" %}\r\n    <p>FAQs in Treepl CMS work more like WebApps, so each FAQ is an item within the parent module (Question Group). This brings greater control in the long run, however migrating FAQs and data to this new format may make migration a little more involved.</p>\r\n    <p>You can manually migrate FAQs or alternatively the <a href=\"https://www.bcappstore.com/apps/bc-to-treepl\" target=\"_blank\">BC to Treepl CMS  Migration App</a> can be used to automate this process.</p>\r\n    <p>For manual migrations, you could likely use a similar approach to the Blog Export Helper above.</p>\r\n    <p>You can also upload your BC module layouts into your Treepl CMS instance via FTP into the ‘Content / ModuleLayouts / &lt;FAQGropu&gt; &amp; &lt;FAQQuestion&gt;’ directories.</p>\r\n    <p>For more information about the FAQs module see the documentation articles.</p>\r\n    <div class=\"tab-content faqGroupOpenCloseHolder\">\r\n        <div class=\"faqs-open-close \">\r\n            <a class=\"opener\" href=\"#\"><i class=\"fas fa-angle-right\"></i>FAQ Group module</a>\r\n            <div class=\"slide js-slide-hidden\">\r\n                {% component source: \"Documentation Post\", layout: \"Body Detail\", filterBy: \"id\", filterValue: \"2144\", limit: \"1\", type: \"module\" %}\r\n            </div>\r\n        </div>\r\n    </div>\r\n    <div class=\"tab-content faqItemOpenCloseHolder\">\r\n        <div class=\"faqs-open-close \">\r\n            <a class=\"opener\" href=\"#\"><i class=\"fas fa-angle-right\"></i>FAQ Item module</a>\r\n            <div class=\"slide js-slide-hidden\">\r\n                {% component source: \"Documentation Post\", layout: \"Body Detail\", filterBy: \"id\", filterValue: \"2145\", limit: \"1\", type: \"module\" %}\r\n            </div>\r\n        </div>\r\n    </div>\r\n    \r\n    \r\n    <h3 id=\"secAdRotators\">Ad Rotators</h3>\r\n    {% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secBuiltInModulesRotators\", parity: \"med\", effort: \"med\", time: \"med\", docs: \"med\", tool: \"high\" %}\r\n    <p>The Banner module in Treepl CMS was built to replace the BC Ad Rotators and is set up much like the other modules in Treepl CMS and is therefore flexible for you to configure the layouts and behaviour as needed.</p>\r\n    <p>The <a href=\"https://www.bcappstore.com/apps/bc-to-treepl\" target=\"_blank\">BC to Treepl CMS Migration App</a> can be used to automate this process.</p>\r\n    <p>If migrating manually, since BC doesn't provide export functionality for extracting the BC Ad Rotator data, you could likely use a similar approach to the Blog Export Helper above.</p>\r\n    <p>For more information about the Banners module see the documentation articles.</p>\r\n    <div class=\"tab-content faqsOpenCloseHolder\">\r\n        <div class=\"faqs-open-close \">\r\n            <a class=\"opener\" href=\"#\"><i class=\"fas fa-angle-right\"></i>Banner Documentation</a>\r\n            <div class=\"slide js-slide-hidden\">\r\n                {% component source: \"Documentation Post\", layout: \"Body Detail\", filterBy: \"id\", filterValue: \"2136\", limit: \"1\", type: \"module\" %}\r\n            </div>\r\n        </div>\r\n    </div>\r\n    <div class=\"tab-content faqsOpenCloseHolder\">\r\n        <div class=\"faqs-open-close \">\r\n            <a class=\"opener\" href=\"#\"><i class=\"fas fa-angle-right\"></i>Banner Group module</a>\r\n            <div class=\"slide js-slide-hidden\">\r\n                {% component source: \"Documentation Post\", layout: \"Body Detail\", filterBy: \"id\", filterValue: \"2146\", limit: \"1\", type: \"module\" %}\r\n            </div>\r\n        </div>\r\n    </div>\r\n    <div class=\"tab-content faqsOpenCloseHolder\">\r\n        <div class=\"faqs-open-close \">\r\n            <a class=\"opener\" href=\"#\"><i class=\"fas fa-angle-right\"></i>Banner Item module</a>\r\n            <div class=\"slide js-slide-hidden\">\r\n                {% component source: \"Documentation Post\", layout: \"Body Detail\", filterBy: \"id\", filterValue: \"2147\", limit: \"1\", type: \"module\" %}\r\n            </div>\r\n        </div>\r\n    </div>\r\n    \r\n    <h2 id=\"secCustomModulesWebApps\" class=\"circle-wrap\"><div class=\"circle\">156</div>Custom Modules (WebApps)</h2>\r\n    {% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secCustomModulesWebApps\", parity: \"high\", effort: \"low\", time: \"med\", docs: \"high\", tool: \"high\" %}\r\n    <p>Generally, WebApps will transfer over quite easily as Custom Modules in Treepl CMS were built around an improved “WebApp” model. Therefore they have a very similar concept with how items are added and list and detail layouts are constructed. Combined with the fact that WebApp data can be easily exported from BC and imported into Treepl CMS, WebApps will likely be an easier job migrating then the other built-in BC modules.</p>\r\n    <p>If you have very complex WebApps there may be more time required to study the different methods with rendering data and converting complex Liquid markup, but the data migration should be relatively straight forward via export/import.</p>\r\n    <p>You can further simplify this process with the <a href=\"https://www.bcappstore.com/apps/bc-to-treepl\" target=\"_blank\">BC to Treepl CMS  Migration App</a>, which can migration not only the item data but the WebApp layouts, settings and set up all custom fields including Datasource fields (converting the reference for Treepl CMS use).</p>\r\n    <p>If manually migrating WebApps, you'll will first need to set up your Custom Module with all it's correspondign properties and settings in order to import those matching fields from BC.</p>\r\n    <p>You can also upload your BC module layouts into your Treepl CMS instance via FTP into the ‘Content / ModuleLayouts / &lt;Your Custom Module&gt;’ directory.</p>\r\n    <p>Refer to the Custom Module documentation for more details:</p>\r\n    <a class=\"btn small\" href=\"/documentation_group/content-modules/custom-modules-aka-webapps\" target=\"_blank\">Custom Modules (AKA WebApps)</a>\r\n    \r\n    \r\n    \r\n    <h2 id=\"secEcommerce\" class=\"circle-wrap\"><div class=\"circle\">157</div>eCommerce</h2>\r\n    <p>To get up and running with eCommerce in Treepl CMS, see the getting started article below.</p>\r\n    <div class=\"tab-content faqsOpenCloseHolder\">\r\n        <div class=\"faqs-open-close \">\r\n            <a class=\"opener\" href=\"#\"><i class=\"fas fa-angle-right\"></i>Getting Started with eCommerce</a>\r\n            <div class=\"slide js-slide-hidden\">\r\n                {% component source: \"Documentation Post\", layout: \"Body Detail\", filterBy: \"id\", filterValue: \"2522\", limit: \"1\", type: \"module\" %}\r\n            </div>\r\n        </div>\r\n    </div>\r\n    <h3 id=\"secPaymentGateways\">Payment Gateways</h3>\r\n    {% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secPaymentGateways\", parity: \"med\", effort: \"low\", time: \"low\", docs: \"low\", tool: \"na\" %}\r\n    <p>Since the Payment Gateway settings contain sensitive details you will need to manually set up your Payment Gateway in your new Treepl CMS site by going to ‘Settings’ > ‘Payment’.</p>\r\n\r\n<h3 id=\"secTaxCodes\">Tax Codes</h3>\r\n{% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secTaxCodes\", parity: \"high\", effort: \"low\", time: \"low\", docs: \"low\", tool: \"high\" %}\r\n<p>Tax Codes follow the same structure in Treepl CMS so you can simply enter all the same codes under ‘eCommerce’ > ‘Taxes’.</p>\r\n<p>If you are implementing all or many of the US State taxes you’ll be able to add these automatically when you click “Add New Tax” and select ‘United States’ as the assigned country.</p>\r\n<p>There is no manual export option from BC, nor is there an import option in Treepl CMS for this.</p>\r\n<p>You can also automatically migrate Tax Codes via the <a href=\"https://www.bcappstore.com/apps/bc-to-treepl\" target=\"_blank\">BC to Treepl CMS Migration App</a>.</p>\r\n<h3 id=\"secShippingOptions\">Shipping Options</h3>\r\n{% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secShippingOptions\", parity: \"med\", effort: \"low\", time: \"low\", docs: \"low\", tool: \"high\" %}\r\n<p>Shipping Codes follow a very similar format in Treepl CMS so you can simply enter all the same codes under ‘eCommerce’ > Shipping options.</p>\r\n<p>This is for user-defined shipping rules at least. Integration of shipping providers is still pending release.</p>\r\n<p>There is no manual export option from BC, nor is there an import option in Treepl CMS for this. </p>\r\n<p>You can also automatically migrate user-defined Shipping Options via the <a href=\"https://www.bcappstore.com/apps/bc-to-treepl\" target=\"_blank\">BC to Treepl CMS Migration App</a>.</p>\r\n<h3 id=\"secCatalogs\">Catalogs</h3>\r\n{% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secCatalogs\", parity: \"high\", effort: \"low\", time: \"low\", docs: \"low\", tool: \"high\" %}\r\n<p>You can import your Catalogues into Treepl CMS if you have a spreadsheet available, although there is no export feature in BC.</p>\r\n<p>Creating Catalogs manually can be done much the same way as adding any other module item in Treepl CMS via ‘eCommerce’ > ‘Catalogs’ and you will have similar options available.</p>\r\n<p>Options from BC that are not currently available are; Price visibility, XML feed, and Browse Panel settings.</p> \r\n<p>You can also automatically migrate Catalogs via the <a href=\"https://www.bcappstore.com/apps/bc-to-treepl\" target=\"_blank\">BC to Treepl CMS Migration App</a>.</p>\r\n<h3 id=\"secProducts\">Products</h3>\r\n{% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secProducts\", parity: \"high\", effort: \"low\", time: \"low\", docs: \"low\", tool: \"high\" %}\r\n<p>You can import your Products into Treepl CMS with an export from BC, or if you have a spreadsheet available (after formatting to match Treepl CMS import file).</p>\r\n<p>Creating Products manually can be done much the same way as adding any other module item in Treepl CMS via ‘eCommerce’ > ‘Products’ and you will have similar options available.</p>\r\n<p>Additionally, you can add a variety of custom fields to customise your products module (for example, adding additional image fields would be how you’d add the “Poplets” feature from BC).</p>\r\n<p>Options from BC that are not currently available are; Downloadable Product, Capture Details, Commission Payable.</p>\r\n<p>You can also automatically migrate Products via the <a href=\"https://www.bcappstore.com/apps/bc-to-treepl\" target=\"_blank\">BC to Treepl CMS Migration App</a>.</p>\r\n<h3 id=\"secDiscountCodes\">Discount Codes</h3>\r\n{% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secDiscountCodes\", parity: \"high\", effort: \"low\", time: \"low\", docs: \"low\", tool: \"high\" %}\r\n<p>Discount Codes follow the same structure in Treepl CMS so you can simply enter all the same codes under ‘eCommerce’ > ‘Discount codes’.</p>\r\n<p>There is no manual export option from BC, nor is there an import option in Treepl CMS for this.</p>\r\n<p>You can also automatically migrate Discount Codes via the <a href=\"https://www.bcappstore.com/apps/bc-to-treepl\" target=\"_blank\">BC to Treepl CMS Migration App</a>.</p>\r\n<h3 id=\"secGiftVouchers\">Gift Vouchers</h3>\r\n{% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secGiftVouchers\", parity: \"high\", effort: \"low\", time: \"low\", docs: \"low\", tool: \"high\" %}\r\n<p>Gift Vouchers follow the same structure in Treepl CMS so you can simply enter all the same vouchers under ‘eCommerce’ > ‘Gift vouchers’.</p>\r\n<p>There is no manual export option from BC, nor is there an import option in Treepl CMS for this.</p>\r\n<p>You can also automatically migrate Gift Vouchers via the <a href=\"https://www.bcappstore.com/apps/bc-to-treepl\" target=\"_blank\">BC to Treepl CMS Migration App</a>.</p>\r\n\r\n\r\n<p class=\"notice-note\">eCommerce features not yet available include; cart lifetime setting, XML product feed, digital/downloadable products, integrated shipping providers.</p>\r\n    \r\n    \r\n    \r\n    \r\n    \r\n    \r\n    \r\n    \r\n    \r\n    \r\n    \r\n    \r\n    \r\n    \r\n    <h2 id=\"secRevisitSiteTemplates\" class=\"circle-wrap\"><div class=\"circle\">158</div>Revisit Site Templates</h2>\r\n    {% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secRevisitSiteTemplates\", parity: \"high\", effort: \"med\", time: \"med\", docs: \"med\", tool: \"high\" %}\r\n    <p>Now let's review the Site Templates markup and replace BC modules and Liquid with Treepl CMS methods.</p>\r\n    <p>The <a href=\"https://www.bcappstore.com/apps/bc-to-treepl\" target=\"_blank\">BC to Treepl CMS  Migration App</a> can be used to automate much of this process. However, it's recommended to check through the markup for any exceptions.</p>\r\n    <p>Some common examples are:</p>\r\n    <ul>\r\n        <li>Dynamic HEAD elements</li>\r\n        <li>pagecontent tag</li>\r\n        <li>menus</li>\r\n        <li>content holder</li>\r\n        <li>includes</li>\r\n        <li>modules: BC's module syntax (old and new) converted to Treepl CMS 'Component' syntax</li>\r\n    </ul>\r\n    <p>Review the relevant Component types and all their properties and syntax:</p>\r\n    <a class=\"btn small\" href=\"/documentation_group/component-types/\" target=\"_blank\">All Component Types</a>\r\n    \r\n    \r\n    <h2 id=\"secRevisitSitePages\" class=\"circle-wrap\"><div class=\"circle\">159</div>Revisit Site Pages</h2>\r\n    {% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secRevisitSitePages\", parity: \"high\", effort: \"med\", time: \"med\", docs: \"med\", tool: \"high\" %}\r\n    <p>Like above, let's review the Site Pages markup and replace BC modules and Liquid with Treepl CMS methods.</p>\r\n    <p>Usign the <a href=\"https://www.bcappstore.com/apps/bc-to-treepl\" target=\"_blank\">BC to Treepl CMS  Migration App</a> can automate many BC to Treepl CMS Liquid and tag conversions.</p>\r\n    <p>For manual migrations, some common examples are:</p>\r\n    <ul>\r\n        <li>menus</li>\r\n        <li>content holder</li>\r\n        <li>includes</li>\r\n        <li>modules: BC's module syntax (old and new) converted to Treepl CMS 'Component' syntax</li>\r\n    </ul>\r\n    <p>Review the relevant Component types and all their properties and syntax:</p>\r\n    <a class=\"btn small\" href=\"/documentation_group/component-types/\" target=\"_blank\">All Component Types</a>\r\n    \r\n    \r\n    <h2 id=\"secSetupSEOandSitemap\" class=\"circle-wrap\"><div class=\"circle\">160</div>Setup SEO & Sitemap</h2>\r\n    {% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secSetupSEOandSitemap\", parity: \"med\", effort: \"low\", time: \"low\", docs: \"med\", tool: \"low\" %}\r\n    <p>Add primary domain, language, country, and configure sitemap automation (and possibly enable all items for search engine visibility).</p>\r\n    <p>For more information about SEO settings see the documentation article.</p>\r\n    <div class=\"tab-content faqsOpenCloseHolder\">\r\n        <div class=\"faqs-open-close \">\r\n            <a class=\"opener\" href=\"#\"><i class=\"fas fa-angle-right\"></i>SEO Documentation</a>\r\n            <div class=\"slide js-slide-hidden\">\r\n                {% component source: \"Documentation Post\", layout: \"Body Detail\", filterBy: \"id\", filterValue: \"2212\", limit: \"1\", type: \"module\" %}\r\n            </div>\r\n        </div>\r\n    </div>\r\n    <p>On initial setup, it's recommended to manually generate the sitemap to review the items listed - ensuring all your relevant site items are configured for search engine visibility.</p>\r\n    \r\n    \r\n    <h2 id=\"secChecksAndTroubleshooting\" class=\"circle-wrap\"><div class=\"circle\">161</div>Checks and Troubleshooting</h2>\r\n    {% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secChecksAndTroubleshooting\", parity: \"na\", effort: \"med\", time: \"med\", docs: \"med\", tool: \"na\" %}\r\n\r\n    <p>Run back through the steps above as a quick checklist to review all your site items.</p>\r\n    <p>Comparing your new Treepl CMS site front-end alongside the BC site to check for consistancy.</p>\r\n    <p>Note any URL differences due to page/directory naming or restructuring and ensure URL Redirect are setup for these.</p>\r\n</div>\r\n",
  "ItemTags": [
  "Migrations"
],
  "Author_Name": "",
  "Author_Url": "",
  "Author": "",
  "SEOTitle": "",
  "MetaTitle": "",
  "MetaDescription": "",
  "ShowPageForSearchEngine": true,
  "CanonicalLink": "",
  "EnableAMP": false,
  "AMPContent": "",
  "CodeEditor": true,
  "ExternalId": 0,
  "SocialMetaTags": "",
  "OpenGraphProperties": "",
  "DisableForSiteSearch": false,
  "SeoPriority": "",
  "CreatedByMemberId": 0,
  "ItemCategories": "",
  "ItemCategoryIdList": "",
  "SKUCode": "",
  "SiteSearchKeywords": "",
  "Active": true,
  "IgnoreUpdates": false,
  "UpdateNotes": "",
  "UpdatesLog": "<ul>\n    <li>Added note about new BC .zip Archive functionality</li>\n    <li>Updated BC to Treepl CMS Migration App compatibility - as per v9.0.4 (Catalogs, Discount codes, Gift vouchers, Products, Shipping options, Tax codes)</li>\n</ul>",
  "ExternalResources": "",
  "AdditionalRelatedArticle_Name": "",
  "AdditionalRelatedArticle_Url": "",
  "AdditionalRelatedArticle": "",
  "AdditionalRelatedArticle2_Name": "",
  "AdditionalRelatedArticle2_Url": "",
  "AdditionalRelatedArticle2": "",
  "Authors": "2418",
  "Module_ID": 1870,
  "Module_Alias": "DocumentationPost",
  "ParentName": "BC Migration Guides",
  "ParentUrl": "/bc-migration-guides",
  "TemplateName": "Docs Template",
  "IsHome": false
}
}
}

Accessing the Data

This data is accessible in two main ways:

1. Using Liquid in the specified Layout via the this object.

{{this['name']}}

2. Directly on the Page or Template via a Liquid Collection if collectionVariable was added to the Component tag.

An example using collectionVariable with value "allSlides" to list all "Slide items" across the site:

Here we suppress any Layout from rendering by setting layout: "" as an empty attribute.

{% component type: "module", source: "Slide", layout: "", collectionVariable: "allSlides" %}

Looping through the collection to render all the item names in a list, giving us:

  • Custom Slide One
  • Slide One
  • Slide Two

The code:

<ul>
    {% for i in allSlides.items %}
        <li>{{i['name']}}</li>
    {% endfor %}
</ul>

Accessing a specific item within the collection. In this case the second item (zero based index), which in our example would render the value Slide One

{{allSlides.items[1]['name']}}

List Slides from a specific Gallery

If you have more than one Gallery on your site the above examples will list Slides from all Gallery as one single collection. However, you may also want to list all Slides from only the Gallery they belong to (their "parent" Gallery).

To do this we add the filterBy and filterValue attributes to the Component tag using the Galleryies ID to get the relevant items.

You can use the Component Manager to correctly configure the Component tag and ID value. Alternatively, to obtain the Galleries ID manually from the admin, go to a Galleries list view (where you can see all of the Slide items) and note the number in the browser address bar shown after the parentID= parameter.

Counter

Along with the data output above, there is also a special liquid tag available {{counter}} which increments for each item. This tag is only available within Layouts when object: "item" is used in the Component tag.

News

Paritymed Effortlow Timelow Docsmed Migration Toolactive

There is no “News” module specifically in Treepl CMS, however using the Blog would likely be a more than suitable alternative (see migrating Blogs section above).

The BC to Treepl CMS Migration App can be used to automate this process and a separate Blog module will be created for News items.

If migrating manually, since BC doesn't provide export functionality for extracting the BC News data, you could likely use a similar approach to the Blog Export Helper above.

You can also upload your BC module layouts into your Treepl CMS instance via FTP into the ‘Content / ModuleLayouts / <Your Custom Module OR Blog>’ directory.

Media Downloads

Paritylow Effortmed Timemed Docslow Migration Toolactive

There is no direct “Media Downloads” module in Treepl CMS, however setting up a Custom Module along with the ‘Force Download Handler’ option would see very similar results with greater flexibility.
(see migrating WebApps section in a later step).

You can manually migrate Media Downloads or alternatively the BC to Treepl CMS Migration App can be used to automate this process.

For manual migrations, a very helpful method of extracting the BC data in a ready format for Treepl CMS, see this helpful Treepl CMS Forum post:

BC Media Downloads Export Helper

FAQs

Parityhigh Effortmed Timemed Docslow Migration Toolactive

FAQs in Treepl CMS work more like WebApps, so each FAQ is an item within the parent module (Question Group). This brings greater control in the long run, however migrating FAQs and data to this new format may make migration a little more involved.

You can manually migrate FAQs or alternatively the BC to Treepl CMS Migration App can be used to automate this process.

For manual migrations, you could likely use a similar approach to the Blog Export Helper above.

You can also upload your BC module layouts into your Treepl CMS instance via FTP into the ‘Content / ModuleLayouts / <FAQGropu> & <FAQQuestion>’ directories.

For more information about the FAQs module see the documentation articles.

FAQ Group module

View full article

This module component fetches data relating to FAQ Groups.

{% component type: "module", source: "FAQ Group", layout: "List" %}

Parameters and Options

Parameter Values Required Description
type module (default)
module_of_member

This is the name of the entity that needs to be used for the component retrieving function.

module is the standard retrieving function to retrieve all items.

module_of_member retrieves only those items "Added by" the currently logged in user (identified by the CreatedByMemberId property in the module items Liquid data).

The "Added by" System Property will only be available where the modules settings have "Allow Add New Items" turned on under the "Site User Permissions".

source FAQ Group (default) The entity/alias name or ID that the data is to be sourced from.
layout List (default)
<Your Layout name>

The layout name you want to use for rendering the component. The layout name is referenced from the available Layouts of the source specified.

While this parameter is required to render your Layout markup, if the parameter is blank, has an incorrectly referenced Layout, or is removed altogether then the component will still output the modules item data to a Liquid collection which can be accessed via the collectionVariable parameter.

filterBy id
parentid
name
weighting
url
urlslug
releasedate
expirydate
LastUpdatedDate
Author
ItemCategories
ItemTags
<CustomPropertyName>
...and any other top level properties available for the module

The name of the property to filter by. If empty or not present, no filtering will be used.

Remove spaces from custom property names here.

filterValue <your value>
Your specific value to filter by, eg: name, id, number, date, etc.
Liquid variables can be used here also. If present but no value set, no items will be returned.
sortBy id
parentid
name
weighting
url
urlslug
releasedate
expirydate
LastUpdatedDate
Author
ItemCategories
ItemTags
<CustomPropertyName>
...and any other top level properties available for the module

The name of the property to sort by. If empty or not present, alpha/numeric sorting will be used.

Remove spaces from custom property names here.

sortOrder ASC (default)
DESC

ASC sorts the items in ascending order while DESC sorts in descending order (based on alpha/numeric or date sorting).
If empty or not present, alpha/numeric sorting will be used.
random false (default)
true

Displays the available items in a random order.

If used in conjunction with sortBy, that sorting criteria will be applied to the randomly retrieved results. So, if retrieving all, or most, of the items they will not appear to be random since they will then be sorted back into a logical order. To overcome this, set the sortBy parameter to 'enabled' (or another unused property) as this will not provide any viable sorting criteria* and the items will not be sorted from their initial random order.
* Unless there are weighted items, which will always override the random option.

limit 10 (default)
<number>

The maximum number of items returned. If displayPagination is enabled this determines the maximum number of items per page.
enablePagination true (default)
false

Enables/disables pagination for the component.

This is useful for avoiding pagniation affects for a specific component when multiple components of the same module are output on the same page and do use pagination.

displayPagination false (default)
true

Displays pagination if there are more items available than the limit set.
emptyMessage <Your custom message>
Custom content that is rendered if no items are returned by the Component. The default is no content.
Liquid variables are supported here, although Liquid logic tags and HTML are not.

If using Liquid variables with filters added, be sure to change any double quotes to single quotes. For eg:
emptyMessage: “{{ myVariable | prepend: 'Error: ' }}”

To use HTML in your empty message, first capture it using a Liquid capture, then insert the capture variable into the emptyMessage parameter.

object item (default)
collection

Determines the method for Liquid rendering.
item returns each item iteratively, one after another, for output (generally, output to a container element with no need for looping through the data).
collection returns all items as one collection for output (your container element and looping logic would be handled in the Components Layout).
collectionVariable <yourLiquidVariableName>
Assigns the data to a Liquid collection enabling further access to the data on the Page or Template using Liquid.

Your collectionVariable value must only contain English letters, numbers or underscores. Spaces or special characters are not supported.

isSearchResult false (default)
true

Allows search parameters in the URL to override the components output. Therefore, this parameter can be used to output module specific search results from a submitted search form.

Likewise, Tag, Category, and Archive components can be used in conjunction with this parameter for filtering the module's output.

URL search parameters will override any corresponding parameters in the component. If no search parameters are present in the URL, isSearchResult will be ignored.

Any value other than true, (including an empty value), will disable the search functionality and the component will output its regular data.

searchScope eg:
{'prop_ParentId':'1234', 'prop_ReleaseDate_Min':'2018-07-01', 'prop_ReleaseDate_Max':'2018-07-31', 'prop_KeyWords':'Your Keywords', 'prop_ItemTags':['tag1','tag2'], 'page':'2'}

Allows a search on the module without search parameters needed in the URL. Instead, search parameters are added to the value of this parameter. Therefore, this parameter can be used to output module specific search results from hard-coded (or Liquid) values without the use of a search form.

Added search parameters will override any corresponding parameters otherwise configured on the component. If no search parameters are present, searchScope will be ignored.

This value supports Liquid and can therefore be constructed with Liquid data/variables.

<customParameter> <your custom value>
You can add your own additional parameters (name/value pairs) to the Component tag. These will be passed to the Components Layout (and the collectionVariable if used) for use via Liquid.

Your <customParameter> name must only contain English letters, numbers or underscores. Spaces or special characters are not supported.

You can use HTML as the value here, just be sure to change any double quotes in your HTML to single quotes.

Liquid Output

The below example has 2 sample items (FAQ Groups), but is otherwise the default structure you will get from this Component.

{
  "Pagination": {
  "CurrentPage": 1,
  "ItemsPerPage": 10,
  "NumberOfPages": 1,
  "TotalItemsCount": 2
},
  "Items": [
  {
    "Id": 2303,
    "Url": "/_faq_group/demo-custom-faq-group",
    "ParentId": 1787,
    "LastUpdatedDate": "2018-12-16T00:07:31",
    "Name": "DEMO Custom FAQ Group",
    "UrlSlug": "demo-custom-faq-group",
    "Enabled": true,
    "ReleaseDate": "2018-12-15T18:00:00",
    "ExpiryDate": "2099-12-11T07:00:00",
    "Weighting": 0,
    "Description": "",
    "ItemTags": null,
    "Author_Name": null,
    "Author_Url": null,
    "Author": "",
    "SEOTitle": "",
    "MetaTitle": "",
    "MetaDescription": "",
    "ShowPageForSearchEngine": false,
    "CanonicalLink": "",
    "EnableAMP": false,
    "AMPContent": "",
    "CodeEditor": false,
    "ExternalId": 0,
    "SocialMetaTags": "",
    "OpenGraphProperties": "",
    "DisableForSiteSearch": false,
    "SeoPriority": "",
    "CreatedByMemberId": 0,
    "ItemCategories": null,
    "ItemCategoryIdList": null,
    "SKUCode": "",
    "SiteSearchKeywords": "",
    "Module_ID": 1782,
    "Module_Alias": "FAQGroup"
  },
  {
    "Id": 2275,
    "Url": "/_faq_group/demo-standard-faq-group",
    "ParentId": 1787,
    "LastUpdatedDate": "2018-12-16T00:07:05",
    "Name": "DEMO Standard FAQ Group",
    "UrlSlug": "demo-standard-faq-group",
    "Enabled": true,
    "ReleaseDate": "2018-11-25T18:00:00",
    "ExpiryDate": "2099-12-10T18:00:00",
    "Weighting": 0,
    "Description": "",
    "ItemTags": null,
    "Author_Name": null,
    "Author_Url": null,
    "Author": "",
    "SEOTitle": "",
    "MetaTitle": "",
    "MetaDescription": "",
    "ShowPageForSearchEngine": false,
    "CanonicalLink": "",
    "EnableAMP": false,
    "AMPContent": "",
    "CodeEditor": false,
    "ExternalId": 0,
    "SocialMetaTags": "",
    "OpenGraphProperties": "",
    "DisableForSiteSearch": false,
    "SeoPriority": "",
    "CreatedByMemberId": 0,
    "ItemCategories": null,
    "ItemCategoryIdList": null,
    "SKUCode": "",
    "SiteSearchKeywords": "",
    "Module_ID": 1782,
    "Module_Alias": "FAQGroup"
  }
],
  "Params": {},
  "Parent": {
  "Id": 2144,
  "Url": "/component-types/module-faq-group",
  "ParentId": 2127,
  "LastUpdatedDate": "2020-05-20T00:50:40",
  "Name": "module (FAQ Group)",
  "UrlSlug": "module-faq-group",
  "Enabled": true,
  "ReleaseDate": "2018-09-05T00:00:00",
  "ExpiryDate": "2099-12-09T00:00:00",
  "Weighting": 940,
  "Description": "<p>This module component fetches data relating to FAQ Groups.</p>\r\n\r\n{% component type: \"snippet\", alias: \"code_block_processor\", data: \"{{data}}\", lang: \"liquid\" %}\r\n\r\n\r\n{% component type: \"snippet\", alias: \"section_parameters\" %}\r\n\r\n{% component type: \"snippet\", alias: \"param_table_head\" %}\r\n    {% component type: \"snippet\", alias: \"param_type\", required: \"true\", values: \"module <em>(default)</em>,module_of_member\" %}\r\n    {% component type: \"snippet\", alias: \"param_source\", required: \"true\", values: \"FAQ Group <em>(default)</em>\" %}\r\n    {% component type: \"snippet\", alias: \"param_layout\", required: \"true\", values: \"List <em>(default)</em><br>&lt;Your Layout name&gt;\" %}\r\n    {% component type: \"snippet\", alias: \"param_filterby\" %}\r\n    {% component type: \"snippet\", alias: \"param_filtervalue\" %}\r\n    {% component type: \"snippet\", alias: \"param_sortby\" %}\r\n    {% component type: \"snippet\", alias: \"param_sortorder\" %}\r\n    {% component type: \"snippet\", alias: \"param_random\" %}\r\n    {% component type: \"snippet\", alias: \"param_limit\" %}\r\n    {% component type: \"snippet\", alias: \"param_enablepagination\" %}\r\n    {% component type: \"snippet\", alias: \"param_displaypagination\" %}\r\n    {% component type: \"snippet\", alias: \"param_emptymessage\" %}\r\n    {% component type: \"snippet\", alias: \"param_object\" %}\r\n    {% component type: \"snippet\", alias: \"param_collectionvariable\" %}\r\n    {% component type: \"snippet\", alias: \"param_issearchresult\" %}\r\n    {% component type: \"snippet\", alias: \"param_searchscope\" %}\r\n    {% component type: \"snippet\", alias: \"param_customparameter\" %}\r\n{% component type: \"snippet\", alias: \"param_table_foot\" %}\r\n\r\n\r\n{% component type: \"snippet\", alias: \"section_output\" %}\r\n\r\n{% component source: \"FAQ Group\", layout: "", type: \"module\", collectionVariable: \"allFAQGroups\" %}\r\n<p>The below example has 2 sample <code>items</code> (FAQ Groups), but is otherwise the default structure you will get from this Component.</p>\r\n{% component type: \"snippet\", alias: \"code_block_processor\", data: \"{{allFAQGroups}}\", lang: \"json\" %}\r\n\r\n{% component type: \"snippet\", alias: \"section_accessing_data\" %}\r\n\r\n<p>This data is accessible in two main ways:</p>\r\n\r\n<p>1. Using Liquid in the specified Layout via the <code>this</code> object.</p>\r\n\r\n{% component type: \"snippet\", alias: \"code_block_processor\", data: \"{{data}}\", lang: \"liquid\" %}\r\n\r\n<p>2. Directly on the Page or Template via a Liquid Collection if <code>collectionVariable</code> was added to the Component tag.</p>\r\n\r\n<p>An example using <code>collectionVariable</code> with value \"allFAQGroups\" to list all \"FAQ Groups\" across the site:</p>\r\n<p class=\"notice-note\">Here we suppress any Layout from rendering by setting <code>layout: \"\"</code> as an empty attribute.</p>\r\n\r\n{% component type: \"snippet\", alias: \"code_block_processor\", data: \"{{data}}\", lang: \"liquid\" %}\r\n\r\n<p><em>Looping through the collection to render all the item names in a list, giving us:</em></p>\r\n\r\n<ul>\r\n    \r\n        <li>DEMO Custom FAQ Group</li>\r\n    \r\n        <li>DEMO Standard FAQ Group</li>\r\n    \r\n</ul>\r\n<br>\r\n<p><em>The code:</em></p>\r\n\r\n{% component type: \"snippet\", alias: \"code_block_processor\", data: \"{{data}}\", lang: \"liquid\" %}\r\n\r\n<p><em>Accessing a specific item within the collection. In this case the second item (zero based index), which in our example would render the value <code>DEMO Standard FAQ Group</code></em></p>\r\n\r\n{% component type: \"snippet\", alias: \"code_block_processor\", data: \"{{data}}\", lang: \"liquid\" %}\r\n\r\n{% component type: \"snippet\", alias: \"section_counter\" %}\r\n",
  "ItemTags": [
  "FAQs"
],
  "Author_Name": "",
  "Author_Url": "",
  "Author": "",
  "SEOTitle": "",
  "MetaTitle": "",
  "MetaDescription": "",
  "ShowPageForSearchEngine": true,
  "CanonicalLink": "",
  "EnableAMP": false,
  "AMPContent": "",
  "CodeEditor": true,
  "ExternalId": 0,
  "SocialMetaTags": "",
  "OpenGraphProperties": "",
  "DisableForSiteSearch": false,
  "SeoPriority": "",
  "CreatedByMemberId": 0,
  "ItemCategories": "",
  "ItemCategoryIdList": "",
  "SKUCode": "",
  "SiteSearchKeywords": "",
  "Active": true,
  "IgnoreUpdates": false,
  "UpdateNotes": "'module_of_member' parameter details added.",
  "UpdatesLog": "",
  "ExternalResources": "",
  "AdditionalRelatedArticle_Name": "",
  "AdditionalRelatedArticle_Url": "",
  "AdditionalRelatedArticle": "",
  "AdditionalRelatedArticle2_Name": "",
  "AdditionalRelatedArticle2_Url": "",
  "AdditionalRelatedArticle2": "",
  "Authors": "2418",
  "Module_ID": 1870,
  "Module_Alias": "DocumentationPost",
  "Pagination": {
  "CurrentPage": 1,
  "ItemsPerPage": 1,
  "NumberOfPages": 1,
  "TotalItemsCount": 1
},
  "Params": {},
  "Parent": {
  "Id": 2359,
  "Url": "/bc-migration-guides/ultimate-migration-guide-step-by-step",
  "ParentId": 2355,
  "LastUpdatedDate": "2020-09-09T19:27:22",
  "Name": "Ultimate Migration Guide (Step by Step)",
  "UrlSlug": "ultimate-migration-guide-step-by-step",
  "Enabled": true,
  "ReleaseDate": "2019-02-17T00:00:00",
  "ExpiryDate": "2099-11-30T00:00:00",
  "Weighting": 800,
  "Description": "<div class=\"migration-guide\">\r\n    <div style=\"display:none;\">162</div>\r\n    <p>So you’ve decided to move your site across to Treepl CMS. Good choice.</p>\r\n    <p>And you’ve decided to do it yourself. Good for you! You’re probably going to be doing this quite a few times so let’s make it fun…</p>\r\n    <p>Set aside a good chunk of uninterrupted time, crank up your favourite tunes and grab a strong drink. It’s migration time.</p>\r\n    <p class=\"notice-note\">The below sections are ordered to try and minimise the amount of back and forth when creating the various components of a site.If a section doesn’t apply to your site, feel free to skip right over it.</p>\r\n    <p class=\"notice-note\">Migration tools are in development that will progressively make the below steps easier. These sections will be updated as those tools are released.</p>\r\n    <p class=\"notice-tip\">The BC to Treepl CMS Migration App now converts BC Liquid tags, ie: <code>{module_…}</code> and <code>{tag_…}</code> to Treepl CMS Liquid tags! For more info on this, view the Forum discussion <a href=\"https://forum.treepl.co/t/attention-to-bc-to-treepl-app-users/497\" target=\"_blank\">here</a>.</p>\r\n    <h2 id=\"secBCSiteFTPDownload\" class=\"circle-wrap\"><div class=\"circle\">163</div>Download the BC Site via FTP</h2>\r\n    {% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secBCSiteFTPDownload\", parity: \"high\", effort: \"low\", time: \"low\", docs: \"high\", tool: \"high\" %}\r\n    \r\n    <p>Download all files available via FTP from your BC site, if for no other reason than to just have a backup. However, these files can be referenced in the following steps as well.</p>\r\n    <p>You can also automatically migrate all files in the BC file system directly to your Treepl CMS site via the <a href=\"https://www.bcappstore.com/apps/bc-to-treepl\" target=\"_blank\">BC to Treepl CMS  Migration App</a>.</p>\r\n    <p>There is also now the ability to download a .zip archive of your BC site, including data from the following modules:</p>\r\n    <ul>\r\n    \t<li>Pages</li>\r\n        <li>Page Templates</li>\r\n        <li>Module Layouts</li>\r\n        <li>Static files</li>\r\n        <li>Apps</li>\r\n        <li>Content Holders</li>\r\n        <li>System Pages</li>\r\n        <li>Email Templates</li>\r\n        <li>Web Apps</li>\r\n    </ul>\r\n    <p><b>Further Resources:</b></p>\r\n    <a class=\"btn small\" href=\"https://docs.worldsecuresystems.com/user-manual/site-design/bc-and-dreamweaver/connect-to-your-site-using-dreamweaver\" target=\"_blank\">BC FTP connection details</a>\r\n    <a class=\"btn small\" href=\"https://docs.worldsecuresystems.com/Partners/downloading-your-website#Downloadingyoursitearchive\" target=\"_blank\">BC .zip archive</a>\r\n    \r\n    <h2 id=\"secBCSiteDeepClean\" class=\"circle-wrap\"><div class=\"circle\">164</div>Deep-Clean the BC Site (Optional)</h2>\r\n    {% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secBCSiteDeepClean\", parity: \"na\", effort: \"med\", time: \"med\", docs: \"na\", tool: \"na\" %}\r\n    <p>This step is optional, but you may want to take the opportunity to clear out the BC site of old pages, templates, files, etc. Particularly if it’s an old site, there can be a lot of junk floating around. And this can just get in your way during migration and could cause unnecessary work. However, be very careful not to remove assets that may still be in use somewhere (hence the backup in the previous step).</p>\r\n    <p>Once you’ve cleaned up, repeat the FTP download step to collect a new, clean, set of files.</p>\r\n    \r\n    <h2 id=\"secTreeplCMSInstance\" class=\"circle-wrap\"><div class=\"circle\">165</div>Setup Treepl CMS Site Instance</h2>\r\n    {% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secTreeplCMSInstance\", parity: \"high\", effort: \"low\", time: \"low\", docs: \"high\", tool: \"na\" %}\r\n    <p>So you can start work with the Treepl CMS platform you'll need to set up a Trial Site. Log into your Treepl Portal (portal.treepl.co) and click the \"Create New Site\" button.</p>\r\n    <div class=\"tab-content faqsOpenCloseHolder\">\r\n    <div class=\"faqs-open-close \">\r\n        <a class=\"opener\" href=\"#\"><i class=\"fas fa-angle-right\"></i>Trial Site Documentation</a>\r\n        <div class=\"slide js-slide-hidden\">\r\n            {% component source: \"Documentation Post\", layout: \"Body Detail\", filterBy: \"id\", filterValue: \"2151\", limit: \"1\", type: \"module\" %}\r\n        </div>\r\n    </div>\r\n    </div>\r\n    \r\n    <h2 id=\"secHostedEmailTransfer\" class=\"circle-wrap\"><div class=\"circle\">166</div>Start BC Hosted Email Transfer Process (If Applicable)</h2>\r\n    {% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secHostedEmailTransfer\", parity: \"na\", effort: \"low\", time: \"med\", docs: \"high\", tool: \"low\" %}\r\n    <p>If your BC site has BC hosted emails, they can be transferred directly to Treepl CMS after following the below steps.</p>\r\n    <div class=\"tab-content faqsOpenCloseHolder\">\r\n    <div class=\"faqs-open-close \">\r\n        <a class=\"opener\" href=\"#\"><i class=\"fas fa-angle-right\"></i>Transfer of BC Hosted Email Accounts</a>\r\n        <div class=\"slide js-slide-hidden\">\r\n            {% component source: \"Documentation Post\", layout: \"Body Detail\", filterBy: \"id\", filterValue: \"2185\", limit: \"1\", type: \"module\" %}\r\n        </div>\r\n    </div>\r\n    </div>\r\n    \r\n    <h2 id=\"secUploadSiteAssets\" class=\"circle-wrap\"><div class=\"circle\">167</div>Upload Site Assets</h2>\r\n    {% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secUploadSiteAssets\", parity: \"high\", effort: \"low\", time: \"low\", docs: \"high\", tool: \"high\" %}\r\n    <p>Now we'll want to connect to our new Treepl CMS instance via FTP so we can upload some of our BC assets.</p>\r\n    <p>If working manually, we'll probably only want to upload assets relating to the front-end site, such as images, CSS, JS, documents, etc. We don't want to move over pages, templates or other layout files just yet.</p>\r\n    <p>Below are instructions for getting connected via FTP client.</p>\r\n    <div class=\"tab-content faqsOpenCloseHolder\">\r\n        <div class=\"faqs-open-close \">\r\n            <a class=\"opener\" href=\"#\"><i class=\"fas fa-angle-right\"></i>FTP Access Documentation</a>\r\n            <div class=\"slide js-slide-hidden\">\r\n                {% component source: \"Documentation Post\", layout: \"Body Detail\", filterBy: \"id\", filterValue: \"1936\", limit: \"1\", type: \"module\" %}\r\n            </div>\r\n        </div>\r\n    </div>\r\n    <p>Alternatively, you can automatically migrate all files in the BC file system directly to your Treepl CMS site via the <a href=\"https://www.bcappstore.com/apps/bc-to-treepl\" target=\"_blank\">BC to Treepl CMS  Migration App</a>.</p>\r\n    \r\n    <h2 id=\"secSetupPlaceholderTemplates\" class=\"circle-wrap\"><div class=\"circle\">168</div>Upload or Setup Placeholder Templates</h2>\r\n    {% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secSetupPlaceholderTemplates\", parity: \"high\", effort: \"low\", time: \"low\", docs: \"med\", tool: \"high\" %}\r\n    <p>You can manually upload your BC page templates into your Treepl CMS instance via FTP into the ‘Content / ContentTemplates’ directory.</p>\r\n    <p>Alternatively the <a href=\"https://www.bcappstore.com/apps/bc-to-treepl\" target=\"_blank\">BC to Treepl CMS  Migration App</a> can be used to automate this process.</p>\r\n    <p>If manually migrating templates, don’t worry about editing the template code/markup at this stage. We just want to get them loaded in Treepl CMS so we can reference it in the following steps. We’ll work on the template code later.</p>\r\n    \r\n    <p>If not using FTP, to manually create a content template, go to 'Content' &gt; 'Content Templates'.</p>\r\n    <p>Click ‘Add New Template’ button.</p>\r\n    <p>Just complete ‘Name’ and choose whether it's the default template. Leave the content as is for now.</p>\r\n    <p>Repeat this for all required templates.</p>\r\n    \r\n    <div class=\"tab-content faqsOpenCloseHolder\">\r\n    <div class=\"faqs-open-close \">\r\n        <a class=\"opener\" href=\"#\"><i class=\"fas fa-angle-right\"></i>Content Templates Documentation</a>\r\n        <div class=\"slide js-slide-hidden\">\r\n            {% component source: \"Documentation Post\", layout: \"Body Detail\", filterBy: \"id\", filterValue: \"2132\", limit: \"1\", type: \"module\" %}\r\n        </div>\r\n    </div>\r\n    </div>\r\n    \r\n    <h2 id=\"secSetupSitePages\" class=\"circle-wrap\"><div class=\"circle\">169</div>Upload or Setup Site Pages</h2>\r\n    {% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secSetupSitePages\", parity: \"high\", effort: \"low\", time: \"low\", docs: \"med\", tool: \"high\" %}\r\n    <p>Upload your BC pages into your Treepl CMS instance via FTP into the ‘Content / Pages’ directory.</p>\r\n    <p>Alternatively the <a href=\"https://www.bcappstore.com/apps/bc-to-treepl\" target=\"_blank\">BC to Treepl CMS  Migration App</a> can be used to automate this process.</p>\r\n    <p>If manually migration pages, there will still be several properties you will want to set for each page, such as a more relevant system name, assigning it to a template, SEO and meta details, etc. and we’ll likely need to review the page content for any system tags or Liquid\r\n        that needs replacing. However, all in good time and we’ll take those actions in a later step. For now we just want to get the bulk of the setup in place.</p>\r\n    \r\n    <div class=\"tab-content faqsOpenCloseHolder\">\r\n    <div class=\"faqs-open-close \">\r\n        <a class=\"opener\" href=\"#\"><i class=\"fas fa-angle-right\"></i>Pages Documentation</a>\r\n        <div class=\"slide js-slide-hidden\">\r\n            {% component source: \"Documentation Post\", layout: \"Body Detail\", filterBy: \"id\", filterValue: \"2131\", limit: \"1\", type: \"module\" %}\r\n        </div>\r\n    </div>\r\n    </div>\r\n    \r\n    <h2 id=\"secReplicateMenus\" class=\"circle-wrap\"><div class=\"circle\">170</div>Replicate Menus & Menu Layouts</h2>\r\n    {% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secReplicateMenus\", parity: \"high\", effort: \"med\", time: \"med\", docs: \"high\", tool: \"high\" %}\r\n    <p>You can easily recreate your BC menus into your Treepl CMS instance via the admin ‘Content' > 'Menus’, and copy over and adjust your menu layouts.</p>\r\n    <p>Alternatively the <a href=\"https://www.bcappstore.com/apps/bc-to-treepl\" target=\"_blank\">BC to Treepl CMS  Migration App</a> can be used to automate this process.</p>\r\n    <p>If manually recreating your menus you can follow the documentation and tips below:</p>\r\n    \r\n    <div class=\"tab-content faqsOpenCloseHolder\">\r\n        <div class=\"faqs-open-close \">\r\n            <a class=\"opener\" href=\"#\"><i class=\"fas fa-angle-right\"></i>Menus Documentation</a>\r\n            <div class=\"slide js-slide-hidden\">\r\n                {% component source: \"Documentation Post\", layout: \"Body Detail\", filterBy: \"id\", filterValue: \"1966\", limit: \"1\", type: \"module\" %}\r\n            </div>\r\n        </div>\r\n    </div>\r\n    \r\n    <h3>BC Menu V2</h3>\r\n    <p>If using BC’s menu v2 method for your menus, upload your menu layouts from ‘ModuleTemplates / Menu / &lt;menu-name&gt;’ into the corresponding Treepl CMS menu layouts in ‘Content / MenuLayouts / &lt;menu_alias_name&gt;’</p>\r\n    <p>The corresponding layouts from BC to Treepl CMS are:</p>\r\n    <ul>\r\n        <li>“container.html” --&gt; “menu.layout”</li>\r\n        <li>“group.html” --&gt; “item.layout”</li>\r\n        <li>“childitem.html” --&gt; “sub_items.layout”</li>\r\n    </ul>\r\n    <p>Now, we’re finally going to get our hands dirty with some code.</p>\r\n    <p>We’ll need to convert the BC tags into the Treepl CMS way of doing things. Let’s reference the Menu documentation above while doing this.</p>\r\n    <p>Starting with the “menu.layout” file you'll want to weave your HTML markup into the Treepl CMS Liquid so that the Liquid logic renders the same markup you are referencing from BC.</p>\r\n    <p>Next, do the same with the “item.layout” file, weaving in the BC “group.html” markup.</p>\r\n    <p>Finally, the “sub_items.layout” file,</p>\r\n    <p>Repeat for each menu group you are using.</p>\r\n    <p>If you have multiple menus using the same layout group in BC, simply copy the same code you just set up into each menu layout files (menus don’t share layouts in Treepl CMS).</p>\r\n    \r\n    <h3>BC Menu V1 (legacy module)</h3>\r\n    <p>If using BC’s original/legacy menu method, we’ll need to reference the rendered source code for your menu in the browser.</p>\r\n    <p>Load one of your BC site pages that features the menu. View the page source (right click, 'View Source') and identify the complete section of menu elements including the BC JS references.</p>\r\n    <p>Copy the menu elements into your “menu.layout” file so we can start working on converting that code.</p>\r\n    <p>Back in the source view, for the two JS references BC outputs, right click on the source links and save those JS files to your BC site files in an appropriate directory and than upload those to Treepl CMS in the corresponding directory.</p>\r\n    <p>Back in your menu layout, we'll relink the JS references to point to the new location.</p>\r\n    <p>Work through recoding the menu HTML into the Treepl CMS menu layouts to complete the process.</p>\r\n    \r\n    \r\n    <h2 id=\"secSetupSecureZones\" class=\"circle-wrap\"><div class=\"circle\">171</div>Setup Secure Zones</h2>\r\n    {% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secSetupSecureZones\", parity: \"high\", effort: \"low\", time: \"low\", docs: \"high\", tool: \"high\" %}\r\n    <p>Recreating all Secure Zones from BC into Treepl CMS is a fairly straight forward process.</p>\r\n    <p>Alternatively the <a href=\"https://www.bcappstore.com/apps/bc-to-treepl\" target=\"_blank\">BC to Treepl CMS  Migration App</a> can be used to automate this process.</p>\r\n    <p>If manually recreating your Secure Zones, you can follow the steps below:</p>\r\n    <p>Go to ‘Content’ &gt; ‘Secure Zones’</p>\r\n    <p>Click ‘Add Secure Zone’ button.</p>\r\n    <p>Complete ‘Name’ and ‘Landing Page’ then “Next” to save and move to ‘Step 2: Secure Content’.</p>\r\n    <p>Pages will be ready for you to secure, however most other content we havn't migrated over yet so you'll need to revisit this section to secure all relevant items.</p>\r\n    <p>Click “Next” to save and move to ‘Step 3: Members’</p>\r\n    <p>Here you can manage the members subscribed to the secure zone.</p>\r\n    <p>For further documentation expand the box below:</p>\r\n    <div class=\"tab-content faqsOpenCloseHolder\">\r\n        <div class=\"faqs-open-close \">\r\n            <a class=\"opener\" href=\"#\"><i class=\"fas fa-angle-right\"></i>Secure Zones Documentation</a>\r\n            <div class=\"slide js-slide-hidden\">\r\n                {% component source: \"Documentation Post\", layout: \"Body Detail\", filterBy: \"id\", filterValue: \"2199\", limit: \"1\", type: \"module\" %}\r\n            </div>\r\n        </div>\r\n    </div>\r\n    \r\n    <h2 id=\"secSetupMailingListsMC\" class=\"circle-wrap\"><div class=\"circle\">172</div>Setup Mailing Lists (MailChimp)</h2>\r\n    {% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secSetupMailingListsMC\", parity: \"low\", effort: \"med\", time: \"low\", docs: \"high\", tool: \"low\" %}\r\n    <p>Before you can set up Mailing Lists in Treepl CMS you need to connect a MailChimp account using their provided API key.</p>\r\n    <p>Below are documentation for setting up the API connection and further inofrmation about adding Mailing Lists.</p>\r\n    \r\n    <div class=\"tab-content faqsOpenCloseHolder\">\r\n        <div class=\"faqs-open-close \">\r\n            <a class=\"opener\" href=\"#\"><i class=\"fas fa-angle-right\"></i>API Provider Documentation</a>\r\n            <div class=\"slide js-slide-hidden\">\r\n                {% component source: \"Documentation Post\", layout: \"Body Detail\", filterBy: \"id\", filterValue: \"2311\", limit: \"1\", type: \"module\" %}\r\n            </div>\r\n        </div>\r\n        <div class=\"faqs-open-close \">\r\n            <a class=\"opener\" href=\"#\"><i class=\"fas fa-angle-right\"></i>Mailing Lists Documentation</a>\r\n            <div class=\"slide js-slide-hidden\">\r\n                {% component source: \"Documentation Post\", layout: \"Body Detail\", filterBy: \"id\", filterValue: \"2310\", limit: \"1\", type: \"module\" %}\r\n            </div>\r\n        </div>\r\n    </div>\r\n    \r\n    <p>Currently, Email Campaigns would generally be managed in MailChimp for full functionality of the MailChimp service. However, basic Email Campaigns can be add via Treepl CMS and pushed to MailChimp.<br>\r\n    <em>More documentation coming soon on this.</em></p>\r\n    \r\n    <h2 id=\"secSetupSiteSearch\" class=\"circle-wrap\"><div class=\"circle\">173</div>Setup Site Search</h2>\r\n    {% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secSetupSiteSearch\", parity: \"med\", effort: \"low\", time: \"low\", docs: \"med\", tool: \"low\" %}\r\n    <p>You don’t need to set up any Site Search module in Treepl CMS. This functionality is ready to use simply by inserting the search form and component tag.</p>\r\n    <p>So there is nothing you need to do in this step.</p>\r\n    <p>Later in the migration we’ll need to replace any BC site search forms so we’ll reference back to this documentation:</p>\r\n    <div class=\"tab-content faqsOpenCloseHolder\">\r\n        <div class=\"faqs-open-close \">\r\n            <a class=\"opener\" href=\"#\"><i class=\"fas fa-angle-right\"></i>Site Search Documentation - COMING SOON...</a>\r\n            <div class=\"slide js-slide-hidden\">\r\n                {% component source: \"Documentation Post\", layout: \"Body Detail\", filterBy: \"id\", filterValue: \"2356\", limit: \"1\", type: \"module\" %}\r\n            </div>\r\n        </div>\r\n        <div class=\"faqs-open-close \">\r\n            <a class=\"opener\" href=\"#\"><i class=\"fas fa-angle-right\"></i>Site Search Component Documentation</a>\r\n            <div class=\"slide js-slide-hidden\">\r\n                {% component source: \"Documentation Post\", layout: \"Body Detail\", filterBy: \"id\", filterValue: \"1959\", limit: \"1\", type: \"module\" %}\r\n            </div>\r\n        </div>\r\n    </div>\r\n    \r\n    <h2 id=\"secReplicateURLRedirects\" class=\"circle-wrap\"><div class=\"circle\">174</div>Replicate Existing URL Redirects</h2>\r\n    {% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secReplicateURLRedirects\", parity: \"high\", effort: \"med\", time: \"med\", docs: \"high\", tool: \"high\" %}\r\n    <p>While you can import URL Redirects into Treepl CMS in bulk, BC doesn't have an export function available from their admin, so you’ll need to enter URL redirects manually. Alternatively the <a href=\"https://www.bcappstore.com/apps/bc-to-treepl\" target=\"_blank\">BC to Treepl CMS  Migration App</a> can be used to automate this process.</p>\r\n    <p>See below for more information on URL Redirects.</p>\r\n    <div class=\"tab-content faqsOpenCloseHolder\">\r\n        <div class=\"faqs-open-close \">\r\n            <a class=\"opener\" href=\"#\"><i class=\"fas fa-angle-right\"></i>URL Redirects Documentation</a>\r\n            <div class=\"slide js-slide-hidden\">\r\n                {% component source: \"Documentation Post\", layout: \"Body Detail\", filterBy: \"id\", filterValue: \"2210\", limit: \"1\", type: \"module\" %}\r\n            </div>\r\n        </div>\r\n    </div>\r\n    \r\n    <h2 id=\"secSetupAdminUserRoles\" class=\"circle-wrap\"><div class=\"circle\">175</div>Setup Admin User Roles</h2>\r\n    {% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secSetupAdminUserRoles\", parity: \"med\", effort: \"low\", time: \"low\", docs: \"med\", tool: \"low\" %}\r\n    <p>While we won’t be adding Admin Users just yet, we’ll still get the User Roles set up and in place ready to assign users to in a later step.</p>\r\n    <p>To set up Admin User Roles, go to ‘Settings’ &gt; ‘Admin User Roles’</p>\r\n    <p>Click ‘Add Admin Role’ button.</p>\r\n    <p>Complete a 'Name' for your Role and configure the permissions, turning off checkboxes to block users access to those items.</p>\r\n    <p class=\"notice-note\">Many permission items have nested items for further fine-grain control.</p>\r\n    \r\n    \r\n    \r\n    <h2 id=\"secSetupNotificationWorkflow\" class=\"circle-wrap\"><div class=\"circle\">176</div>Setup Email Notification Workflow/s</h2>\r\n    {% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secSetupNotificationWorkflow\", parity: \"med\", effort: \"low\", time: \"low\", docs: \"high\", tool: \"high\" %}\r\n    <p>We’ll set up the default Notification Workflow email (and additional ones if needed - make sure you’re site plan supports multiple Workflow Emails if you need more than one Workflow)</p>\r\n    <p>You can optionally, upload your BC workflow email layouts into your Treepl CMS instance via FTP into the ‘Content / SystemEmails’ directory. However, if you only have a few email layouts it may be better to set these up via the Admin as you'll need to configure other settings as well.</p>\r\n    <p>Alternatively the <a href=\"https://www.bcappstore.com/apps/bc-to-treepl\" target=\"_blank\">BC to Treepl CMS  Migration App</a> can be used to automate this process.</p>\r\n    <p>See below for documentation on Workflows.</p>\r\n    <div class=\"tab-content faqsOpenCloseHolder\">\r\n        <div class=\"faqs-open-close \">\r\n            <a class=\"opener\" href=\"#\"><i class=\"fas fa-angle-right\"></i>Workflows Documentation</a>\r\n            <div class=\"slide js-slide-hidden\">\r\n                {% component source: \"Documentation Post\", layout: \"Body Detail\", filterBy: \"id\", filterValue: \"2208\", limit: \"1\", type: \"module\" %}\r\n            </div>\r\n        </div>\r\n    </div>\r\n    \r\n    \r\n    \r\n    \r\n    <h2 id=\"secReplicateWebForms\" class=\"circle-wrap\"><div class=\"circle\">177</div>Replicate Web Forms</h2>\r\n    {% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secReplicateWebForms\", parity: \"high\", effort: \"low\", time: \"med\", docs: \"high\", tool: \"med\" %}\r\n    <p>You can create new web forms in the Treepl admin for each of your BC Web Forms and copy over and adjust your form layout/code.</p>\r\n    <p>Alternatively the <a href=\"https://www.bcappstore.com/apps/bc-to-treepl\" target=\"_blank\">BC to Treepl CMS  Migration App</a> can be used to automate this process.</p>\r\n    <p>See below for documentation on Forms.</p>\r\n    <div class=\"tab-content faqsOpenCloseHolder\">\r\n        <div class=\"faqs-open-close \">\r\n            <a class=\"opener\" href=\"#\"><i class=\"fas fa-angle-right\"></i>Forms Documentation</a>\r\n            <div class=\"slide js-slide-hidden\">\r\n                {% component source: \"Documentation Post\", layout: \"Body Detail\", filterBy: \"id\", filterValue: \"2041\", limit: \"1\", type: \"module\" %}\r\n            </div>\r\n        </div>\r\n    </div>\r\n    \r\n    <h2 id=\"secReplicateSystemPages\" class=\"circle-wrap\"><div class=\"circle\">178</div>Replicate System Pages</h2>\r\n    {% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secReplicateSystemPages\", parity: \"high\", effort: \"low\", time: \"low\", docs: \"high\", tool: \"high\" %}\r\n    <p>This process can be automated with the <a href=\"https://www.bcappstore.com/apps/bc-to-treepl\" target=\"_blank\">BC to Treepl CMS  Migration App</a>.</p>\r\n    <p>Or, if manually migrating system pages, locate your relevant BC System Pages either in your downloaded BC site files, or in the “Develop” tab of the BC Admin under ‘Layouts / SystemMessages’, or directly in the BC Admin under ‘Site Manager’ &gt; ‘System Pages.</p>\r\n    <p>You’ll need to copy over the HTML from these into the corresponding system page in Treepl CMS found in the Admin under ‘Settings / System Pages’</p>\r\n    <p>While you can upload system pages into Treepl CMS, you'd first need to rename the relevant BC files to match those of Treepl CMS in order to override them. However, this is not recommended as you'll lose the default layouts and Liquid markup required for those layouts.</p>\r\n    <p>For more information refer to the below documentation article.</p>\r\n    <div class=\"tab-content faqsOpenCloseHolder\">\r\n        <div class=\"faqs-open-close \">\r\n            <a class=\"opener\" href=\"#\"><i class=\"fas fa-angle-right\"></i>System Pages Documentation</a>\r\n            <div class=\"slide js-slide-hidden\">\r\n                {% component source: \"Documentation Post\", layout: \"Body Detail\", filterBy: \"id\", filterValue: \"2207\", limit: \"1\", type: \"module\" %}\r\n            </div>\r\n        </div>\r\n    </div>\r\n    <p>Review your HTML for any BC specific tags or modules which will need to be converted to Treepl CMS equivalents. Either making note of them to come back to once other items are set up, or replace them now if you can. For example, you may have a\r\n        site search form on your 404 Not Found page, or a secure zone login form on your 401 or 403 pages.</p>\r\n    \r\n    <h2 id=\"secReplicateSystemEmails\" class=\"circle-wrap\"><div class=\"circle\">179</div>Replicate System Emails</h2>\r\n    {% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secReplicateSystemEmails\", parity: \"high\", effort: \"low\", time: \"low\", docs: \"high\", tool: \"high\" %}\r\n    <p>This process can be automated with the <a href=\"https://www.bcappstore.com/apps/bc-to-treepl\" target=\"_blank\">BC to Treepl CMS  Migration App</a>.</p>\r\n    <p>Or, if manually migrating system emails, locate your relevant BC System Emails, either in your downloaded BC site files, or in the “Develop” tab of the BC Admin under ‘Layouts / OutboundEmails’, or directly in the BC Admin under ‘Site Manager’ &gt; ‘System Emails’.</p>\r\n    <p>You’ll need to copy over the HTML from these into the corresponding system emails in Treepl CMS found in the Admin under ‘Email Notifications / System Emails’</p>\r\n        <p>While you can upload system emails into Treepl CMS, you'd first need to rename the relevant BC files to match those of Treepl CMS in order to override them. However, this is not recommended as you'll lose the default layouts and Liquid markup required for those layouts.</p>\r\n    <p>Review your HTML for any BC specific tags or modules which will need to be converted to Treepl CMS equivalents. Be sure to reference the default tags already in the email layouts in Treepl CMS to identify which ones can replace your BC tags.</p>\r\n    <p>For more information refer to the below documentation article.</p>\r\n    <div class=\"tab-content faqsOpenCloseHolder\">\r\n        <div class=\"faqs-open-close \">\r\n            <a class=\"opener\" href=\"#\"><i class=\"fas fa-angle-right\"></i>System Emails Documentation</a>\r\n            <div class=\"slide js-slide-hidden\">\r\n                {% component source: \"Documentation Post\", layout: \"Body Detail\", filterBy: \"id\", filterValue: \"2205\", limit: \"1\", type: \"module\" %}\r\n            </div>\r\n        </div>\r\n    </div>\r\n    \r\n    <h2 id=\"secReplicateCategories\" class=\"circle-wrap\"><div class=\"circle\">180</div>Replicate Categories</h2>\r\n    {% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secReplicateCategories\", parity: \"high\", effort: \"low\", time: \"low\", docs: \"high\", tool: \"high\" %}\r\n    <p>You can manually recreate any Categories set up in your BC site into Treepl CMS under ‘Settings / Categories’</p>\r\n    <p>Alternatively the <a href=\"https://www.bcappstore.com/apps/bc-to-treepl\" target=\"_blank\">BC to Treepl CMS  Migration App</a> can be used to automate this process.</p>\r\n    <p>For more information about Categories see the below documentation article.</p>\r\n    <div class=\"tab-content faqsOpenCloseHolder\">\r\n        <div class=\"faqs-open-close \">\r\n            <a class=\"opener\" href=\"#\"><i class=\"fas fa-angle-right\"></i>Categories Documentation</a>\r\n            <div class=\"slide js-slide-hidden\">\r\n                {% component source: \"Documentation Post\", layout: \"Body Detail\", filterBy: \"id\", filterValue: \"2308\", limit: \"1\", type: \"module\" %}\r\n            </div>\r\n        </div>\r\n    </div>\r\n    \r\n    <h2 id=\"secContactsAndCases\" class=\"circle-wrap\"><div class=\"circle\">181</div>Contacts & Cases</h2>\r\n    {% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secContactsAndCases\", parity: \"med\", effort: \"med\", time: \"med\", docs: \"low\", tool: \"high\" %}\r\n    <p>The <a href=\"https://www.bcappstore.com/apps/bc-to-treepl\" target=\"_blank\">BC to Treepl CMS  Migration App</a> can be used to migrate both contact records and cases.</p>\r\n    <p>Alternatively, you can import contact records directly into the Treepl CMS Contacts module. However, Cases can not yet be imported in this way and would need to be added manaully if not using the Migration App.</p>\r\n    <p>Also note that Treepl CMS Contact fields are limited, so it's still advisable to export BC CRM data for archive/backup purposes if advanced CRM fields exist and later import that data when the advanced CRM is available.</p>\r\n\r\n    \r\n    <h2 id=\"secReplicateContentHolders\" class=\"circle-wrap\"><div class=\"circle\">182</div>Replicate Content Holders</h2>\r\n    {% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secReplicateContentHolders\", parity: \"high\", effort: \"low\", time: \"low\", docs: \"med\", tool: \"high\" %}\r\n    <p>The <a href=\"https://www.bcappstore.com/apps/bc-to-treepl\" target=\"_blank\">BC to Treepl CMS  Migration App</a> can be used to automate this process.</p>\r\n    <p>Alternatively, if manually migrating, locate your relevant BC Content Holders, either in your downloaded BC site files, or in the “Develop” tab of the BC Admin under ‘System / ContentHolders, or directly in the BC Admin under ‘Site Manager’ &gt; ‘Content Holders’.</p>\r\n    <p>Upload your BC Content Holders into your Treepl CMS instance via FTP into the ‘Content / Snippets’ directory.</p>\r\n    <p>If not using FTP, create and copy over the HTML from these into the Treepl CMS admin area under ‘Content / Snippets’.</p>\r\n    <p>Review your HTML for any BC specific tags or modules which will need to be converted to Treepl CMS equivalents. Either making note of them to come back to once other items are set up, or replace them now if you can.</p>\r\n    \r\n    \r\n    <div class=\"tab-content faqsOpenCloseHolder\">\r\n        <div class=\"faqs-open-close \">\r\n            <a class=\"opener\" href=\"#\"><i class=\"fas fa-angle-right\"></i>Snippets Documentation</a>\r\n            <div class=\"slide js-slide-hidden\">\r\n                {% component source: \"Documentation Post\", layout: \"Body Detail\", filterBy: \"id\", filterValue: \"2133\", limit: \"1\", type: \"module\" %}\r\n            </div>\r\n        </div>\r\n        <div class=\"faqs-open-close \">\r\n            <a class=\"opener\" href=\"#\"><i class=\"fas fa-angle-right\"></i>Snippets Component Documentation</a>\r\n            <div class=\"slide js-slide-hidden\">\r\n                {% component source: \"Documentation Post\", layout: \"Body Detail\", filterBy: \"id\", filterValue: \"1950\", limit: \"1\", type: \"module\" %}\r\n            </div>\r\n        </div>\r\n    </div>\r\n    \r\n    \r\n    \r\n    \r\n    <h2 id=\"secBuiltInModules\" class=\"circle-wrap\"><div class=\"circle\">183</div>Built-In Modules:</h2>\r\n    <h3 id=\"secBlogs\">Blogs</h3>\r\n    {% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secBuiltInModulesBlogs\", parity: \"high\", effort: \"med\", time: \"med\", docs: \"med\", tool: \"high\" %}\r\n    <p>BC Blogs can be replicated in Treepl CMS either in the built-in Blog module or by using Custom Modules to configure your own blog structure.</p>\r\n    <p>The <a href=\"https://www.bcappstore.com/apps/bc-to-treepl\" target=\"_blank\">BC to Treepl CMS Migration App</a> can be used to automate this process, including Release Dates, Tags, Categories, Authors and SEO data.</p>\r\n    <p>If manually transferring your blogs, for a method of extracting the BC Blog data see this helpful Treepl CMS Forum post (includes code snippets and demo video):</p>\r\n    <a class=\"btn small\" href=\"https://forum.treepl.co/t/bc-blog-export-helper/61\" target=\"_blank\">BC Blog Export Helper</a>\r\n    <p>You can also upload your BC module layouts into your Treepl CMS instance via FTP into the ‘Content / ModuleLayouts / &lt;Blog&gt; &amp; &lt;BlogPost&gt;’ directories.</p>\r\n    <p>For more information about the Blog module see the documentation articles.</p>\r\n    <div class=\"tab-content faqsOpenCloseHolder\">\r\n        <div class=\"faqs-open-close \">\r\n            <a class=\"opener\" href=\"#\"><i class=\"fas fa-angle-right\"></i>Blog module Documentation</a>\r\n            <div class=\"slide js-slide-hidden\">\r\n                {% component source: \"Documentation Post\", layout: \"Body Detail\", filterBy: \"id\", filterValue: \"2135\", limit: \"1\", type: \"module\" %}\r\n            </div>\r\n        </div>\r\n        <div class=\"faqs-open-close \">\r\n            <a class=\"opener\" href=\"#\"><i class=\"fas fa-angle-right\"></i>Blog component Documentation</a>\r\n            <div class=\"slide js-slide-hidden\">\r\n                {% component source: \"Documentation Post\", layout: \"Body Detail\", filterBy: \"id\", filterValue: \"2141\", limit: \"1\", type: \"module\" %}\r\n            </div>\r\n        </div>\r\n        <div class=\"faqs-open-close \">\r\n            <a class=\"opener\" href=\"#\"><i class=\"fas fa-angle-right\"></i>Blog Post component Documentation</a>\r\n            <div class=\"slide js-slide-hidden\">\r\n                {% component source: \"Documentation Post\", layout: \"Body Detail\", filterBy: \"id\", filterValue: \"2142\", limit: \"1\", type: \"module\" %}\r\n            </div>\r\n        </div>\r\n    </div>\r\n    \r\n    <h3 id=\"secEvents\">Events</h3>\r\n    {% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secBuiltInModulesEvents\", parity: \"high\", effort: \"high\", time: \"med\", docs: \"low\", tool: \"high\" %}\r\n    <p>Treepl CMS Events are similar to BC Events and can be set up quite easily.</p>\r\n    <p>The <a href=\"https://www.bcappstore.com/apps/bc-to-treepl\" target=\"_blank\">BC to Treepl CMS  Migration App</a> can be used to automate Event migrations as well as transfer Event booking data from the CRM into Treepl CMS CRM.</p>\r\n    <p>For manual migrations, getting the data out of BC is a problem... although, you could likely use a similar approach to the Blog Export Helper above.</p>\r\n    <p>You can also upload your BC module layouts into your Treepl CMS instance via FTP into the ‘Content / ModuleLayouts / &lt;Event&gt; &amp; &lt;EventGroup&gt;’ directories.</p>\r\n    \r\n    <h3 id=\"secPhotoGalleries\">Photo Galleries</h3>\r\n    {% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secBuiltInModulesGalleries\", parity: \"med\", effort: \"med\", time: \"med\", docs: \"med\", tool: \"high\" %}\r\n    <p>Galleries in Treepl CMS work more like WebApps, so each image is an item within the parent module. This brings greater control in the long run, however migrating images and data to this new format can make migration a little more involved.</p>\r\n    <p>The <a href=\"https://www.bcappstore.com/apps/bc-to-treepl\" target=\"_blank\">BC to Treepl CMS Migration App</a> can be used to automate this process.</p>\r\n    <p>If manually transferring your galleries, see this very helpful method of extracting the BC data in a ready format for Treepl CMS posted in the Treepl CMS Forum:</p>\r\n    <a class=\"btn small\" href=\"https://forum.treepl.co/t/bc-photo-gallery-exporter/107\" target=\"_blank\">BC Photo Galleries Export Helper</a>\r\n    <p>For more information about the Galleries/Sliders module see the documentation articles.</p>\r\n    <div class=\"tab-content faqsOpenCloseHolder\">\r\n        <div class=\"faqs-open-close \">\r\n            <a class=\"opener\" href=\"#\"><i class=\"fas fa-angle-right\"></i>Gallery/Slider Group module</a>\r\n            <div class=\"slide js-slide-hidden\">\r\n                {% component source: \"Documentation Post\", layout: \"Body Detail\", filterBy: \"id\", filterValue: \"2140\", limit: \"1\", type: \"module\" %}\r\n            </div>\r\n        </div>\r\n    </div>\r\n    <div class=\"tab-content faqsOpenCloseHolder\">\r\n        <div class=\"faqs-open-close \">\r\n            <a class=\"opener\" href=\"#\"><i class=\"fas fa-angle-right\"></i>Gallery/Slider Item module</a>\r\n            <div class=\"slide js-slide-hidden\">\r\n                {% component source: \"Documentation Post\", layout: \"Body Detail\", filterBy: \"id\", filterValue: \"2143\", limit: \"1\", type: \"module\" %}\r\n            </div>\r\n        </div>\r\n    </div>\r\n    \r\n    <h3 id=\"secNews\">News</h3>\r\n    {% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secBuiltInModulesNews\", parity: \"med\", effort: \"low\", time: \"low\", docs: \"med\", tool: \"high\" %}\r\n    <p>There is no “News” module specifically in Treepl CMS, however using the Blog would likely be a more than suitable alternative (see migrating Blogs section above).</p>\r\n    <p>The <a href=\"https://www.bcappstore.com/apps/bc-to-treepl\" target=\"_blank\">BC to Treepl CMS Migration App</a> can be used to automate this process and a separate Blog module will be created for News items.</p>\r\n    <p>If migrating manually, since BC doesn't provide export functionality for extracting the BC News data, you could likely use a similar approach to the Blog Export Helper above.</p>\r\n    <p>You can also upload your BC module layouts into your Treepl CMS instance via FTP into the ‘Content / ModuleLayouts / &lt;Your Custom Module OR Blog&gt;’ directory.</p>\r\n    \r\n    \r\n    <h3 id=\"secMediaDownloads\">Media Downloads</h3>\r\n    {% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secBuiltInModulesMedia\", parity: \"low\", effort: \"med\", time: \"med\", docs: \"low\", tool: \"high\" %}\r\n    <p>There is no direct “Media Downloads” module in Treepl CMS, however setting up a Custom Module along with the ‘<a href=\"https://docs.treepl.co/documentation_group/extras/force-download-handler\" target=\"_blank\">Force Download Handler</a>’ option would see very similar results with greater flexibility.<br>\r\n    (see migrating WebApps section in a later step).</p>\r\n    <p>You can manually migrate Media Downloads or alternatively the <a href=\"https://www.bcappstore.com/apps/bc-to-treepl\" target=\"_blank\">BC to Treepl CMS  Migration App</a> can be used to automate this process.</p>\r\n    <p>For manual migrations, a very helpful method of extracting the BC data in a ready format for Treepl CMS, see this helpful Treepl CMS Forum post:</p>\r\n    <a class=\"btn small\" href=\"https://forum.treepl.co/t/bc-media-downloads-exporter/235\" target=\"_blank\">BC Media Downloads Export Helper</a>\r\n    \r\n    \r\n    <h3 id=\"secFAQs\">FAQs</h3>\r\n    {% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secBuiltInModulesFAQs\", parity: \"high\", effort: \"med\", time: \"med\", docs: \"low\", tool: \"high\" %}\r\n    <p>FAQs in Treepl CMS work more like WebApps, so each FAQ is an item within the parent module (Question Group). This brings greater control in the long run, however migrating FAQs and data to this new format may make migration a little more involved.</p>\r\n    <p>You can manually migrate FAQs or alternatively the <a href=\"https://www.bcappstore.com/apps/bc-to-treepl\" target=\"_blank\">BC to Treepl CMS  Migration App</a> can be used to automate this process.</p>\r\n    <p>For manual migrations, you could likely use a similar approach to the Blog Export Helper above.</p>\r\n    <p>You can also upload your BC module layouts into your Treepl CMS instance via FTP into the ‘Content / ModuleLayouts / &lt;FAQGropu&gt; &amp; &lt;FAQQuestion&gt;’ directories.</p>\r\n    <p>For more information about the FAQs module see the documentation articles.</p>\r\n    <div class=\"tab-content faqGroupOpenCloseHolder\">\r\n        <div class=\"faqs-open-close \">\r\n            <a class=\"opener\" href=\"#\"><i class=\"fas fa-angle-right\"></i>FAQ Group module</a>\r\n            <div class=\"slide js-slide-hidden\">\r\n                {% component source: \"Documentation Post\", layout: \"Body Detail\", filterBy: \"id\", filterValue: \"2144\", limit: \"1\", type: \"module\" %}\r\n            </div>\r\n        </div>\r\n    </div>\r\n    <div class=\"tab-content faqItemOpenCloseHolder\">\r\n        <div class=\"faqs-open-close \">\r\n            <a class=\"opener\" href=\"#\"><i class=\"fas fa-angle-right\"></i>FAQ Item module</a>\r\n            <div class=\"slide js-slide-hidden\">\r\n                {% component source: \"Documentation Post\", layout: \"Body Detail\", filterBy: \"id\", filterValue: \"2145\", limit: \"1\", type: \"module\" %}\r\n            </div>\r\n        </div>\r\n    </div>\r\n    \r\n    \r\n    <h3 id=\"secAdRotators\">Ad Rotators</h3>\r\n    {% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secBuiltInModulesRotators\", parity: \"med\", effort: \"med\", time: \"med\", docs: \"med\", tool: \"high\" %}\r\n    <p>The Banner module in Treepl CMS was built to replace the BC Ad Rotators and is set up much like the other modules in Treepl CMS and is therefore flexible for you to configure the layouts and behaviour as needed.</p>\r\n    <p>The <a href=\"https://www.bcappstore.com/apps/bc-to-treepl\" target=\"_blank\">BC to Treepl CMS Migration App</a> can be used to automate this process.</p>\r\n    <p>If migrating manually, since BC doesn't provide export functionality for extracting the BC Ad Rotator data, you could likely use a similar approach to the Blog Export Helper above.</p>\r\n    <p>For more information about the Banners module see the documentation articles.</p>\r\n    <div class=\"tab-content faqsOpenCloseHolder\">\r\n        <div class=\"faqs-open-close \">\r\n            <a class=\"opener\" href=\"#\"><i class=\"fas fa-angle-right\"></i>Banner Documentation</a>\r\n            <div class=\"slide js-slide-hidden\">\r\n                {% component source: \"Documentation Post\", layout: \"Body Detail\", filterBy: \"id\", filterValue: \"2136\", limit: \"1\", type: \"module\" %}\r\n            </div>\r\n        </div>\r\n    </div>\r\n    <div class=\"tab-content faqsOpenCloseHolder\">\r\n        <div class=\"faqs-open-close \">\r\n            <a class=\"opener\" href=\"#\"><i class=\"fas fa-angle-right\"></i>Banner Group module</a>\r\n            <div class=\"slide js-slide-hidden\">\r\n                {% component source: \"Documentation Post\", layout: \"Body Detail\", filterBy: \"id\", filterValue: \"2146\", limit: \"1\", type: \"module\" %}\r\n            </div>\r\n        </div>\r\n    </div>\r\n    <div class=\"tab-content faqsOpenCloseHolder\">\r\n        <div class=\"faqs-open-close \">\r\n            <a class=\"opener\" href=\"#\"><i class=\"fas fa-angle-right\"></i>Banner Item module</a>\r\n            <div class=\"slide js-slide-hidden\">\r\n                {% component source: \"Documentation Post\", layout: \"Body Detail\", filterBy: \"id\", filterValue: \"2147\", limit: \"1\", type: \"module\" %}\r\n            </div>\r\n        </div>\r\n    </div>\r\n    \r\n    <h2 id=\"secCustomModulesWebApps\" class=\"circle-wrap\"><div class=\"circle\">184</div>Custom Modules (WebApps)</h2>\r\n    {% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secCustomModulesWebApps\", parity: \"high\", effort: \"low\", time: \"med\", docs: \"high\", tool: \"high\" %}\r\n    <p>Generally, WebApps will transfer over quite easily as Custom Modules in Treepl CMS were built around an improved “WebApp” model. Therefore they have a very similar concept with how items are added and list and detail layouts are constructed. Combined with the fact that WebApp data can be easily exported from BC and imported into Treepl CMS, WebApps will likely be an easier job migrating then the other built-in BC modules.</p>\r\n    <p>If you have very complex WebApps there may be more time required to study the different methods with rendering data and converting complex Liquid markup, but the data migration should be relatively straight forward via export/import.</p>\r\n    <p>You can further simplify this process with the <a href=\"https://www.bcappstore.com/apps/bc-to-treepl\" target=\"_blank\">BC to Treepl CMS  Migration App</a>, which can migration not only the item data but the WebApp layouts, settings and set up all custom fields including Datasource fields (converting the reference for Treepl CMS use).</p>\r\n    <p>If manually migrating WebApps, you'll will first need to set up your Custom Module with all it's correspondign properties and settings in order to import those matching fields from BC.</p>\r\n    <p>You can also upload your BC module layouts into your Treepl CMS instance via FTP into the ‘Content / ModuleLayouts / &lt;Your Custom Module&gt;’ directory.</p>\r\n    <p>Refer to the Custom Module documentation for more details:</p>\r\n    <a class=\"btn small\" href=\"/documentation_group/content-modules/custom-modules-aka-webapps\" target=\"_blank\">Custom Modules (AKA WebApps)</a>\r\n    \r\n    \r\n    \r\n    <h2 id=\"secEcommerce\" class=\"circle-wrap\"><div class=\"circle\">185</div>eCommerce</h2>\r\n    <p>To get up and running with eCommerce in Treepl CMS, see the getting started article below.</p>\r\n    <div class=\"tab-content faqsOpenCloseHolder\">\r\n        <div class=\"faqs-open-close \">\r\n            <a class=\"opener\" href=\"#\"><i class=\"fas fa-angle-right\"></i>Getting Started with eCommerce</a>\r\n            <div class=\"slide js-slide-hidden\">\r\n                {% component source: \"Documentation Post\", layout: \"Body Detail\", filterBy: \"id\", filterValue: \"2522\", limit: \"1\", type: \"module\" %}\r\n            </div>\r\n        </div>\r\n    </div>\r\n    <h3 id=\"secPaymentGateways\">Payment Gateways</h3>\r\n    {% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secPaymentGateways\", parity: \"med\", effort: \"low\", time: \"low\", docs: \"low\", tool: \"na\" %}\r\n    <p>Since the Payment Gateway settings contain sensitive details you will need to manually set up your Payment Gateway in your new Treepl CMS site by going to ‘Settings’ > ‘Payment’.</p>\r\n\r\n<h3 id=\"secTaxCodes\">Tax Codes</h3>\r\n{% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secTaxCodes\", parity: \"high\", effort: \"low\", time: \"low\", docs: \"low\", tool: \"high\" %}\r\n<p>Tax Codes follow the same structure in Treepl CMS so you can simply enter all the same codes under ‘eCommerce’ > ‘Taxes’.</p>\r\n<p>If you are implementing all or many of the US State taxes you’ll be able to add these automatically when you click “Add New Tax” and select ‘United States’ as the assigned country.</p>\r\n<p>There is no manual export option from BC, nor is there an import option in Treepl CMS for this.</p>\r\n<p>You can also automatically migrate Tax Codes via the <a href=\"https://www.bcappstore.com/apps/bc-to-treepl\" target=\"_blank\">BC to Treepl CMS Migration App</a>.</p>\r\n<h3 id=\"secShippingOptions\">Shipping Options</h3>\r\n{% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secShippingOptions\", parity: \"med\", effort: \"low\", time: \"low\", docs: \"low\", tool: \"high\" %}\r\n<p>Shipping Codes follow a very similar format in Treepl CMS so you can simply enter all the same codes under ‘eCommerce’ > Shipping options.</p>\r\n<p>This is for user-defined shipping rules at least. Integration of shipping providers is still pending release.</p>\r\n<p>There is no manual export option from BC, nor is there an import option in Treepl CMS for this. </p>\r\n<p>You can also automatically migrate user-defined Shipping Options via the <a href=\"https://www.bcappstore.com/apps/bc-to-treepl\" target=\"_blank\">BC to Treepl CMS Migration App</a>.</p>\r\n<h3 id=\"secCatalogs\">Catalogs</h3>\r\n{% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secCatalogs\", parity: \"high\", effort: \"low\", time: \"low\", docs: \"low\", tool: \"high\" %}\r\n<p>You can import your Catalogues into Treepl CMS if you have a spreadsheet available, although there is no export feature in BC.</p>\r\n<p>Creating Catalogs manually can be done much the same way as adding any other module item in Treepl CMS via ‘eCommerce’ > ‘Catalogs’ and you will have similar options available.</p>\r\n<p>Options from BC that are not currently available are; Price visibility, XML feed, and Browse Panel settings.</p> \r\n<p>You can also automatically migrate Catalogs via the <a href=\"https://www.bcappstore.com/apps/bc-to-treepl\" target=\"_blank\">BC to Treepl CMS Migration App</a>.</p>\r\n<h3 id=\"secProducts\">Products</h3>\r\n{% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secProducts\", parity: \"high\", effort: \"low\", time: \"low\", docs: \"low\", tool: \"high\" %}\r\n<p>You can import your Products into Treepl CMS with an export from BC, or if you have a spreadsheet available (after formatting to match Treepl CMS import file).</p>\r\n<p>Creating Products manually can be done much the same way as adding any other module item in Treepl CMS via ‘eCommerce’ > ‘Products’ and you will have similar options available.</p>\r\n<p>Additionally, you can add a variety of custom fields to customise your products module (for example, adding additional image fields would be how you’d add the “Poplets” feature from BC).</p>\r\n<p>Options from BC that are not currently available are; Downloadable Product, Capture Details, Commission Payable.</p>\r\n<p>You can also automatically migrate Products via the <a href=\"https://www.bcappstore.com/apps/bc-to-treepl\" target=\"_blank\">BC to Treepl CMS Migration App</a>.</p>\r\n<h3 id=\"secDiscountCodes\">Discount Codes</h3>\r\n{% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secDiscountCodes\", parity: \"high\", effort: \"low\", time: \"low\", docs: \"low\", tool: \"high\" %}\r\n<p>Discount Codes follow the same structure in Treepl CMS so you can simply enter all the same codes under ‘eCommerce’ > ‘Discount codes’.</p>\r\n<p>There is no manual export option from BC, nor is there an import option in Treepl CMS for this.</p>\r\n<p>You can also automatically migrate Discount Codes via the <a href=\"https://www.bcappstore.com/apps/bc-to-treepl\" target=\"_blank\">BC to Treepl CMS Migration App</a>.</p>\r\n<h3 id=\"secGiftVouchers\">Gift Vouchers</h3>\r\n{% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secGiftVouchers\", parity: \"high\", effort: \"low\", time: \"low\", docs: \"low\", tool: \"high\" %}\r\n<p>Gift Vouchers follow the same structure in Treepl CMS so you can simply enter all the same vouchers under ‘eCommerce’ > ‘Gift vouchers’.</p>\r\n<p>There is no manual export option from BC, nor is there an import option in Treepl CMS for this.</p>\r\n<p>You can also automatically migrate Gift Vouchers via the <a href=\"https://www.bcappstore.com/apps/bc-to-treepl\" target=\"_blank\">BC to Treepl CMS Migration App</a>.</p>\r\n\r\n\r\n<p class=\"notice-note\">eCommerce features not yet available include; cart lifetime setting, XML product feed, digital/downloadable products, integrated shipping providers.</p>\r\n    \r\n    \r\n    \r\n    \r\n    \r\n    \r\n    \r\n    \r\n    \r\n    \r\n    \r\n    \r\n    \r\n    \r\n    <h2 id=\"secRevisitSiteTemplates\" class=\"circle-wrap\"><div class=\"circle\">186</div>Revisit Site Templates</h2>\r\n    {% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secRevisitSiteTemplates\", parity: \"high\", effort: \"med\", time: \"med\", docs: \"med\", tool: \"high\" %}\r\n    <p>Now let's review the Site Templates markup and replace BC modules and Liquid with Treepl CMS methods.</p>\r\n    <p>The <a href=\"https://www.bcappstore.com/apps/bc-to-treepl\" target=\"_blank\">BC to Treepl CMS  Migration App</a> can be used to automate much of this process. However, it's recommended to check through the markup for any exceptions.</p>\r\n    <p>Some common examples are:</p>\r\n    <ul>\r\n        <li>Dynamic HEAD elements</li>\r\n        <li>pagecontent tag</li>\r\n        <li>menus</li>\r\n        <li>content holder</li>\r\n        <li>includes</li>\r\n        <li>modules: BC's module syntax (old and new) converted to Treepl CMS 'Component' syntax</li>\r\n    </ul>\r\n    <p>Review the relevant Component types and all their properties and syntax:</p>\r\n    <a class=\"btn small\" href=\"/documentation_group/component-types/\" target=\"_blank\">All Component Types</a>\r\n    \r\n    \r\n    <h2 id=\"secRevisitSitePages\" class=\"circle-wrap\"><div class=\"circle\">187</div>Revisit Site Pages</h2>\r\n    {% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secRevisitSitePages\", parity: \"high\", effort: \"med\", time: \"med\", docs: \"med\", tool: \"high\" %}\r\n    <p>Like above, let's review the Site Pages markup and replace BC modules and Liquid with Treepl CMS methods.</p>\r\n    <p>Usign the <a href=\"https://www.bcappstore.com/apps/bc-to-treepl\" target=\"_blank\">BC to Treepl CMS  Migration App</a> can automate many BC to Treepl CMS Liquid and tag conversions.</p>\r\n    <p>For manual migrations, some common examples are:</p>\r\n    <ul>\r\n        <li>menus</li>\r\n        <li>content holder</li>\r\n        <li>includes</li>\r\n        <li>modules: BC's module syntax (old and new) converted to Treepl CMS 'Component' syntax</li>\r\n    </ul>\r\n    <p>Review the relevant Component types and all their properties and syntax:</p>\r\n    <a class=\"btn small\" href=\"/documentation_group/component-types/\" target=\"_blank\">All Component Types</a>\r\n    \r\n    \r\n    <h2 id=\"secSetupSEOandSitemap\" class=\"circle-wrap\"><div class=\"circle\">188</div>Setup SEO & Sitemap</h2>\r\n    {% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secSetupSEOandSitemap\", parity: \"med\", effort: \"low\", time: \"low\", docs: \"med\", tool: \"low\" %}\r\n    <p>Add primary domain, language, country, and configure sitemap automation (and possibly enable all items for search engine visibility).</p>\r\n    <p>For more information about SEO settings see the documentation article.</p>\r\n    <div class=\"tab-content faqsOpenCloseHolder\">\r\n        <div class=\"faqs-open-close \">\r\n            <a class=\"opener\" href=\"#\"><i class=\"fas fa-angle-right\"></i>SEO Documentation</a>\r\n            <div class=\"slide js-slide-hidden\">\r\n                {% component source: \"Documentation Post\", layout: \"Body Detail\", filterBy: \"id\", filterValue: \"2212\", limit: \"1\", type: \"module\" %}\r\n            </div>\r\n        </div>\r\n    </div>\r\n    <p>On initial setup, it's recommended to manually generate the sitemap to review the items listed - ensuring all your relevant site items are configured for search engine visibility.</p>\r\n    \r\n    \r\n    <h2 id=\"secChecksAndTroubleshooting\" class=\"circle-wrap\"><div class=\"circle\">189</div>Checks and Troubleshooting</h2>\r\n    {% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secChecksAndTroubleshooting\", parity: \"na\", effort: \"med\", time: \"med\", docs: \"med\", tool: \"na\" %}\r\n\r\n    <p>Run back through the steps above as a quick checklist to review all your site items.</p>\r\n    <p>Comparing your new Treepl CMS site front-end alongside the BC site to check for consistancy.</p>\r\n    <p>Note any URL differences due to page/directory naming or restructuring and ensure URL Redirect are setup for these.</p>\r\n</div>\r\n",
  "ItemTags": [
  "Migrations"
],
  "Author_Name": "",
  "Author_Url": "",
  "Author": "",
  "SEOTitle": "",
  "MetaTitle": "",
  "MetaDescription": "",
  "ShowPageForSearchEngine": true,
  "CanonicalLink": "",
  "EnableAMP": false,
  "AMPContent": "",
  "CodeEditor": true,
  "ExternalId": 0,
  "SocialMetaTags": "",
  "OpenGraphProperties": "",
  "DisableForSiteSearch": false,
  "SeoPriority": "",
  "CreatedByMemberId": 0,
  "ItemCategories": "",
  "ItemCategoryIdList": "",
  "SKUCode": "",
  "SiteSearchKeywords": "",
  "Active": true,
  "IgnoreUpdates": false,
  "UpdateNotes": "",
  "UpdatesLog": "<ul>\n    <li>Added note about new BC .zip Archive functionality</li>\n    <li>Updated BC to Treepl CMS Migration App compatibility - as per v9.0.4 (Catalogs, Discount codes, Gift vouchers, Products, Shipping options, Tax codes)</li>\n</ul>",
  "ExternalResources": "",
  "AdditionalRelatedArticle_Name": "",
  "AdditionalRelatedArticle_Url": "",
  "AdditionalRelatedArticle": "",
  "AdditionalRelatedArticle2_Name": "",
  "AdditionalRelatedArticle2_Url": "",
  "AdditionalRelatedArticle2": "",
  "Authors": "2418",
  "Module_ID": 1870,
  "Module_Alias": "DocumentationPost",
  "ParentName": "BC Migration Guides",
  "ParentUrl": "/bc-migration-guides",
  "TemplateName": "Docs Template",
  "IsHome": false
}
}
}

Accessing the Data

This data is accessible in two main ways:

1. Using Liquid in the specified Layout via the this object.

{{this['name']}}

2. Directly on the Page or Template via a Liquid Collection if collectionVariable was added to the Component tag.

An example using collectionVariable with value "allFAQGroups" to list all "FAQ Groups" across the site:

Here we suppress any Layout from rendering by setting layout: "" as an empty attribute.

{% component type: "module", source: "FAQ Group", layout: "", collectionVariable: "allFAQGroups" %}

Looping through the collection to render all the item names in a list, giving us:

  • DEMO Custom FAQ Group
  • DEMO Standard FAQ Group

The code:

<ul>
    {% for i in allFAQGroups.items %}
        <li>{{i['name']}}</li>
    {% endfor %}
</ul>

Accessing a specific item within the collection. In this case the second item (zero based index), which in our example would render the value DEMO Standard FAQ Group

{{allFAQGroups.items[1]['name']}}

Counter

Along with the data output above, there is also a special liquid tag available {{counter}} which increments for each item. This tag is only available within Layouts when object: "item" is used in the Component tag.

FAQ Item module

View full article

This module component fetches data relating to FAQ Questions.

{% component type: "module", source: "FAQ Question", layout: "List" %}

Parameters and Options

Parameter Values Required Description
type module (default)
module_of_member

This is the name of the entity that needs to be used for the component retrieving function.

module is the standard retrieving function to retrieve all items.

module_of_member retrieves only those items "Added by" the currently logged in user (identified by the CreatedByMemberId property in the module items Liquid data).

The "Added by" System Property will only be available where the modules settings have "Allow Add New Items" turned on under the "Site User Permissions".

source FAQ Question (default) The entity/alias name or ID that the data is to be sourced from.
layout List (default)
<Your Layout name>

The layout name you want to use for rendering the component. The layout name is referenced from the available Layouts of the source specified.

While this parameter is required to render your Layout markup, if the parameter is blank, has an incorrectly referenced Layout, or is removed altogether then the component will still output the modules item data to a Liquid collection which can be accessed via the collectionVariable parameter.

filterBy id
parentid
name
weighting
url
urlslug
releasedate
expirydate
LastUpdatedDate
Author
ItemCategories
ItemTags
<CustomPropertyName>
...and any other top level properties available for the module

The name of the property to filter by. If empty or not present, no filtering will be used.

Remove spaces from custom property names here.

filterValue <your value>
Your specific value to filter by, eg: name, id, number, date, etc.
Liquid variables can be used here also. If present but no value set, no items will be returned.
sortBy id
parentid
name
weighting
url
urlslug
releasedate
expirydate
LastUpdatedDate
Author
ItemCategories
ItemTags
<CustomPropertyName>
...and any other top level properties available for the module

The name of the property to sort by. If empty or not present, alpha/numeric sorting will be used.

Remove spaces from custom property names here.

sortOrder ASC (default)
DESC

ASC sorts the items in ascending order while DESC sorts in descending order (based on alpha/numeric or date sorting).
If empty or not present, alpha/numeric sorting will be used.
random false (default)
true

Displays the available items in a random order.

If used in conjunction with sortBy, that sorting criteria will be applied to the randomly retrieved results. So, if retrieving all, or most, of the items they will not appear to be random since they will then be sorted back into a logical order. To overcome this, set the sortBy parameter to 'enabled' (or another unused property) as this will not provide any viable sorting criteria* and the items will not be sorted from their initial random order.
* Unless there are weighted items, which will always override the random option.

limit 10 (default)
<number>

The maximum number of items returned. If displayPagination is enabled this determines the maximum number of items per page.
enablePagination true (default)
false

Enables/disables pagination for the component.

This is useful for avoiding pagniation affects for a specific component when multiple components of the same module are output on the same page and do use pagination.

displayPagination false (default)
true

Displays pagination if there are more items available than the limit set.
emptyMessage <Your custom message>
Custom content that is rendered if no items are returned by the Component. The default is no content.
Liquid variables are supported here, although Liquid logic tags and HTML are not.

If using Liquid variables with filters added, be sure to change any double quotes to single quotes. For eg:
emptyMessage: “{{ myVariable | prepend: 'Error: ' }}”

To use HTML in your empty message, first capture it using a Liquid capture, then insert the capture variable into the emptyMessage parameter.

object item (default)
collection

Determines the method for Liquid rendering.
item returns each item iteratively, one after another, for output (generally, output to a container element with no need for looping through the data).
collection returns all items as one collection for output (your container element and looping logic would be handled in the Components Layout).
collectionVariable <yourLiquidVariableName>
Assigns the data to a Liquid collection enabling further access to the data on the Page or Template using Liquid.

Your collectionVariable value must only contain English letters, numbers or underscores. Spaces or special characters are not supported.

isSearchResult false (default)
true

Allows search parameters in the URL to override the components output. Therefore, this parameter can be used to output module specific search results from a submitted search form.

Likewise, Tag, Category, and Archive components can be used in conjunction with this parameter for filtering the module's output.

URL search parameters will override any corresponding parameters in the component. If no search parameters are present in the URL, isSearchResult will be ignored.

Any value other than true, (including an empty value), will disable the search functionality and the component will output its regular data.

searchScope eg:
{'prop_ParentId':'1234', 'prop_ReleaseDate_Min':'2018-07-01', 'prop_ReleaseDate_Max':'2018-07-31', 'prop_KeyWords':'Your Keywords', 'prop_ItemTags':['tag1','tag2'], 'page':'2'}

Allows a search on the module without search parameters needed in the URL. Instead, search parameters are added to the value of this parameter. Therefore, this parameter can be used to output module specific search results from hard-coded (or Liquid) values without the use of a search form.

Added search parameters will override any corresponding parameters otherwise configured on the component. If no search parameters are present, searchScope will be ignored.

This value supports Liquid and can therefore be constructed with Liquid data/variables.

<customParameter> <your custom value>
You can add your own additional parameters (name/value pairs) to the Component tag. These will be passed to the Components Layout (and the collectionVariable if used) for use via Liquid.

Your <customParameter> name must only contain English letters, numbers or underscores. Spaces or special characters are not supported.

You can use HTML as the value here, just be sure to change any double quotes in your HTML to single quotes.

Liquid Output

The below example has 3 sample items but is otherwise the default structure you will get from this Component.

{
  "Pagination": {
  "CurrentPage": 1,
  "ItemsPerPage": 10,
  "NumberOfPages": 1,
  "TotalItemsCount": 3
},
  "Items": [
  {
    "Id": 2305,
    "Url": "/_faq_group/demo-custom-faq-group/first-custom-question",
    "ParentId": 2303,
    "LastUpdatedDate": "2018-12-16T00:10:04",
    "Name": "First Custom Question",
    "UrlSlug": "first-custom-question",
    "Enabled": true,
    "ReleaseDate": "2018-12-15T18:00:00",
    "ExpiryDate": "2099-12-11T07:00:00",
    "Weighting": 0,
    "Description": "",
    "ItemTags": null,
    "Author_Name": null,
    "Author_Url": null,
    "Author": "",
    "SEOTitle": "",
    "MetaTitle": "",
    "MetaDescription": "",
    "ShowPageForSearchEngine": false,
    "CanonicalLink": "",
    "EnableAMP": false,
    "AMPContent": "",
    "CodeEditor": false,
    "ExternalId": 0,
    "SocialMetaTags": "",
    "OpenGraphProperties": "",
    "DisableForSiteSearch": false,
    "SeoPriority": "",
    "CreatedByMemberId": 0,
    "ItemCategories": null,
    "ItemCategoryIdList": null,
    "SKUCode": "",
    "SiteSearchKeywords": "",
    "Module_ID": 1789,
    "Module_Alias": "FAQQuestion"
  },
  {
    "Id": 2276,
    "Url": "/_faq_group/demo-standard-faq-group/html-question-one",
    "ParentId": 2275,
    "LastUpdatedDate": "2018-12-16T00:09:36",
    "Name": "HTML Question One",
    "UrlSlug": "html-question-one",
    "Enabled": true,
    "ReleaseDate": "2018-11-25T18:00:00",
    "ExpiryDate": "2099-12-10T18:00:00",
    "Weighting": 0,
    "Description": "<p>My first question with <em>HTML</em>...</p>",
    "ItemTags": null,
    "Author_Name": null,
    "Author_Url": null,
    "Author": "",
    "SEOTitle": "",
    "MetaTitle": "",
    "MetaDescription": "",
    "ShowPageForSearchEngine": false,
    "CanonicalLink": "",
    "EnableAMP": false,
    "AMPContent": "",
    "CodeEditor": true,
    "ExternalId": 0,
    "SocialMetaTags": "",
    "OpenGraphProperties": "",
    "DisableForSiteSearch": false,
    "SeoPriority": "",
    "CreatedByMemberId": 0,
    "ItemCategories": null,
    "ItemCategoryIdList": null,
    "SKUCode": "",
    "SiteSearchKeywords": "",
    "Module_ID": 1789,
    "Module_Alias": "FAQQuestion"
  },
  {
    "Id": 2304,
    "Url": "/_faq_group/demo-standard-faq-group/html-question-two",
    "ParentId": 2275,
    "LastUpdatedDate": "2018-12-16T00:08:55",
    "Name": "HTML Question Two",
    "UrlSlug": "html-question-two",
    "Enabled": true,
    "ReleaseDate": "2018-11-25T18:00:00",
    "ExpiryDate": "2099-12-10T18:00:00",
    "Weighting": 0,
    "Description": "<p>My second question...</p>",
    "ItemTags": null,
    "Author_Name": null,
    "Author_Url": null,
    "Author": "",
    "SEOTitle": "",
    "MetaTitle": "",
    "MetaDescription": "",
    "ShowPageForSearchEngine": false,
    "CanonicalLink": "",
    "EnableAMP": false,
    "AMPContent": "",
    "CodeEditor": false,
    "ExternalId": 0,
    "SocialMetaTags": "",
    "OpenGraphProperties": {
      "title": null,
      "type": null,
      "url": null,
      "locale": null,
      "image": null
    },
    "DisableForSiteSearch": false,
    "SeoPriority": "",
    "CreatedByMemberId": 0,
    "ItemCategories": null,
    "ItemCategoryIdList": null,
    "SKUCode": "",
    "SiteSearchKeywords": "",
    "Module_ID": 1789,
    "Module_Alias": "FAQQuestion"
  }
],
  "Params": {},
  "Parent": {
  "Id": 2145,
  "Url": "/component-types/module-faq-question",
  "ParentId": 2127,
  "LastUpdatedDate": "2020-05-20T00:50:51",
  "Name": "module (FAQ Question)",
  "UrlSlug": "module-faq-question",
  "Enabled": true,
  "ReleaseDate": "2018-09-05T00:00:00",
  "ExpiryDate": "2099-12-09T00:00:00",
  "Weighting": 939,
  "Description": "<p>This module component fetches data relating to FAQ Questions.</p>\r\n\r\n{% component type: \"snippet\", alias: \"code_block_processor\", data: \"{{data}}\", lang: \"liquid\" %}\r\n\r\n\r\n{% component type: \"snippet\", alias: \"section_parameters\" %}\r\n\r\n{% component type: \"snippet\", alias: \"param_table_head\" %}\r\n    {% component type: \"snippet\", alias: \"param_type\", required: \"true\", values: \"module <em>(default)</em>,module_of_member\" %}\r\n    {% component type: \"snippet\", alias: \"param_source\", required: \"true\", values: \"FAQ Question <em>(default)</em>\" %}\r\n    {% component type: \"snippet\", alias: \"param_layout\", required: \"true\", values: \"List <em>(default)</em><br>&lt;Your Layout name&gt;\" %}\r\n    {% component type: \"snippet\", alias: \"param_filterby\" %}\r\n    {% component type: \"snippet\", alias: \"param_filtervalue\" %}\r\n    {% component type: \"snippet\", alias: \"param_sortby\" %}\r\n    {% component type: \"snippet\", alias: \"param_sortorder\" %}\r\n    {% component type: \"snippet\", alias: \"param_random\" %}\r\n    {% component type: \"snippet\", alias: \"param_limit\" %}\r\n    {% component type: \"snippet\", alias: \"param_enablepagination\" %}\r\n    {% component type: \"snippet\", alias: \"param_displaypagination\" %}\r\n    {% component type: \"snippet\", alias: \"param_emptymessage\" %}\r\n    {% component type: \"snippet\", alias: \"param_object\" %}\r\n    {% component type: \"snippet\", alias: \"param_collectionvariable\" %}\r\n    {% component type: \"snippet\", alias: \"param_issearchresult\" %}\r\n    {% component type: \"snippet\", alias: \"param_searchscope\" %}\r\n    {% component type: \"snippet\", alias: \"param_customparameter\" %}\r\n{% component type: \"snippet\", alias: \"param_table_foot\" %}\r\n\r\n\r\n{% component type: \"snippet\", alias: \"section_output\" %}\r\n\r\n{% component source: \"FAQ Question\", layout: "", type: \"module\", collectionVariable: \"allQuestions\" %}\r\n<p>The below example has 3 sample <code>items</code> but is otherwise the default structure you will get from this Component.</p>\r\n{% component type: \"snippet\", alias: \"code_block_processor\", data: \"{{allQuestions}}\", lang: \"json\" %}\r\n\r\n{% component type: \"snippet\", alias: \"section_accessing_data\" %}\r\n\r\n<p>This data is accessible in two main ways:</p>\r\n\r\n<p>1. Using Liquid in the specified Layout via the <code>this</code> object.</p>\r\n\r\n{% component type: \"snippet\", alias: \"code_block_processor\", data: \"{{data}}\", lang: \"liquid\" %}\r\n\r\n<p>2. Directly on the Page or Template via a Liquid Collection if <code>collectionVariable</code> was added to the Component tag.</p>\r\n\r\n<p>An example using <code>collectionVariable</code> with value \"allQuestions\" to list all \"FAQ Questions\" across the site:</p>\r\n<p class=\"notice-note\">Here we suppress any Layout from rendering by setting <code>layout: \"\"</code> as an empty attribute.</p>\r\n\r\n{% component type: \"snippet\", alias: \"code_block_processor\", data: \"{{data}}\", lang: \"liquid\" %}\r\n\r\n<p><em>Looping through the collection to render all the item names in a list, giving us:</em></p>\r\n\r\n<ul>\r\n    \r\n        <li>First Custom Question</li>\r\n    \r\n        <li>HTML Question One</li>\r\n    \r\n        <li>HTML Question Two</li>\r\n    \r\n</ul>\r\n<br>\r\n<p><em>The code:</em></p>\r\n\r\n{% component type: \"snippet\", alias: \"code_block_processor\", data: \"{{data}}\", lang: \"liquid\" %}\r\n\r\n<p><em>Accessing a specific item within the collection. In this case the second item (zero based index), which in our example would render the value <code>HTML Question One</code></em></p>\r\n\r\n{% component type: \"snippet\", alias: \"code_block_processor\", data: \"{{data}}\", lang: \"liquid\" %}\r\n\r\n<h2 id=\"secListFiltered\">List FAQ Questions from a specific Gallery</h2>\r\n<p>If you have more than one FAQ Group on your site the above examples will list FAQ Questions from all FAQ Groups as one single collection. However, you may also want to list all FAQ Questions from only the FAQ Group they belong to (their \"parent\" Gallery).</p>\r\n<p>To do this we add the <code>filterBy</code> and <code>filterValue</code> attributes to the Component tag using the Galleryies ID to get the relevant items.</p>\r\n<p class=\"notice-tip\">You can use the Component Manager to correctly configure the Component tag and ID value. Alternatively, to obtain the FAQ Groups  ID manually from the admin, go to a FAQ Groups  list view (where you can see all of the FAQ Questions) and note the number in the browser address bar shown after the <code>parentID=</code> parameter.</p>\r\n\r\n{% component type: \"snippet\", alias: \"section_counter\" %}\r\n",
  "ItemTags": [
  "FAQs"
],
  "Author_Name": "",
  "Author_Url": "",
  "Author": "",
  "SEOTitle": "",
  "MetaTitle": "",
  "MetaDescription": "",
  "ShowPageForSearchEngine": true,
  "CanonicalLink": "",
  "EnableAMP": false,
  "AMPContent": "",
  "CodeEditor": true,
  "ExternalId": 0,
  "SocialMetaTags": "",
  "OpenGraphProperties": "",
  "DisableForSiteSearch": false,
  "SeoPriority": "",
  "CreatedByMemberId": 0,
  "ItemCategories": "",
  "ItemCategoryIdList": "",
  "SKUCode": "",
  "SiteSearchKeywords": "",
  "Active": true,
  "IgnoreUpdates": false,
  "UpdateNotes": "'module_of_member' parameter details added.",
  "UpdatesLog": "",
  "ExternalResources": "",
  "AdditionalRelatedArticle_Name": "",
  "AdditionalRelatedArticle_Url": "",
  "AdditionalRelatedArticle": "",
  "AdditionalRelatedArticle2_Name": "",
  "AdditionalRelatedArticle2_Url": "",
  "AdditionalRelatedArticle2": "",
  "Authors": "2418",
  "Module_ID": 1870,
  "Module_Alias": "DocumentationPost",
  "Pagination": {
  "CurrentPage": 1,
  "ItemsPerPage": 1,
  "NumberOfPages": 1,
  "TotalItemsCount": 1
},
  "Params": {},
  "Parent": {
  "Id": 2359,
  "Url": "/bc-migration-guides/ultimate-migration-guide-step-by-step",
  "ParentId": 2355,
  "LastUpdatedDate": "2020-09-09T19:27:22",
  "Name": "Ultimate Migration Guide (Step by Step)",
  "UrlSlug": "ultimate-migration-guide-step-by-step",
  "Enabled": true,
  "ReleaseDate": "2019-02-17T00:00:00",
  "ExpiryDate": "2099-11-30T00:00:00",
  "Weighting": 800,
  "Description": "<div class=\"migration-guide\">\r\n    <div style=\"display:none;\">190</div>\r\n    <p>So you’ve decided to move your site across to Treepl CMS. Good choice.</p>\r\n    <p>And you’ve decided to do it yourself. Good for you! You’re probably going to be doing this quite a few times so let’s make it fun…</p>\r\n    <p>Set aside a good chunk of uninterrupted time, crank up your favourite tunes and grab a strong drink. It’s migration time.</p>\r\n    <p class=\"notice-note\">The below sections are ordered to try and minimise the amount of back and forth when creating the various components of a site.If a section doesn’t apply to your site, feel free to skip right over it.</p>\r\n    <p class=\"notice-note\">Migration tools are in development that will progressively make the below steps easier. These sections will be updated as those tools are released.</p>\r\n    <p class=\"notice-tip\">The BC to Treepl CMS Migration App now converts BC Liquid tags, ie: <code>{module_…}</code> and <code>{tag_…}</code> to Treepl CMS Liquid tags! For more info on this, view the Forum discussion <a href=\"https://forum.treepl.co/t/attention-to-bc-to-treepl-app-users/497\" target=\"_blank\">here</a>.</p>\r\n    <h2 id=\"secBCSiteFTPDownload\" class=\"circle-wrap\"><div class=\"circle\">191</div>Download the BC Site via FTP</h2>\r\n    {% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secBCSiteFTPDownload\", parity: \"high\", effort: \"low\", time: \"low\", docs: \"high\", tool: \"high\" %}\r\n    \r\n    <p>Download all files available via FTP from your BC site, if for no other reason than to just have a backup. However, these files can be referenced in the following steps as well.</p>\r\n    <p>You can also automatically migrate all files in the BC file system directly to your Treepl CMS site via the <a href=\"https://www.bcappstore.com/apps/bc-to-treepl\" target=\"_blank\">BC to Treepl CMS  Migration App</a>.</p>\r\n    <p>There is also now the ability to download a .zip archive of your BC site, including data from the following modules:</p>\r\n    <ul>\r\n    \t<li>Pages</li>\r\n        <li>Page Templates</li>\r\n        <li>Module Layouts</li>\r\n        <li>Static files</li>\r\n        <li>Apps</li>\r\n        <li>Content Holders</li>\r\n        <li>System Pages</li>\r\n        <li>Email Templates</li>\r\n        <li>Web Apps</li>\r\n    </ul>\r\n    <p><b>Further Resources:</b></p>\r\n    <a class=\"btn small\" href=\"https://docs.worldsecuresystems.com/user-manual/site-design/bc-and-dreamweaver/connect-to-your-site-using-dreamweaver\" target=\"_blank\">BC FTP connection details</a>\r\n    <a class=\"btn small\" href=\"https://docs.worldsecuresystems.com/Partners/downloading-your-website#Downloadingyoursitearchive\" target=\"_blank\">BC .zip archive</a>\r\n    \r\n    <h2 id=\"secBCSiteDeepClean\" class=\"circle-wrap\"><div class=\"circle\">192</div>Deep-Clean the BC Site (Optional)</h2>\r\n    {% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secBCSiteDeepClean\", parity: \"na\", effort: \"med\", time: \"med\", docs: \"na\", tool: \"na\" %}\r\n    <p>This step is optional, but you may want to take the opportunity to clear out the BC site of old pages, templates, files, etc. Particularly if it’s an old site, there can be a lot of junk floating around. And this can just get in your way during migration and could cause unnecessary work. However, be very careful not to remove assets that may still be in use somewhere (hence the backup in the previous step).</p>\r\n    <p>Once you’ve cleaned up, repeat the FTP download step to collect a new, clean, set of files.</p>\r\n    \r\n    <h2 id=\"secTreeplCMSInstance\" class=\"circle-wrap\"><div class=\"circle\">193</div>Setup Treepl CMS Site Instance</h2>\r\n    {% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secTreeplCMSInstance\", parity: \"high\", effort: \"low\", time: \"low\", docs: \"high\", tool: \"na\" %}\r\n    <p>So you can start work with the Treepl CMS platform you'll need to set up a Trial Site. Log into your Treepl Portal (portal.treepl.co) and click the \"Create New Site\" button.</p>\r\n    <div class=\"tab-content faqsOpenCloseHolder\">\r\n    <div class=\"faqs-open-close \">\r\n        <a class=\"opener\" href=\"#\"><i class=\"fas fa-angle-right\"></i>Trial Site Documentation</a>\r\n        <div class=\"slide js-slide-hidden\">\r\n            {% component source: \"Documentation Post\", layout: \"Body Detail\", filterBy: \"id\", filterValue: \"2151\", limit: \"1\", type: \"module\" %}\r\n        </div>\r\n    </div>\r\n    </div>\r\n    \r\n    <h2 id=\"secHostedEmailTransfer\" class=\"circle-wrap\"><div class=\"circle\">194</div>Start BC Hosted Email Transfer Process (If Applicable)</h2>\r\n    {% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secHostedEmailTransfer\", parity: \"na\", effort: \"low\", time: \"med\", docs: \"high\", tool: \"low\" %}\r\n    <p>If your BC site has BC hosted emails, they can be transferred directly to Treepl CMS after following the below steps.</p>\r\n    <div class=\"tab-content faqsOpenCloseHolder\">\r\n    <div class=\"faqs-open-close \">\r\n        <a class=\"opener\" href=\"#\"><i class=\"fas fa-angle-right\"></i>Transfer of BC Hosted Email Accounts</a>\r\n        <div class=\"slide js-slide-hidden\">\r\n            {% component source: \"Documentation Post\", layout: \"Body Detail\", filterBy: \"id\", filterValue: \"2185\", limit: \"1\", type: \"module\" %}\r\n        </div>\r\n    </div>\r\n    </div>\r\n    \r\n    <h2 id=\"secUploadSiteAssets\" class=\"circle-wrap\"><div class=\"circle\">195</div>Upload Site Assets</h2>\r\n    {% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secUploadSiteAssets\", parity: \"high\", effort: \"low\", time: \"low\", docs: \"high\", tool: \"high\" %}\r\n    <p>Now we'll want to connect to our new Treepl CMS instance via FTP so we can upload some of our BC assets.</p>\r\n    <p>If working manually, we'll probably only want to upload assets relating to the front-end site, such as images, CSS, JS, documents, etc. We don't want to move over pages, templates or other layout files just yet.</p>\r\n    <p>Below are instructions for getting connected via FTP client.</p>\r\n    <div class=\"tab-content faqsOpenCloseHolder\">\r\n        <div class=\"faqs-open-close \">\r\n            <a class=\"opener\" href=\"#\"><i class=\"fas fa-angle-right\"></i>FTP Access Documentation</a>\r\n            <div class=\"slide js-slide-hidden\">\r\n                {% component source: \"Documentation Post\", layout: \"Body Detail\", filterBy: \"id\", filterValue: \"1936\", limit: \"1\", type: \"module\" %}\r\n            </div>\r\n        </div>\r\n    </div>\r\n    <p>Alternatively, you can automatically migrate all files in the BC file system directly to your Treepl CMS site via the <a href=\"https://www.bcappstore.com/apps/bc-to-treepl\" target=\"_blank\">BC to Treepl CMS  Migration App</a>.</p>\r\n    \r\n    <h2 id=\"secSetupPlaceholderTemplates\" class=\"circle-wrap\"><div class=\"circle\">196</div>Upload or Setup Placeholder Templates</h2>\r\n    {% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secSetupPlaceholderTemplates\", parity: \"high\", effort: \"low\", time: \"low\", docs: \"med\", tool: \"high\" %}\r\n    <p>You can manually upload your BC page templates into your Treepl CMS instance via FTP into the ‘Content / ContentTemplates’ directory.</p>\r\n    <p>Alternatively the <a href=\"https://www.bcappstore.com/apps/bc-to-treepl\" target=\"_blank\">BC to Treepl CMS  Migration App</a> can be used to automate this process.</p>\r\n    <p>If manually migrating templates, don’t worry about editing the template code/markup at this stage. We just want to get them loaded in Treepl CMS so we can reference it in the following steps. We’ll work on the template code later.</p>\r\n    \r\n    <p>If not using FTP, to manually create a content template, go to 'Content' &gt; 'Content Templates'.</p>\r\n    <p>Click ‘Add New Template’ button.</p>\r\n    <p>Just complete ‘Name’ and choose whether it's the default template. Leave the content as is for now.</p>\r\n    <p>Repeat this for all required templates.</p>\r\n    \r\n    <div class=\"tab-content faqsOpenCloseHolder\">\r\n    <div class=\"faqs-open-close \">\r\n        <a class=\"opener\" href=\"#\"><i class=\"fas fa-angle-right\"></i>Content Templates Documentation</a>\r\n        <div class=\"slide js-slide-hidden\">\r\n            {% component source: \"Documentation Post\", layout: \"Body Detail\", filterBy: \"id\", filterValue: \"2132\", limit: \"1\", type: \"module\" %}\r\n        </div>\r\n    </div>\r\n    </div>\r\n    \r\n    <h2 id=\"secSetupSitePages\" class=\"circle-wrap\"><div class=\"circle\">197</div>Upload or Setup Site Pages</h2>\r\n    {% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secSetupSitePages\", parity: \"high\", effort: \"low\", time: \"low\", docs: \"med\", tool: \"high\" %}\r\n    <p>Upload your BC pages into your Treepl CMS instance via FTP into the ‘Content / Pages’ directory.</p>\r\n    <p>Alternatively the <a href=\"https://www.bcappstore.com/apps/bc-to-treepl\" target=\"_blank\">BC to Treepl CMS  Migration App</a> can be used to automate this process.</p>\r\n    <p>If manually migration pages, there will still be several properties you will want to set for each page, such as a more relevant system name, assigning it to a template, SEO and meta details, etc. and we’ll likely need to review the page content for any system tags or Liquid\r\n        that needs replacing. However, all in good time and we’ll take those actions in a later step. For now we just want to get the bulk of the setup in place.</p>\r\n    \r\n    <div class=\"tab-content faqsOpenCloseHolder\">\r\n    <div class=\"faqs-open-close \">\r\n        <a class=\"opener\" href=\"#\"><i class=\"fas fa-angle-right\"></i>Pages Documentation</a>\r\n        <div class=\"slide js-slide-hidden\">\r\n            {% component source: \"Documentation Post\", layout: \"Body Detail\", filterBy: \"id\", filterValue: \"2131\", limit: \"1\", type: \"module\" %}\r\n        </div>\r\n    </div>\r\n    </div>\r\n    \r\n    <h2 id=\"secReplicateMenus\" class=\"circle-wrap\"><div class=\"circle\">198</div>Replicate Menus & Menu Layouts</h2>\r\n    {% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secReplicateMenus\", parity: \"high\", effort: \"med\", time: \"med\", docs: \"high\", tool: \"high\" %}\r\n    <p>You can easily recreate your BC menus into your Treepl CMS instance via the admin ‘Content' > 'Menus’, and copy over and adjust your menu layouts.</p>\r\n    <p>Alternatively the <a href=\"https://www.bcappstore.com/apps/bc-to-treepl\" target=\"_blank\">BC to Treepl CMS  Migration App</a> can be used to automate this process.</p>\r\n    <p>If manually recreating your menus you can follow the documentation and tips below:</p>\r\n    \r\n    <div class=\"tab-content faqsOpenCloseHolder\">\r\n        <div class=\"faqs-open-close \">\r\n            <a class=\"opener\" href=\"#\"><i class=\"fas fa-angle-right\"></i>Menus Documentation</a>\r\n            <div class=\"slide js-slide-hidden\">\r\n                {% component source: \"Documentation Post\", layout: \"Body Detail\", filterBy: \"id\", filterValue: \"1966\", limit: \"1\", type: \"module\" %}\r\n            </div>\r\n        </div>\r\n    </div>\r\n    \r\n    <h3>BC Menu V2</h3>\r\n    <p>If using BC’s menu v2 method for your menus, upload your menu layouts from ‘ModuleTemplates / Menu / &lt;menu-name&gt;’ into the corresponding Treepl CMS menu layouts in ‘Content / MenuLayouts / &lt;menu_alias_name&gt;’</p>\r\n    <p>The corresponding layouts from BC to Treepl CMS are:</p>\r\n    <ul>\r\n        <li>“container.html” --&gt; “menu.layout”</li>\r\n        <li>“group.html” --&gt; “item.layout”</li>\r\n        <li>“childitem.html” --&gt; “sub_items.layout”</li>\r\n    </ul>\r\n    <p>Now, we’re finally going to get our hands dirty with some code.</p>\r\n    <p>We’ll need to convert the BC tags into the Treepl CMS way of doing things. Let’s reference the Menu documentation above while doing this.</p>\r\n    <p>Starting with the “menu.layout” file you'll want to weave your HTML markup into the Treepl CMS Liquid so that the Liquid logic renders the same markup you are referencing from BC.</p>\r\n    <p>Next, do the same with the “item.layout” file, weaving in the BC “group.html” markup.</p>\r\n    <p>Finally, the “sub_items.layout” file,</p>\r\n    <p>Repeat for each menu group you are using.</p>\r\n    <p>If you have multiple menus using the same layout group in BC, simply copy the same code you just set up into each menu layout files (menus don’t share layouts in Treepl CMS).</p>\r\n    \r\n    <h3>BC Menu V1 (legacy module)</h3>\r\n    <p>If using BC’s original/legacy menu method, we’ll need to reference the rendered source code for your menu in the browser.</p>\r\n    <p>Load one of your BC site pages that features the menu. View the page source (right click, 'View Source') and identify the complete section of menu elements including the BC JS references.</p>\r\n    <p>Copy the menu elements into your “menu.layout” file so we can start working on converting that code.</p>\r\n    <p>Back in the source view, for the two JS references BC outputs, right click on the source links and save those JS files to your BC site files in an appropriate directory and than upload those to Treepl CMS in the corresponding directory.</p>\r\n    <p>Back in your menu layout, we'll relink the JS references to point to the new location.</p>\r\n    <p>Work through recoding the menu HTML into the Treepl CMS menu layouts to complete the process.</p>\r\n    \r\n    \r\n    <h2 id=\"secSetupSecureZones\" class=\"circle-wrap\"><div class=\"circle\">199</div>Setup Secure Zones</h2>\r\n    {% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secSetupSecureZones\", parity: \"high\", effort: \"low\", time: \"low\", docs: \"high\", tool: \"high\" %}\r\n    <p>Recreating all Secure Zones from BC into Treepl CMS is a fairly straight forward process.</p>\r\n    <p>Alternatively the <a href=\"https://www.bcappstore.com/apps/bc-to-treepl\" target=\"_blank\">BC to Treepl CMS  Migration App</a> can be used to automate this process.</p>\r\n    <p>If manually recreating your Secure Zones, you can follow the steps below:</p>\r\n    <p>Go to ‘Content’ &gt; ‘Secure Zones’</p>\r\n    <p>Click ‘Add Secure Zone’ button.</p>\r\n    <p>Complete ‘Name’ and ‘Landing Page’ then “Next” to save and move to ‘Step 2: Secure Content’.</p>\r\n    <p>Pages will be ready for you to secure, however most other content we havn't migrated over yet so you'll need to revisit this section to secure all relevant items.</p>\r\n    <p>Click “Next” to save and move to ‘Step 3: Members’</p>\r\n    <p>Here you can manage the members subscribed to the secure zone.</p>\r\n    <p>For further documentation expand the box below:</p>\r\n    <div class=\"tab-content faqsOpenCloseHolder\">\r\n        <div class=\"faqs-open-close \">\r\n            <a class=\"opener\" href=\"#\"><i class=\"fas fa-angle-right\"></i>Secure Zones Documentation</a>\r\n            <div class=\"slide js-slide-hidden\">\r\n                {% component source: \"Documentation Post\", layout: \"Body Detail\", filterBy: \"id\", filterValue: \"2199\", limit: \"1\", type: \"module\" %}\r\n            </div>\r\n        </div>\r\n    </div>\r\n    \r\n    <h2 id=\"secSetupMailingListsMC\" class=\"circle-wrap\"><div class=\"circle\">200</div>Setup Mailing Lists (MailChimp)</h2>\r\n    {% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secSetupMailingListsMC\", parity: \"low\", effort: \"med\", time: \"low\", docs: \"high\", tool: \"low\" %}\r\n    <p>Before you can set up Mailing Lists in Treepl CMS you need to connect a MailChimp account using their provided API key.</p>\r\n    <p>Below are documentation for setting up the API connection and further inofrmation about adding Mailing Lists.</p>\r\n    \r\n    <div class=\"tab-content faqsOpenCloseHolder\">\r\n        <div class=\"faqs-open-close \">\r\n            <a class=\"opener\" href=\"#\"><i class=\"fas fa-angle-right\"></i>API Provider Documentation</a>\r\n            <div class=\"slide js-slide-hidden\">\r\n                {% component source: \"Documentation Post\", layout: \"Body Detail\", filterBy: \"id\", filterValue: \"2311\", limit: \"1\", type: \"module\" %}\r\n            </div>\r\n        </div>\r\n        <div class=\"faqs-open-close \">\r\n            <a class=\"opener\" href=\"#\"><i class=\"fas fa-angle-right\"></i>Mailing Lists Documentation</a>\r\n            <div class=\"slide js-slide-hidden\">\r\n                {% component source: \"Documentation Post\", layout: \"Body Detail\", filterBy: \"id\", filterValue: \"2310\", limit: \"1\", type: \"module\" %}\r\n            </div>\r\n        </div>\r\n    </div>\r\n    \r\n    <p>Currently, Email Campaigns would generally be managed in MailChimp for full functionality of the MailChimp service. However, basic Email Campaigns can be add via Treepl CMS and pushed to MailChimp.<br>\r\n    <em>More documentation coming soon on this.</em></p>\r\n    \r\n    <h2 id=\"secSetupSiteSearch\" class=\"circle-wrap\"><div class=\"circle\">201</div>Setup Site Search</h2>\r\n    {% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secSetupSiteSearch\", parity: \"med\", effort: \"low\", time: \"low\", docs: \"med\", tool: \"low\" %}\r\n    <p>You don’t need to set up any Site Search module in Treepl CMS. This functionality is ready to use simply by inserting the search form and component tag.</p>\r\n    <p>So there is nothing you need to do in this step.</p>\r\n    <p>Later in the migration we’ll need to replace any BC site search forms so we’ll reference back to this documentation:</p>\r\n    <div class=\"tab-content faqsOpenCloseHolder\">\r\n        <div class=\"faqs-open-close \">\r\n            <a class=\"opener\" href=\"#\"><i class=\"fas fa-angle-right\"></i>Site Search Documentation - COMING SOON...</a>\r\n            <div class=\"slide js-slide-hidden\">\r\n                {% component source: \"Documentation Post\", layout: \"Body Detail\", filterBy: \"id\", filterValue: \"2356\", limit: \"1\", type: \"module\" %}\r\n            </div>\r\n        </div>\r\n        <div class=\"faqs-open-close \">\r\n            <a class=\"opener\" href=\"#\"><i class=\"fas fa-angle-right\"></i>Site Search Component Documentation</a>\r\n            <div class=\"slide js-slide-hidden\">\r\n                {% component source: \"Documentation Post\", layout: \"Body Detail\", filterBy: \"id\", filterValue: \"1959\", limit: \"1\", type: \"module\" %}\r\n            </div>\r\n        </div>\r\n    </div>\r\n    \r\n    <h2 id=\"secReplicateURLRedirects\" class=\"circle-wrap\"><div class=\"circle\">202</div>Replicate Existing URL Redirects</h2>\r\n    {% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secReplicateURLRedirects\", parity: \"high\", effort: \"med\", time: \"med\", docs: \"high\", tool: \"high\" %}\r\n    <p>While you can import URL Redirects into Treepl CMS in bulk, BC doesn't have an export function available from their admin, so you’ll need to enter URL redirects manually. Alternatively the <a href=\"https://www.bcappstore.com/apps/bc-to-treepl\" target=\"_blank\">BC to Treepl CMS  Migration App</a> can be used to automate this process.</p>\r\n    <p>See below for more information on URL Redirects.</p>\r\n    <div class=\"tab-content faqsOpenCloseHolder\">\r\n        <div class=\"faqs-open-close \">\r\n            <a class=\"opener\" href=\"#\"><i class=\"fas fa-angle-right\"></i>URL Redirects Documentation</a>\r\n            <div class=\"slide js-slide-hidden\">\r\n                {% component source: \"Documentation Post\", layout: \"Body Detail\", filterBy: \"id\", filterValue: \"2210\", limit: \"1\", type: \"module\" %}\r\n            </div>\r\n        </div>\r\n    </div>\r\n    \r\n    <h2 id=\"secSetupAdminUserRoles\" class=\"circle-wrap\"><div class=\"circle\">203</div>Setup Admin User Roles</h2>\r\n    {% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secSetupAdminUserRoles\", parity: \"med\", effort: \"low\", time: \"low\", docs: \"med\", tool: \"low\" %}\r\n    <p>While we won’t be adding Admin Users just yet, we’ll still get the User Roles set up and in place ready to assign users to in a later step.</p>\r\n    <p>To set up Admin User Roles, go to ‘Settings’ &gt; ‘Admin User Roles’</p>\r\n    <p>Click ‘Add Admin Role’ button.</p>\r\n    <p>Complete a 'Name' for your Role and configure the permissions, turning off checkboxes to block users access to those items.</p>\r\n    <p class=\"notice-note\">Many permission items have nested items for further fine-grain control.</p>\r\n    \r\n    \r\n    \r\n    <h2 id=\"secSetupNotificationWorkflow\" class=\"circle-wrap\"><div class=\"circle\">204</div>Setup Email Notification Workflow/s</h2>\r\n    {% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secSetupNotificationWorkflow\", parity: \"med\", effort: \"low\", time: \"low\", docs: \"high\", tool: \"high\" %}\r\n    <p>We’ll set up the default Notification Workflow email (and additional ones if needed - make sure you’re site plan supports multiple Workflow Emails if you need more than one Workflow)</p>\r\n    <p>You can optionally, upload your BC workflow email layouts into your Treepl CMS instance via FTP into the ‘Content / SystemEmails’ directory. However, if you only have a few email layouts it may be better to set these up via the Admin as you'll need to configure other settings as well.</p>\r\n    <p>Alternatively the <a href=\"https://www.bcappstore.com/apps/bc-to-treepl\" target=\"_blank\">BC to Treepl CMS  Migration App</a> can be used to automate this process.</p>\r\n    <p>See below for documentation on Workflows.</p>\r\n    <div class=\"tab-content faqsOpenCloseHolder\">\r\n        <div class=\"faqs-open-close \">\r\n            <a class=\"opener\" href=\"#\"><i class=\"fas fa-angle-right\"></i>Workflows Documentation</a>\r\n            <div class=\"slide js-slide-hidden\">\r\n                {% component source: \"Documentation Post\", layout: \"Body Detail\", filterBy: \"id\", filterValue: \"2208\", limit: \"1\", type: \"module\" %}\r\n            </div>\r\n        </div>\r\n    </div>\r\n    \r\n    \r\n    \r\n    \r\n    <h2 id=\"secReplicateWebForms\" class=\"circle-wrap\"><div class=\"circle\">205</div>Replicate Web Forms</h2>\r\n    {% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secReplicateWebForms\", parity: \"high\", effort: \"low\", time: \"med\", docs: \"high\", tool: \"med\" %}\r\n    <p>You can create new web forms in the Treepl admin for each of your BC Web Forms and copy over and adjust your form layout/code.</p>\r\n    <p>Alternatively the <a href=\"https://www.bcappstore.com/apps/bc-to-treepl\" target=\"_blank\">BC to Treepl CMS  Migration App</a> can be used to automate this process.</p>\r\n    <p>See below for documentation on Forms.</p>\r\n    <div class=\"tab-content faqsOpenCloseHolder\">\r\n        <div class=\"faqs-open-close \">\r\n            <a class=\"opener\" href=\"#\"><i class=\"fas fa-angle-right\"></i>Forms Documentation</a>\r\n            <div class=\"slide js-slide-hidden\">\r\n                {% component source: \"Documentation Post\", layout: \"Body Detail\", filterBy: \"id\", filterValue: \"2041\", limit: \"1\", type: \"module\" %}\r\n            </div>\r\n        </div>\r\n    </div>\r\n    \r\n    <h2 id=\"secReplicateSystemPages\" class=\"circle-wrap\"><div class=\"circle\">206</div>Replicate System Pages</h2>\r\n    {% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secReplicateSystemPages\", parity: \"high\", effort: \"low\", time: \"low\", docs: \"high\", tool: \"high\" %}\r\n    <p>This process can be automated with the <a href=\"https://www.bcappstore.com/apps/bc-to-treepl\" target=\"_blank\">BC to Treepl CMS  Migration App</a>.</p>\r\n    <p>Or, if manually migrating system pages, locate your relevant BC System Pages either in your downloaded BC site files, or in the “Develop” tab of the BC Admin under ‘Layouts / SystemMessages’, or directly in the BC Admin under ‘Site Manager’ &gt; ‘System Pages.</p>\r\n    <p>You’ll need to copy over the HTML from these into the corresponding system page in Treepl CMS found in the Admin under ‘Settings / System Pages’</p>\r\n    <p>While you can upload system pages into Treepl CMS, you'd first need to rename the relevant BC files to match those of Treepl CMS in order to override them. However, this is not recommended as you'll lose the default layouts and Liquid markup required for those layouts.</p>\r\n    <p>For more information refer to the below documentation article.</p>\r\n    <div class=\"tab-content faqsOpenCloseHolder\">\r\n        <div class=\"faqs-open-close \">\r\n            <a class=\"opener\" href=\"#\"><i class=\"fas fa-angle-right\"></i>System Pages Documentation</a>\r\n            <div class=\"slide js-slide-hidden\">\r\n                {% component source: \"Documentation Post\", layout: \"Body Detail\", filterBy: \"id\", filterValue: \"2207\", limit: \"1\", type: \"module\" %}\r\n            </div>\r\n        </div>\r\n    </div>\r\n    <p>Review your HTML for any BC specific tags or modules which will need to be converted to Treepl CMS equivalents. Either making note of them to come back to once other items are set up, or replace them now if you can. For example, you may have a\r\n        site search form on your 404 Not Found page, or a secure zone login form on your 401 or 403 pages.</p>\r\n    \r\n    <h2 id=\"secReplicateSystemEmails\" class=\"circle-wrap\"><div class=\"circle\">207</div>Replicate System Emails</h2>\r\n    {% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secReplicateSystemEmails\", parity: \"high\", effort: \"low\", time: \"low\", docs: \"high\", tool: \"high\" %}\r\n    <p>This process can be automated with the <a href=\"https://www.bcappstore.com/apps/bc-to-treepl\" target=\"_blank\">BC to Treepl CMS  Migration App</a>.</p>\r\n    <p>Or, if manually migrating system emails, locate your relevant BC System Emails, either in your downloaded BC site files, or in the “Develop” tab of the BC Admin under ‘Layouts / OutboundEmails’, or directly in the BC Admin under ‘Site Manager’ &gt; ‘System Emails’.</p>\r\n    <p>You’ll need to copy over the HTML from these into the corresponding system emails in Treepl CMS found in the Admin under ‘Email Notifications / System Emails’</p>\r\n        <p>While you can upload system emails into Treepl CMS, you'd first need to rename the relevant BC files to match those of Treepl CMS in order to override them. However, this is not recommended as you'll lose the default layouts and Liquid markup required for those layouts.</p>\r\n    <p>Review your HTML for any BC specific tags or modules which will need to be converted to Treepl CMS equivalents. Be sure to reference the default tags already in the email layouts in Treepl CMS to identify which ones can replace your BC tags.</p>\r\n    <p>For more information refer to the below documentation article.</p>\r\n    <div class=\"tab-content faqsOpenCloseHolder\">\r\n        <div class=\"faqs-open-close \">\r\n            <a class=\"opener\" href=\"#\"><i class=\"fas fa-angle-right\"></i>System Emails Documentation</a>\r\n            <div class=\"slide js-slide-hidden\">\r\n                {% component source: \"Documentation Post\", layout: \"Body Detail\", filterBy: \"id\", filterValue: \"2205\", limit: \"1\", type: \"module\" %}\r\n            </div>\r\n        </div>\r\n    </div>\r\n    \r\n    <h2 id=\"secReplicateCategories\" class=\"circle-wrap\"><div class=\"circle\">208</div>Replicate Categories</h2>\r\n    {% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secReplicateCategories\", parity: \"high\", effort: \"low\", time: \"low\", docs: \"high\", tool: \"high\" %}\r\n    <p>You can manually recreate any Categories set up in your BC site into Treepl CMS under ‘Settings / Categories’</p>\r\n    <p>Alternatively the <a href=\"https://www.bcappstore.com/apps/bc-to-treepl\" target=\"_blank\">BC to Treepl CMS  Migration App</a> can be used to automate this process.</p>\r\n    <p>For more information about Categories see the below documentation article.</p>\r\n    <div class=\"tab-content faqsOpenCloseHolder\">\r\n        <div class=\"faqs-open-close \">\r\n            <a class=\"opener\" href=\"#\"><i class=\"fas fa-angle-right\"></i>Categories Documentation</a>\r\n            <div class=\"slide js-slide-hidden\">\r\n                {% component source: \"Documentation Post\", layout: \"Body Detail\", filterBy: \"id\", filterValue: \"2308\", limit: \"1\", type: \"module\" %}\r\n            </div>\r\n        </div>\r\n    </div>\r\n    \r\n    <h2 id=\"secContactsAndCases\" class=\"circle-wrap\"><div class=\"circle\">209</div>Contacts & Cases</h2>\r\n    {% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secContactsAndCases\", parity: \"med\", effort: \"med\", time: \"med\", docs: \"low\", tool: \"high\" %}\r\n    <p>The <a href=\"https://www.bcappstore.com/apps/bc-to-treepl\" target=\"_blank\">BC to Treepl CMS  Migration App</a> can be used to migrate both contact records and cases.</p>\r\n    <p>Alternatively, you can import contact records directly into the Treepl CMS Contacts module. However, Cases can not yet be imported in this way and would need to be added manaully if not using the Migration App.</p>\r\n    <p>Also note that Treepl CMS Contact fields are limited, so it's still advisable to export BC CRM data for archive/backup purposes if advanced CRM fields exist and later import that data when the advanced CRM is available.</p>\r\n\r\n    \r\n    <h2 id=\"secReplicateContentHolders\" class=\"circle-wrap\"><div class=\"circle\">210</div>Replicate Content Holders</h2>\r\n    {% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secReplicateContentHolders\", parity: \"high\", effort: \"low\", time: \"low\", docs: \"med\", tool: \"high\" %}\r\n    <p>The <a href=\"https://www.bcappstore.com/apps/bc-to-treepl\" target=\"_blank\">BC to Treepl CMS  Migration App</a> can be used to automate this process.</p>\r\n    <p>Alternatively, if manually migrating, locate your relevant BC Content Holders, either in your downloaded BC site files, or in the “Develop” tab of the BC Admin under ‘System / ContentHolders, or directly in the BC Admin under ‘Site Manager’ &gt; ‘Content Holders’.</p>\r\n    <p>Upload your BC Content Holders into your Treepl CMS instance via FTP into the ‘Content / Snippets’ directory.</p>\r\n    <p>If not using FTP, create and copy over the HTML from these into the Treepl CMS admin area under ‘Content / Snippets’.</p>\r\n    <p>Review your HTML for any BC specific tags or modules which will need to be converted to Treepl CMS equivalents. Either making note of them to come back to once other items are set up, or replace them now if you can.</p>\r\n    \r\n    \r\n    <div class=\"tab-content faqsOpenCloseHolder\">\r\n        <div class=\"faqs-open-close \">\r\n            <a class=\"opener\" href=\"#\"><i class=\"fas fa-angle-right\"></i>Snippets Documentation</a>\r\n            <div class=\"slide js-slide-hidden\">\r\n                {% component source: \"Documentation Post\", layout: \"Body Detail\", filterBy: \"id\", filterValue: \"2133\", limit: \"1\", type: \"module\" %}\r\n            </div>\r\n        </div>\r\n        <div class=\"faqs-open-close \">\r\n            <a class=\"opener\" href=\"#\"><i class=\"fas fa-angle-right\"></i>Snippets Component Documentation</a>\r\n            <div class=\"slide js-slide-hidden\">\r\n                {% component source: \"Documentation Post\", layout: \"Body Detail\", filterBy: \"id\", filterValue: \"1950\", limit: \"1\", type: \"module\" %}\r\n            </div>\r\n        </div>\r\n    </div>\r\n    \r\n    \r\n    \r\n    \r\n    <h2 id=\"secBuiltInModules\" class=\"circle-wrap\"><div class=\"circle\">211</div>Built-In Modules:</h2>\r\n    <h3 id=\"secBlogs\">Blogs</h3>\r\n    {% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secBuiltInModulesBlogs\", parity: \"high\", effort: \"med\", time: \"med\", docs: \"med\", tool: \"high\" %}\r\n    <p>BC Blogs can be replicated in Treepl CMS either in the built-in Blog module or by using Custom Modules to configure your own blog structure.</p>\r\n    <p>The <a href=\"https://www.bcappstore.com/apps/bc-to-treepl\" target=\"_blank\">BC to Treepl CMS Migration App</a> can be used to automate this process, including Release Dates, Tags, Categories, Authors and SEO data.</p>\r\n    <p>If manually transferring your blogs, for a method of extracting the BC Blog data see this helpful Treepl CMS Forum post (includes code snippets and demo video):</p>\r\n    <a class=\"btn small\" href=\"https://forum.treepl.co/t/bc-blog-export-helper/61\" target=\"_blank\">BC Blog Export Helper</a>\r\n    <p>You can also upload your BC module layouts into your Treepl CMS instance via FTP into the ‘Content / ModuleLayouts / &lt;Blog&gt; &amp; &lt;BlogPost&gt;’ directories.</p>\r\n    <p>For more information about the Blog module see the documentation articles.</p>\r\n    <div class=\"tab-content faqsOpenCloseHolder\">\r\n        <div class=\"faqs-open-close \">\r\n            <a class=\"opener\" href=\"#\"><i class=\"fas fa-angle-right\"></i>Blog module Documentation</a>\r\n            <div class=\"slide js-slide-hidden\">\r\n                {% component source: \"Documentation Post\", layout: \"Body Detail\", filterBy: \"id\", filterValue: \"2135\", limit: \"1\", type: \"module\" %}\r\n            </div>\r\n        </div>\r\n        <div class=\"faqs-open-close \">\r\n            <a class=\"opener\" href=\"#\"><i class=\"fas fa-angle-right\"></i>Blog component Documentation</a>\r\n            <div class=\"slide js-slide-hidden\">\r\n                {% component source: \"Documentation Post\", layout: \"Body Detail\", filterBy: \"id\", filterValue: \"2141\", limit: \"1\", type: \"module\" %}\r\n            </div>\r\n        </div>\r\n        <div class=\"faqs-open-close \">\r\n            <a class=\"opener\" href=\"#\"><i class=\"fas fa-angle-right\"></i>Blog Post component Documentation</a>\r\n            <div class=\"slide js-slide-hidden\">\r\n                {% component source: \"Documentation Post\", layout: \"Body Detail\", filterBy: \"id\", filterValue: \"2142\", limit: \"1\", type: \"module\" %}\r\n            </div>\r\n        </div>\r\n    </div>\r\n    \r\n    <h3 id=\"secEvents\">Events</h3>\r\n    {% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secBuiltInModulesEvents\", parity: \"high\", effort: \"high\", time: \"med\", docs: \"low\", tool: \"high\" %}\r\n    <p>Treepl CMS Events are similar to BC Events and can be set up quite easily.</p>\r\n    <p>The <a href=\"https://www.bcappstore.com/apps/bc-to-treepl\" target=\"_blank\">BC to Treepl CMS  Migration App</a> can be used to automate Event migrations as well as transfer Event booking data from the CRM into Treepl CMS CRM.</p>\r\n    <p>For manual migrations, getting the data out of BC is a problem... although, you could likely use a similar approach to the Blog Export Helper above.</p>\r\n    <p>You can also upload your BC module layouts into your Treepl CMS instance via FTP into the ‘Content / ModuleLayouts / &lt;Event&gt; &amp; &lt;EventGroup&gt;’ directories.</p>\r\n    \r\n    <h3 id=\"secPhotoGalleries\">Photo Galleries</h3>\r\n    {% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secBuiltInModulesGalleries\", parity: \"med\", effort: \"med\", time: \"med\", docs: \"med\", tool: \"high\" %}\r\n    <p>Galleries in Treepl CMS work more like WebApps, so each image is an item within the parent module. This brings greater control in the long run, however migrating images and data to this new format can make migration a little more involved.</p>\r\n    <p>The <a href=\"https://www.bcappstore.com/apps/bc-to-treepl\" target=\"_blank\">BC to Treepl CMS Migration App</a> can be used to automate this process.</p>\r\n    <p>If manually transferring your galleries, see this very helpful method of extracting the BC data in a ready format for Treepl CMS posted in the Treepl CMS Forum:</p>\r\n    <a class=\"btn small\" href=\"https://forum.treepl.co/t/bc-photo-gallery-exporter/107\" target=\"_blank\">BC Photo Galleries Export Helper</a>\r\n    <p>For more information about the Galleries/Sliders module see the documentation articles.</p>\r\n    <div class=\"tab-content faqsOpenCloseHolder\">\r\n        <div class=\"faqs-open-close \">\r\n            <a class=\"opener\" href=\"#\"><i class=\"fas fa-angle-right\"></i>Gallery/Slider Group module</a>\r\n            <div class=\"slide js-slide-hidden\">\r\n                {% component source: \"Documentation Post\", layout: \"Body Detail\", filterBy: \"id\", filterValue: \"2140\", limit: \"1\", type: \"module\" %}\r\n            </div>\r\n        </div>\r\n    </div>\r\n    <div class=\"tab-content faqsOpenCloseHolder\">\r\n        <div class=\"faqs-open-close \">\r\n            <a class=\"opener\" href=\"#\"><i class=\"fas fa-angle-right\"></i>Gallery/Slider Item module</a>\r\n            <div class=\"slide js-slide-hidden\">\r\n                {% component source: \"Documentation Post\", layout: \"Body Detail\", filterBy: \"id\", filterValue: \"2143\", limit: \"1\", type: \"module\" %}\r\n            </div>\r\n        </div>\r\n    </div>\r\n    \r\n    <h3 id=\"secNews\">News</h3>\r\n    {% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secBuiltInModulesNews\", parity: \"med\", effort: \"low\", time: \"low\", docs: \"med\", tool: \"high\" %}\r\n    <p>There is no “News” module specifically in Treepl CMS, however using the Blog would likely be a more than suitable alternative (see migrating Blogs section above).</p>\r\n    <p>The <a href=\"https://www.bcappstore.com/apps/bc-to-treepl\" target=\"_blank\">BC to Treepl CMS Migration App</a> can be used to automate this process and a separate Blog module will be created for News items.</p>\r\n    <p>If migrating manually, since BC doesn't provide export functionality for extracting the BC News data, you could likely use a similar approach to the Blog Export Helper above.</p>\r\n    <p>You can also upload your BC module layouts into your Treepl CMS instance via FTP into the ‘Content / ModuleLayouts / &lt;Your Custom Module OR Blog&gt;’ directory.</p>\r\n    \r\n    \r\n    <h3 id=\"secMediaDownloads\">Media Downloads</h3>\r\n    {% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secBuiltInModulesMedia\", parity: \"low\", effort: \"med\", time: \"med\", docs: \"low\", tool: \"high\" %}\r\n    <p>There is no direct “Media Downloads” module in Treepl CMS, however setting up a Custom Module along with the ‘<a href=\"https://docs.treepl.co/documentation_group/extras/force-download-handler\" target=\"_blank\">Force Download Handler</a>’ option would see very similar results with greater flexibility.<br>\r\n    (see migrating WebApps section in a later step).</p>\r\n    <p>You can manually migrate Media Downloads or alternatively the <a href=\"https://www.bcappstore.com/apps/bc-to-treepl\" target=\"_blank\">BC to Treepl CMS  Migration App</a> can be used to automate this process.</p>\r\n    <p>For manual migrations, a very helpful method of extracting the BC data in a ready format for Treepl CMS, see this helpful Treepl CMS Forum post:</p>\r\n    <a class=\"btn small\" href=\"https://forum.treepl.co/t/bc-media-downloads-exporter/235\" target=\"_blank\">BC Media Downloads Export Helper</a>\r\n    \r\n    \r\n    <h3 id=\"secFAQs\">FAQs</h3>\r\n    {% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secBuiltInModulesFAQs\", parity: \"high\", effort: \"med\", time: \"med\", docs: \"low\", tool: \"high\" %}\r\n    <p>FAQs in Treepl CMS work more like WebApps, so each FAQ is an item within the parent module (Question Group). This brings greater control in the long run, however migrating FAQs and data to this new format may make migration a little more involved.</p>\r\n    <p>You can manually migrate FAQs or alternatively the <a href=\"https://www.bcappstore.com/apps/bc-to-treepl\" target=\"_blank\">BC to Treepl CMS  Migration App</a> can be used to automate this process.</p>\r\n    <p>For manual migrations, you could likely use a similar approach to the Blog Export Helper above.</p>\r\n    <p>You can also upload your BC module layouts into your Treepl CMS instance via FTP into the ‘Content / ModuleLayouts / &lt;FAQGropu&gt; &amp; &lt;FAQQuestion&gt;’ directories.</p>\r\n    <p>For more information about the FAQs module see the documentation articles.</p>\r\n    <div class=\"tab-content faqGroupOpenCloseHolder\">\r\n        <div class=\"faqs-open-close \">\r\n            <a class=\"opener\" href=\"#\"><i class=\"fas fa-angle-right\"></i>FAQ Group module</a>\r\n            <div class=\"slide js-slide-hidden\">\r\n                {% component source: \"Documentation Post\", layout: \"Body Detail\", filterBy: \"id\", filterValue: \"2144\", limit: \"1\", type: \"module\" %}\r\n            </div>\r\n        </div>\r\n    </div>\r\n    <div class=\"tab-content faqItemOpenCloseHolder\">\r\n        <div class=\"faqs-open-close \">\r\n            <a class=\"opener\" href=\"#\"><i class=\"fas fa-angle-right\"></i>FAQ Item module</a>\r\n            <div class=\"slide js-slide-hidden\">\r\n                {% component source: \"Documentation Post\", layout: \"Body Detail\", filterBy: \"id\", filterValue: \"2145\", limit: \"1\", type: \"module\" %}\r\n            </div>\r\n        </div>\r\n    </div>\r\n    \r\n    \r\n    <h3 id=\"secAdRotators\">Ad Rotators</h3>\r\n    {% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secBuiltInModulesRotators\", parity: \"med\", effort: \"med\", time: \"med\", docs: \"med\", tool: \"high\" %}\r\n    <p>The Banner module in Treepl CMS was built to replace the BC Ad Rotators and is set up much like the other modules in Treepl CMS and is therefore flexible for you to configure the layouts and behaviour as needed.</p>\r\n    <p>The <a href=\"https://www.bcappstore.com/apps/bc-to-treepl\" target=\"_blank\">BC to Treepl CMS Migration App</a> can be used to automate this process.</p>\r\n    <p>If migrating manually, since BC doesn't provide export functionality for extracting the BC Ad Rotator data, you could likely use a similar approach to the Blog Export Helper above.</p>\r\n    <p>For more information about the Banners module see the documentation articles.</p>\r\n    <div class=\"tab-content faqsOpenCloseHolder\">\r\n        <div class=\"faqs-open-close \">\r\n            <a class=\"opener\" href=\"#\"><i class=\"fas fa-angle-right\"></i>Banner Documentation</a>\r\n            <div class=\"slide js-slide-hidden\">\r\n                {% component source: \"Documentation Post\", layout: \"Body Detail\", filterBy: \"id\", filterValue: \"2136\", limit: \"1\", type: \"module\" %}\r\n            </div>\r\n        </div>\r\n    </div>\r\n    <div class=\"tab-content faqsOpenCloseHolder\">\r\n        <div class=\"faqs-open-close \">\r\n            <a class=\"opener\" href=\"#\"><i class=\"fas fa-angle-right\"></i>Banner Group module</a>\r\n            <div class=\"slide js-slide-hidden\">\r\n                {% component source: \"Documentation Post\", layout: \"Body Detail\", filterBy: \"id\", filterValue: \"2146\", limit: \"1\", type: \"module\" %}\r\n            </div>\r\n        </div>\r\n    </div>\r\n    <div class=\"tab-content faqsOpenCloseHolder\">\r\n        <div class=\"faqs-open-close \">\r\n            <a class=\"opener\" href=\"#\"><i class=\"fas fa-angle-right\"></i>Banner Item module</a>\r\n            <div class=\"slide js-slide-hidden\">\r\n                {% component source: \"Documentation Post\", layout: \"Body Detail\", filterBy: \"id\", filterValue: \"2147\", limit: \"1\", type: \"module\" %}\r\n            </div>\r\n        </div>\r\n    </div>\r\n    \r\n    <h2 id=\"secCustomModulesWebApps\" class=\"circle-wrap\"><div class=\"circle\">212</div>Custom Modules (WebApps)</h2>\r\n    {% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secCustomModulesWebApps\", parity: \"high\", effort: \"low\", time: \"med\", docs: \"high\", tool: \"high\" %}\r\n    <p>Generally, WebApps will transfer over quite easily as Custom Modules in Treepl CMS were built around an improved “WebApp” model. Therefore they have a very similar concept with how items are added and list and detail layouts are constructed. Combined with the fact that WebApp data can be easily exported from BC and imported into Treepl CMS, WebApps will likely be an easier job migrating then the other built-in BC modules.</p>\r\n    <p>If you have very complex WebApps there may be more time required to study the different methods with rendering data and converting complex Liquid markup, but the data migration should be relatively straight forward via export/import.</p>\r\n    <p>You can further simplify this process with the <a href=\"https://www.bcappstore.com/apps/bc-to-treepl\" target=\"_blank\">BC to Treepl CMS  Migration App</a>, which can migration not only the item data but the WebApp layouts, settings and set up all custom fields including Datasource fields (converting the reference for Treepl CMS use).</p>\r\n    <p>If manually migrating WebApps, you'll will first need to set up your Custom Module with all it's correspondign properties and settings in order to import those matching fields from BC.</p>\r\n    <p>You can also upload your BC module layouts into your Treepl CMS instance via FTP into the ‘Content / ModuleLayouts / &lt;Your Custom Module&gt;’ directory.</p>\r\n    <p>Refer to the Custom Module documentation for more details:</p>\r\n    <a class=\"btn small\" href=\"/documentation_group/content-modules/custom-modules-aka-webapps\" target=\"_blank\">Custom Modules (AKA WebApps)</a>\r\n    \r\n    \r\n    \r\n    <h2 id=\"secEcommerce\" class=\"circle-wrap\"><div class=\"circle\">213</div>eCommerce</h2>\r\n    <p>To get up and running with eCommerce in Treepl CMS, see the getting started article below.</p>\r\n    <div class=\"tab-content faqsOpenCloseHolder\">\r\n        <div class=\"faqs-open-close \">\r\n            <a class=\"opener\" href=\"#\"><i class=\"fas fa-angle-right\"></i>Getting Started with eCommerce</a>\r\n            <div class=\"slide js-slide-hidden\">\r\n                {% component source: \"Documentation Post\", layout: \"Body Detail\", filterBy: \"id\", filterValue: \"2522\", limit: \"1\", type: \"module\" %}\r\n            </div>\r\n        </div>\r\n    </div>\r\n    <h3 id=\"secPaymentGateways\">Payment Gateways</h3>\r\n    {% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secPaymentGateways\", parity: \"med\", effort: \"low\", time: \"low\", docs: \"low\", tool: \"na\" %}\r\n    <p>Since the Payment Gateway settings contain sensitive details you will need to manually set up your Payment Gateway in your new Treepl CMS site by going to ‘Settings’ > ‘Payment’.</p>\r\n\r\n<h3 id=\"secTaxCodes\">Tax Codes</h3>\r\n{% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secTaxCodes\", parity: \"high\", effort: \"low\", time: \"low\", docs: \"low\", tool: \"high\" %}\r\n<p>Tax Codes follow the same structure in Treepl CMS so you can simply enter all the same codes under ‘eCommerce’ > ‘Taxes’.</p>\r\n<p>If you are implementing all or many of the US State taxes you’ll be able to add these automatically when you click “Add New Tax” and select ‘United States’ as the assigned country.</p>\r\n<p>There is no manual export option from BC, nor is there an import option in Treepl CMS for this.</p>\r\n<p>You can also automatically migrate Tax Codes via the <a href=\"https://www.bcappstore.com/apps/bc-to-treepl\" target=\"_blank\">BC to Treepl CMS Migration App</a>.</p>\r\n<h3 id=\"secShippingOptions\">Shipping Options</h3>\r\n{% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secShippingOptions\", parity: \"med\", effort: \"low\", time: \"low\", docs: \"low\", tool: \"high\" %}\r\n<p>Shipping Codes follow a very similar format in Treepl CMS so you can simply enter all the same codes under ‘eCommerce’ > Shipping options.</p>\r\n<p>This is for user-defined shipping rules at least. Integration of shipping providers is still pending release.</p>\r\n<p>There is no manual export option from BC, nor is there an import option in Treepl CMS for this. </p>\r\n<p>You can also automatically migrate user-defined Shipping Options via the <a href=\"https://www.bcappstore.com/apps/bc-to-treepl\" target=\"_blank\">BC to Treepl CMS Migration App</a>.</p>\r\n<h3 id=\"secCatalogs\">Catalogs</h3>\r\n{% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secCatalogs\", parity: \"high\", effort: \"low\", time: \"low\", docs: \"low\", tool: \"high\" %}\r\n<p>You can import your Catalogues into Treepl CMS if you have a spreadsheet available, although there is no export feature in BC.</p>\r\n<p>Creating Catalogs manually can be done much the same way as adding any other module item in Treepl CMS via ‘eCommerce’ > ‘Catalogs’ and you will have similar options available.</p>\r\n<p>Options from BC that are not currently available are; Price visibility, XML feed, and Browse Panel settings.</p> \r\n<p>You can also automatically migrate Catalogs via the <a href=\"https://www.bcappstore.com/apps/bc-to-treepl\" target=\"_blank\">BC to Treepl CMS Migration App</a>.</p>\r\n<h3 id=\"secProducts\">Products</h3>\r\n{% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secProducts\", parity: \"high\", effort: \"low\", time: \"low\", docs: \"low\", tool: \"high\" %}\r\n<p>You can import your Products into Treepl CMS with an export from BC, or if you have a spreadsheet available (after formatting to match Treepl CMS import file).</p>\r\n<p>Creating Products manually can be done much the same way as adding any other module item in Treepl CMS via ‘eCommerce’ > ‘Products’ and you will have similar options available.</p>\r\n<p>Additionally, you can add a variety of custom fields to customise your products module (for example, adding additional image fields would be how you’d add the “Poplets” feature from BC).</p>\r\n<p>Options from BC that are not currently available are; Downloadable Product, Capture Details, Commission Payable.</p>\r\n<p>You can also automatically migrate Products via the <a href=\"https://www.bcappstore.com/apps/bc-to-treepl\" target=\"_blank\">BC to Treepl CMS Migration App</a>.</p>\r\n<h3 id=\"secDiscountCodes\">Discount Codes</h3>\r\n{% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secDiscountCodes\", parity: \"high\", effort: \"low\", time: \"low\", docs: \"low\", tool: \"high\" %}\r\n<p>Discount Codes follow the same structure in Treepl CMS so you can simply enter all the same codes under ‘eCommerce’ > ‘Discount codes’.</p>\r\n<p>There is no manual export option from BC, nor is there an import option in Treepl CMS for this.</p>\r\n<p>You can also automatically migrate Discount Codes via the <a href=\"https://www.bcappstore.com/apps/bc-to-treepl\" target=\"_blank\">BC to Treepl CMS Migration App</a>.</p>\r\n<h3 id=\"secGiftVouchers\">Gift Vouchers</h3>\r\n{% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secGiftVouchers\", parity: \"high\", effort: \"low\", time: \"low\", docs: \"low\", tool: \"high\" %}\r\n<p>Gift Vouchers follow the same structure in Treepl CMS so you can simply enter all the same vouchers under ‘eCommerce’ > ‘Gift vouchers’.</p>\r\n<p>There is no manual export option from BC, nor is there an import option in Treepl CMS for this.</p>\r\n<p>You can also automatically migrate Gift Vouchers via the <a href=\"https://www.bcappstore.com/apps/bc-to-treepl\" target=\"_blank\">BC to Treepl CMS Migration App</a>.</p>\r\n\r\n\r\n<p class=\"notice-note\">eCommerce features not yet available include; cart lifetime setting, XML product feed, digital/downloadable products, integrated shipping providers.</p>\r\n    \r\n    \r\n    \r\n    \r\n    \r\n    \r\n    \r\n    \r\n    \r\n    \r\n    \r\n    \r\n    \r\n    \r\n    <h2 id=\"secRevisitSiteTemplates\" class=\"circle-wrap\"><div class=\"circle\">214</div>Revisit Site Templates</h2>\r\n    {% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secRevisitSiteTemplates\", parity: \"high\", effort: \"med\", time: \"med\", docs: \"med\", tool: \"high\" %}\r\n    <p>Now let's review the Site Templates markup and replace BC modules and Liquid with Treepl CMS methods.</p>\r\n    <p>The <a href=\"https://www.bcappstore.com/apps/bc-to-treepl\" target=\"_blank\">BC to Treepl CMS  Migration App</a> can be used to automate much of this process. However, it's recommended to check through the markup for any exceptions.</p>\r\n    <p>Some common examples are:</p>\r\n    <ul>\r\n        <li>Dynamic HEAD elements</li>\r\n        <li>pagecontent tag</li>\r\n        <li>menus</li>\r\n        <li>content holder</li>\r\n        <li>includes</li>\r\n        <li>modules: BC's module syntax (old and new) converted to Treepl CMS 'Component' syntax</li>\r\n    </ul>\r\n    <p>Review the relevant Component types and all their properties and syntax:</p>\r\n    <a class=\"btn small\" href=\"/documentation_group/component-types/\" target=\"_blank\">All Component Types</a>\r\n    \r\n    \r\n    <h2 id=\"secRevisitSitePages\" class=\"circle-wrap\"><div class=\"circle\">215</div>Revisit Site Pages</h2>\r\n    {% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secRevisitSitePages\", parity: \"high\", effort: \"med\", time: \"med\", docs: \"med\", tool: \"high\" %}\r\n    <p>Like above, let's review the Site Pages markup and replace BC modules and Liquid with Treepl CMS methods.</p>\r\n    <p>Usign the <a href=\"https://www.bcappstore.com/apps/bc-to-treepl\" target=\"_blank\">BC to Treepl CMS  Migration App</a> can automate many BC to Treepl CMS Liquid and tag conversions.</p>\r\n    <p>For manual migrations, some common examples are:</p>\r\n    <ul>\r\n        <li>menus</li>\r\n        <li>content holder</li>\r\n        <li>includes</li>\r\n        <li>modules: BC's module syntax (old and new) converted to Treepl CMS 'Component' syntax</li>\r\n    </ul>\r\n    <p>Review the relevant Component types and all their properties and syntax:</p>\r\n    <a class=\"btn small\" href=\"/documentation_group/component-types/\" target=\"_blank\">All Component Types</a>\r\n    \r\n    \r\n    <h2 id=\"secSetupSEOandSitemap\" class=\"circle-wrap\"><div class=\"circle\">216</div>Setup SEO & Sitemap</h2>\r\n    {% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secSetupSEOandSitemap\", parity: \"med\", effort: \"low\", time: \"low\", docs: \"med\", tool: \"low\" %}\r\n    <p>Add primary domain, language, country, and configure sitemap automation (and possibly enable all items for search engine visibility).</p>\r\n    <p>For more information about SEO settings see the documentation article.</p>\r\n    <div class=\"tab-content faqsOpenCloseHolder\">\r\n        <div class=\"faqs-open-close \">\r\n            <a class=\"opener\" href=\"#\"><i class=\"fas fa-angle-right\"></i>SEO Documentation</a>\r\n            <div class=\"slide js-slide-hidden\">\r\n                {% component source: \"Documentation Post\", layout: \"Body Detail\", filterBy: \"id\", filterValue: \"2212\", limit: \"1\", type: \"module\" %}\r\n            </div>\r\n        </div>\r\n    </div>\r\n    <p>On initial setup, it's recommended to manually generate the sitemap to review the items listed - ensuring all your relevant site items are configured for search engine visibility.</p>\r\n    \r\n    \r\n    <h2 id=\"secChecksAndTroubleshooting\" class=\"circle-wrap\"><div class=\"circle\">217</div>Checks and Troubleshooting</h2>\r\n    {% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secChecksAndTroubleshooting\", parity: \"na\", effort: \"med\", time: \"med\", docs: \"med\", tool: \"na\" %}\r\n\r\n    <p>Run back through the steps above as a quick checklist to review all your site items.</p>\r\n    <p>Comparing your new Treepl CMS site front-end alongside the BC site to check for consistancy.</p>\r\n    <p>Note any URL differences due to page/directory naming or restructuring and ensure URL Redirect are setup for these.</p>\r\n</div>\r\n",
  "ItemTags": [
  "Migrations"
],
  "Author_Name": "",
  "Author_Url": "",
  "Author": "",
  "SEOTitle": "",
  "MetaTitle": "",
  "MetaDescription": "",
  "ShowPageForSearchEngine": true,
  "CanonicalLink": "",
  "EnableAMP": false,
  "AMPContent": "",
  "CodeEditor": true,
  "ExternalId": 0,
  "SocialMetaTags": "",
  "OpenGraphProperties": "",
  "DisableForSiteSearch": false,
  "SeoPriority": "",
  "CreatedByMemberId": 0,
  "ItemCategories": "",
  "ItemCategoryIdList": "",
  "SKUCode": "",
  "SiteSearchKeywords": "",
  "Active": true,
  "IgnoreUpdates": false,
  "UpdateNotes": "",
  "UpdatesLog": "<ul>\n    <li>Added note about new BC .zip Archive functionality</li>\n    <li>Updated BC to Treepl CMS Migration App compatibility - as per v9.0.4 (Catalogs, Discount codes, Gift vouchers, Products, Shipping options, Tax codes)</li>\n</ul>",
  "ExternalResources": "",
  "AdditionalRelatedArticle_Name": "",
  "AdditionalRelatedArticle_Url": "",
  "AdditionalRelatedArticle": "",
  "AdditionalRelatedArticle2_Name": "",
  "AdditionalRelatedArticle2_Url": "",
  "AdditionalRelatedArticle2": "",
  "Authors": "2418",
  "Module_ID": 1870,
  "Module_Alias": "DocumentationPost",
  "ParentName": "BC Migration Guides",
  "ParentUrl": "/bc-migration-guides",
  "TemplateName": "Docs Template",
  "IsHome": false
}
}
}

Accessing the Data

This data is accessible in two main ways:

1. Using Liquid in the specified Layout via the this object.

{{this['name']}}

2. Directly on the Page or Template via a Liquid Collection if collectionVariable was added to the Component tag.

An example using collectionVariable with value "allQuestions" to list all "FAQ Questions" across the site:

Here we suppress any Layout from rendering by setting layout: "" as an empty attribute.

{% component type: "module", source: "FAQ Question", layout: "", collectionVariable: "allQuestions" %}

Looping through the collection to render all the item names in a list, giving us:

  • First Custom Question
  • HTML Question One
  • HTML Question Two

The code:

<ul>
    {% for i in allQuestions.items %}
        <li>{{i['name']}}</li>
    {% endfor %}
</ul>

Accessing a specific item within the collection. In this case the second item (zero based index), which in our example would render the value HTML Question One

{{allQuestions.items[1]['name']}}

List FAQ Questions from a specific Gallery

If you have more than one FAQ Group on your site the above examples will list FAQ Questions from all FAQ Groups as one single collection. However, you may also want to list all FAQ Questions from only the FAQ Group they belong to (their "parent" Gallery).

To do this we add the filterBy and filterValue attributes to the Component tag using the Galleryies ID to get the relevant items.

You can use the Component Manager to correctly configure the Component tag and ID value. Alternatively, to obtain the FAQ Groups ID manually from the admin, go to a FAQ Groups list view (where you can see all of the FAQ Questions) and note the number in the browser address bar shown after the parentID= parameter.

Counter

Along with the data output above, there is also a special liquid tag available {{counter}} which increments for each item. This tag is only available within Layouts when object: "item" is used in the Component tag.

Ad Rotators

Paritymed Effortmed Timemed Docsmed Migration Toolactive

The Banner module in Treepl CMS was built to replace the BC Ad Rotators and is set up much like the other modules in Treepl CMS and is therefore flexible for you to configure the layouts and behaviour as needed.

The BC to Treepl CMS Migration App can be used to automate this process.

If migrating manually, since BC doesn't provide export functionality for extracting the BC Ad Rotator data, you could likely use a similar approach to the Blog Export Helper above.

For more information about the Banners module see the documentation articles.

Banner Documentation

View full article

Banners give you an easy way to display random banner ads, perhaps a random quote or really any other content required.

Quick Start

Banner Group module

View full article

This module component fetches data relating to Banner Groups.

{% component type: "module", source: "Banner Group", layout: "List" %}

Parameters and Options

Parameter Values Required Description
type module (default)
module_of_member

This is the name of the entity that needs to be used for the component retrieving function.

module is the standard retrieving function to retrieve all items.

module_of_member retrieves only those items "Added by" the currently logged in user (identified by the CreatedByMemberId property in the module items Liquid data).

The "Added by" System Property will only be available where the modules settings have "Allow Add New Items" turned on under the "Site User Permissions".

source Banner Group (default) The entity/alias name or ID that the data is to be sourced from.
layout List (default)
<Your Layout name>

The layout name you want to use for rendering the component. The layout name is referenced from the available Layouts of the source specified.

While this parameter is required to render your Layout markup, if the parameter is blank, has an incorrectly referenced Layout, or is removed altogether then the component will still output the modules item data to a Liquid collection which can be accessed via the collectionVariable parameter.

filterBy id
parentid
name
weighting
url
urlslug
releasedate
expirydate
LastUpdatedDate
Author
ItemCategories
ItemTags
<CustomPropertyName>
...and any other top level properties available for the module

The name of the property to filter by. If empty or not present, no filtering will be used.

Remove spaces from custom property names here.

filterValue <your value>
Your specific value to filter by, eg: name, id, number, date, etc.
Liquid variables can be used here also. If present but no value set, no items will be returned.
sortBy id
parentid
name
weighting
url
urlslug
releasedate
expirydate
LastUpdatedDate
Author
ItemCategories
ItemTags
<CustomPropertyName>
...and any other top level properties available for the module

The name of the property to sort by. If empty or not present, alpha/numeric sorting will be used.

Remove spaces from custom property names here.

sortOrder ASC (default)
DESC

ASC sorts the items in ascending order while DESC sorts in descending order (based on alpha/numeric or date sorting).
If empty or not present, alpha/numeric sorting will be used.
random false (default)
true

Displays the available items in a random order.

If used in conjunction with sortBy, that sorting criteria will be applied to the randomly retrieved results. So, if retrieving all, or most, of the items they will not appear to be random since they will then be sorted back into a logical order. To overcome this, set the sortBy parameter to 'enabled' (or another unused property) as this will not provide any viable sorting criteria* and the items will not be sorted from their initial random order.
* Unless there are weighted items, which will always override the random option.

limit 10 (default)
<number>

The maximum number of items returned. If displayPagination is enabled this determines the maximum number of items per page.
enablePagination true (default)
false

Enables/disables pagination for the component.

This is useful for avoiding pagniation affects for a specific component when multiple components of the same module are output on the same page and do use pagination.

displayPagination false (default)
true

Displays pagination if there are more items available than the limit set.
emptyMessage <Your custom message>
Custom content that is rendered if no items are returned by the Component. The default is no content.
Liquid variables are supported here, although Liquid logic tags and HTML are not.

If using Liquid variables with filters added, be sure to change any double quotes to single quotes. For eg:
emptyMessage: “{{ myVariable | prepend: 'Error: ' }}”

To use HTML in your empty message, first capture it using a Liquid capture, then insert the capture variable into the emptyMessage parameter.

object item (default)
collection

Determines the method for Liquid rendering.
item returns each item iteratively, one after another, for output (generally, output to a container element with no need for looping through the data).
collection returns all items as one collection for output (your container element and looping logic would be handled in the Components Layout).
collectionVariable <yourLiquidVariableName>
Assigns the data to a Liquid collection enabling further access to the data on the Page or Template using Liquid.

Your collectionVariable value must only contain English letters, numbers or underscores. Spaces or special characters are not supported.

isSearchResult false (default)
true

Allows search parameters in the URL to override the components output. Therefore, this parameter can be used to output module specific search results from a submitted search form.

Likewise, Tag, Category, and Archive components can be used in conjunction with this parameter for filtering the module's output.

URL search parameters will override any corresponding parameters in the component. If no search parameters are present in the URL, isSearchResult will be ignored.

Any value other than true, (including an empty value), will disable the search functionality and the component will output its regular data.

searchScope eg:
{'prop_ParentId':'1234', 'prop_ReleaseDate_Min':'2018-07-01', 'prop_ReleaseDate_Max':'2018-07-31', 'prop_KeyWords':'Your Keywords', 'prop_ItemTags':['tag1','tag2'], 'page':'2'}

Allows a search on the module without search parameters needed in the URL. Instead, search parameters are added to the value of this parameter. Therefore, this parameter can be used to output module specific search results from hard-coded (or Liquid) values without the use of a search form.

Added search parameters will override any corresponding parameters otherwise configured on the component. If no search parameters are present, searchScope will be ignored.

This value supports Liquid and can therefore be constructed with Liquid data/variables.

<customParameter> <your custom value>
You can add your own additional parameters (name/value pairs) to the Component tag. These will be passed to the Components Layout (and the collectionVariable if used) for use via Liquid.

Your <customParameter> name must only contain English letters, numbers or underscores. Spaces or special characters are not supported.

You can use HTML as the value here, just be sure to change any double quotes in your HTML to single quotes.

Liquid Output

The below example has 2 sample items (Banner Groups), but is otherwise the default structure you will get from this Component.

{
  "Pagination": {
  "CurrentPage": 1,
  "ItemsPerPage": 10,
  "NumberOfPages": 1,
  "TotalItemsCount": 2
},
  "Items": [
  {
    "Id": 2293,
    "Url": "/_banner_group/demo-custom-banner",
    "ParentId": 1563,
    "LastUpdatedDate": "2018-12-15T22:28:42",
    "Name": "DEMO Custom Banner",
    "UrlSlug": "demo-custom-banner",
    "Enabled": true,
    "ReleaseDate": "2018-12-14T18:00:00",
    "ExpiryDate": "2099-12-10T18:00:00",
    "Weighting": 0,
    "Description": "<p>Custom Banner Description...</p>",
    "ItemTags": null,
    "Author_Name": null,
    "Author_Url": null,
    "Author": "",
    "SEOTitle": "",
    "MetaTitle": "",
    "MetaDescription": "",
    "ShowPageForSearchEngine": false,
    "CanonicalLink": "",
    "EnableAMP": false,
    "AMPContent": "",
    "CodeEditor": false,
    "ExternalId": 0,
    "SocialMetaTags": "",
    "OpenGraphProperties": "",
    "DisableForSiteSearch": false,
    "SeoPriority": "",
    "CreatedByMemberId": 0,
    "ItemCategories": null,
    "ItemCategoryIdList": null,
    "SKUCode": "",
    "SiteSearchKeywords": "",
    "Module_ID": 1546,
    "Module_Alias": "BannerGroup"
  },
  {
    "Id": 2277,
    "Url": "/_banner_group/demo-standard-banner",
    "ParentId": 1563,
    "LastUpdatedDate": "2018-12-15T22:30:11",
    "Name": "DEMO Standard Banner",
    "UrlSlug": "demo-standard-banner",
    "Enabled": true,
    "ReleaseDate": "2018-11-25T18:00:00",
    "ExpiryDate": "2099-12-10T18:00:00",
    "Weighting": 0,
    "Description": "<p>Description text...</p>",
    "ItemTags": null,
    "Author_Name": null,
    "Author_Url": null,
    "Author": "",
    "SEOTitle": "",
    "MetaTitle": "",
    "MetaDescription": "",
    "ShowPageForSearchEngine": false,
    "CanonicalLink": "",
    "EnableAMP": false,
    "AMPContent": "",
    "CodeEditor": false,
    "ExternalId": 0,
    "SocialMetaTags": "",
    "OpenGraphProperties": "",
    "DisableForSiteSearch": false,
    "SeoPriority": "",
    "CreatedByMemberId": 0,
    "ItemCategories": null,
    "ItemCategoryIdList": null,
    "SKUCode": "",
    "SiteSearchKeywords": "",
    "Module_ID": 1546,
    "Module_Alias": "BannerGroup"
  }
],
  "Params": {},
  "Parent": {
  "Id": 2146,
  "Url": "/component-types/module-banner-group",
  "ParentId": 2127,
  "LastUpdatedDate": "2020-05-20T00:48:56",
  "Name": "module (Banner Group)",
  "UrlSlug": "module-banner-group",
  "Enabled": true,
  "ReleaseDate": "2018-09-05T00:00:00",
  "ExpiryDate": "2099-12-09T00:00:00",
  "Weighting": 960,
  "Description": "<p>This module component fetches data relating to Banner Groups.</p>\r\n\r\n{% component type: \"snippet\", alias: \"code_block_processor\", data: \"{{data}}\", lang: \"liquid\" %}\r\n\r\n\r\n{% component type: \"snippet\", alias: \"section_parameters\" %}\r\n\r\n{% component type: \"snippet\", alias: \"param_table_head\" %}\r\n    {% component type: \"snippet\", alias: \"param_type\", required: \"true\", values: \"module <em>(default)</em>,module_of_member\" %}\r\n    {% component type: \"snippet\", alias: \"param_source\", required: \"true\", values: \"Banner Group <em>(default)</em>\" %}\r\n    {% component type: \"snippet\", alias: \"param_layout\", required: \"true\", values: \"List <em>(default)</em><br>&lt;Your Layout name&gt;\" %}\r\n    {% component type: \"snippet\", alias: \"param_filterby\" %}\r\n    {% component type: \"snippet\", alias: \"param_filtervalue\" %}\r\n    {% component type: \"snippet\", alias: \"param_sortby\" %}\r\n    {% component type: \"snippet\", alias: \"param_sortorder\" %}\r\n    {% component type: \"snippet\", alias: \"param_random\" %}\r\n    {% component type: \"snippet\", alias: \"param_limit\" %}\r\n    {% component type: \"snippet\", alias: \"param_enablepagination\" %}\r\n    {% component type: \"snippet\", alias: \"param_displaypagination\" %}\r\n    {% component type: \"snippet\", alias: \"param_emptymessage\" %}\r\n    {% component type: \"snippet\", alias: \"param_object\" %}\r\n    {% component type: \"snippet\", alias: \"param_collectionvariable\" %}\r\n    {% component type: \"snippet\", alias: \"param_issearchresult\" %}\r\n    {% component type: \"snippet\", alias: \"param_searchscope\" %}\r\n    {% component type: \"snippet\", alias: \"param_customparameter\" %}\r\n{% component type: \"snippet\", alias: \"param_table_foot\" %}\r\n\r\n\r\n{% component type: \"snippet\", alias: \"section_output\" %}\r\n\r\n{% component source: \"Banner Group\", layout: "", type: \"module\", collectionVariable: \"allBanners\" %}\r\n<p>The below example has 2 sample <code>items</code> (Banner Groups), but is otherwise the default structure you will get from this Component.</p>\r\n{% component type: \"snippet\", alias: \"code_block_processor\", data: \"{{allBanners}}\", lang: \"json\" %}\r\n\r\n{% component type: \"snippet\", alias: \"section_accessing_data\" %}\r\n\r\n<p>This data is accessible in two main ways:</p>\r\n\r\n<p>1. Using Liquid in the specified Layout via the <code>this</code> object.</p>\r\n\r\n{% component type: \"snippet\", alias: \"code_block_processor\", data: \"{{data}}\", lang: \"liquid\" %}\r\n\r\n<p>2. Directly on the Page or Template via a Liquid Collection if <code>collectionVariable</code> was added to the Component tag.</p>\r\n\r\n<p>An example using <code>collectionVariable</code> with value \"allBanners\" to list all \"Banner Groups\" across the site:</p>\r\n<p class=\"notice-note\">Here we suppress any Layout from rendering by setting <code>layout: \"\"</code> as an empty attribute.</p>\r\n\r\n{% component type: \"snippet\", alias: \"code_block_processor\", data: \"{{data}}\", lang: \"liquid\" %}\r\n\r\n<p><em>Looping through the collection to render all the item names in a list, giving us:</em></p>\r\n\r\n<ul>\r\n    \r\n        <li>DEMO Custom Banner</li>\r\n    \r\n        <li>DEMO Standard Banner</li>\r\n    \r\n</ul>\r\n<br>\r\n<p><em>The code:</em></p>\r\n\r\n{% component type: \"snippet\", alias: \"code_block_processor\", data: \"{{data}}\", lang: \"liquid\" %}\r\n\r\n<p><em>Accessing a specific item within the collection. In this case the second item (zero based index), which in our example would render the value <code>DEMO Standard Banner</code></em></p>\r\n\r\n{% component type: \"snippet\", alias: \"code_block_processor\", data: \"{{data}}\", lang: \"liquid\" %}\r\n\r\n{% component type: \"snippet\", alias: \"section_counter\" %}\r\n",
  "ItemTags": [
  "Banners"
],
  "Author_Name": "",
  "Author_Url": "",
  "Author": "",
  "SEOTitle": "",
  "MetaTitle": "",
  "MetaDescription": "",
  "ShowPageForSearchEngine": true,
  "CanonicalLink": "",
  "EnableAMP": false,
  "AMPContent": "",
  "CodeEditor": true,
  "ExternalId": 0,
  "SocialMetaTags": "",
  "OpenGraphProperties": "",
  "DisableForSiteSearch": false,
  "SeoPriority": "",
  "CreatedByMemberId": 0,
  "ItemCategories": "",
  "ItemCategoryIdList": "",
  "SKUCode": "",
  "SiteSearchKeywords": "",
  "Active": true,
  "IgnoreUpdates": false,
  "UpdateNotes": "'module_of_member' parameter details added.",
  "UpdatesLog": "",
  "ExternalResources": "",
  "AdditionalRelatedArticle_Name": "",
  "AdditionalRelatedArticle_Url": "",
  "AdditionalRelatedArticle": "",
  "AdditionalRelatedArticle2_Name": "",
  "AdditionalRelatedArticle2_Url": "",
  "AdditionalRelatedArticle2": "",
  "Authors": "2418",
  "Module_ID": 1870,
  "Module_Alias": "DocumentationPost",
  "Pagination": {
  "CurrentPage": 1,
  "ItemsPerPage": 1,
  "NumberOfPages": 1,
  "TotalItemsCount": 1
},
  "Params": {},
  "Parent": {
  "Id": 2359,
  "Url": "/bc-migration-guides/ultimate-migration-guide-step-by-step",
  "ParentId": 2355,
  "LastUpdatedDate": "2020-09-09T19:27:22",
  "Name": "Ultimate Migration Guide (Step by Step)",
  "UrlSlug": "ultimate-migration-guide-step-by-step",
  "Enabled": true,
  "ReleaseDate": "2019-02-17T00:00:00",
  "ExpiryDate": "2099-11-30T00:00:00",
  "Weighting": 800,
  "Description": "<div class=\"migration-guide\">\r\n    <div style=\"display:none;\">218</div>\r\n    <p>So you’ve decided to move your site across to Treepl CMS. Good choice.</p>\r\n    <p>And you’ve decided to do it yourself. Good for you! You’re probably going to be doing this quite a few times so let’s make it fun…</p>\r\n    <p>Set aside a good chunk of uninterrupted time, crank up your favourite tunes and grab a strong drink. It’s migration time.</p>\r\n    <p class=\"notice-note\">The below sections are ordered to try and minimise the amount of back and forth when creating the various components of a site.If a section doesn’t apply to your site, feel free to skip right over it.</p>\r\n    <p class=\"notice-note\">Migration tools are in development that will progressively make the below steps easier. These sections will be updated as those tools are released.</p>\r\n    <p class=\"notice-tip\">The BC to Treepl CMS Migration App now converts BC Liquid tags, ie: <code>{module_…}</code> and <code>{tag_…}</code> to Treepl CMS Liquid tags! For more info on this, view the Forum discussion <a href=\"https://forum.treepl.co/t/attention-to-bc-to-treepl-app-users/497\" target=\"_blank\">here</a>.</p>\r\n    <h2 id=\"secBCSiteFTPDownload\" class=\"circle-wrap\"><div class=\"circle\">219</div>Download the BC Site via FTP</h2>\r\n    {% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secBCSiteFTPDownload\", parity: \"high\", effort: \"low\", time: \"low\", docs: \"high\", tool: \"high\" %}\r\n    \r\n    <p>Download all files available via FTP from your BC site, if for no other reason than to just have a backup. However, these files can be referenced in the following steps as well.</p>\r\n    <p>You can also automatically migrate all files in the BC file system directly to your Treepl CMS site via the <a href=\"https://www.bcappstore.com/apps/bc-to-treepl\" target=\"_blank\">BC to Treepl CMS  Migration App</a>.</p>\r\n    <p>There is also now the ability to download a .zip archive of your BC site, including data from the following modules:</p>\r\n    <ul>\r\n    \t<li>Pages</li>\r\n        <li>Page Templates</li>\r\n        <li>Module Layouts</li>\r\n        <li>Static files</li>\r\n        <li>Apps</li>\r\n        <li>Content Holders</li>\r\n        <li>System Pages</li>\r\n        <li>Email Templates</li>\r\n        <li>Web Apps</li>\r\n    </ul>\r\n    <p><b>Further Resources:</b></p>\r\n    <a class=\"btn small\" href=\"https://docs.worldsecuresystems.com/user-manual/site-design/bc-and-dreamweaver/connect-to-your-site-using-dreamweaver\" target=\"_blank\">BC FTP connection details</a>\r\n    <a class=\"btn small\" href=\"https://docs.worldsecuresystems.com/Partners/downloading-your-website#Downloadingyoursitearchive\" target=\"_blank\">BC .zip archive</a>\r\n    \r\n    <h2 id=\"secBCSiteDeepClean\" class=\"circle-wrap\"><div class=\"circle\">220</div>Deep-Clean the BC Site (Optional)</h2>\r\n    {% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secBCSiteDeepClean\", parity: \"na\", effort: \"med\", time: \"med\", docs: \"na\", tool: \"na\" %}\r\n    <p>This step is optional, but you may want to take the opportunity to clear out the BC site of old pages, templates, files, etc. Particularly if it’s an old site, there can be a lot of junk floating around. And this can just get in your way during migration and could cause unnecessary work. However, be very careful not to remove assets that may still be in use somewhere (hence the backup in the previous step).</p>\r\n    <p>Once you’ve cleaned up, repeat the FTP download step to collect a new, clean, set of files.</p>\r\n    \r\n    <h2 id=\"secTreeplCMSInstance\" class=\"circle-wrap\"><div class=\"circle\">221</div>Setup Treepl CMS Site Instance</h2>\r\n    {% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secTreeplCMSInstance\", parity: \"high\", effort: \"low\", time: \"low\", docs: \"high\", tool: \"na\" %}\r\n    <p>So you can start work with the Treepl CMS platform you'll need to set up a Trial Site. Log into your Treepl Portal (portal.treepl.co) and click the \"Create New Site\" button.</p>\r\n    <div class=\"tab-content faqsOpenCloseHolder\">\r\n    <div class=\"faqs-open-close \">\r\n        <a class=\"opener\" href=\"#\"><i class=\"fas fa-angle-right\"></i>Trial Site Documentation</a>\r\n        <div class=\"slide js-slide-hidden\">\r\n            {% component source: \"Documentation Post\", layout: \"Body Detail\", filterBy: \"id\", filterValue: \"2151\", limit: \"1\", type: \"module\" %}\r\n        </div>\r\n    </div>\r\n    </div>\r\n    \r\n    <h2 id=\"secHostedEmailTransfer\" class=\"circle-wrap\"><div class=\"circle\">222</div>Start BC Hosted Email Transfer Process (If Applicable)</h2>\r\n    {% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secHostedEmailTransfer\", parity: \"na\", effort: \"low\", time: \"med\", docs: \"high\", tool: \"low\" %}\r\n    <p>If your BC site has BC hosted emails, they can be transferred directly to Treepl CMS after following the below steps.</p>\r\n    <div class=\"tab-content faqsOpenCloseHolder\">\r\n    <div class=\"faqs-open-close \">\r\n        <a class=\"opener\" href=\"#\"><i class=\"fas fa-angle-right\"></i>Transfer of BC Hosted Email Accounts</a>\r\n        <div class=\"slide js-slide-hidden\">\r\n            {% component source: \"Documentation Post\", layout: \"Body Detail\", filterBy: \"id\", filterValue: \"2185\", limit: \"1\", type: \"module\" %}\r\n        </div>\r\n    </div>\r\n    </div>\r\n    \r\n    <h2 id=\"secUploadSiteAssets\" class=\"circle-wrap\"><div class=\"circle\">223</div>Upload Site Assets</h2>\r\n    {% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secUploadSiteAssets\", parity: \"high\", effort: \"low\", time: \"low\", docs: \"high\", tool: \"high\" %}\r\n    <p>Now we'll want to connect to our new Treepl CMS instance via FTP so we can upload some of our BC assets.</p>\r\n    <p>If working manually, we'll probably only want to upload assets relating to the front-end site, such as images, CSS, JS, documents, etc. We don't want to move over pages, templates or other layout files just yet.</p>\r\n    <p>Below are instructions for getting connected via FTP client.</p>\r\n    <div class=\"tab-content faqsOpenCloseHolder\">\r\n        <div class=\"faqs-open-close \">\r\n            <a class=\"opener\" href=\"#\"><i class=\"fas fa-angle-right\"></i>FTP Access Documentation</a>\r\n            <div class=\"slide js-slide-hidden\">\r\n                {% component source: \"Documentation Post\", layout: \"Body Detail\", filterBy: \"id\", filterValue: \"1936\", limit: \"1\", type: \"module\" %}\r\n            </div>\r\n        </div>\r\n    </div>\r\n    <p>Alternatively, you can automatically migrate all files in the BC file system directly to your Treepl CMS site via the <a href=\"https://www.bcappstore.com/apps/bc-to-treepl\" target=\"_blank\">BC to Treepl CMS  Migration App</a>.</p>\r\n    \r\n    <h2 id=\"secSetupPlaceholderTemplates\" class=\"circle-wrap\"><div class=\"circle\">224</div>Upload or Setup Placeholder Templates</h2>\r\n    {% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secSetupPlaceholderTemplates\", parity: \"high\", effort: \"low\", time: \"low\", docs: \"med\", tool: \"high\" %}\r\n    <p>You can manually upload your BC page templates into your Treepl CMS instance via FTP into the ‘Content / ContentTemplates’ directory.</p>\r\n    <p>Alternatively the <a href=\"https://www.bcappstore.com/apps/bc-to-treepl\" target=\"_blank\">BC to Treepl CMS  Migration App</a> can be used to automate this process.</p>\r\n    <p>If manually migrating templates, don’t worry about editing the template code/markup at this stage. We just want to get them loaded in Treepl CMS so we can reference it in the following steps. We’ll work on the template code later.</p>\r\n    \r\n    <p>If not using FTP, to manually create a content template, go to 'Content' &gt; 'Content Templates'.</p>\r\n    <p>Click ‘Add New Template’ button.</p>\r\n    <p>Just complete ‘Name’ and choose whether it's the default template. Leave the content as is for now.</p>\r\n    <p>Repeat this for all required templates.</p>\r\n    \r\n    <div class=\"tab-content faqsOpenCloseHolder\">\r\n    <div class=\"faqs-open-close \">\r\n        <a class=\"opener\" href=\"#\"><i class=\"fas fa-angle-right\"></i>Content Templates Documentation</a>\r\n        <div class=\"slide js-slide-hidden\">\r\n            {% component source: \"Documentation Post\", layout: \"Body Detail\", filterBy: \"id\", filterValue: \"2132\", limit: \"1\", type: \"module\" %}\r\n        </div>\r\n    </div>\r\n    </div>\r\n    \r\n    <h2 id=\"secSetupSitePages\" class=\"circle-wrap\"><div class=\"circle\">225</div>Upload or Setup Site Pages</h2>\r\n    {% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secSetupSitePages\", parity: \"high\", effort: \"low\", time: \"low\", docs: \"med\", tool: \"high\" %}\r\n    <p>Upload your BC pages into your Treepl CMS instance via FTP into the ‘Content / Pages’ directory.</p>\r\n    <p>Alternatively the <a href=\"https://www.bcappstore.com/apps/bc-to-treepl\" target=\"_blank\">BC to Treepl CMS  Migration App</a> can be used to automate this process.</p>\r\n    <p>If manually migration pages, there will still be several properties you will want to set for each page, such as a more relevant system name, assigning it to a template, SEO and meta details, etc. and we’ll likely need to review the page content for any system tags or Liquid\r\n        that needs replacing. However, all in good time and we’ll take those actions in a later step. For now we just want to get the bulk of the setup in place.</p>\r\n    \r\n    <div class=\"tab-content faqsOpenCloseHolder\">\r\n    <div class=\"faqs-open-close \">\r\n        <a class=\"opener\" href=\"#\"><i class=\"fas fa-angle-right\"></i>Pages Documentation</a>\r\n        <div class=\"slide js-slide-hidden\">\r\n            {% component source: \"Documentation Post\", layout: \"Body Detail\", filterBy: \"id\", filterValue: \"2131\", limit: \"1\", type: \"module\" %}\r\n        </div>\r\n    </div>\r\n    </div>\r\n    \r\n    <h2 id=\"secReplicateMenus\" class=\"circle-wrap\"><div class=\"circle\">226</div>Replicate Menus & Menu Layouts</h2>\r\n    {% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secReplicateMenus\", parity: \"high\", effort: \"med\", time: \"med\", docs: \"high\", tool: \"high\" %}\r\n    <p>You can easily recreate your BC menus into your Treepl CMS instance via the admin ‘Content' > 'Menus’, and copy over and adjust your menu layouts.</p>\r\n    <p>Alternatively the <a href=\"https://www.bcappstore.com/apps/bc-to-treepl\" target=\"_blank\">BC to Treepl CMS  Migration App</a> can be used to automate this process.</p>\r\n    <p>If manually recreating your menus you can follow the documentation and tips below:</p>\r\n    \r\n    <div class=\"tab-content faqsOpenCloseHolder\">\r\n        <div class=\"faqs-open-close \">\r\n            <a class=\"opener\" href=\"#\"><i class=\"fas fa-angle-right\"></i>Menus Documentation</a>\r\n            <div class=\"slide js-slide-hidden\">\r\n                {% component source: \"Documentation Post\", layout: \"Body Detail\", filterBy: \"id\", filterValue: \"1966\", limit: \"1\", type: \"module\" %}\r\n            </div>\r\n        </div>\r\n    </div>\r\n    \r\n    <h3>BC Menu V2</h3>\r\n    <p>If using BC’s menu v2 method for your menus, upload your menu layouts from ‘ModuleTemplates / Menu / &lt;menu-name&gt;’ into the corresponding Treepl CMS menu layouts in ‘Content / MenuLayouts / &lt;menu_alias_name&gt;’</p>\r\n    <p>The corresponding layouts from BC to Treepl CMS are:</p>\r\n    <ul>\r\n        <li>“container.html” --&gt; “menu.layout”</li>\r\n        <li>“group.html” --&gt; “item.layout”</li>\r\n        <li>“childitem.html” --&gt; “sub_items.layout”</li>\r\n    </ul>\r\n    <p>Now, we’re finally going to get our hands dirty with some code.</p>\r\n    <p>We’ll need to convert the BC tags into the Treepl CMS way of doing things. Let’s reference the Menu documentation above while doing this.</p>\r\n    <p>Starting with the “menu.layout” file you'll want to weave your HTML markup into the Treepl CMS Liquid so that the Liquid logic renders the same markup you are referencing from BC.</p>\r\n    <p>Next, do the same with the “item.layout” file, weaving in the BC “group.html” markup.</p>\r\n    <p>Finally, the “sub_items.layout” file,</p>\r\n    <p>Repeat for each menu group you are using.</p>\r\n    <p>If you have multiple menus using the same layout group in BC, simply copy the same code you just set up into each menu layout files (menus don’t share layouts in Treepl CMS).</p>\r\n    \r\n    <h3>BC Menu V1 (legacy module)</h3>\r\n    <p>If using BC’s original/legacy menu method, we’ll need to reference the rendered source code for your menu in the browser.</p>\r\n    <p>Load one of your BC site pages that features the menu. View the page source (right click, 'View Source') and identify the complete section of menu elements including the BC JS references.</p>\r\n    <p>Copy the menu elements into your “menu.layout” file so we can start working on converting that code.</p>\r\n    <p>Back in the source view, for the two JS references BC outputs, right click on the source links and save those JS files to your BC site files in an appropriate directory and than upload those to Treepl CMS in the corresponding directory.</p>\r\n    <p>Back in your menu layout, we'll relink the JS references to point to the new location.</p>\r\n    <p>Work through recoding the menu HTML into the Treepl CMS menu layouts to complete the process.</p>\r\n    \r\n    \r\n    <h2 id=\"secSetupSecureZones\" class=\"circle-wrap\"><div class=\"circle\">227</div>Setup Secure Zones</h2>\r\n    {% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secSetupSecureZones\", parity: \"high\", effort: \"low\", time: \"low\", docs: \"high\", tool: \"high\" %}\r\n    <p>Recreating all Secure Zones from BC into Treepl CMS is a fairly straight forward process.</p>\r\n    <p>Alternatively the <a href=\"https://www.bcappstore.com/apps/bc-to-treepl\" target=\"_blank\">BC to Treepl CMS  Migration App</a> can be used to automate this process.</p>\r\n    <p>If manually recreating your Secure Zones, you can follow the steps below:</p>\r\n    <p>Go to ‘Content’ &gt; ‘Secure Zones’</p>\r\n    <p>Click ‘Add Secure Zone’ button.</p>\r\n    <p>Complete ‘Name’ and ‘Landing Page’ then “Next” to save and move to ‘Step 2: Secure Content’.</p>\r\n    <p>Pages will be ready for you to secure, however most other content we havn't migrated over yet so you'll need to revisit this section to secure all relevant items.</p>\r\n    <p>Click “Next” to save and move to ‘Step 3: Members’</p>\r\n    <p>Here you can manage the members subscribed to the secure zone.</p>\r\n    <p>For further documentation expand the box below:</p>\r\n    <div class=\"tab-content faqsOpenCloseHolder\">\r\n        <div class=\"faqs-open-close \">\r\n            <a class=\"opener\" href=\"#\"><i class=\"fas fa-angle-right\"></i>Secure Zones Documentation</a>\r\n            <div class=\"slide js-slide-hidden\">\r\n                {% component source: \"Documentation Post\", layout: \"Body Detail\", filterBy: \"id\", filterValue: \"2199\", limit: \"1\", type: \"module\" %}\r\n            </div>\r\n        </div>\r\n    </div>\r\n    \r\n    <h2 id=\"secSetupMailingListsMC\" class=\"circle-wrap\"><div class=\"circle\">228</div>Setup Mailing Lists (MailChimp)</h2>\r\n    {% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secSetupMailingListsMC\", parity: \"low\", effort: \"med\", time: \"low\", docs: \"high\", tool: \"low\" %}\r\n    <p>Before you can set up Mailing Lists in Treepl CMS you need to connect a MailChimp account using their provided API key.</p>\r\n    <p>Below are documentation for setting up the API connection and further inofrmation about adding Mailing Lists.</p>\r\n    \r\n    <div class=\"tab-content faqsOpenCloseHolder\">\r\n        <div class=\"faqs-open-close \">\r\n            <a class=\"opener\" href=\"#\"><i class=\"fas fa-angle-right\"></i>API Provider Documentation</a>\r\n            <div class=\"slide js-slide-hidden\">\r\n                {% component source: \"Documentation Post\", layout: \"Body Detail\", filterBy: \"id\", filterValue: \"2311\", limit: \"1\", type: \"module\" %}\r\n            </div>\r\n        </div>\r\n        <div class=\"faqs-open-close \">\r\n            <a class=\"opener\" href=\"#\"><i class=\"fas fa-angle-right\"></i>Mailing Lists Documentation</a>\r\n            <div class=\"slide js-slide-hidden\">\r\n                {% component source: \"Documentation Post\", layout: \"Body Detail\", filterBy: \"id\", filterValue: \"2310\", limit: \"1\", type: \"module\" %}\r\n            </div>\r\n        </div>\r\n    </div>\r\n    \r\n    <p>Currently, Email Campaigns would generally be managed in MailChimp for full functionality of the MailChimp service. However, basic Email Campaigns can be add via Treepl CMS and pushed to MailChimp.<br>\r\n    <em>More documentation coming soon on this.</em></p>\r\n    \r\n    <h2 id=\"secSetupSiteSearch\" class=\"circle-wrap\"><div class=\"circle\">229</div>Setup Site Search</h2>\r\n    {% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secSetupSiteSearch\", parity: \"med\", effort: \"low\", time: \"low\", docs: \"med\", tool: \"low\" %}\r\n    <p>You don’t need to set up any Site Search module in Treepl CMS. This functionality is ready to use simply by inserting the search form and component tag.</p>\r\n    <p>So there is nothing you need to do in this step.</p>\r\n    <p>Later in the migration we’ll need to replace any BC site search forms so we’ll reference back to this documentation:</p>\r\n    <div class=\"tab-content faqsOpenCloseHolder\">\r\n        <div class=\"faqs-open-close \">\r\n            <a class=\"opener\" href=\"#\"><i class=\"fas fa-angle-right\"></i>Site Search Documentation - COMING SOON...</a>\r\n            <div class=\"slide js-slide-hidden\">\r\n                {% component source: \"Documentation Post\", layout: \"Body Detail\", filterBy: \"id\", filterValue: \"2356\", limit: \"1\", type: \"module\" %}\r\n            </div>\r\n        </div>\r\n        <div class=\"faqs-open-close \">\r\n            <a class=\"opener\" href=\"#\"><i class=\"fas fa-angle-right\"></i>Site Search Component Documentation</a>\r\n            <div class=\"slide js-slide-hidden\">\r\n                {% component source: \"Documentation Post\", layout: \"Body Detail\", filterBy: \"id\", filterValue: \"1959\", limit: \"1\", type: \"module\" %}\r\n            </div>\r\n        </div>\r\n    </div>\r\n    \r\n    <h2 id=\"secReplicateURLRedirects\" class=\"circle-wrap\"><div class=\"circle\">230</div>Replicate Existing URL Redirects</h2>\r\n    {% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secReplicateURLRedirects\", parity: \"high\", effort: \"med\", time: \"med\", docs: \"high\", tool: \"high\" %}\r\n    <p>While you can import URL Redirects into Treepl CMS in bulk, BC doesn't have an export function available from their admin, so you’ll need to enter URL redirects manually. Alternatively the <a href=\"https://www.bcappstore.com/apps/bc-to-treepl\" target=\"_blank\">BC to Treepl CMS  Migration App</a> can be used to automate this process.</p>\r\n    <p>See below for more information on URL Redirects.</p>\r\n    <div class=\"tab-content faqsOpenCloseHolder\">\r\n        <div class=\"faqs-open-close \">\r\n            <a class=\"opener\" href=\"#\"><i class=\"fas fa-angle-right\"></i>URL Redirects Documentation</a>\r\n            <div class=\"slide js-slide-hidden\">\r\n                {% component source: \"Documentation Post\", layout: \"Body Detail\", filterBy: \"id\", filterValue: \"2210\", limit: \"1\", type: \"module\" %}\r\n            </div>\r\n        </div>\r\n    </div>\r\n    \r\n    <h2 id=\"secSetupAdminUserRoles\" class=\"circle-wrap\"><div class=\"circle\">231</div>Setup Admin User Roles</h2>\r\n    {% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secSetupAdminUserRoles\", parity: \"med\", effort: \"low\", time: \"low\", docs: \"med\", tool: \"low\" %}\r\n    <p>While we won’t be adding Admin Users just yet, we’ll still get the User Roles set up and in place ready to assign users to in a later step.</p>\r\n    <p>To set up Admin User Roles, go to ‘Settings’ &gt; ‘Admin User Roles’</p>\r\n    <p>Click ‘Add Admin Role’ button.</p>\r\n    <p>Complete a 'Name' for your Role and configure the permissions, turning off checkboxes to block users access to those items.</p>\r\n    <p class=\"notice-note\">Many permission items have nested items for further fine-grain control.</p>\r\n    \r\n    \r\n    \r\n    <h2 id=\"secSetupNotificationWorkflow\" class=\"circle-wrap\"><div class=\"circle\">232</div>Setup Email Notification Workflow/s</h2>\r\n    {% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secSetupNotificationWorkflow\", parity: \"med\", effort: \"low\", time: \"low\", docs: \"high\", tool: \"high\" %}\r\n    <p>We’ll set up the default Notification Workflow email (and additional ones if needed - make sure you’re site plan supports multiple Workflow Emails if you need more than one Workflow)</p>\r\n    <p>You can optionally, upload your BC workflow email layouts into your Treepl CMS instance via FTP into the ‘Content / SystemEmails’ directory. However, if you only have a few email layouts it may be better to set these up via the Admin as you'll need to configure other settings as well.</p>\r\n    <p>Alternatively the <a href=\"https://www.bcappstore.com/apps/bc-to-treepl\" target=\"_blank\">BC to Treepl CMS  Migration App</a> can be used to automate this process.</p>\r\n    <p>See below for documentation on Workflows.</p>\r\n    <div class=\"tab-content faqsOpenCloseHolder\">\r\n        <div class=\"faqs-open-close \">\r\n            <a class=\"opener\" href=\"#\"><i class=\"fas fa-angle-right\"></i>Workflows Documentation</a>\r\n            <div class=\"slide js-slide-hidden\">\r\n                {% component source: \"Documentation Post\", layout: \"Body Detail\", filterBy: \"id\", filterValue: \"2208\", limit: \"1\", type: \"module\" %}\r\n            </div>\r\n        </div>\r\n    </div>\r\n    \r\n    \r\n    \r\n    \r\n    <h2 id=\"secReplicateWebForms\" class=\"circle-wrap\"><div class=\"circle\">233</div>Replicate Web Forms</h2>\r\n    {% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secReplicateWebForms\", parity: \"high\", effort: \"low\", time: \"med\", docs: \"high\", tool: \"med\" %}\r\n    <p>You can create new web forms in the Treepl admin for each of your BC Web Forms and copy over and adjust your form layout/code.</p>\r\n    <p>Alternatively the <a href=\"https://www.bcappstore.com/apps/bc-to-treepl\" target=\"_blank\">BC to Treepl CMS  Migration App</a> can be used to automate this process.</p>\r\n    <p>See below for documentation on Forms.</p>\r\n    <div class=\"tab-content faqsOpenCloseHolder\">\r\n        <div class=\"faqs-open-close \">\r\n            <a class=\"opener\" href=\"#\"><i class=\"fas fa-angle-right\"></i>Forms Documentation</a>\r\n            <div class=\"slide js-slide-hidden\">\r\n                {% component source: \"Documentation Post\", layout: \"Body Detail\", filterBy: \"id\", filterValue: \"2041\", limit: \"1\", type: \"module\" %}\r\n            </div>\r\n        </div>\r\n    </div>\r\n    \r\n    <h2 id=\"secReplicateSystemPages\" class=\"circle-wrap\"><div class=\"circle\">234</div>Replicate System Pages</h2>\r\n    {% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secReplicateSystemPages\", parity: \"high\", effort: \"low\", time: \"low\", docs: \"high\", tool: \"high\" %}\r\n    <p>This process can be automated with the <a href=\"https://www.bcappstore.com/apps/bc-to-treepl\" target=\"_blank\">BC to Treepl CMS  Migration App</a>.</p>\r\n    <p>Or, if manually migrating system pages, locate your relevant BC System Pages either in your downloaded BC site files, or in the “Develop” tab of the BC Admin under ‘Layouts / SystemMessages’, or directly in the BC Admin under ‘Site Manager’ &gt; ‘System Pages.</p>\r\n    <p>You’ll need to copy over the HTML from these into the corresponding system page in Treepl CMS found in the Admin under ‘Settings / System Pages’</p>\r\n    <p>While you can upload system pages into Treepl CMS, you'd first need to rename the relevant BC files to match those of Treepl CMS in order to override them. However, this is not recommended as you'll lose the default layouts and Liquid markup required for those layouts.</p>\r\n    <p>For more information refer to the below documentation article.</p>\r\n    <div class=\"tab-content faqsOpenCloseHolder\">\r\n        <div class=\"faqs-open-close \">\r\n            <a class=\"opener\" href=\"#\"><i class=\"fas fa-angle-right\"></i>System Pages Documentation</a>\r\n            <div class=\"slide js-slide-hidden\">\r\n                {% component source: \"Documentation Post\", layout: \"Body Detail\", filterBy: \"id\", filterValue: \"2207\", limit: \"1\", type: \"module\" %}\r\n            </div>\r\n        </div>\r\n    </div>\r\n    <p>Review your HTML for any BC specific tags or modules which will need to be converted to Treepl CMS equivalents. Either making note of them to come back to once other items are set up, or replace them now if you can. For example, you may have a\r\n        site search form on your 404 Not Found page, or a secure zone login form on your 401 or 403 pages.</p>\r\n    \r\n    <h2 id=\"secReplicateSystemEmails\" class=\"circle-wrap\"><div class=\"circle\">235</div>Replicate System Emails</h2>\r\n    {% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secReplicateSystemEmails\", parity: \"high\", effort: \"low\", time: \"low\", docs: \"high\", tool: \"high\" %}\r\n    <p>This process can be automated with the <a href=\"https://www.bcappstore.com/apps/bc-to-treepl\" target=\"_blank\">BC to Treepl CMS  Migration App</a>.</p>\r\n    <p>Or, if manually migrating system emails, locate your relevant BC System Emails, either in your downloaded BC site files, or in the “Develop” tab of the BC Admin under ‘Layouts / OutboundEmails’, or directly in the BC Admin under ‘Site Manager’ &gt; ‘System Emails’.</p>\r\n    <p>You’ll need to copy over the HTML from these into the corresponding system emails in Treepl CMS found in the Admin under ‘Email Notifications / System Emails’</p>\r\n        <p>While you can upload system emails into Treepl CMS, you'd first need to rename the relevant BC files to match those of Treepl CMS in order to override them. However, this is not recommended as you'll lose the default layouts and Liquid markup required for those layouts.</p>\r\n    <p>Review your HTML for any BC specific tags or modules which will need to be converted to Treepl CMS equivalents. Be sure to reference the default tags already in the email layouts in Treepl CMS to identify which ones can replace your BC tags.</p>\r\n    <p>For more information refer to the below documentation article.</p>\r\n    <div class=\"tab-content faqsOpenCloseHolder\">\r\n        <div class=\"faqs-open-close \">\r\n            <a class=\"opener\" href=\"#\"><i class=\"fas fa-angle-right\"></i>System Emails Documentation</a>\r\n            <div class=\"slide js-slide-hidden\">\r\n                {% component source: \"Documentation Post\", layout: \"Body Detail\", filterBy: \"id\", filterValue: \"2205\", limit: \"1\", type: \"module\" %}\r\n            </div>\r\n        </div>\r\n    </div>\r\n    \r\n    <h2 id=\"secReplicateCategories\" class=\"circle-wrap\"><div class=\"circle\">236</div>Replicate Categories</h2>\r\n    {% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secReplicateCategories\", parity: \"high\", effort: \"low\", time: \"low\", docs: \"high\", tool: \"high\" %}\r\n    <p>You can manually recreate any Categories set up in your BC site into Treepl CMS under ‘Settings / Categories’</p>\r\n    <p>Alternatively the <a href=\"https://www.bcappstore.com/apps/bc-to-treepl\" target=\"_blank\">BC to Treepl CMS  Migration App</a> can be used to automate this process.</p>\r\n    <p>For more information about Categories see the below documentation article.</p>\r\n    <div class=\"tab-content faqsOpenCloseHolder\">\r\n        <div class=\"faqs-open-close \">\r\n            <a class=\"opener\" href=\"#\"><i class=\"fas fa-angle-right\"></i>Categories Documentation</a>\r\n            <div class=\"slide js-slide-hidden\">\r\n                {% component source: \"Documentation Post\", layout: \"Body Detail\", filterBy: \"id\", filterValue: \"2308\", limit: \"1\", type: \"module\" %}\r\n            </div>\r\n        </div>\r\n    </div>\r\n    \r\n    <h2 id=\"secContactsAndCases\" class=\"circle-wrap\"><div class=\"circle\">237</div>Contacts & Cases</h2>\r\n    {% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secContactsAndCases\", parity: \"med\", effort: \"med\", time: \"med\", docs: \"low\", tool: \"high\" %}\r\n    <p>The <a href=\"https://www.bcappstore.com/apps/bc-to-treepl\" target=\"_blank\">BC to Treepl CMS  Migration App</a> can be used to migrate both contact records and cases.</p>\r\n    <p>Alternatively, you can import contact records directly into the Treepl CMS Contacts module. However, Cases can not yet be imported in this way and would need to be added manaully if not using the Migration App.</p>\r\n    <p>Also note that Treepl CMS Contact fields are limited, so it's still advisable to export BC CRM data for archive/backup purposes if advanced CRM fields exist and later import that data when the advanced CRM is available.</p>\r\n\r\n    \r\n    <h2 id=\"secReplicateContentHolders\" class=\"circle-wrap\"><div class=\"circle\">238</div>Replicate Content Holders</h2>\r\n    {% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secReplicateContentHolders\", parity: \"high\", effort: \"low\", time: \"low\", docs: \"med\", tool: \"high\" %}\r\n    <p>The <a href=\"https://www.bcappstore.com/apps/bc-to-treepl\" target=\"_blank\">BC to Treepl CMS  Migration App</a> can be used to automate this process.</p>\r\n    <p>Alternatively, if manually migrating, locate your relevant BC Content Holders, either in your downloaded BC site files, or in the “Develop” tab of the BC Admin under ‘System / ContentHolders, or directly in the BC Admin under ‘Site Manager’ &gt; ‘Content Holders’.</p>\r\n    <p>Upload your BC Content Holders into your Treepl CMS instance via FTP into the ‘Content / Snippets’ directory.</p>\r\n    <p>If not using FTP, create and copy over the HTML from these into the Treepl CMS admin area under ‘Content / Snippets’.</p>\r\n    <p>Review your HTML for any BC specific tags or modules which will need to be converted to Treepl CMS equivalents. Either making note of them to come back to once other items are set up, or replace them now if you can.</p>\r\n    \r\n    \r\n    <div class=\"tab-content faqsOpenCloseHolder\">\r\n        <div class=\"faqs-open-close \">\r\n            <a class=\"opener\" href=\"#\"><i class=\"fas fa-angle-right\"></i>Snippets Documentation</a>\r\n            <div class=\"slide js-slide-hidden\">\r\n                {% component source: \"Documentation Post\", layout: \"Body Detail\", filterBy: \"id\", filterValue: \"2133\", limit: \"1\", type: \"module\" %}\r\n            </div>\r\n        </div>\r\n        <div class=\"faqs-open-close \">\r\n            <a class=\"opener\" href=\"#\"><i class=\"fas fa-angle-right\"></i>Snippets Component Documentation</a>\r\n            <div class=\"slide js-slide-hidden\">\r\n                {% component source: \"Documentation Post\", layout: \"Body Detail\", filterBy: \"id\", filterValue: \"1950\", limit: \"1\", type: \"module\" %}\r\n            </div>\r\n        </div>\r\n    </div>\r\n    \r\n    \r\n    \r\n    \r\n    <h2 id=\"secBuiltInModules\" class=\"circle-wrap\"><div class=\"circle\">239</div>Built-In Modules:</h2>\r\n    <h3 id=\"secBlogs\">Blogs</h3>\r\n    {% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secBuiltInModulesBlogs\", parity: \"high\", effort: \"med\", time: \"med\", docs: \"med\", tool: \"high\" %}\r\n    <p>BC Blogs can be replicated in Treepl CMS either in the built-in Blog module or by using Custom Modules to configure your own blog structure.</p>\r\n    <p>The <a href=\"https://www.bcappstore.com/apps/bc-to-treepl\" target=\"_blank\">BC to Treepl CMS Migration App</a> can be used to automate this process, including Release Dates, Tags, Categories, Authors and SEO data.</p>\r\n    <p>If manually transferring your blogs, for a method of extracting the BC Blog data see this helpful Treepl CMS Forum post (includes code snippets and demo video):</p>\r\n    <a class=\"btn small\" href=\"https://forum.treepl.co/t/bc-blog-export-helper/61\" target=\"_blank\">BC Blog Export Helper</a>\r\n    <p>You can also upload your BC module layouts into your Treepl CMS instance via FTP into the ‘Content / ModuleLayouts / &lt;Blog&gt; &amp; &lt;BlogPost&gt;’ directories.</p>\r\n    <p>For more information about the Blog module see the documentation articles.</p>\r\n    <div class=\"tab-content faqsOpenCloseHolder\">\r\n        <div class=\"faqs-open-close \">\r\n            <a class=\"opener\" href=\"#\"><i class=\"fas fa-angle-right\"></i>Blog module Documentation</a>\r\n            <div class=\"slide js-slide-hidden\">\r\n                {% component source: \"Documentation Post\", layout: \"Body Detail\", filterBy: \"id\", filterValue: \"2135\", limit: \"1\", type: \"module\" %}\r\n            </div>\r\n        </div>\r\n        <div class=\"faqs-open-close \">\r\n            <a class=\"opener\" href=\"#\"><i class=\"fas fa-angle-right\"></i>Blog component Documentation</a>\r\n            <div class=\"slide js-slide-hidden\">\r\n                {% component source: \"Documentation Post\", layout: \"Body Detail\", filterBy: \"id\", filterValue: \"2141\", limit: \"1\", type: \"module\" %}\r\n            </div>\r\n        </div>\r\n        <div class=\"faqs-open-close \">\r\n            <a class=\"opener\" href=\"#\"><i class=\"fas fa-angle-right\"></i>Blog Post component Documentation</a>\r\n            <div class=\"slide js-slide-hidden\">\r\n                {% component source: \"Documentation Post\", layout: \"Body Detail\", filterBy: \"id\", filterValue: \"2142\", limit: \"1\", type: \"module\" %}\r\n            </div>\r\n        </div>\r\n    </div>\r\n    \r\n    <h3 id=\"secEvents\">Events</h3>\r\n    {% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secBuiltInModulesEvents\", parity: \"high\", effort: \"high\", time: \"med\", docs: \"low\", tool: \"high\" %}\r\n    <p>Treepl CMS Events are similar to BC Events and can be set up quite easily.</p>\r\n    <p>The <a href=\"https://www.bcappstore.com/apps/bc-to-treepl\" target=\"_blank\">BC to Treepl CMS  Migration App</a> can be used to automate Event migrations as well as transfer Event booking data from the CRM into Treepl CMS CRM.</p>\r\n    <p>For manual migrations, getting the data out of BC is a problem... although, you could likely use a similar approach to the Blog Export Helper above.</p>\r\n    <p>You can also upload your BC module layouts into your Treepl CMS instance via FTP into the ‘Content / ModuleLayouts / &lt;Event&gt; &amp; &lt;EventGroup&gt;’ directories.</p>\r\n    \r\n    <h3 id=\"secPhotoGalleries\">Photo Galleries</h3>\r\n    {% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secBuiltInModulesGalleries\", parity: \"med\", effort: \"med\", time: \"med\", docs: \"med\", tool: \"high\" %}\r\n    <p>Galleries in Treepl CMS work more like WebApps, so each image is an item within the parent module. This brings greater control in the long run, however migrating images and data to this new format can make migration a little more involved.</p>\r\n    <p>The <a href=\"https://www.bcappstore.com/apps/bc-to-treepl\" target=\"_blank\">BC to Treepl CMS Migration App</a> can be used to automate this process.</p>\r\n    <p>If manually transferring your galleries, see this very helpful method of extracting the BC data in a ready format for Treepl CMS posted in the Treepl CMS Forum:</p>\r\n    <a class=\"btn small\" href=\"https://forum.treepl.co/t/bc-photo-gallery-exporter/107\" target=\"_blank\">BC Photo Galleries Export Helper</a>\r\n    <p>For more information about the Galleries/Sliders module see the documentation articles.</p>\r\n    <div class=\"tab-content faqsOpenCloseHolder\">\r\n        <div class=\"faqs-open-close \">\r\n            <a class=\"opener\" href=\"#\"><i class=\"fas fa-angle-right\"></i>Gallery/Slider Group module</a>\r\n            <div class=\"slide js-slide-hidden\">\r\n                {% component source: \"Documentation Post\", layout: \"Body Detail\", filterBy: \"id\", filterValue: \"2140\", limit: \"1\", type: \"module\" %}\r\n            </div>\r\n        </div>\r\n    </div>\r\n    <div class=\"tab-content faqsOpenCloseHolder\">\r\n        <div class=\"faqs-open-close \">\r\n            <a class=\"opener\" href=\"#\"><i class=\"fas fa-angle-right\"></i>Gallery/Slider Item module</a>\r\n            <div class=\"slide js-slide-hidden\">\r\n                {% component source: \"Documentation Post\", layout: \"Body Detail\", filterBy: \"id\", filterValue: \"2143\", limit: \"1\", type: \"module\" %}\r\n            </div>\r\n        </div>\r\n    </div>\r\n    \r\n    <h3 id=\"secNews\">News</h3>\r\n    {% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secBuiltInModulesNews\", parity: \"med\", effort: \"low\", time: \"low\", docs: \"med\", tool: \"high\" %}\r\n    <p>There is no “News” module specifically in Treepl CMS, however using the Blog would likely be a more than suitable alternative (see migrating Blogs section above).</p>\r\n    <p>The <a href=\"https://www.bcappstore.com/apps/bc-to-treepl\" target=\"_blank\">BC to Treepl CMS Migration App</a> can be used to automate this process and a separate Blog module will be created for News items.</p>\r\n    <p>If migrating manually, since BC doesn't provide export functionality for extracting the BC News data, you could likely use a similar approach to the Blog Export Helper above.</p>\r\n    <p>You can also upload your BC module layouts into your Treepl CMS instance via FTP into the ‘Content / ModuleLayouts / &lt;Your Custom Module OR Blog&gt;’ directory.</p>\r\n    \r\n    \r\n    <h3 id=\"secMediaDownloads\">Media Downloads</h3>\r\n    {% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secBuiltInModulesMedia\", parity: \"low\", effort: \"med\", time: \"med\", docs: \"low\", tool: \"high\" %}\r\n    <p>There is no direct “Media Downloads” module in Treepl CMS, however setting up a Custom Module along with the ‘<a href=\"https://docs.treepl.co/documentation_group/extras/force-download-handler\" target=\"_blank\">Force Download Handler</a>’ option would see very similar results with greater flexibility.<br>\r\n    (see migrating WebApps section in a later step).</p>\r\n    <p>You can manually migrate Media Downloads or alternatively the <a href=\"https://www.bcappstore.com/apps/bc-to-treepl\" target=\"_blank\">BC to Treepl CMS  Migration App</a> can be used to automate this process.</p>\r\n    <p>For manual migrations, a very helpful method of extracting the BC data in a ready format for Treepl CMS, see this helpful Treepl CMS Forum post:</p>\r\n    <a class=\"btn small\" href=\"https://forum.treepl.co/t/bc-media-downloads-exporter/235\" target=\"_blank\">BC Media Downloads Export Helper</a>\r\n    \r\n    \r\n    <h3 id=\"secFAQs\">FAQs</h3>\r\n    {% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secBuiltInModulesFAQs\", parity: \"high\", effort: \"med\", time: \"med\", docs: \"low\", tool: \"high\" %}\r\n    <p>FAQs in Treepl CMS work more like WebApps, so each FAQ is an item within the parent module (Question Group). This brings greater control in the long run, however migrating FAQs and data to this new format may make migration a little more involved.</p>\r\n    <p>You can manually migrate FAQs or alternatively the <a href=\"https://www.bcappstore.com/apps/bc-to-treepl\" target=\"_blank\">BC to Treepl CMS  Migration App</a> can be used to automate this process.</p>\r\n    <p>For manual migrations, you could likely use a similar approach to the Blog Export Helper above.</p>\r\n    <p>You can also upload your BC module layouts into your Treepl CMS instance via FTP into the ‘Content / ModuleLayouts / &lt;FAQGropu&gt; &amp; &lt;FAQQuestion&gt;’ directories.</p>\r\n    <p>For more information about the FAQs module see the documentation articles.</p>\r\n    <div class=\"tab-content faqGroupOpenCloseHolder\">\r\n        <div class=\"faqs-open-close \">\r\n            <a class=\"opener\" href=\"#\"><i class=\"fas fa-angle-right\"></i>FAQ Group module</a>\r\n            <div class=\"slide js-slide-hidden\">\r\n                {% component source: \"Documentation Post\", layout: \"Body Detail\", filterBy: \"id\", filterValue: \"2144\", limit: \"1\", type: \"module\" %}\r\n            </div>\r\n        </div>\r\n    </div>\r\n    <div class=\"tab-content faqItemOpenCloseHolder\">\r\n        <div class=\"faqs-open-close \">\r\n            <a class=\"opener\" href=\"#\"><i class=\"fas fa-angle-right\"></i>FAQ Item module</a>\r\n            <div class=\"slide js-slide-hidden\">\r\n                {% component source: \"Documentation Post\", layout: \"Body Detail\", filterBy: \"id\", filterValue: \"2145\", limit: \"1\", type: \"module\" %}\r\n            </div>\r\n        </div>\r\n    </div>\r\n    \r\n    \r\n    <h3 id=\"secAdRotators\">Ad Rotators</h3>\r\n    {% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secBuiltInModulesRotators\", parity: \"med\", effort: \"med\", time: \"med\", docs: \"med\", tool: \"high\" %}\r\n    <p>The Banner module in Treepl CMS was built to replace the BC Ad Rotators and is set up much like the other modules in Treepl CMS and is therefore flexible for you to configure the layouts and behaviour as needed.</p>\r\n    <p>The <a href=\"https://www.bcappstore.com/apps/bc-to-treepl\" target=\"_blank\">BC to Treepl CMS Migration App</a> can be used to automate this process.</p>\r\n    <p>If migrating manually, since BC doesn't provide export functionality for extracting the BC Ad Rotator data, you could likely use a similar approach to the Blog Export Helper above.</p>\r\n    <p>For more information about the Banners module see the documentation articles.</p>\r\n    <div class=\"tab-content faqsOpenCloseHolder\">\r\n        <div class=\"faqs-open-close \">\r\n            <a class=\"opener\" href=\"#\"><i class=\"fas fa-angle-right\"></i>Banner Documentation</a>\r\n            <div class=\"slide js-slide-hidden\">\r\n                {% component source: \"Documentation Post\", layout: \"Body Detail\", filterBy: \"id\", filterValue: \"2136\", limit: \"1\", type: \"module\" %}\r\n            </div>\r\n        </div>\r\n    </div>\r\n    <div class=\"tab-content faqsOpenCloseHolder\">\r\n        <div class=\"faqs-open-close \">\r\n            <a class=\"opener\" href=\"#\"><i class=\"fas fa-angle-right\"></i>Banner Group module</a>\r\n            <div class=\"slide js-slide-hidden\">\r\n                {% component source: \"Documentation Post\", layout: \"Body Detail\", filterBy: \"id\", filterValue: \"2146\", limit: \"1\", type: \"module\" %}\r\n            </div>\r\n        </div>\r\n    </div>\r\n    <div class=\"tab-content faqsOpenCloseHolder\">\r\n        <div class=\"faqs-open-close \">\r\n            <a class=\"opener\" href=\"#\"><i class=\"fas fa-angle-right\"></i>Banner Item module</a>\r\n            <div class=\"slide js-slide-hidden\">\r\n                {% component source: \"Documentation Post\", layout: \"Body Detail\", filterBy: \"id\", filterValue: \"2147\", limit: \"1\", type: \"module\" %}\r\n            </div>\r\n        </div>\r\n    </div>\r\n    \r\n    <h2 id=\"secCustomModulesWebApps\" class=\"circle-wrap\"><div class=\"circle\">240</div>Custom Modules (WebApps)</h2>\r\n    {% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secCustomModulesWebApps\", parity: \"high\", effort: \"low\", time: \"med\", docs: \"high\", tool: \"high\" %}\r\n    <p>Generally, WebApps will transfer over quite easily as Custom Modules in Treepl CMS were built around an improved “WebApp” model. Therefore they have a very similar concept with how items are added and list and detail layouts are constructed. Combined with the fact that WebApp data can be easily exported from BC and imported into Treepl CMS, WebApps will likely be an easier job migrating then the other built-in BC modules.</p>\r\n    <p>If you have very complex WebApps there may be more time required to study the different methods with rendering data and converting complex Liquid markup, but the data migration should be relatively straight forward via export/import.</p>\r\n    <p>You can further simplify this process with the <a href=\"https://www.bcappstore.com/apps/bc-to-treepl\" target=\"_blank\">BC to Treepl CMS  Migration App</a>, which can migration not only the item data but the WebApp layouts, settings and set up all custom fields including Datasource fields (converting the reference for Treepl CMS use).</p>\r\n    <p>If manually migrating WebApps, you'll will first need to set up your Custom Module with all it's correspondign properties and settings in order to import those matching fields from BC.</p>\r\n    <p>You can also upload your BC module layouts into your Treepl CMS instance via FTP into the ‘Content / ModuleLayouts / &lt;Your Custom Module&gt;’ directory.</p>\r\n    <p>Refer to the Custom Module documentation for more details:</p>\r\n    <a class=\"btn small\" href=\"/documentation_group/content-modules/custom-modules-aka-webapps\" target=\"_blank\">Custom Modules (AKA WebApps)</a>\r\n    \r\n    \r\n    \r\n    <h2 id=\"secEcommerce\" class=\"circle-wrap\"><div class=\"circle\">241</div>eCommerce</h2>\r\n    <p>To get up and running with eCommerce in Treepl CMS, see the getting started article below.</p>\r\n    <div class=\"tab-content faqsOpenCloseHolder\">\r\n        <div class=\"faqs-open-close \">\r\n            <a class=\"opener\" href=\"#\"><i class=\"fas fa-angle-right\"></i>Getting Started with eCommerce</a>\r\n            <div class=\"slide js-slide-hidden\">\r\n                {% component source: \"Documentation Post\", layout: \"Body Detail\", filterBy: \"id\", filterValue: \"2522\", limit: \"1\", type: \"module\" %}\r\n            </div>\r\n        </div>\r\n    </div>\r\n    <h3 id=\"secPaymentGateways\">Payment Gateways</h3>\r\n    {% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secPaymentGateways\", parity: \"med\", effort: \"low\", time: \"low\", docs: \"low\", tool: \"na\" %}\r\n    <p>Since the Payment Gateway settings contain sensitive details you will need to manually set up your Payment Gateway in your new Treepl CMS site by going to ‘Settings’ > ‘Payment’.</p>\r\n\r\n<h3 id=\"secTaxCodes\">Tax Codes</h3>\r\n{% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secTaxCodes\", parity: \"high\", effort: \"low\", time: \"low\", docs: \"low\", tool: \"high\" %}\r\n<p>Tax Codes follow the same structure in Treepl CMS so you can simply enter all the same codes under ‘eCommerce’ > ‘Taxes’.</p>\r\n<p>If you are implementing all or many of the US State taxes you’ll be able to add these automatically when you click “Add New Tax” and select ‘United States’ as the assigned country.</p>\r\n<p>There is no manual export option from BC, nor is there an import option in Treepl CMS for this.</p>\r\n<p>You can also automatically migrate Tax Codes via the <a href=\"https://www.bcappstore.com/apps/bc-to-treepl\" target=\"_blank\">BC to Treepl CMS Migration App</a>.</p>\r\n<h3 id=\"secShippingOptions\">Shipping Options</h3>\r\n{% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secShippingOptions\", parity: \"med\", effort: \"low\", time: \"low\", docs: \"low\", tool: \"high\" %}\r\n<p>Shipping Codes follow a very similar format in Treepl CMS so you can simply enter all the same codes under ‘eCommerce’ > Shipping options.</p>\r\n<p>This is for user-defined shipping rules at least. Integration of shipping providers is still pending release.</p>\r\n<p>There is no manual export option from BC, nor is there an import option in Treepl CMS for this. </p>\r\n<p>You can also automatically migrate user-defined Shipping Options via the <a href=\"https://www.bcappstore.com/apps/bc-to-treepl\" target=\"_blank\">BC to Treepl CMS Migration App</a>.</p>\r\n<h3 id=\"secCatalogs\">Catalogs</h3>\r\n{% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secCatalogs\", parity: \"high\", effort: \"low\", time: \"low\", docs: \"low\", tool: \"high\" %}\r\n<p>You can import your Catalogues into Treepl CMS if you have a spreadsheet available, although there is no export feature in BC.</p>\r\n<p>Creating Catalogs manually can be done much the same way as adding any other module item in Treepl CMS via ‘eCommerce’ > ‘Catalogs’ and you will have similar options available.</p>\r\n<p>Options from BC that are not currently available are; Price visibility, XML feed, and Browse Panel settings.</p> \r\n<p>You can also automatically migrate Catalogs via the <a href=\"https://www.bcappstore.com/apps/bc-to-treepl\" target=\"_blank\">BC to Treepl CMS Migration App</a>.</p>\r\n<h3 id=\"secProducts\">Products</h3>\r\n{% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secProducts\", parity: \"high\", effort: \"low\", time: \"low\", docs: \"low\", tool: \"high\" %}\r\n<p>You can import your Products into Treepl CMS with an export from BC, or if you have a spreadsheet available (after formatting to match Treepl CMS import file).</p>\r\n<p>Creating Products manually can be done much the same way as adding any other module item in Treepl CMS via ‘eCommerce’ > ‘Products’ and you will have similar options available.</p>\r\n<p>Additionally, you can add a variety of custom fields to customise your products module (for example, adding additional image fields would be how you’d add the “Poplets” feature from BC).</p>\r\n<p>Options from BC that are not currently available are; Downloadable Product, Capture Details, Commission Payable.</p>\r\n<p>You can also automatically migrate Products via the <a href=\"https://www.bcappstore.com/apps/bc-to-treepl\" target=\"_blank\">BC to Treepl CMS Migration App</a>.</p>\r\n<h3 id=\"secDiscountCodes\">Discount Codes</h3>\r\n{% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secDiscountCodes\", parity: \"high\", effort: \"low\", time: \"low\", docs: \"low\", tool: \"high\" %}\r\n<p>Discount Codes follow the same structure in Treepl CMS so you can simply enter all the same codes under ‘eCommerce’ > ‘Discount codes’.</p>\r\n<p>There is no manual export option from BC, nor is there an import option in Treepl CMS for this.</p>\r\n<p>You can also automatically migrate Discount Codes via the <a href=\"https://www.bcappstore.com/apps/bc-to-treepl\" target=\"_blank\">BC to Treepl CMS Migration App</a>.</p>\r\n<h3 id=\"secGiftVouchers\">Gift Vouchers</h3>\r\n{% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secGiftVouchers\", parity: \"high\", effort: \"low\", time: \"low\", docs: \"low\", tool: \"high\" %}\r\n<p>Gift Vouchers follow the same structure in Treepl CMS so you can simply enter all the same vouchers under ‘eCommerce’ > ‘Gift vouchers’.</p>\r\n<p>There is no manual export option from BC, nor is there an import option in Treepl CMS for this.</p>\r\n<p>You can also automatically migrate Gift Vouchers via the <a href=\"https://www.bcappstore.com/apps/bc-to-treepl\" target=\"_blank\">BC to Treepl CMS Migration App</a>.</p>\r\n\r\n\r\n<p class=\"notice-note\">eCommerce features not yet available include; cart lifetime setting, XML product feed, digital/downloadable products, integrated shipping providers.</p>\r\n    \r\n    \r\n    \r\n    \r\n    \r\n    \r\n    \r\n    \r\n    \r\n    \r\n    \r\n    \r\n    \r\n    \r\n    <h2 id=\"secRevisitSiteTemplates\" class=\"circle-wrap\"><div class=\"circle\">242</div>Revisit Site Templates</h2>\r\n    {% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secRevisitSiteTemplates\", parity: \"high\", effort: \"med\", time: \"med\", docs: \"med\", tool: \"high\" %}\r\n    <p>Now let's review the Site Templates markup and replace BC modules and Liquid with Treepl CMS methods.</p>\r\n    <p>The <a href=\"https://www.bcappstore.com/apps/bc-to-treepl\" target=\"_blank\">BC to Treepl CMS  Migration App</a> can be used to automate much of this process. However, it's recommended to check through the markup for any exceptions.</p>\r\n    <p>Some common examples are:</p>\r\n    <ul>\r\n        <li>Dynamic HEAD elements</li>\r\n        <li>pagecontent tag</li>\r\n        <li>menus</li>\r\n        <li>content holder</li>\r\n        <li>includes</li>\r\n        <li>modules: BC's module syntax (old and new) converted to Treepl CMS 'Component' syntax</li>\r\n    </ul>\r\n    <p>Review the relevant Component types and all their properties and syntax:</p>\r\n    <a class=\"btn small\" href=\"/documentation_group/component-types/\" target=\"_blank\">All Component Types</a>\r\n    \r\n    \r\n    <h2 id=\"secRevisitSitePages\" class=\"circle-wrap\"><div class=\"circle\">243</div>Revisit Site Pages</h2>\r\n    {% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secRevisitSitePages\", parity: \"high\", effort: \"med\", time: \"med\", docs: \"med\", tool: \"high\" %}\r\n    <p>Like above, let's review the Site Pages markup and replace BC modules and Liquid with Treepl CMS methods.</p>\r\n    <p>Usign the <a href=\"https://www.bcappstore.com/apps/bc-to-treepl\" target=\"_blank\">BC to Treepl CMS  Migration App</a> can automate many BC to Treepl CMS Liquid and tag conversions.</p>\r\n    <p>For manual migrations, some common examples are:</p>\r\n    <ul>\r\n        <li>menus</li>\r\n        <li>content holder</li>\r\n        <li>includes</li>\r\n        <li>modules: BC's module syntax (old and new) converted to Treepl CMS 'Component' syntax</li>\r\n    </ul>\r\n    <p>Review the relevant Component types and all their properties and syntax:</p>\r\n    <a class=\"btn small\" href=\"/documentation_group/component-types/\" target=\"_blank\">All Component Types</a>\r\n    \r\n    \r\n    <h2 id=\"secSetupSEOandSitemap\" class=\"circle-wrap\"><div class=\"circle\">244</div>Setup SEO & Sitemap</h2>\r\n    {% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secSetupSEOandSitemap\", parity: \"med\", effort: \"low\", time: \"low\", docs: \"med\", tool: \"low\" %}\r\n    <p>Add primary domain, language, country, and configure sitemap automation (and possibly enable all items for search engine visibility).</p>\r\n    <p>For more information about SEO settings see the documentation article.</p>\r\n    <div class=\"tab-content faqsOpenCloseHolder\">\r\n        <div class=\"faqs-open-close \">\r\n            <a class=\"opener\" href=\"#\"><i class=\"fas fa-angle-right\"></i>SEO Documentation</a>\r\n            <div class=\"slide js-slide-hidden\">\r\n                {% component source: \"Documentation Post\", layout: \"Body Detail\", filterBy: \"id\", filterValue: \"2212\", limit: \"1\", type: \"module\" %}\r\n            </div>\r\n        </div>\r\n    </div>\r\n    <p>On initial setup, it's recommended to manually generate the sitemap to review the items listed - ensuring all your relevant site items are configured for search engine visibility.</p>\r\n    \r\n    \r\n    <h2 id=\"secChecksAndTroubleshooting\" class=\"circle-wrap\"><div class=\"circle\">245</div>Checks and Troubleshooting</h2>\r\n    {% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secChecksAndTroubleshooting\", parity: \"na\", effort: \"med\", time: \"med\", docs: \"med\", tool: \"na\" %}\r\n\r\n    <p>Run back through the steps above as a quick checklist to review all your site items.</p>\r\n    <p>Comparing your new Treepl CMS site front-end alongside the BC site to check for consistancy.</p>\r\n    <p>Note any URL differences due to page/directory naming or restructuring and ensure URL Redirect are setup for these.</p>\r\n</div>\r\n",
  "ItemTags": [
  "Migrations"
],
  "Author_Name": "",
  "Author_Url": "",
  "Author": "",
  "SEOTitle": "",
  "MetaTitle": "",
  "MetaDescription": "",
  "ShowPageForSearchEngine": true,
  "CanonicalLink": "",
  "EnableAMP": false,
  "AMPContent": "",
  "CodeEditor": true,
  "ExternalId": 0,
  "SocialMetaTags": "",
  "OpenGraphProperties": "",
  "DisableForSiteSearch": false,
  "SeoPriority": "",
  "CreatedByMemberId": 0,
  "ItemCategories": "",
  "ItemCategoryIdList": "",
  "SKUCode": "",
  "SiteSearchKeywords": "",
  "Active": true,
  "IgnoreUpdates": false,
  "UpdateNotes": "",
  "UpdatesLog": "<ul>\n    <li>Added note about new BC .zip Archive functionality</li>\n    <li>Updated BC to Treepl CMS Migration App compatibility - as per v9.0.4 (Catalogs, Discount codes, Gift vouchers, Products, Shipping options, Tax codes)</li>\n</ul>",
  "ExternalResources": "",
  "AdditionalRelatedArticle_Name": "",
  "AdditionalRelatedArticle_Url": "",
  "AdditionalRelatedArticle": "",
  "AdditionalRelatedArticle2_Name": "",
  "AdditionalRelatedArticle2_Url": "",
  "AdditionalRelatedArticle2": "",
  "Authors": "2418",
  "Module_ID": 1870,
  "Module_Alias": "DocumentationPost",
  "ParentName": "BC Migration Guides",
  "ParentUrl": "/bc-migration-guides",
  "TemplateName": "Docs Template",
  "IsHome": false
}
}
}

Accessing the Data

This data is accessible in two main ways:

1. Using Liquid in the specified Layout via the this object.

{{this['name']}}

2. Directly on the Page or Template via a Liquid Collection if collectionVariable was added to the Component tag.

An example using collectionVariable with value "allBanners" to list all "Banner Groups" across the site:

Here we suppress any Layout from rendering by setting layout: "" as an empty attribute.

{% component type: "module", source: "Banner Group", layout: "", collectionVariable: "allBanners" %}

Looping through the collection to render all the item names in a list, giving us:

  • DEMO Custom Banner
  • DEMO Standard Banner

The code:

<ul>
    {% for i in allBanners.items %}
        <li>{{i['name']}}</li>
    {% endfor %}
</ul>

Accessing a specific item within the collection. In this case the second item (zero based index), which in our example would render the value DEMO Standard Banner

{{allBanners.items[1]['name']}}

Counter

Along with the data output above, there is also a special liquid tag available {{counter}} which increments for each item. This tag is only available within Layouts when object: "item" is used in the Component tag.

Banner Item module

View full article

This module component fetches data relating to Banner items.

{% component type: "module", source: "Banner", layout: "List" %}

Parameters and Options

Parameter Values Required Description
type module (default)
module_of_member

This is the name of the entity that needs to be used for the component retrieving function.

module is the standard retrieving function to retrieve all items.

module_of_member retrieves only those items "Added by" the currently logged in user (identified by the CreatedByMemberId property in the module items Liquid data).

The "Added by" System Property will only be available where the modules settings have "Allow Add New Items" turned on under the "Site User Permissions".

source Banner (default) The entity/alias name or ID that the data is to be sourced from.
layout List (default)
<Your Layout name>

The layout name you want to use for rendering the component. The layout name is referenced from the available Layouts of the source specified.

While this parameter is required to render your Layout markup, if the parameter is blank, has an incorrectly referenced Layout, or is removed altogether then the component will still output the modules item data to a Liquid collection which can be accessed via the collectionVariable parameter.

filterBy id
parentid
name
weighting
url
urlslug
releasedate
expirydate
LastUpdatedDate
Author
ItemCategories
ItemTags
<CustomPropertyName>
...and any other top level properties available for the module

The name of the property to filter by. If empty or not present, no filtering will be used.

Remove spaces from custom property names here.

filterValue <your value>
Your specific value to filter by, eg: name, id, number, date, etc.
Liquid variables can be used here also. If present but no value set, no items will be returned.
sortBy id
parentid
name
weighting
url
urlslug
releasedate
expirydate
LastUpdatedDate
Author
ItemCategories
ItemTags
<CustomPropertyName>
...and any other top level properties available for the module

The name of the property to sort by. If empty or not present, alpha/numeric sorting will be used.

Remove spaces from custom property names here.

sortOrder ASC (default)
DESC

ASC sorts the items in ascending order while DESC sorts in descending order (based on alpha/numeric or date sorting).
If empty or not present, alpha/numeric sorting will be used.
random false (default)
true

Displays the available items in a random order.

If used in conjunction with sortBy, that sorting criteria will be applied to the randomly retrieved results. So, if retrieving all, or most, of the items they will not appear to be random since they will then be sorted back into a logical order. To overcome this, set the sortBy parameter to 'enabled' (or another unused property) as this will not provide any viable sorting criteria* and the items will not be sorted from their initial random order.
* Unless there are weighted items, which will always override the random option.

limit 10 (default)
<number>

The maximum number of items returned. If displayPagination is enabled this determines the maximum number of items per page.
enablePagination true (default)
false

Enables/disables pagination for the component.

This is useful for avoiding pagniation affects for a specific component when multiple components of the same module are output on the same page and do use pagination.

displayPagination false (default)
true

Displays pagination if there are more items available than the limit set.
emptyMessage <Your custom message>
Custom content that is rendered if no items are returned by the Component. The default is no content.
Liquid variables are supported here, although Liquid logic tags and HTML are not.

If using Liquid variables with filters added, be sure to change any double quotes to single quotes. For eg:
emptyMessage: “{{ myVariable | prepend: 'Error: ' }}”

To use HTML in your empty message, first capture it using a Liquid capture, then insert the capture variable into the emptyMessage parameter.

object item (default)
collection

Determines the method for Liquid rendering.
item returns each item iteratively, one after another, for output (generally, output to a container element with no need for looping through the data).
collection returns all items as one collection for output (your container element and looping logic would be handled in the Components Layout).
collectionVariable <yourLiquidVariableName>
Assigns the data to a Liquid collection enabling further access to the data on the Page or Template using Liquid.

Your collectionVariable value must only contain English letters, numbers or underscores. Spaces or special characters are not supported.

isSearchResult false (default)
true

Allows search parameters in the URL to override the components output. Therefore, this parameter can be used to output module specific search results from a submitted search form.

Likewise, Tag, Category, and Archive components can be used in conjunction with this parameter for filtering the module's output.

URL search parameters will override any corresponding parameters in the component. If no search parameters are present in the URL, isSearchResult will be ignored.

Any value other than true, (including an empty value), will disable the search functionality and the component will output its regular data.

searchScope eg:
{'prop_ParentId':'1234', 'prop_ReleaseDate_Min':'2018-07-01', 'prop_ReleaseDate_Max':'2018-07-31', 'prop_KeyWords':'Your Keywords', 'prop_ItemTags':['tag1','tag2'], 'page':'2'}

Allows a search on the module without search parameters needed in the URL. Instead, search parameters are added to the value of this parameter. Therefore, this parameter can be used to output module specific search results from hard-coded (or Liquid) values without the use of a search form.

Added search parameters will override any corresponding parameters otherwise configured on the component. If no search parameters are present, searchScope will be ignored.

This value supports Liquid and can therefore be constructed with Liquid data/variables.

<customParameter> <your custom value>
You can add your own additional parameters (name/value pairs) to the Component tag. These will be passed to the Components Layout (and the collectionVariable if used) for use via Liquid.

Your <customParameter> name must only contain English letters, numbers or underscores. Spaces or special characters are not supported.

You can use HTML as the value here, just be sure to change any double quotes in your HTML to single quotes.

Liquid Output

The below example has 2 sample items but is otherwise the default structure you will get from this Component.

{
  "Pagination": {
  "CurrentPage": 1,
  "ItemsPerPage": 10,
  "NumberOfPages": 1,
  "TotalItemsCount": 2
},
  "Items": [
  {
    "Id": 2278,
    "Url": "/_banner_group/demo-standard-banner/demo-html-banner-item",
    "ParentId": 2277,
    "LastUpdatedDate": "2018-11-25T22:32:08",
    "Name": "DEMO HTML banner item",
    "UrlSlug": "demo-html-banner-item",
    "Enabled": true,
    "ReleaseDate": "2018-11-25T18:00:00",
    "ExpiryDate": "2099-12-11T07:00:00",
    "Weighting": 0,
    "Description": "",
    "ItemTags": null,
    "Author_Name": null,
    "Author_Url": null,
    "Author": "",
    "SEOTitle": "",
    "MetaTitle": "",
    "MetaDescription": "",
    "ShowPageForSearchEngine": false,
    "CanonicalLink": "",
    "EnableAMP": false,
    "AMPContent": "",
    "CodeEditor": false,
    "ExternalId": 0,
    "SocialMetaTags": "",
    "OpenGraphProperties": "",
    "DisableForSiteSearch": false,
    "SeoPriority": "",
    "CreatedByMemberId": 0,
    "ItemCategories": null,
    "ItemCategoryIdList": null,
    "SKUCode": "",
    "SiteSearchKeywords": "",
    "Module_ID": 1552,
    "Module_Alias": "Banner"
  },
  {
    "Id": 2294,
    "Url": "/_banner_group/demo-custom-banner/sample-banner-item",
    "ParentId": 2293,
    "LastUpdatedDate": "2018-12-15T09:55:14",
    "Name": "Sample Banner Item",
    "UrlSlug": "sample-banner-item",
    "Enabled": true,
    "ReleaseDate": "2018-12-15T18:00:00",
    "ExpiryDate": "2099-12-11T07:00:00",
    "Weighting": 0,
    "Description": "",
    "ItemTags": null,
    "Author_Name": null,
    "Author_Url": null,
    "Author": "",
    "SEOTitle": "",
    "MetaTitle": "",
    "MetaDescription": "",
    "ShowPageForSearchEngine": false,
    "CanonicalLink": "",
    "EnableAMP": false,
    "AMPContent": "",
    "CodeEditor": false,
    "ExternalId": 0,
    "SocialMetaTags": "",
    "OpenGraphProperties": "",
    "DisableForSiteSearch": false,
    "SeoPriority": "",
    "CreatedByMemberId": 0,
    "ItemCategories": null,
    "ItemCategoryIdList": null,
    "SKUCode": "",
    "SiteSearchKeywords": "",
    "Module_ID": 1552,
    "Module_Alias": "Banner"
  }
],
  "Params": {},
  "Parent": {
  "Id": 2147,
  "Url": "/component-types/module-banner",
  "ParentId": 2127,
  "LastUpdatedDate": "2020-05-20T00:49:12",
  "Name": "module (Banner)",
  "UrlSlug": "module-banner",
  "Enabled": true,
  "ReleaseDate": "2018-09-05T00:00:00",
  "ExpiryDate": "2099-12-09T00:00:00",
  "Weighting": 959,
  "Description": "<p>This module component fetches data relating to Banner items.</p>\r\n\r\n{% component type: \"snippet\", alias: \"code_block_processor\", data: \"{{data}}\", lang: \"liquid\" %}\r\n\r\n\r\n{% component type: \"snippet\", alias: \"section_parameters\" %}\r\n\r\n{% component type: \"snippet\", alias: \"param_table_head\" %}\r\n    {% component type: \"snippet\", alias: \"param_type\", required: \"true\", values: \"module <em>(default)</em>,module_of_member\" %}\r\n    {% component type: \"snippet\", alias: \"param_source\", required: \"true\", values: \"Banner <em>(default)</em>\" %}\r\n    {% component type: \"snippet\", alias: \"param_layout\", required: \"true\", values: \"List <em>(default)</em><br>&lt;Your Layout name&gt;\" %}\r\n    {% component type: \"snippet\", alias: \"param_filterby\" %}\r\n    {% component type: \"snippet\", alias: \"param_filtervalue\" %}\r\n    {% component type: \"snippet\", alias: \"param_sortby\" %}\r\n    {% component type: \"snippet\", alias: \"param_sortorder\" %}\r\n    {% component type: \"snippet\", alias: \"param_random\" %}\r\n    {% component type: \"snippet\", alias: \"param_limit\" %}\r\n    {% component type: \"snippet\", alias: \"param_enablepagination\" %}\r\n    {% component type: \"snippet\", alias: \"param_displaypagination\" %}\r\n    {% component type: \"snippet\", alias: \"param_emptymessage\" %}\r\n    {% component type: \"snippet\", alias: \"param_object\" %}\r\n    {% component type: \"snippet\", alias: \"param_collectionvariable\" %}\r\n    {% component type: \"snippet\", alias: \"param_issearchresult\" %}\r\n    {% component type: \"snippet\", alias: \"param_searchscope\" %}\r\n    {% component type: \"snippet\", alias: \"param_customparameter\" %}\r\n{% component type: \"snippet\", alias: \"param_table_foot\" %}\r\n\r\n\r\n{% component type: \"snippet\", alias: \"section_output\" %}\r\n\r\n{% component source: \"Banner\", layout: "", type: \"module\", collectionVariable: \"allBanners\" %}\r\n<p>The below example has 2 sample <code>items</code> but is otherwise the default structure you will get from this Component.</p>\r\n{% component type: \"snippet\", alias: \"code_block_processor\", data: \"{{allBanners}}\", lang: \"json\" %}\r\n\r\n{% component type: \"snippet\", alias: \"section_accessing_data\" %}\r\n\r\n<p>This data is accessible in two main ways:</p>\r\n\r\n<p>1. Using Liquid in the specified Layout via the <code>this</code> object.</p>\r\n\r\n{% component type: \"snippet\", alias: \"code_block_processor\", data: \"{{data}}\", lang: \"liquid\" %}\r\n\r\n<p>2. Directly on the Page or Template via a Liquid Collection if <code>collectionVariable</code> was added to the Component tag.</p>\r\n\r\n<p>An example using <code>collectionVariable</code> with value \"allBanners\" to list all \"Banner items\" across the site:</p>\r\n<p class=\"notice-note\">Here we suppress any Layout from rendering by setting <code>layout: \"\"</code> as an empty attribute.</p>\r\n\r\n{% component type: \"snippet\", alias: \"code_block_processor\", data: \"{{data}}\", lang: \"liquid\" %}\r\n\r\n<p><em>Looping through the collection to render all the item names in a list, giving us:</em></p>\r\n\r\n<ul>\r\n    \r\n        <li>DEMO HTML banner item</li>\r\n    \r\n        <li>Sample Banner Item</li>\r\n    \r\n</ul>\r\n<br>\r\n<p><em>The code:</em></p>\r\n\r\n{% component type: \"snippet\", alias: \"code_block_processor\", data: \"{{data}}\", lang: \"liquid\" %}\r\n\r\n<p><em>Accessing a specific item within the collection. In this case the second item (zero based index), which in our example would render the value <code>Sample Banner Item</code></em></p>\r\n\r\n{% component type: \"snippet\", alias: \"code_block_processor\", data: \"{{data}}\", lang: \"liquid\" %}\r\n\r\n<h2 id=\"secListFiltered\">List Banners items from a specific Banner Group</h2>\r\n<p>If you have more than one Banner Group on your site the above examples will list Banners from all Banner Groups as one single collection. However, you may also want to list all Banner items from only the Banner Group they belong to (their \"parent\" Banner Group).</p>\r\n<p>To do this we add the <code>filterBy</code> and <code>filterValue</code> attributes to the Component tag using the Banner Group's ID to get the relevant items.</p>\r\n<p class=\"notice-tip\">You can use the Component Manager to correctly configure the Component tag and ID value. Alternatively, to obtain the Banner Group's ID manually from the admin, go to a Banner's list view (where you can see all of the Banner items) and note the number in the browser address bar shown after the <code>parentID=</code> parameter.</p>\r\n\r\n{% component type: \"snippet\", alias: \"section_counter\" %}\r\n",
  "ItemTags": [
  "Banners"
],
  "Author_Name": "",
  "Author_Url": "",
  "Author": "",
  "SEOTitle": "",
  "MetaTitle": "",
  "MetaDescription": "",
  "ShowPageForSearchEngine": true,
  "CanonicalLink": "",
  "EnableAMP": false,
  "AMPContent": "",
  "CodeEditor": true,
  "ExternalId": 0,
  "SocialMetaTags": "",
  "OpenGraphProperties": "",
  "DisableForSiteSearch": false,
  "SeoPriority": "",
  "CreatedByMemberId": 0,
  "ItemCategories": "",
  "ItemCategoryIdList": "",
  "SKUCode": "",
  "SiteSearchKeywords": "",
  "Active": true,
  "IgnoreUpdates": false,
  "UpdateNotes": "'module_of_member' parameter details added.",
  "UpdatesLog": "",
  "ExternalResources": "",
  "AdditionalRelatedArticle_Name": "",
  "AdditionalRelatedArticle_Url": "",
  "AdditionalRelatedArticle": "",
  "AdditionalRelatedArticle2_Name": "",
  "AdditionalRelatedArticle2_Url": "",
  "AdditionalRelatedArticle2": "",
  "Authors": "2418",
  "Module_ID": 1870,
  "Module_Alias": "DocumentationPost",
  "Pagination": {
  "CurrentPage": 1,
  "ItemsPerPage": 1,
  "NumberOfPages": 1,
  "TotalItemsCount": 1
},
  "Params": {},
  "Parent": {
  "Id": 2359,
  "Url": "/bc-migration-guides/ultimate-migration-guide-step-by-step",
  "ParentId": 2355,
  "LastUpdatedDate": "2020-09-09T19:27:22",
  "Name": "Ultimate Migration Guide (Step by Step)",
  "UrlSlug": "ultimate-migration-guide-step-by-step",
  "Enabled": true,
  "ReleaseDate": "2019-02-17T00:00:00",
  "ExpiryDate": "2099-11-30T00:00:00",
  "Weighting": 800,
  "Description": "<div class=\"migration-guide\">\r\n    <div style=\"display:none;\">246</div>\r\n    <p>So you’ve decided to move your site across to Treepl CMS. Good choice.</p>\r\n    <p>And you’ve decided to do it yourself. Good for you! You’re probably going to be doing this quite a few times so let’s make it fun…</p>\r\n    <p>Set aside a good chunk of uninterrupted time, crank up your favourite tunes and grab a strong drink. It’s migration time.</p>\r\n    <p class=\"notice-note\">The below sections are ordered to try and minimise the amount of back and forth when creating the various components of a site.If a section doesn’t apply to your site, feel free to skip right over it.</p>\r\n    <p class=\"notice-note\">Migration tools are in development that will progressively make the below steps easier. These sections will be updated as those tools are released.</p>\r\n    <p class=\"notice-tip\">The BC to Treepl CMS Migration App now converts BC Liquid tags, ie: <code>{module_…}</code> and <code>{tag_…}</code> to Treepl CMS Liquid tags! For more info on this, view the Forum discussion <a href=\"https://forum.treepl.co/t/attention-to-bc-to-treepl-app-users/497\" target=\"_blank\">here</a>.</p>\r\n    <h2 id=\"secBCSiteFTPDownload\" class=\"circle-wrap\"><div class=\"circle\">247</div>Download the BC Site via FTP</h2>\r\n    {% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secBCSiteFTPDownload\", parity: \"high\", effort: \"low\", time: \"low\", docs: \"high\", tool: \"high\" %}\r\n    \r\n    <p>Download all files available via FTP from your BC site, if for no other reason than to just have a backup. However, these files can be referenced in the following steps as well.</p>\r\n    <p>You can also automatically migrate all files in the BC file system directly to your Treepl CMS site via the <a href=\"https://www.bcappstore.com/apps/bc-to-treepl\" target=\"_blank\">BC to Treepl CMS  Migration App</a>.</p>\r\n    <p>There is also now the ability to download a .zip archive of your BC site, including data from the following modules:</p>\r\n    <ul>\r\n    \t<li>Pages</li>\r\n        <li>Page Templates</li>\r\n        <li>Module Layouts</li>\r\n        <li>Static files</li>\r\n        <li>Apps</li>\r\n        <li>Content Holders</li>\r\n        <li>System Pages</li>\r\n        <li>Email Templates</li>\r\n        <li>Web Apps</li>\r\n    </ul>\r\n    <p><b>Further Resources:</b></p>\r\n    <a class=\"btn small\" href=\"https://docs.worldsecuresystems.com/user-manual/site-design/bc-and-dreamweaver/connect-to-your-site-using-dreamweaver\" target=\"_blank\">BC FTP connection details</a>\r\n    <a class=\"btn small\" href=\"https://docs.worldsecuresystems.com/Partners/downloading-your-website#Downloadingyoursitearchive\" target=\"_blank\">BC .zip archive</a>\r\n    \r\n    <h2 id=\"secBCSiteDeepClean\" class=\"circle-wrap\"><div class=\"circle\">248</div>Deep-Clean the BC Site (Optional)</h2>\r\n    {% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secBCSiteDeepClean\", parity: \"na\", effort: \"med\", time: \"med\", docs: \"na\", tool: \"na\" %}\r\n    <p>This step is optional, but you may want to take the opportunity to clear out the BC site of old pages, templates, files, etc. Particularly if it’s an old site, there can be a lot of junk floating around. And this can just get in your way during migration and could cause unnecessary work. However, be very careful not to remove assets that may still be in use somewhere (hence the backup in the previous step).</p>\r\n    <p>Once you’ve cleaned up, repeat the FTP download step to collect a new, clean, set of files.</p>\r\n    \r\n    <h2 id=\"secTreeplCMSInstance\" class=\"circle-wrap\"><div class=\"circle\">249</div>Setup Treepl CMS Site Instance</h2>\r\n    {% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secTreeplCMSInstance\", parity: \"high\", effort: \"low\", time: \"low\", docs: \"high\", tool: \"na\" %}\r\n    <p>So you can start work with the Treepl CMS platform you'll need to set up a Trial Site. Log into your Treepl Portal (portal.treepl.co) and click the \"Create New Site\" button.</p>\r\n    <div class=\"tab-content faqsOpenCloseHolder\">\r\n    <div class=\"faqs-open-close \">\r\n        <a class=\"opener\" href=\"#\"><i class=\"fas fa-angle-right\"></i>Trial Site Documentation</a>\r\n        <div class=\"slide js-slide-hidden\">\r\n            {% component source: \"Documentation Post\", layout: \"Body Detail\", filterBy: \"id\", filterValue: \"2151\", limit: \"1\", type: \"module\" %}\r\n        </div>\r\n    </div>\r\n    </div>\r\n    \r\n    <h2 id=\"secHostedEmailTransfer\" class=\"circle-wrap\"><div class=\"circle\">250</div>Start BC Hosted Email Transfer Process (If Applicable)</h2>\r\n    {% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secHostedEmailTransfer\", parity: \"na\", effort: \"low\", time: \"med\", docs: \"high\", tool: \"low\" %}\r\n    <p>If your BC site has BC hosted emails, they can be transferred directly to Treepl CMS after following the below steps.</p>\r\n    <div class=\"tab-content faqsOpenCloseHolder\">\r\n    <div class=\"faqs-open-close \">\r\n        <a class=\"opener\" href=\"#\"><i class=\"fas fa-angle-right\"></i>Transfer of BC Hosted Email Accounts</a>\r\n        <div class=\"slide js-slide-hidden\">\r\n            {% component source: \"Documentation Post\", layout: \"Body Detail\", filterBy: \"id\", filterValue: \"2185\", limit: \"1\", type: \"module\" %}\r\n        </div>\r\n    </div>\r\n    </div>\r\n    \r\n    <h2 id=\"secUploadSiteAssets\" class=\"circle-wrap\"><div class=\"circle\">251</div>Upload Site Assets</h2>\r\n    {% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secUploadSiteAssets\", parity: \"high\", effort: \"low\", time: \"low\", docs: \"high\", tool: \"high\" %}\r\n    <p>Now we'll want to connect to our new Treepl CMS instance via FTP so we can upload some of our BC assets.</p>\r\n    <p>If working manually, we'll probably only want to upload assets relating to the front-end site, such as images, CSS, JS, documents, etc. We don't want to move over pages, templates or other layout files just yet.</p>\r\n    <p>Below are instructions for getting connected via FTP client.</p>\r\n    <div class=\"tab-content faqsOpenCloseHolder\">\r\n        <div class=\"faqs-open-close \">\r\n            <a class=\"opener\" href=\"#\"><i class=\"fas fa-angle-right\"></i>FTP Access Documentation</a>\r\n            <div class=\"slide js-slide-hidden\">\r\n                {% component source: \"Documentation Post\", layout: \"Body Detail\", filterBy: \"id\", filterValue: \"1936\", limit: \"1\", type: \"module\" %}\r\n            </div>\r\n        </div>\r\n    </div>\r\n    <p>Alternatively, you can automatically migrate all files in the BC file system directly to your Treepl CMS site via the <a href=\"https://www.bcappstore.com/apps/bc-to-treepl\" target=\"_blank\">BC to Treepl CMS  Migration App</a>.</p>\r\n    \r\n    <h2 id=\"secSetupPlaceholderTemplates\" class=\"circle-wrap\"><div class=\"circle\">252</div>Upload or Setup Placeholder Templates</h2>\r\n    {% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secSetupPlaceholderTemplates\", parity: \"high\", effort: \"low\", time: \"low\", docs: \"med\", tool: \"high\" %}\r\n    <p>You can manually upload your BC page templates into your Treepl CMS instance via FTP into the ‘Content / ContentTemplates’ directory.</p>\r\n    <p>Alternatively the <a href=\"https://www.bcappstore.com/apps/bc-to-treepl\" target=\"_blank\">BC to Treepl CMS  Migration App</a> can be used to automate this process.</p>\r\n    <p>If manually migrating templates, don’t worry about editing the template code/markup at this stage. We just want to get them loaded in Treepl CMS so we can reference it in the following steps. We’ll work on the template code later.</p>\r\n    \r\n    <p>If not using FTP, to manually create a content template, go to 'Content' &gt; 'Content Templates'.</p>\r\n    <p>Click ‘Add New Template’ button.</p>\r\n    <p>Just complete ‘Name’ and choose whether it's the default template. Leave the content as is for now.</p>\r\n    <p>Repeat this for all required templates.</p>\r\n    \r\n    <div class=\"tab-content faqsOpenCloseHolder\">\r\n    <div class=\"faqs-open-close \">\r\n        <a class=\"opener\" href=\"#\"><i class=\"fas fa-angle-right\"></i>Content Templates Documentation</a>\r\n        <div class=\"slide js-slide-hidden\">\r\n            {% component source: \"Documentation Post\", layout: \"Body Detail\", filterBy: \"id\", filterValue: \"2132\", limit: \"1\", type: \"module\" %}\r\n        </div>\r\n    </div>\r\n    </div>\r\n    \r\n    <h2 id=\"secSetupSitePages\" class=\"circle-wrap\"><div class=\"circle\">253</div>Upload or Setup Site Pages</h2>\r\n    {% component type: \"snippet\", alias: \"bc_migration_guide_meter\", id: \"secSetupSitePages\", parity: \"high\", effort: \"low\", time: \"low\", docs: \"med\", tool: \"high\" %}\r\n    <p>Upload your BC pages into your Treepl CMS instance via FTP into the ‘Content / Pages’ directory.</p>\r\n    <p>Alternatively the <a href=\"https://www.bcappstore.com/apps/bc-to-treepl\" target=\"_blank\">BC to Treepl CMS  Migration App</a> can be used to automate this process.</p>\r\n    <p>If manually migration pages, there will still be several properties you will want to set for each page, such as a more relevant system name, assigning it to a template, SEO and meta details, etc. and we’ll likely need to review the page content for any system tags or Liquid\r\n        that needs replacing. However, all in good time and we’ll take those actions in a later step. For now