Articles and guides on launching and growing your online store
Integrations, SEO, marketing, dropshipping and online store automation

Full customization of website and online store design: a unique design made by yourself

Full customization of website and online store design: a unique design made by yourself

Full customization of website and online store design: how to create a unique design yourself

Many website builders put you in a box: a set of ready-made templates, a limited editor and “don’t touch the code”. BooStore works the other way around — a site here is a flexible structure (a grid) into which everything you need is inserted as blocks, and the look is fully controlled by CSS. You can take a ready-made template as a base and change every detail in it, or build a completely unique design from scratch — with your own blocks, menus, files and scripts. And all of it is done right in the admin panel: no FTP, no core edits and no developer.

Site structure: wrapper, grid and blocks

The main idea of BooStore — a site is a ready-made structure, not a rigid template. The structure consists of several main wrapper blocks, and all other blocks and functions are inserted inside. Understanding this scheme is the first step to full customization.

#hotengine-wrapper — the whole page
#hotengine-header
site header
.hotengine-wrap-container-side-left
.menu_position_top
#hotengine-content
#hotengine-content-container — grid
center · left · right columns
.menu_position_buttom
.hotengine-wrap-container-side-right
#hotengine-footer
site footer

The columns are built with CSS Grid and controlled by the data-hasside attribute. No tables — block layout only:

/*CONTENT GRID*/ #hotengine-content-container { display: grid; grid-template-areas: "container-left container-center container-right"; grid-template-columns: 0% 1fr 0%; margin: 0 auto; width: 100%; } #hotengine-content-container[data-hasside="both"] { grid-template-columns: auto 1fr auto; } #hotengine-content-container[data-hasside="left"] { grid-template-columns: auto 1fr; } #hotengine-content-container[data-hasside="right"] { grid-template-columns: 1fr auto; } .hotengine-wrap-container-side-center { grid-area: container-center; max-width: none; } .hotengine-wrap-container-side-left { grid-area: container-left; max-width: 270px; } .hotengine-wrap-container-side-right { grid-area: container-right; max-width: 270px; } @media (max-width: 767px){ #hotengine-content-container[data-hasside="both"] { grid-template-columns: 1fr auto auto; } #hotengine-content-container[data-hasside="left"] { grid-template-columns: 1fr auto; } #hotengine-content-container[data-hasside="right"] { grid-template-columns: 1fr auto; } } /*CONTENT GRID*/
data-hassideWhat it means
(none)Center only, side columns hidden
leftA left block/menu is present
rightA right block/menu is present
bothBoth left and right blocks/menus are present

Inside #hotengine-content the content is output in a block that depends on the page type. Each type has its own ID, which is convenient for applying separate styles:

  • Pages — #hotengine-content-page
  • Article catalog — #hotengine-content-blog
  • Product catalog — #hotengine-content-shop
  • Producer/collection catalog — #hotengine-content-shop

On category pages with a child list a class is added: .hotengine-content-shop-category, .hotengine-content-shop-collection, .hotengine-content-shop-producer, .hotengine-content-blog-category. This is the very service wrapper that lets you style a separate section, category or page type independently of the rest.

Official reference: a description of the main blocks, IDs and classes is in the knowledge base “Changing site blocks and the design editor”.

📦 Template as a base and its demo

The fastest path to a unique design is to start from a ready-made template and refine it. Let’s take the universal template Universal MobiFive Flex (templates_universal_mobifive_flex) as an example. It is recommended as a base precisely because it shows all the main header layout types and adapts easily to any style.

View the template demo: templatedemo437544.boostore.pro/en/ — this very design is used in the examples above.

On installation the template automatically:

  1. Creates a CSS style that includes the styling file via @import:
@import url(/templates/templates_universal_mobifive_flex/templates_universal_mobifive_flex_437544/style.css);
  1. Creates menu blocks: header (header), footer (footer), home slider, product sorting.
  2. Enables the needed functions: favorites, comparison, search with autocomplete, cart in the header.
Key point: the style file the template includes can be downloaded, changed and replaced with your own. Open Design editor → “CSS styles” tab: there is a field with your CSS and a button to email a style backup (an archive with style.css). Downloaded, edited locally, pasted back into the field — the site already looks new.
Summary: a template is not a rigid “skin” but a starting set of blocks and a style file. Everything it creates can later be rewritten beyond recognition.

🎨 Design editor and base styles

All visual configuration is gathered in the Design editor. It consists of tabs — from colors and the header to pure CSS:

TabWhat is configured
Site headerLogo, site icon (favicon), tagline, background, search form, top offset, image upload
Main menuMobile button, menu style (line or separate buttons), link and active item colors, appearance of the category dropdown
Blocks/MenusSide menu styling, widgets “Show other products” and “Bought with product” (list, swipe, append, scroll, pagination)
ContentContent styling, background, site size, links, cart, products, tabs, category tree, reset base style
Style catalogColor scheme, product card style (1–4), form style (1–25)
CSS stylesCustom CSS input field, live editing, email style backup
Site bottomFooter and footer widget colors

Which base styles load and how to replace them

The platform first includes base (system) styles, and then the template style is layered on top of them. The order is:

  1. css_hotengine_require_system.css — the main base style of the platform: pages, products, blocks and menus. This is what all your styles and the template style are “hung” on.
  2. css_hotengine_require_language_XX.css — text value styles for each language (ru, ua, en, pl, etc.).
  3. css_hotengine_cart_table_mobile.css — the cart table for mobile.
  4. templates/styles/css_hotengine_reset_base_style.css — reset of the main styling of windows and menu blocks (enabled in the “Content” tab).
  5. Product card styles — templates_base_styles/products/products_list1…4.css. Another ready-made product card style for the list is chosen in the “Style catalog”, and you can also style the card entirely your own way (see below).
  6. Form styles — templates_base_styles/forms/form1…25.css (25 variants).
  7. Template style — what is added when the template is installed (via @import of the style.css file).

All of this is collected into one cached CSS file. You can change any of these styles in two ways:

✍️ Add your own rules

In the “CSS styles” tab add your own selectors. They come last, so they override the base and template ones. This is the safest way.

📥 Insert the template style and edit it

Download the template style.css, paste its contents into the “CSS styles” field and edit directly — this way you change the source style itself.

Product card and list settings

Besides choosing a ready-made style, the product card can be configured via Store settings (Admin panel → Settings → Store, page set_p_store). There you set the position of the main blocks and the card behavior — this is already full unique customization without code:

SettingWhat it does
Position of the title, image, description, offer/promotion, auto descriptionChanges the place of each main block in the product card (at the top, after the info block, etc.)
Split image and offerSplits the product card block into two separate blocks — the image and the offer can be placed independently
Position of the tabs blockWhere to show the tabs (description, specs, reviews): in the product info block, after offerdetails or after desc-block
Tabs as accordionTurns tabs into a dropdown list (Accordion) — convenient on mobile
Style of the category and product listCategory output appearance, mosaic display of products in the list
Show SKU, availability, comparison, favorites, variants in the listEnables/disables individual elements of the card and list
Position of images in the list, Lazy Loading, image upload sizeControls photos in the product list and load optimization
Hybrid approach: choose a close ready-made card style in the “Style catalog”, set the position of blocks and tabs in the store settings, and then finalize the look with your own rules in “CSS styles”. This yields a fully unique product card.
Important about security: you cannot insert scripts and HTML tags into the CSS field — it is intended only for styles. JavaScript is connected separately via “Blocks/Menus” (see below).

📁 My files: your own logo, background and any style elements

Full customization is not only code but also your own files. For this there is a section “My files” (Admin panel → My files): here you can add, view and delete files as well as create folders. Upload your own images (logo, background, icons, block images) and connect them in CSS or HTML. Opens here: My files.

🗂️ My files

List of uploaded files and folders. Viewing, copying the path (by clicking a file) and deleting.

⬆️ Upload file

Uploading several files at once, choosing a folder, replacing an old file and image processing.

➕ Create folder

Your own folder structure: images, files, photogallery or your own categories for images and styles.

❓ Help

A built-in hint on working with files and images right in the section.

What you can upload and insert

  • Your own logo and site icon (favicon) — instead of the standard ones.
  • Your own background for the header, footer or the whole page.
  • Images for blocks, banners and the slider.
  • Your own icons (including SVG) for menus and buttons.
  • Your own CSS and JS files (connected via “Blocks/Menus”).

Image processing on upload

ParameterWhat it does
FolderWhere to save: auto (images / files / photogallery) or your own folder
ReplaceReplace the old file with the same name — convenient for updating the logo
WidthResize by width (e.g. 1600px)
FormatWebP (default), JPG, PNG or original
QualityCompression level (10–100%)

Files are stored in upload/catalog/{site_ID}/files/. After upload, copy the path (click the file) and use it in CSS or in the src attribute:

/* your logo */ .header_section2 .logo { background: url(/upload/catalog/12345/files/images/logo.webp) no-repeat center / contain; } /* your header background */ .header_section1 { background: url(/upload/catalog/12345/files/images/header-bg.webp) no-repeat center / cover; }
How simple it is: uploaded a file → copied the path → pasted into CSS or src. No FTP and no core edits — everything in the admin panel, in a couple of clicks.

🗂️ Blocks/Menus: positions, menus, custom scripts

“Blocks/Menus” is the main customization tool (the header and footer are also such blocks). Any content and navigation areas are created here. For each block the following are available:

📍 Position

Header (header), site bottom (footer), left, right, top/bottom of content, under the category tree, in service tags (Header Meta).

👁️ Display by pages

Everywhere, home only, shop only, blog only, news only, except home, search — a precise service wrapper for specific sections and categories.

👤 Whom to show

Everyone, users only, guests only, admins, owner, managers. Plus rules by query string.

📱 Device and language

Display on desktops or mobile, and also for a specific site language — separate blocks for each language.

🧩 HTML content

A full HTML editor: text, images, layout, shortcodes and bbcode. Your own blocks are assembled here too.

⚡ JavaScript / CSS style

The checkbox switches the block into JS or CSS mode. The script is connected as a file with a load mode: normal, async or defer.

Main menu

The main menu can be assembled in two ways:

  • Via the main menu widget — the fastest way. You add items, subitems, catalog category items and producer items, set icons (PNG, JPG, WEBP, SVG), order (drag&drop), language binding. The menu is exported and imported as JSON.
  • Your own menu manually — if special logic or layout is needed, the block is assembled as an ordinary HTML block.

Via the widget you immediately get a dropdown menu with categories — the most convenient option for a catalog. In the design editor you choose the category list appearance: standard, popup window, list with columns or full script disable.

Mega menu and Flex menu. The menu settings offer different navigation types: dropdown on hover, responsive mega menu with a burger, vertical Flex menu of fixed height, horizontal menu carousel. All of this is set by parameters and inserted into any position.

Your own scripts with optimized loading

If you enable the “JavaScript / CSS style” mode for a block, the engine saves your code to a separate file and connects it with the right load mode:

<!-- normal load mode --> <script src="/upload/catalog/.../scripts/code_menu_XX.js?t=..."></script> <!-- or async / defer — so as not to block rendering --> <script async src="..."></script>

This way you add any of your own scripts without slowing the load. For a CSS style the block is saved to a .css file and connected as a style. This is exactly “your own menu blocks with scripts” — full control without editing the platform core.

🖼️ Page styling and product grid by ID

Blocks/Menus provide the general framework, but BooStore lets you go further and style each page individually. The secret is that the root block #hotengine-wrapper receives dynamic classes with the ID of the current page or category. This means you can write CSS that applies only to one page, only to one category, or to all pages of a certain type at once.

Class on #hotengine-wrapperWhat it applies to
.hotengine-wrapper-pageid-{ID}A specific page, product or article by its ID
.hotengine-wrapper-shop-pageAll product pages (product card)
.hotengine-wrapper-shop-category + .hotengine-wrapper-catid-{ID}Store category, producer or collection
.hotengine-wrapper-blog-pageAll blog articles
.hotengine-wrapper-blog-category + .hotengine-wrapper-catid-{ID}Blog category
.hotengine-wrapper-catid-{ID}Any page bound to this category (ID)

Examples: style one specific page by its ID, set your own background for a specific store category, or change the look of all products at once.

/* Only one specific page by its ID */ #hotengine-wrapper.hotengine-wrapper-pageid-12345 { background: #f8fafc; } /* Only a specific store category (by category ID) */ #hotengine-wrapper.hotengine-wrapper-shop-category.hotengine-wrapper-catid-77 .hotengine-shop-product-list-block { border-color: #2563eb; } /* All product pages at once */ #hotengine-wrapper.hotengine-wrapper-shop-page #hotengine-content-shop { padding-top: 10px; }
How to find the ID: open the needed page and look at the class on #hotengine-wrapper in the inspector (F12) — there will be hotengine-wrapper-pageid-… or hotengine-wrapper-catid-…. Or take the ID from the admin panel. This lets you change the design pointwise without touching the rest of the site.

Product grid: how the list is rendered

The product list has its own nested structure. Understanding it makes it easy to change the number of cards per row, paddings and tile appearance. Simplified, it looks like this:

#hotengine-content-shop └─ .hotengine-shop-products-list-wrapper └─ .hotengine-shop-products-list-div └─ .hotengine-shop-products-list-content └─ .hotengine-shop-product-list-block ← product card (there are many) ├─ .hotengine-shop-products-list-img / .hotengine-shop-product-img ├─ .hotengine-shop-product-name ├─ .hotengine-shop-product-price_val ├─ .hotengine-shop-product-price_old └─ .hotengine-shop-product-cart_add_img
.hotengine-shop-products-list-content — cards go in a row
.hotengine-shop-product-list-blockPhoto · Name · Price · Buy
.hotengine-shop-product-list-blockPhoto · Name · Price · Buy
.hotengine-shop-product-list-blockPhoto · Name · Price · Buy

The cards are blocks .hotengine-shop-product-list-block (by default inline-block), and the container .hotengine-shop-products-list-content lines them up in a row. By changing the card width and wrapping you define the grid for your design:

/* 3 cards per row on desktop, 2 on tablet, 1 on mobile */ .hotengine-shop-products-list-content { display: flex; flex-wrap: wrap; gap: 8px; } .hotengine-shop-product-list-block { width: calc(33.33% - 8px); margin: 0; } @media (max-width: 900px){ .hotengine-shop-product-list-block { width: calc(50% - 8px); } } @media (max-width: 560px){ .hotengine-shop-product-list-block { width: 100%; } }

The product card, its price, the “Buy” button and icons are configured the same way — they all have permanent classes that do not change with platform updates.

🧰 Widgets and shortcodes

Besides blocks, BooStore has widgets — ready functional elements that are more convenient to keep in one place and edit via their editor. These include: popups, mobile menu, sliders, footer, contacts widget, Slide Menu, generators of category/product/producer/article menus.

Shortcodes — data auto-replacement

A shortcode is a short code that the system replaces with real page data. They can be inserted into any HTML block (like in the header), a page, an email. The main ones:

ShortcodeWhat it outputs
{HOTENGINE-SC:current_page_id}ID of the current page (article, product, news)
{HOTENGINE-SC:site_url}Your site address
{HOTENGINE-SC:lang}Language of the open page
{HOTENGINE-SC:site_tagline}Site tagline
{HOTENGINE-SC:shop_cart_menu}Ready cart block
{HOTENGINE-SC:main_menu_widget}Main menu
{HOTENGINE-SC:langmenu}Language switcher
{HOTENGINE-SC:currencymenu}Currency switcher
{HOTENGINE-SC:favorites}Favorite products
{HOTENGINE-SC:shop_compare_menu}Product comparison button
{HOTENGINE-SC:contacts}Contacts block
{HOTENGINE-SC:shop_cat_page_title}Product name (on the product page)
{HOTENGINE-SC:shop_cat_page_price}Product price
{HOTENGINE-SC:shop_cat_page_image}Product image link
{HOTENGINE-SC:shop_cat_page_sku}Product SKU
{HOTENGINE-SC:user_nickname}Name of the logged-in user
{HOTENGINE-SC:user_cashback}Client Cashback balance
{HOTENGINE-SC:pers_shop_cat_val_name}Store category name
{HOTENGINE-SC:blog_cat_page_title}Article title
{HOTENGINE-SC:slide_menu_widget:XX}Slide Menu widget by ID
{HOTENGINE-SC:slider_widget:XX}Slider by ID
{HOTENGINE-SC:smart_search_widget:PARAM}Search filter with parameters
{HOTENGINE-SC:feedback_form:ID}Feedback form

In addition, bbcode works: [FORM:12] inserts a form by ID, and [MENU:...] — a generated menu or selection.

Products widget: any selection anywhere

The products widget deserves a separate mention. The generator builds code like [MENU:shop_products_slider:...] that outputs a selection of products: slider, grid, mosaic, scroll with auto-load. Dozens of parameters are available:

  • What to show: category and subcategories, producer, collection, product type, availability, bestsellers, discounts, promotions, new arrivals, “reduced price”, recently viewed, favorites, search, specific IDs, price range, output language.
  • Sorting: by ID, date, price, name, priority; ascending/descending; random.
  • Display: “add to cart” button, comparison, description, star rating, favorites icon, variants (size/color), lazy loading.
  • Scroll modes: :scroll (auto-load), :carousel (carousel), :swipe (swipe), :append (“Show more”), :mosaic-sides (mosaic), :auto_width.
/* scroll with auto-load on mobile */ [MENU:shop_products_slider:pers_cat_id-0:on_page-4:start-0:button-cart:button-compare:description:favorite-icon:auto_width:lang-ru:scroll-768x8x0]

Examples of all variants with live demos — on the “Products widget” page.

HTML widgets: ready interactive blocks

In the HTML widgets section there are ready blocks with code that you just copy into a block or a page:

Accordion and Tabs

Accordion and tabs without heavy libraries — with pure CSS and lightweight JS.

Callback and forms

A “Call us back” block with phones and a popup callback form.

Reviews and comments

A review carousel via AJAX/JSON, an “Add review” button, Google Reviews integration.

Spoiler and Price range

A pure-CSS spoiler and a price range slider for the search filter.

📱 Mobile menu “like an app”

The mobile menu is a separate widget that deserves attention. It works like a full-fledged app: it slides out to full screen, with icons, categories and a filter. All parameters are configured in its editor, and there are a great many of them — the look can be tailored to any brand.

What you can configure:

  • Activation: the screen width threshold at which the menu turns on; always show; replace the main button or output as a separate panel.
  • Top icon block: search, language, favorites, comparison, cart, phone, contacts, e-mail, callback, up to 5 custom icons. Each has its own form and popup size.
  • Colors: menu and active item background, link and icon color, button and its hover, borders, filter background, dimming mask, authorization — dozens of color parameters.
  • Menu items: your own links and subitems, plus special ones: close (close), an empty value (separator), #filter (filter window), #form-XX (form by ID), #ajax_page (loading HTML content).
  • Search filter right in the menu: you choose the filter block — and it opens on click.
  • Hiding template elements: logo, header, cart, comparison, top row — to keep the interface clean.
Performance: on page load only the button and minimal functionality load. The full menu script loads on tap, and the content is stored in a separate cached file. That is why the mobile menu does not hurt speed.
Tip: to add a “Contacts” icon to the menu, create a page contacts and specify the link /en/contacts.htm#ajax_page (for the needed language). The content loads right into the menu.

🤖 Your unique style with AI and the inspector

Even if you don’t write CSS by hand, a unique design can be obtained with AI. The scheme is simple and works in practice:

1

Install a template as a base

Choose a ready-made template in the template catalog and install it. It creates a CSS style, header, footer and the needed blocks. As an example you can use the Universal MobiFive Flex demo.

2

Gather the “input data” for AI

Open the site in a browser and use the style inspector (F12) to look at the needed elements. Prepare three things: a CSS style fragment you want to change, the HTML code of the header (or another block) and a description of the desired result.

3

Use llms.txt as a prompt hint

Send AI the link boostore.pro/llms.txt — it is a ready-made instruction for the platform: base blocks, shortcodes (e.g. the cart code {HOTENGINE-SC:shop_cart_menu}), structure, widgets. The AI will understand the context and generate correct CSS/HTML specifically for BooStore, not “abstract” code.

4

Write the brief and get the style

Formulate the task: “here is a CSS fragment and the header code, here is the structure (3 sections of 3 blocks), make a style in such-and-such palette, keep responsiveness”. The AI returns ready CSS. Paste it into Design editor → CSS styles — and save.

5

Iterate and save the style

Refine the details, again sending the AI screenshots or fragments. When the result suits you — save the style. From then on you manage it yourself and don’t depend on a developer.

Good to know: on the editor demo page and in the knowledge base there is a separate section “Styles with AI” — you can compare approaches and see ready examples.

🧩 Library of ready-made blocks to insert on a page

If you don’t want to lay out from scratch, there is a library of ready-made blockstemplates_visual_blocks.html. These are dozens of responsive sections that you can insert right onto a page or into a Block/Menu and use immediately.

🎯 Headlines

22 styles: hero sections, promo banners, calls to action, premium variants, with reviews, badges and timers.

🔀 Split sections

Image + text, icons, statistics, navigation cards, bento grids, sale + new arrivals.

📞 Contacts and social media

Feedback blocks and social media icons with animation.

✅ Advantages and icons

Lists of advantages in different styles and SVG icon sets for any block.

Each block has the buttons “Show example”, “Show code” and “Open in a new window” — you can copy the entire code. The blocks are responsive, and the color is controlled by CSS variables: just change one variable to recolor the block for your brand. Here is a ready-made “Advantages” block (4 cards with icons) in a dark theme — exactly as you insert it onto a page:

<section class="hotengine-ve-darkmode hotengine-ve hotengine-ve-benefits-style-8"> <div class="ve-container"> <div class="ve-grid"> <div class="ve-item"> <div class="ve-accent-bar"></div> <div class="ve-icon-box"> <img src="/templates/styles/svg_icon/svg_color/delivery-truck.svg" alt="Delivery"> </div> <b>Fast delivery</b> <span>We deliver across the country in 1-3 days by courier</span> </div> <div class="ve-item"> <div class="ve-accent-bar"></div> <div class="ve-icon-box"> <img src="/templates/styles/svg_icon/svg_color/heavy-check-mark.svg" alt="Guarantee"> </div> <b>Official warranty</b> <span>All products are certified and have an official warranty</span> </div> <div class="ve-item"> <div class="ve-accent-bar"></div> <div class="ve-icon-box"> <img src="/templates/styles/svg_icon/svg_color/sale-percent.svg" alt="Deals"> </div> <b>Discounts and promotions</b> <span>Ongoing promotions, seasonal sales and personal promo codes</span> </div> <div class="ve-item"> <div class="ve-accent-bar"></div> <div class="ve-icon-box"> <img src="/templates/styles/svg_icon/svg_color/synchronize.svg" alt="Returns"> </div> <b>Easy returns</b> <span>Return within 30 days with no extra questions</span> </div> </div> </div> </section> <style type="text/css">@import url("/templates/visual/blocks/benefits/style-8/style.css");</style> <style type="text/css"> .hotengine-ve-benefits-style-8 { --ve-8-accent: #1d83a9; --ve-8-accent-soft: #1d83a933; } </style>

And this is how the same block looks on the page — it is real HTML inserted right into the article:

Delivery
Fast delivery We deliver across the country in 1-3 days by courier
Guarantee
Official warranty All products are certified and have an official warranty
Deals
Discounts and promotions Ongoing promotions, seasonal sales and personal promo codes
Returns
Easy returns Return within 30 days with no extra questions

This code is inserted right onto a page (in the HTML editor) or into a Block/Menu. The look is set by the style.css file connected via @import, and the colors — by the variables --ve-8-accent and --ve-8-accent-soft: changed the values — the block recolored for your brand. The class hotengine-ve-darkmode switches the block to a dark theme. The icons are ordinary SVG from the platform set, and can be replaced with your own.

Workflow: chose a block → “Show code” → copied → inserted onto the needed page or into a Block/Menu → changed colors, text and icons. Ready-made blocks + icons are the fastest way to assemble a beautiful unique design, even without being a designer.

Combine: ready-made blocks from the library + your own styles from “CSS styles” + your own logo from “My files” = a fully unique site without a single line of code from scratch.

🧰 Service menu blocks: filter, products, forms

Besides the blocks you create yourself, the platform has service (functional) blocks — ready modules that are also inserted as a Block/Menu or via a shortcode and fully lend themselves to styling. The main ones:

Service blockWhat it does
Search filterOutputs filters by specs, price, producer, availability for the selected category or product type. Inserted into the sidebar, a page or the mobile menu
Products widgetProduct selections: category, discounts, new arrivals, bestsellers, specific IDs, price range. Slider, grid, mosaic, auto-load
Store categoriesMenu or category grid: vertical, horizontal, dropdown, mega menu, carousel
Producers and collectionsLogos and brand lists, collection output
Articles and newsA widget with a list of blog articles or news
Forms and popupsCallback, quick order, constructor forms, popups by time/scroll
Cart, comparison, favoritesReady interactive elements with counters
Slider, contacts, footer, Slide MenuReady widgets for the header, footer and side panels

Example: search filter + products

The classic pairing for a category — on the left a search filter, in the center a product list. Both elements are service blocks and both are styled via CSS. It is best to create the filter via functional menu blocks (Blocks/Menus → Functional menu → Search filter): then it automatically binds to the right category and product type, and the display is configured by pages. But if needed the filter can be inserted on any page too — via a shortcode or a separate block.

{HOTENGINE-SC:smart_search_widget:PARAM}

And the product selection is output by a widget (product list generator):

[MENU:shop_products_slider:pers_cat_id-0:on_page-12:start-0:button-cart:button-compare:description:favorite-icon:auto_width:lang-ru:scroll-768x8x0]

The product list loads via AJAX (/ajax_get_list_shop.php), so the filter and selections work fast and without reloading the page. All of these are ordinary blocks that can be placed in any position and recolored for your style.

Conclusion: customization is not limited to “your own” blocks. Even service modules (filter, cart, categories, products) are inserted as blocks and fully styled — this is how a unique functional interface is assembled.

⚡ Speed: customization without losing PageSpeed

Customization must not mean a slow site. BooStore is designed to squeeze the most out of speed metrics even with a fully unique design:

🚀 Vanilla JS

No jQuery and heavy frameworks. Only native JavaScript — less code, higher speed.

🖼️ WebP and Lazy Loading

Images are automatically converted to WebP, previews of the needed size are created and load as they appear in the viewport.

📦 Dynamic loading

Scripts are connected only when needed: popups, cart, variants, mobile menu — all on demand.

🗄️ Multi-level cache

CSS is collected into one file, menus and widgets are cached, page generation time — 0.1–0.3 sec.

Details about the mobile version, responsiveness and optimization — in the article “Responsive layout and mobile menu for an online store”. It also shows how dynamic script loading and proper image handling give PageSpeed 99–100.

Conclusion: you can freely add your own blocks, scripts and styles — the platform takes care of minification, caching and deferred loading. A unique design and high speed do not contradict each other.

⚠️ Common mistakes in customization

Don’t insert JavaScript into the CSS field. The “CSS styles” tab accepts only styles. For scripts use “Blocks/Menus” with the “JavaScript / CSS style” mode.
Don’t override base styles thoughtlessly. If you want to start “from scratch”, enable “Reset base style” in the “Content” tab, otherwise the old styles will conflict with the new ones.
Don’t forget mobile. Always check the result on narrow screens (F12 → device mode). A three-section header must correctly rebuild into a single column.
Be careful with direct core edits. Do customization via blocks, menus, CSS and widgets — then platform updates won’t affect your design.

Useful links

🛠️ Real example: your own stylish responsive header

To show how simple it is, let’s build a real header from scratch: three levels (top row, main row with search and icons, menu), a modern look and full responsiveness. Below is it live, then the CSS that does it, and the HTML code to insert into a Block/Menu. The example uses only two shortcodes — favorites and cart — so the icons work for real.

How it looks live

The CSS that does it

The whole style is pure CSS. It sets colors, paddings, radii, the search and responsiveness. Copy it into the Design editor → CSS styles:

/* ===== Header ===== */ .rex-header{ position:relative;font-family:inherit;border:1px solid #e2e8f0;border-radius:20px;overflow:hidden; background:linear-gradient(180deg,#ffffff 0%,#f8fafc 100%);margin:18px 0; box-shadow:0 18px 45px -18px rgba(51,65,85,.35),0 6px 18px rgba(15,23,42,.06); transition:box-shadow .4s ease,transform .4s ease; } .rex-header:hover{box-shadow:0 26px 60px -20px rgba(51,65,85,.5),0 10px 24px rgba(15,23,42,.08)} /* animated bar on top */ .rex-header::before{ content:"";position:absolute;left:0;right:0;top:0;height:3px; background:linear-gradient(90deg,#334155,#475569,#64748b,#334155);background-size:200% 100%; animation:rex-shine 7s linear infinite; } @keyframes rex-shine{0%{background-position:0% 0}100%{background-position:200% 0}} /* general link styles */ .rex-header a{text-decoration:none;transition:color .25s ease,background .25s ease,transform .25s ease,box-shadow .25s ease} .rex-header [onclick]{cursor:pointer} /* ===== Top row ===== */ .rex-top{ display:flex;flex-wrap:wrap;gap:10px;justify-content:space-between;align-items:center; padding:10px 18px;background:linear-gradient(90deg,#f1f5f9,#e2e8f0);color:#64748b;font-size:.8em; border-bottom:1px solid #e2e8f0; } .rex-top a{color:#64748b;font-weight:500;position:relative} .rex-top a::after{content:"";position:absolute;left:0;bottom:-2px;width:0;height:1.5px;background:linear-gradient(90deg,#334155,#475569);transition:width .3s ease} .rex-top a:hover{color:#0f172a} .rex-top a:hover::after{width:100%} .rex-top-links,.rex-top-contacts{display:flex;flex-wrap:wrap;gap:16px;align-items:center} /* ===== Main row ===== */ .rex-main{display:flex;flex-wrap:wrap;gap:16px;align-items:center;padding:16px 18px;background:radial-gradient(130% 150% at 0% 0%,#ffffff 0%,#f1f5f9 55%,#eef2f7 100%)} /* logo */ .rex-logo{display:flex;align-items:center;gap:11px;font-weight:800;font-size:1.18em;color:#0f172a;white-space:nowrap;letter-spacing:-.01em} .rex-logo span{ display:inline-flex;width:38px;height:38px;border-radius:12px;background:linear-gradient(135deg,#334155,#475569); color:#fff;align-items:center;justify-content:center;font-size:.95em; box-shadow:0 8px 20px -6px rgba(51,65,85,.7); transition:transform .35s cubic-bezier(.34,1.56,.64,1),box-shadow .35s ease; } .rex-logo:hover span{transform:rotate(-8deg) scale(1.08);box-shadow:0 12px 26px -6px rgba(71,85,105,.85)} /* search */ .rex-search{flex:1 1 260px;display:flex;min-width:200px;border:1.5px solid #cbd5e1;border-radius:14px;overflow:hidden;background:#fff;transition:border-color .3s ease,box-shadow .3s ease} .rex-search:focus-within{border-color:#334155;box-shadow:0 0 0 4px rgba(51,65,85,.15)} .rex-search input{flex:1;border:0;padding:11px 14px;outline:none;font-size:.9em;min-width:0;background:transparent} .rex-search button,.rex-search .rex-search-btn{ border:0;padding:0 20px;background:linear-gradient(135deg,#334155,#475569);color:#fff;cursor:pointer;font-weight:700; display:inline-flex;align-items:center;position:relative;overflow:hidden; transition:filter .3s ease,box-shadow .3s ease,transform .2s ease; } .rex-search button::after,.rex-search .rex-search-btn::after{content:"";position:absolute;top:0;left:-60%;width:40%;height:100%;background:linear-gradient(90deg,transparent,rgba(255,255,255,.5),transparent);transform:skewX(-20deg);transition:left .55s ease} .rex-search button:hover,.rex-search .rex-search-btn:hover{filter:brightness(1.08);box-shadow:0 10px 24px -8px rgba(51,65,85,.9)} .rex-search button:hover::after,.rex-search .rex-search-btn:hover::after{left:120%} .rex-search button:active,.rex-search .rex-search-btn:active{transform:translateY(1px)} /* ===== Icons and cart ===== */ .rex-icons{display:flex;align-items:center;gap:8px} .rex-icon-item{display:inline-flex;align-items:center;max-width:100%;border-radius:12px;transition:background .25s ease,transform .25s ease,box-shadow .25s ease} .rex-icon-item:hover{background:#f1f5f9;transform:translateY(-2px);box-shadow:0 10px 20px -10px rgba(51,65,85,.6)} .rex-icon-item img{max-height:22px} /* cart */ .rex-header #hotengine-cart_menu,.rex-header #menu_c{display:inline-block;border:0;margin:0;padding:0;background:transparent} .rex-header #menu_c .headm,.rex-header #menu_c .footm{display:none} .rex-header #menu_c .contentm,.rex-header #menu_c .contentm .contentm_i{margin:0;padding:0;display:inline-block} .rex-header #cart{display:inline-flex;align-items:center;gap:7px;white-space:nowrap;border:1.5px solid #cbd5e1;border-radius:12px;padding:5px 10px;background:#fff;transition:border-color .25s ease,box-shadow .25s ease} .rex-header #cart:hover{border-color:#334155;box-shadow:0 10px 22px -10px rgba(51,65,85,.7)} .rex-header #cart table{width:auto;margin:0} .rex-header #cart td{white-space:nowrap;vertical-align:middle;padding:0 3px} .rex-header #cart .hotengine-shop-cart-total,.rex-header #cart .hotengine-shop-cart-menu-spacer{display:none} .rex-header #cart .hotengine-shop-product-price_val{font-size:.9em;font-weight:700;color:#0f172a} .rex-header #cart .cart_menu_img{display:inline-block;width:22px;height:22px;background-color:#334155;-webkit-mask-size:contain;mask-size:contain} .rex-header #cart > a{order:-1;margin-right:2px} :lang(en) .hotengine-shop-cart-message-empty-cart::after{content:"Empty"} /* ===== Menu ===== */ .rex-nav{display:flex;flex-wrap:wrap;gap:4px;padding:10px 12px;background:linear-gradient(180deg,#ffffff,#f8fafc);border-top:1px solid #e2e8f0} .rex-nav a{padding:9px 14px;border-radius:10px;color:#475569;font-size:.88em;font-weight:600;position:relative;transition:background .3s ease,color .3s ease,transform .3s ease,box-shadow .3s ease} .rex-nav a::after{content:"";position:absolute;left:14px;right:14px;bottom:5px;height:2px;border-radius:2px;background:linear-gradient(90deg,#334155,#475569);transform:scaleX(0);transform-origin:left;transition:transform .3s ease} .rex-nav a:hover{background:linear-gradient(135deg,#f1f5f9,#e2e8f0);color:#0f172a;transform:translateY(-2px);box-shadow:0 10px 20px -12px rgba(51,65,85,.7)} .rex-nav a:hover::after{transform:scaleX(1)} /* ===== Responsive ===== */ @media(max-width:760px){ .rex-header,.rex-header *{box-sizing:border-box} .rex-header,.rex-top,.rex-main,.rex-nav{width:100%;max-width:100%} .rex-top{justify-content:center;text-align:center} .rex-main{flex-direction:column;align-items:stretch;padding:14px 12px} .rex-search{flex:1 1 auto;width:100%;max-width:100%;min-width:0} .rex-search input{width:0;min-width:0} .rex-search button,.rex-search .rex-search-btn{padding:0 14px;flex:0 0 auto} .rex-logo,.rex-icons{justify-content:center} .rex-icons{flex-wrap:wrap;width:100%} .rex-icon-item{min-width:0;max-width:100%} .rex-nav{justify-content:center} } /* ===== Accessibility: disable animations on system request ===== */ @media(prefers-reduced-motion:reduce){ .rex-header *,.rex-header *::before,.rex-header *::after{animation:none!important;transition:none!important} }

Header HTML — code to insert

Insert this code into a Block/Menu with the Header position. The favorites and cart icons will work, as in the live example above.

<div class="rex-header"> <div class="rex-top"> <div class="rex-top-links"> <a href="/en/?about_us">About us</a> <a href="/en/delivery_and_payments.htm">Delivery and payment</a> <a href="/en/shop_sale.htm">Promotions</a> <a href="/en/contacts.htm">Contacts</a> </div> <div class="rex-top-contacts"> <a href="tel:+380000000000">+38 (000) 000-00-00</a> <a href="/en/admin/">Account</a> </div> </div> <div class="rex-main"> <a class="rex-logo" href="/en/"><span>B</span> BooStore Shop</a> <form class="rex-search" method="get" action="/en/shop/"> <input type="text" name="search" placeholder="Search products..."> <button type="submit">Search</button> </form> <div class="rex-icons"> <span class="rex-icon-item">{HOTENGINE-SC:favorites}</span> <span class="rex-icon-item">{HOTENGINE-SC:shop_cart_menu}</span> </div> </div> <nav class="rex-nav"> <a href="/en/pers_shop/">Catalog</a> <a href="/en/shop_new_goods.htm">New arrivals</a> <a href="/en/shop_sale.htm">Discounts</a> <a href="/en/shop_bestsellers.htm">Bestsellers</a> <a href="/en/blog/sitecreate_en/">Blog</a> </nav> </div>
How it is made: three rows on flex, a light top row with an animated link underline, a logo badge with a hover effect, search with a focus glow, a gradient button with a shine on hover, icons that lift and glow, a cart “pill” with the icon on the left, a menu with a gradient backing and an animated line. On mobile (≤760px) the blocks rebuild into a column — one media query does it. The palette is strict, cold blue-gray (slate); the colors are easy to change: replace #334155 and #475569 with your own accents.

❓ FAQ about design customization

Answers to popular questions about creating a unique website and online store design on BooStore.

Can you create a completely unique design on BooStore instead of choosing a ready-made template?

Yes. A site on BooStore is a flexible structure into which content and functions are inserted as blocks. The look is fully controlled by CSS, and you can add your own HTML, CSS and JavaScript to the blocks. A ready-made template is just a convenient starting point that you can change beyond recognition or not use at all.

What is a site header from the platform’s point of view?

The header is an ordinary Block/Menu with the Header position. Inside it is the header HTML code, split into sections (in the Universal MobiFive Flex template — three sections, each of three blocks). You can edit both the markup and the styles. Demo of such a template: templatedemo437544.boostore.pro/en/.

How to replace the template style file with your own?

Open the Design editor → “CSS styles” tab. There is a field for CSS and the option to email a style backup (an archive with style.css). Download the file, edit it locally and paste the result back into the field — the site applies the new style immediately.

Which styles load by default and how to override them?

First the base styles are connected: css_hotengine_require_system.css (core), css_hotengine_require_language_XX.css (translations), css_hotengine_cart_table_mobile.css (cart on mobile), as well as product card and form styles. The template style is layered on top. You can override them in two ways: add your own selectors in the “CSS styles” tab or insert the template style there and edit it directly.

Can you add your own scripts and styles to the site?

Yes. In the block editor there is a “JavaScript / CSS style” checkbox. In JavaScript mode your code is saved to a separate JS file and connected with normal loading, async or defer. In CSS mode — to a separate CSS file. This way you add your own scripts and styles without core edits and with optimized loading.

How to upload your own logo, background or image?

Via the “My files” section (Admin panel → My files). Upload a file (several at once is possible), if needed specify the folder, width, format (WebP/JPG/PNG) and quality. Then copy the file path by clicking and use it in CSS or in the src attribute. Files are stored in upload/catalog/{site_ID}/files/.

What are shortcodes and where to use them?

A shortcode is a short code like {HOTENGINE-SC:shop_cart_menu} that the system replaces with real data: page ID, product price, cart, menu, contacts, user data, etc. They can be inserted into HTML blocks, pages and emails. In the examples of this article they are written with an italic wrapper inside so they display as text. The full reference is in the knowledge base, the ShortCode section.

How to output a product selection anywhere on the page?

Use the products widget generator. It builds code like [MENU:shop_products_slider:...] with dozens of parameters: category, producer, discounts, new arrivals, specific IDs, price range, sorting, “add to cart” button, comparison, rating, carousel, scroll with auto-load and mosaic. Examples of all variants — on the “Products widget” page.

Are there ready-made blocks and styles so you don’t lay out from scratch?

Yes. The block library contains dozens of ready responsive sections: headlines, split sections, contacts, social media, advantages and SVG icons. The color is controlled by CSS variables, so the block is easy to recolor for your brand. Plus there are HTML widgets (accordion, tabs, reviews, callback, spoiler).

Can the design be generated with AI?

Yes. Install a template as a base, use the style inspector to take a CSS fragment and the code of the needed block, add a link to boostore.pro/llms.txt (a ready instruction for the platform with base blocks and shortcodes) to the task and send the brief to the AI. Paste the resulting CSS into the Design editor → “CSS styles” and save.

Will the site speed suffer from customization?

No, if you use the built-in tools. CSS is collected into one cached file, scripts are connected with async/defer or only when needed, images are automatically converted to WebP and load lazily. Stores on BooStore consistently get PageSpeed 99–100.

Can you set a different design for different sections or categories?

Yes. Blocks and menus have display rules by page type (home, shop, blog, news, search), by specific page, language, device and query string. This is a service wrapper that lets you output your own blocks and styling for a separate section or even category.

Is programming needed for a unique design?

No. Most tasks are solved via the design editor, ready-made templates, the block library and widgets. If non-standard code is needed, you can insert your own CSS or JavaScript, or generate a style with AI. Programming is required only for truly complex scenarios.

How does BooStore differ from Tilda, Wix and WordPress in design customization?

BooStore is an e-commerce SaaS: a site is built from blocks, the look is fully controlled by CSS, and you can insert your own HTML, CSS and JavaScript into blocks. Unlike Tilda and Wix, there are no builder restrictions on code, and unlike WordPress, no plugins, hosting and constant updates are needed. At the same time speed and SEO are optimized out of the box.

Can you create and save your own unique template?

Yes. You refine the header, footer, blocks and CSS, then save the result. The style can be exported (a style.css backup by email) and used as a base. Ready-made templates are in the templates.boostore.pro catalog, and you fully control your design in the editor.

Can you connect your own font?

Yes. It is recommended to connect the font via @import in CSS — for example, from Google Fonts. If the needed font is not on Google Fonts, upload the font files via “My files”, connect them with the @font-face rule in “CSS styles” and apply to the needed elements. This way you set a unique typography.

How to insert a ready-made block from the library onto the home page?

Open templates_visual_blocks.html, choose a block, click “Show code”, copy and paste into the HTML editor of the needed page (e.g. the home page) or into a Block/Menu. Then change the CSS variables, text and icons. The style is connected via @import right in the block code.

Can you style the product card entirely your own way?

Yes. In the store settings you set the position of the main card blocks (title, image, description, offer/promotion), you can split the card into two blocks, specify the tabs position and enable an accordion. And the look is finalized with your own CSS rules on permanent classes, e.g. .hotengine-shop-product-list-block.

Will my design edits survive platform updates?

Yes. Customization is done via blocks, menus, CSS styles, widgets and “My files”, not via core edits. The built-in classes and IDs do not change with updates, so your design stays untouched.

How to find the class or ID of the element you need to change?

Open the site, press F12 and right-click the element, choose “Inspect”. Copy its class or ID and use it in “CSS styles”. #hotengine-wrapper also has dynamic classes with the page or category ID (hotengine-wrapper-pageid-…, hotengine-wrapper-catid-…).

Calculate the Cost of Launching an Online Store: SaaS vs CMS vs Custom Development
BooStore vs WordPress + WooCommerce: why plugins kill your e-commerce site speed and security
E-commerce Launch Checklist: 29 Critical Points to Check Before Your First Ad