Main platform modules. Data types and pages.

Atrás

Main Modules

Data Types / Pages

📄

Pages

System Block

Page — a block located in the center of the site, in the content area, which can contain any HTML data (HTML, XHTML, JAVASCRIPT, CSS or others).



Ajax page content loading

Ajax page content loading



A link with class ajax_load_page will open Ajax content inside the block specified in the data-content-block attribute.
The path to the page being loaded is set in the href parameter.
The page path can be relative or full, with http.
You can also use your own scripts by passing a GET or POST parameter p, with the name
(or full address) of the page, to /ajax.php

In addition, direct requests without using Ajax are also possible.
For example, to load data in an iframe. The path is the same as when using Ajax.

Script for loading data in a popup window:
Popup script with Ajax content loading


📰

Article Catalog

Content Module

Article Catalog — a block similar to pages, which additionally has brief descriptions displayed as a list with a link to view the full text, as well as the ability to split lists by categories.

Article lists can be displayed not only within categories, but you can also generate your own lists.
Ajax article content loading

Ajax article content loading



A link with class ajax_load_blog will open Ajax content inside the block specified in the data-content-block attribute.
The path to the page being loaded is set in the href parameter.
The page path can be relative or full, with http.
You can also use your own scripts by passing a GET or POST parameter blog_cat_p, with the full address
of the article, to /ajax.php

In addition, direct requests without using Ajax are also possible.
For example, to load data in an iframe. The path is the same as when using Ajax.

Script for loading data in a popup window:
Popup script with Ajax content loading

Example Ajax script for loading a custom article list

Example Ajax article loading in JSON format


📐

Block / Menu

Layout Module

Block/Menu — a universal container for any HTML code and system functions (cart, filter, bestsellers). Allows you to form the site structure, place scripts in meta-tags and manage their visibility on different devices.

Use Header and Footer for common design elements (logo, contacts), and side or inner blocks for content modules and scripts.
Placement positions:
  • Site Header (Header): inside the #hotengine-header element, above the content.
  • Site Footer (Footer): inside the #hotengine-footer element, below the content.
  • Left / Right: side panels next to the main content block.
  • Top / Bottom: inside the content area, at the top or bottom.
  • Top > cat_tree: position right below the category tree.
  • Service Tags (Header Meta): under Meta-tags for inserting JavaScript and system data.
All menus automatically get a position CSS class and a unique menu_id.

📋 Basic site block layout

For an advanced mobile menu, use the Mobile Menu Constructor.

Example of using blocks and menus

🛒

Store

E-commerce Module

Store — a module for organizing a product catalog with ordering functionality. Supports segmentation by manufacturers, categories, types and characteristics.

Product Widget

Lists can be embedded into pages, blocks or articles via the Slider Generator. Example of product widget

Category Widgets

Display the section structure anywhere on the site using the Category Widget.



Adding products


Ajax product loading

Ajax product loading



A link with class ajax_load_shop will open Ajax content inside the block specified in the data-content-block attribute.
The path to the page being loaded is set in the href parameter.
The page path can be relative or full, with http.
You can also use your own scripts by passing a GET or POST parameter shop_cat_p, with the full address
of the product, to /ajax.php

In addition, direct requests without using Ajax are also possible.
For example, to load data in an iframe. The path is the same as when using Ajax.
Add-to-cart scripts need to be loaded additionally if you are using an iframe.

Script for loading data in a popup window:
Popup script with Ajax content loading

Ajax loading reviews for products

Example Ajax script for loading product list + «Product List Generator»

Ajax cart loading

Ajax cart loading



A link with class ajax_load_cart will open Ajax content inside the block specified in the data-content-block attribute.
To load the cart, simply make a request to the page «/ajax.php?cart&load_cart_ajax»


Example Ajax script for loading cart on mouse hover

Ajax loading of product card image list

Ajax loading all categories list in JSON format

Ajax loading all categories list in JSON format

To get a list of all store categories, simply make a request to /ajax.php?json&shop_categories&start=0&param=:products

Where
  • &start= - ID of the category to start displaying from.
  • &param= parameters that can be obtained in the Categories Widget (optional parameter)
  • The request only works with your domain specified, e.g. http://example.com/ajax.php?json&shop_categories&start=0

Example result: {"id":"Category ID","parentID":"Parent category ID","child_cat":"Number of nested categories","child_items":"Number of products in category","image":"Category image path","title":"Category name"},

Ajax product loading in JSON format

Ajax product loading in JSON format

To get product card data in JSON format, simply make a request to /ajax.php?json&shop_products&id=0

When exporting products, you can specify sorting and filtering parameters:
  • id - Product card ID (one or more values, comma-separated).
  • pers_shop_cat_page_catid - Store category ID (one or more values, comma-separated)
  • producer – manufacturer (one or more values, comma-separated)
  • collection - collection (one or more values, comma-separated)
  • sort_by – sorting
  • order_by – sorting
  • sort_instock_priority – sort priority
  • price_from – price from
  • price_to – price to
  • stock - stock availability

The request only works with your domain specified, e.g. http://example.com/ajax.php?json&shop_products&id=0


Category and navigation menu setup demo

Form

📝

Forms

Data Capture Module

Form — a document section that allows the user to enter information for subsequent processing by the system. On the BooStore.pro platform, you can create full-featured forms, with binding of names, ids and classes for fields. Form data can be processed on our platform or sent to any other resource.

Flexible configuration

Binding unique names and identifiers for each form field.

Data processing

Ability to process locally in the system or send to external resources.



Example of creating and placing a form

Ajax form loading (popup forms)

3 ways to create a form:
1 Form Builder (Most flexible)

Open the form builder and create a structure by setting the required fields. All instructions are available inside the module.

2 Functional page

Create a page of type feedback. When opened, a standard feedback form will be displayed.

3 Popup form (via code)
HTML
<a class="hotengine-dialog-email" data-site="XXXX" href="javascript://">Write to us</a>
class="hotengine-dialog-email" — opens the window. data-site="XXXX" — your site ID (specified in the admin panel).
Additionally you can use: data-title (title), data-close-button (close text), data-width and data-height.
Example of field styling (CSS)

Changing field labels for different languages via pseudo-elements:

CSS

:lang(ru) .hotengine-form-feedback-text-title:after{ content:"Text:"; } :lang(en) .hotengine-form-feedback-text-title:after{ content:"Text:"; } :lang(uk) .hotengine-form-feedback-text-title:after{ content:"Text:"; } :lang(de) .hotengine-form-feedback-text-title:after{ content:"Text:"; } :lang(es) .hotengine-form-feedback-text-title:after{ content:"Texto:"; } :lang(fr) .hotengine-form-feedback-text-title:after{ content:"Texte:"; } :lang(kk) .hotengine-form-feedback-text-title:after{ content:"Text:"; } :lang(be) .hotengine-form-feedback-text-title:after{ content:"Text:"; } :lang(ro) .hotengine-form-feedback-text-title:after{ content:"Text:"; } :lang(tr) .hotengine-form-feedback-text-title:after{ content:"Metin:"; } :lang(it) .hotengine-form-feedback-text-title:after{ content:"Testo:"; } :lang(sk) .hotengine-form-feedback-text-title:after{ content:"Text:"; } :lang(da) .hotengine-form-feedback-text-title:after{ content:"Tekst:"; } :lang(pl) .hotengine-form-feedback-text-title:after{ content:"Tekst:"; } :lang(zh) .hotengine-form-feedback-text-title:after{ content:"文本:"; } :lang(hi) .hotengine-form-feedback-text-title:after{ content:"पाठ:"; } :lang(ar) .hotengine-form-feedback-text-title:after{ content:"النص:"; } :lang(pt) .hotengine-form-feedback-text-title:after{ content:"Texto:"; } :lang(bn) .hotengine-form-feedback-text-title:after{ content:"টেক্সট:"; }

:lang(ru) .hotengine-form-feedback-yourname-title:after{ content:"Your name:"; } :lang(en) .hotengine-form-feedback-yourname-title:after{ content:"Your name:"; } :lang(uk) .hotengine-form-feedback-yourname-title:after{ content:"Your name:"; } :lang(de) .hotengine-form-feedback-yourname-title:after{ content:"Ihr name:"; } :lang(es) .hotengine-form-feedback-yourname-title:after{ content:"Su nombre:"; } :lang(fr) .hotengine-form-feedback-yourname-title:after{ content:"Votre nom:"; } :lang(kk) .hotengine-form-feedback-yourname-title:after{ content:"Your name:"; } :lang(be) .hotengine-form-feedback-yourname-title:after{ content:"Your name:"; } :lang(ro) .hotengine-form-feedback-yourname-title:after{ content:"Numele dvs.:"; } :lang(tr) .hotengine-form-feedback-yourname-title:after{ content:"Adınız:"; } :lang(it) .hotengine-form-feedback-yourname-title:after{ content:"Il tuo nome:"; } :lang(sk) .hotengine-form-feedback-yourname-title:after{ content:"Vaše meno:"; } :lang(da) .hotengine-form-feedback-yourname-title:after{ content:"Dit navn:"; } :lang(pl) .hotengine-form-feedback-yourname-title:after{ content:"Twoje imię:"; } :lang(zh) .hotengine-form-feedback-yourname-title:after{ content:"你的名称:"; } :lang(hi) .hotengine-form-feedback-yourname-title:after{ content:"आपका नाम:"; } :lang(ar) .hotengine-form-feedback-yourname-title:after{ content:"اسمك:"; } :lang(pt) .hotengine-form-feedback-yourname-title:after{ content:"Seu nome:"; } :lang(bn) .hotengine-form-feedback-yourname-title:after{ content:"আপনার নাম:"; }

:lang(ru) .hotengine-form-feedback-yoursoname-title:after{ content:"Your surname:"; } :lang(en) .hotengine-form-feedback-yoursoname-title:after{ content:"Your name:"; } :lang(uk) .hotengine-form-feedback-yoursoname-title:after{ content:"Your surname:"; } :lang(de) .hotengine-form-feedback-yoursoname-title:after{ content:"Ihr name:"; } :lang(es) .hotengine-form-feedback-yoursoname-title:after{ content:"Su nombre:"; } :lang(fr) .hotengine-form-feedback-yoursoname-title:after{ content:"Votre nom:"; } :lang(kk) .hotengine-form-feedback-yoursoname-title:after{ content:"Your surname:"; } :lang(be) .hotengine-form-feedback-yoursoname-title:after{ content:"Your surname:"; } :lang(ro) .hotengine-form-feedback-yoursoname-title:after{ content:"Numele dumneavoastră:"; } :lang(tr) .hotengine-form-feedback-yoursoname-title:after{ content:"Adınız:"; } :lang(it) .hotengine-form-feedback-yoursoname-title:after{ content:"Il tuo nome:"; } :lang(sk) .hotengine-form-feedback-yoursoname-title:after{ content:"Vaše meno:"; } :lang(da) .hotengine-form-feedback-yoursoname-title:after{ content:"Dit navn:"; } :lang(pl) .hotengine-form-feedback-yoursoname-title:after{ content:"Imię i nazwisko:"; } :lang(zh) .hotengine-form-feedback-yoursoname-title:after{ content:"你的名称:"; } :lang(hi) .hotengine-form-feedback-yoursoname-title:after{ content:"你的名字:"; } :lang(ar) .hotengine-form-feedback-yoursoname-title:after{ content:"你的名字:"; } :lang(pt) .hotengine-form-feedback-yoursoname-title:after{ content:"O seu apelido:"; } :lang(bn) .hotengine-form-feedback-yoursoname-title:after{ content:"আপনার নাম:"; }

:lang(ru) .hotengine-form-feedback-yourphone-title:after{ content:"Your phone:"; } :lang(en) .hotengine-form-feedback-yourphone-title:after{ content:"Your phone:"; } :lang(uk) .hotengine-form-feedback-yourphone-title:after{ content:"Your phone:"; } :lang(de) .hotengine-form-feedback-yourphone-title:after{ content:"Ihr Telefon:"; } :lang(es) .hotengine-form-feedback-yourphone-title:after{ content:"Su teléfono:"; } :lang(fr) .hotengine-form-feedback-yourphone-title:after{ content:"Votre téléphone:"; } :lang(kk) .hotengine-form-feedback-yourphone-title:after{ content:"Phone:"; } :lang(be) .hotengine-form-feedback-yourphone-title:after{ content:"Your phone:"; } :lang(ro) .hotengine-form-feedback-yourphone-title:after{ content:"Telefonul dvs.:"; } :lang(tr) .hotengine-form-feedback-yourphone-title:after{ content:"Telefon:"; } :lang(it) .hotengine-form-feedback-yourphone-title:after{ content:"Il telefono:"; } :lang(sk) .hotengine-form-feedback-yourphone-title:after{ content:"Váš telefón:"; } :lang(da) .hotengine-form-feedback-yourphone-title:after{ content:"Din telefon:"; } :lang(pl) .hotengine-form-feedback-yourphone-title:after{ content:"Telefon:"; } :lang(zh) .hotengine-form-feedback-yourphone-title:after{ content:"你的电话:"; } :lang(hi) .hotengine-form-feedback-yourphone-title:after{ content:"अपने फोन:"; } :lang(ar) .hotengine-form-feedback-yourphone-title:after{ content:"الهاتف:"; } :lang(pt) .hotengine-form-feedback-yourphone-title:after{ content:"Seu telefone:"; } :lang(bn) .hotengine-form-feedback-yourphone-title:after{ content:"আপনার ফোন:"; }

:lang(ru) .hotengine-form-feedback-youremail-title:after{ content:"Your e-mail:"; } :lang(en) .hotengine-form-feedback-youremail-title:after{ content:"Your e-mail:"; } :lang(uk) .hotengine-form-feedback-youremail-title:after{ content:"Your e-mail:"; } :lang(de) .hotengine-form-feedback-youremail-title:after{ content:"Ihre e-mail:"; } :lang(es) .hotengine-form-feedback-youremail-title:after{ content:"Su e-mail:"; } :lang(fr) .hotengine-form-feedback-youremail-title:after{ content:"Votre e-mail:"; } :lang(kk) .hotengine-form-feedback-youremail-title:after{ content:"Your e-mail:"; } :lang(be) .hotengine-form-feedback-youremail-title:after{ content:"Your e-mail:"; } :lang(ro) .hotengine-form-feedback-youremail-title:after{ content:"Adresa de e-mail:"; } :lang(tr) .hotengine-form-feedback-youremail-title:after{ content:"E-mail:"; } :lang(it) .hotengine-form-feedback-youremail-title:after{ content:"Il tuo indirizzo e-mail:"; } :lang(sk) .hotengine-form-feedback-youremail-title:after{ content:"E-mail:"; } :lang(da) .hotengine-form-feedback-youremail-title:after{ content:"Din e-mail:"; } :lang(pl) .hotengine-form-feedback-youremail-title:after{ content:"Twój e-mail:"; } :lang(zh) .hotengine-form-feedback-youremail-title:after{ content:"你的电子邮件:"; } :lang(hi) .hotengine-form-feedback-youremail-title:after{ content:"अपने ई-मेल:"; } :lang(ar) .hotengine-form-feedback-youremail-title:after{ content:"البريد الإلكتروني:"; } :lang(pt) .hotengine-form-feedback-youremail-title:after{ content:"Seu e-mail:"; } :lang(bn) .hotengine-form-feedback-youremail-title:after{ content:"আপনার ই-মেইল:"; }

:lang(ru) .hotengine-form-feedback-youraddress-title:after{ content:"Your address:"; } :lang(en) .hotengine-form-feedback-youraddress-title:after{ content:"Your address:"; } :lang(uk) .hotengine-form-feedback-youraddress-title:after{ content:"Your address:"; } :lang(de) .hotengine-form-feedback-youraddress-title:after{ content:"Ihre Adresse:"; } :lang(es) .hotengine-form-feedback-youraddress-title:after{ content:"Su dirección:"; } :lang(fr) .hotengine-form-feedback-youraddress-title:after{ content:"Votre adresse:"; } :lang(kk) .hotengine-form-feedback-youraddress-title:after{ content:"Your address:"; } :lang(be) .hotengine-form-feedback-youraddress-title:after{ content:"Your address:"; } :lang(ro) .hotengine-form-feedback-youraddress-title:after{ content:"Adresa:"; } :lang(tr) .hotengine-form-feedback-youraddress-title:after{ content:"Adresi:"; } :lang(it) .hotengine-form-feedback-youraddress-title:after{ content:"Indirizzo:"; } :lang(sk) .hotengine-form-feedback-youraddress-title:after{ content:"Adresa:"; } :lang(da) .hotengine-form-feedback-youraddress-title:after{ content:"Din adresse:"; } :lang(pl) .hotengine-form-feedback-youraddress-title:after{ content:"Adres:"; } :lang(zh) .hotengine-form-feedback-youraddress-title:after{ content:"你的地址:"; } :lang(hi) .hotengine-form-feedback-youraddress-title:after{ content:"你的地址:"; } :lang(ar) .hotengine-form-feedback-youraddress-title:after{ content:"你的地址:"; } :lang(pt) .hotengine-form-feedback-youraddress-title:after{ content:"O seu endereço:"; } :lang(bn) .hotengine-form-feedback-youraddress-title:after{ content:"আপনার ঠিকানা:"; }

/*FORM TEXT TITTLES*/

Note! The site provides the ability to create custom forms automatically, as well as use popup windows to send necessary visitor data. To do this, use the Form Builder.

Comments / Reviews

💬

Comments and Reviews

Social & Feedback Module

The system allows leaving comments on all page types. Flexible section binding settings, rating system and Captcha protection are supported. For products, a specialized form — Reviews — is provided.

Ratings

Ability to enable star rating for visual feedback.

🔒 Protection

Built-in verification via security image to prevent spam.



Ajax comment loading

Ajax comment loading



An element with class "ajax_load_comments" will open Ajax content inside the block specified in the data-content-block attribute.
The ID of the page being loaded is set in the data-page-id parameter. Additionally, you can filter comments by rating by passing the starrating_quality variable, e.g. starrating_quality=5.

4 parameters are used for comments:
  • hotengine_comments_hotengine_page_id - Page ID.
  • nc - comment page number.
  • snc_on_page - number of comments per page (from 1 to 50).
  • hotengine_comments_page_type - page type.

Available page types (required parameter):
  • page - pages
  • shop_category - store categories
  • shop_collection - store collections
  • shop_producer - manufacturers
  • blog_category - article catalog category
  • blog_page - article


You can use your own scripts by passing GET or POST parameters hotengine_comments_hotengine_page_id and hotengine_comments_page_type, to /ajax.php. nc - comment page number, snc_on_page - number of comments per page.

To get data in JSON format, simply add the GET/POST variable json.

Ajax product reviews loading

Ajax product reviews loading



A link with class ajax_load_shop_comments will open Ajax content inside the block specified in the data-content-block attribute.
The path to the page being loaded is set in the href parameter.

Three parameters are used for reviews:
hotengine_shop_comments_shop_cat_page_id - Product ID.
nc - review page number.
snc_on_page - number of reviews per page (from 1 to 50).
The page path can be relative or full, with http. The path should be either the path to the product, or you can directly specify the product ID whose reviews you want to load.
You can also use your own scripts by passing a GET or POST parameter hotengine_shop_comments_shop_cat_page_id, with the full address
of the product (or product ID), to /ajax.php. nc - page number, snc_on_page - number of reviews per page. Additionally, you can filter reviews by rating by passing the starrating_quality variable, e.g. starrating_quality=5.

In addition, direct requests without using Ajax are also possible.
For example, to load data in an iframe. The path is the same as when using Ajax.
Add-to-cart scripts need to be loaded additionally if you are using an iframe.

Script for loading data in a popup window:
Popup script with Ajax content loading
To get data in JSON format, simply add the GET/POST variable json.
Comments can be configured for each section individually or in the general site settings. Configuration is available for store categories, manufacturers, collections, as well as for pages, product cards or articles.

Multilanding / Dynamic Pages

🎯

Multilanding / Dynamic Pages

Dynamic Content Module

Multilanding — a technology for automatically changing page content depending on the visitor's search query, advertising variables (UTM) or their location.

🔄 Flexible substitution

When a query matches, the system changes the content of entire blocks on pages, products or menu items.

📊 Data sources

Search phrases or GET variables such as utm_term in advertisements are used.

How to use Multilanding?

You configure substitution rules so that when a keyword partially or completely matches, the visitor sees the most relevant content. For example, if the URL contains utm_term=buy_laptop, the title and banner on the page can automatically change to match this query.

Data retention periods:
• Information about a regular traffic source is stored for 24 hours.
• Data about affiliate program transitions is stored for 120 days.
Individual Multilanding settings can significantly increase advertising traffic conversion by precisely matching user expectations.

Example of working with Block/Menu

📑

Working with Blocks and Menus

Layout & Meta Module

The Blocks/Menus tool allows you to flexibly manage the site structure, from confirming ownership in search engines to creating unique design elements.

Verification

Adding <meta> tags for Google Search Console, Yandex.Webmaster and other services.

Customization

Creating your own Header and Footer of the site using any HTML code.

Example of site verification:

  1. Create a new Block/Menu in the control panel.
  2. Insert the <meta> code provided by the service into the content field.
  3. In the display settings, select the location in service tags (head).
Automatic optimization: You can insert JavaScript and CSS directly into blocks. The system will intelligently process them and convert them into separate files to speed up page loading.

Example of using categories and manufacturers (additional categories) together

📦

Categories and Manufacturers

Store Structure Module

For each product, you can set a main Category (personal category) and a Manufacturer (additional category). This allows one product to be in different lists simultaneously: for example, a Samsung phone will be available both in the "Smartphones" section and in the "Samsung" section.

💡 Name flexibility

The "Manufacturer" category can be renamed to any word that suits you.

📌 Recommendation

It is recommended to name the first parent category "Store".

Creating a main category:

1. Open the store category editor.
2. Click "Add category", select the site and confirm.
3. Enter the system name (URL). For example, for the "Store" group, specify store.

Managing the Manufacturers (additional categories) section works the same way.

URL filtering:
To show products of a specific category and a specific manufacturer, add the GET variable producer (ID or name).
Example: /pers_shop/water/?producer=bonaqua — will display products from the "water" category of the "bonaqua" brand only.

Widgets

🧱

Widgets and ShortCodes

Interactive UI Module

A "Widget" is an interactive data block for placement on a site. A widget can be generated using a special short code ("ShortCode"), which can contain additional parameters. The resulting code can be inserted directly into the page text or into "Blocks/Menus".

Widget configuration is done in a special interactive control block. You can configure the appearance and behavior of the element in detail before getting the ready code for insertion.

Dynamic

Content in widgets updates automatically when data in the database changes (new products, articles).

📋 Versatility

The same ShortCode can be used in different parts of the site, maintaining style consistency.

Widget generators:

📁 Store Categories

Generate a list or grid of your categories.

📦 Store Products

Product sliders or grids with filters.

🏭 Manufacturers

Display brand logos and names.

📝 Articles and News

Widget for displaying recent publications.

How it works: Go to the required generator, configure the appearance and copy the resulting code like [MENU:...]. Insert it anywhere on the site where the block should appear.


Atrás