Introduction

Let's talk about structure first. What happens when you request a URL? Look at the below structure to understand it better. Any domain is a site. In our example, www.hashtagcms.org is a site. A site must have a context and domain. Context is nothing but an identifier to use in API. Let’s see a flow in the below image.

Language

Each sites needs at least one language. Default language is English. You can create multiple languages from the admin panel. In below URL “en” is a language.

https://www.hashtagcms.org/en/web/home

Tenant

Each sites needs their own tenants. Such as;

  • Web
  • Android
  • iOS
  • PWA
  • AMP

You can use/create as many as you want from the admin panel. In below URL “web” is a tenant.

https://www.hashtagcms.org/en/web/home

Default language and tenant is en and web respectively.

Category

For accessing a link we need a URL. We call it a category. In below URL “home” is category. Each category needs a theme.

https://www.hashtagcms.org/en/web/home

Theme

Theme is a combination of basic HTML and placeholder for the module. Placeholder is actually a hook. Multiple hooks can be added in a theme based on requirement or layout of the page. See below:

                
<div>
    <header class="container-fluid">
        %{cms.hook.HOOK_HEADER}%
    </header>
    <section>
        %{cms.hook.HOOK_HERO_SECTION}%
    </section>
    <footer class="footer">
        %{cms.hook.HOOK_FOOTER }%
    </footer>
</div>

            
You must have to create hook before using it. Some hooks are already created. You may explore in admin panel.

Hooks

Hook is a placeholder to have modules. Hook identifier is like below. HOOK_HEADER is an alias of a hook. You can create hook from the admin panel.

%{cms.hook.HOOK_HEADER}%

Modules

Module is responsible for populate the data. We have following type of modules. You can create frontend module from the admin panel. There are 6 types of frontend modules.

  • Static: Fetch data from CMS table (content) ie. Content Module. View is not required.
  • Query: Execute query from any table and database. (if database is different you need to add jdbc name in desc field.)
  • Service: Fetch data from any URL. Return type will be json or text/html (if you need text/html; append 'resultType=html' in your service url)
  • Custom: Don't do anything special. Just load the module.
  • QueryService: It executes a query and pass those data to service URL. You can also get the data from the both.
  • UrlService: You can invoke any service along with HTTP request dynamic parameters.

Page rendered in - 0.062902927398682 Powered by HashtagCms.org