Version 1.2.1 · OpenCart 4.1.x.x

Gaper Theme

A modern, feature-rich OpenCart theme with extensive customization, one-page checkout, dark mode, and performance optimization built in.

1. Overview

Gaper is a modern, feature-rich theme for OpenCart 4.1.x.x. It provides a complete redesign of the storefront with extensive customization options accessible through an intuitive admin panel.

Key Features

Fully Responsive Light & Dark Mode 8 Color Presets One Page Checkout Quickview Modal CSS/JS Minification SEO Structured Data Google Fonts Module Overrides Newsletter System Cookie Consent 3-Level Category Sidebar Social Sharing Custom Code Injection Flip Hover Effect Live Price Updates OCMOD Editor Home Layout Builder 6 Gaper-Exclusive Modules Featured Categories/Manufacturers Products by Category/Manufacturer Gallery Images Lightbox Gallery Videos Modal Playback Multi-Store Support

2. Admin Panel Layout

The theme settings panel uses a vertical tab layout on the left side for easy navigation. All settings are organized into 13 tabs:

General Colors & Fonts Header Home Category Product Checkout Modules Footer & Social SEO Performance Custom Code OCMOD

On mobile devices (< 768px), the tabs automatically switch to a horizontal scrollable layout.

Accessing Theme Settings

Option 1: Click "Gaper Theme" in the admin sidebar (appears after Dashboard)

Option 2: Admin → Extensions → Extensions → Themes → Gaper Theme → Edit

The sidebar shortcut only appears when the theme is installed and active.

3. General Tab

SettingDescription
Status Enable or disable the Gaper theme. When disabled, OpenCart falls back to the default theme.
Layout Full Width — Content spans the full browser width.
Boxed — Content is contained within a centered box.
Container Width Maximum width of the page container (default: 1320px). Applies when Layout is set to Full Width.
Border Radius (px) Card and container corner radius (default: 8). Set to 0 for sharp corners.
Button Radius (px) Button corner radius (default: 6). Set to 0 for square buttons, or higher values (e.g., 50) for fully rounded pill-shaped buttons.

Shadow Intensity

Controls the box-shadow depth for cards, dropdowns, modals, header, product cards, carousels, and all other elevated elements across the theme.

OptionDescription
NoneNo shadows at all — completely flat design
LightSubtle, minimal depth — barely visible elevation
MediumBalanced depth (Default) — standard modern look
StrongBold, prominent depth — dramatic elevation effect

This setting overrides the following CSS variables globally:

--gaper-shadow-xs, --gaper-shadow, --gaper-shadow-md, --gaper-shadow-lg, --gaper-shadow-xl

4. Colors & Fonts Tab

Color Presets

Choose from 8 pre-designed color schemes. Clicking a preset automatically fills all color fields. The currently active preset is highlighted with a blue border.

Default (Blue)
Emerald
Purple
Sunset
Ocean
Rose
Forest
Dark Theme

Custom Color Presets

Save up to 3 custom color presets by clicking "Save as Custom Preset" below the Color Scheme section. Custom presets capture all 21 color fields (11 core colors + 10 extended colors for topbar, header, footer, and newsletter).

Custom presets appear in a separate row below the built-in presets with the same card design and color preview circles.

ActionDescription
ClickApply the saved colors to the form
Hover (left)Update button — overwrite preset with current colors
Hover (right)Delete button — remove the preset
Double-click nameRename the preset (max 20 characters)
Custom presets are saved to the database when you click Save in the admin panel. They persist across page reloads and browser sessions.

Core Colors

ColorUsage
Primary ColorMain brand color used for buttons, links, navigation
Secondary ColorHover states and secondary elements
Accent ColorHighlights, badges, and call-to-action elements
Text ColorPrimary body text color
Muted ColorSecondary text, captions, and placeholders
Background ColorPage background color
Surface ColorCard and panel backgrounds
Border ColorBorders, dividers, and separators
Success ColorSuccess messages and indicators
Danger ColorError messages and alerts
Warning ColorWarning messages

Typography

SettingDescription
Body FontFont for body text (Google Fonts). Default: Inter
Heading FontFont for headings (Google Fonts). Default: Inter
Base Font SizeRoot font size in pixels (default: 16)
Line HeightBody text line height (default: 1.6)
Border RadiusCard and container border radius in pixels (default: 8)
Button RadiusButton border radius in pixels (default: 6)
A live preview is displayed below each font selector, dynamically loading the selected Google Font so you can see how it looks before saving.


6. Category Tab

Listing Options

SettingDescription
Default ViewGrid or List view for product listings
Products Per RowNumber of columns in grid view (1-6). Applies to Category, Search, and Specials pages. Use 1 Column for sidebar placement (column_left/right).
Products Per PageNumber of products shown per page (12/16/24/32/48)
SidebarPosition of the sidebar: Left, Right, or None
Image RatioProduct image aspect ratio: 1:1, 4:3, 3:4, or 16:9
Hover Effect Zoom: Image scales up
Fade: Image fades slightly
Slide: Image shifts upward
Flip: 3D flip to second product image (requires product to have multiple images)
None: No animation
Quick ViewEnable/disable quickview button on product cards
Show BrandDisplay manufacturer/brand name on product cards (requires OCMOD to be installed and refreshed)
Show SKUDisplay SKU on product cards
Sidebar CountShow product count next to categories in sidebar. When disabled, skips the count query for better performance.

Subcategory Display

SettingDescription
Subcategory Style Text List: Simple text links
Thumbnail Grid: Image cards with category thumbnails
Show Subcategory ImageToggle thumbnail images in grid view
Subcategories Per RowNumber of columns for subcategory grid (2-6)

Category Sidebar Accordion

The category sidebar module is overridden to display a 3-level accordion: Parent Category → Child Category → Grandchild Category. Active categories automatically expand based on the current path. The accordion uses smooth CSS transitions and follows theme color variables.


7. Product Tab

SettingDescription
Image ZoomMagnify product image on hover
Sticky Add to CartAdd-to-cart bar stays visible when scrolling down
Related ProductsShow/hide related products section
Related ColumnsNumber of related product columns (3-5)
Tab Style Tabs: Traditional tab panels
Accordion: Collapsible sections
Option Style Default OpenCart: Standard select/radio/checkbox
Modern Theme: Card-style option grid with images
BreadcrumbShow/hide breadcrumb navigation
Share ButtonsSocial sharing buttons (Facebook, X, Pinterest, WhatsApp, Email)
Show SKUDisplay product SKU/model
Show StockDisplay stock availability
Sale CountdownShow countdown timer for products with timed specials. Displays beside the price with days/hours/minutes/seconds.
Live Price Dynamically updates the product price in real-time when the customer changes quantity or selects options that have price modifiers (e.g., +$10.00). Supports quantity-based discounts, special prices, and tax calculations. Price formatting follows your store's currency settings.

Quantity Control

Custom +/- buttons replace the native browser number input spinner. The design is consistent across all browsers and adapts to both light and dark themes.


8. Checkout Tab

One Page Checkout (OPC)

SettingDescription
Enable OPCReplace multi-step checkout with single-page layout. When disabled, OpenCart's default checkout is used.
Checkout Layout Two Columns: Form on left, order summary on right (summary is sticky on scroll)
Single Column: Everything in one column
Guest CheckoutAllow customers to checkout without creating an account

Checkout Fields

SettingDescription
Coupon Code FieldShow/hide coupon input in checkout
Order CommentShow/hide order comment textarea
Terms & ConditionsShow agreement checkbox before Confirm Order

How OPC Works

The One Page Checkout displays all fields on a single page. When the customer fills in their address and selects a Region/State, the form automatically saves via AJAX — no "Continue" button is needed. Shipping methods, payment methods, and the order summary update in real time.

The Terms & Conditions agreement is handled by a checkbox in the order summary sidebar (not in the address form), preventing validation errors during auto-save.


9. Modules Tab

The Modules tab manages two groups of modules: (A) default OpenCart module overrides, and (B) the six Gaper-exclusive modules.

A. Default Module Overrides

Global settings applied whenever these OpenCart modules are placed in any layout position.

Featured Products Latest Products Bestsellers Specials

Settings (per module)

SettingDescription
Products Per RowNumber of columns in the grid (Default / 1-6). "Default" falls back to 4 columns. Use 1 Column for sidebar placement (column_left/right) with Carousel enabled to show one product per slide.
Carousel Off (Grid): Products displayed as a static grid
On (Slide): Products displayed in a sliding carousel. Works in both horizontal (content) and vertical (sidebar) layout positions.
Slide Effect Slide: Horizontal sliding transition
Fade: Crossfade transition
When Carousel is enabled, products are grouped into batches (based on the columns setting) and displayed as carousel slides. Navigation arrows appear at the left and right edges of the carousel.

B. Gaper-Exclusive Modules

Six custom modules ship with the theme. They are managed only from the Gaper Modules tab — they do not appear in OpenCart's standard Extensions > Modules list. The tab shows a card grid of the six types, each with an "Add Instance" button and a list of existing instances with Edit + Delete actions. Each module type can have unlimited instances.

ModuleDescription
Featured Categories Card grid of selected categories with custom images, subtitles, and an optional Flip to Second Image 3D hover animation (main image on the front, custom uploaded image on the back). Falls back gracefully when only one image is available. Supports carousel mode with autoplay.
Featured Manufacturers Same feature set as Featured Categories but for manufacturer/brand logos.
Products by Category Displays products grouped by category in Tabs (multiple categories with pill-style tab navigation) or Single mode (one category, heading = category name). Sort by Newest, Oldest, or Random. Configurable columns, limit per panel, carousel + autoplay.
Products by Manufacturer Same feature set as Products by Category but filters by manufacturer.
Gallery Images Drag-and-drop sortable list of image cards. Each row has image upload, title, and optional link. Clicking an image opens a large lightbox modal. If a link is set, the title below the image becomes a clickable link.
Gallery Videos YouTube video gallery with thumbnail cards and inline modal playback. YouTube ID is auto-extracted from full URLs, youtu.be, embed, or shorts formats. Uses YouTube's hqdefault thumbnail if no custom image is uploaded. Embed uses youtube-nocookie.com with referrerpolicy set for maximum compatibility.
Place Gaper-exclusive modules on the home page via the Home Layout Builder (next section), or on any other page via OpenCart's standard Design > Layouts (they appear in the Module dropdown as "Gaper: {Module Name}").

10. Home Layout Builder

The Home tab enables a custom home page layout without touching OpenCart's layout system. When the master toggle is OFF, the default OpenCart home layout (content_top + content_bottom) is used.

Master Toggle

SettingDescription
Enable Home LayoutWhen ON, the builder rows replace the default home layout. When OFF, default OC behavior is used.

Row Builder

  • Add unlimited rows to the home page
  • Each row has 1 to 4 columns
  • 10 column-ratio presets based on Bootstrap's 12-grid system:
    • 2 columns: 6-6, 4-8, 8-4, 3-9, 9-3
    • 3 columns: 4-4-4, 3-3-6, 3-6-3, 6-3-3
    • 4 columns: 3-3-3-3
  • Rearrange rows freely, delete rows individually
  • Each column can hold one or more stacked modules

Module Picker

The per-column "Add Module" button opens a modal listing every installed module instance, grouped by extension. Both standard OpenCart modules (Featured, Latest, Banner, HTML, etc.) and the six Gaper-exclusive modules are selectable. Multiple modules can stack inside a single column.

Drag-and-Drop Reordering

Every row and every module chip has a grip handle (6-dot icon) on the left side. Click and hold the grip to drag:

  • Reorder rows: Grab a row's grip handle (in the row header) and drag up or down to reorder rows on the home page.
  • Reorder modules within a column: Grab a module chip's grip handle and drag up or down within the same column.
  • Move modules across columns: Drag a module chip from one column and drop it into a different column — even across different rows.
  • Row labels (Row 1, Row 2, …) auto-update after reordering. Remember to click Save to persist the new order.

Persistence

The layout is stored in the theme settings as JSON and rendered server-side on home page load. Each module is invoked through OpenCart's controller system, so caching and events behave normally.



12. SEO Tab

Structured Data

SettingDescription
Schema MarkupJSON-LD structured data on pages
Open Graph Tagsog: meta tags for Facebook/LinkedIn link previews
Twitter Cardstwitter:card meta tags for X/Twitter previews
Canonical URL<link rel="canonical"> to prevent duplicate content
Breadcrumb SchemaBreadcrumbList JSON-LD for Google breadcrumb display
Product SchemaProduct JSON-LD with price, availability, and reviews
Local Business SchemaLocalBusiness JSON-LD for location-based searches

Social & Business Info

SettingDescription
Twitter HandleYour @handle for Twitter Card site attribution
Business NameUsed in Organization and LocalBusiness schema
Business TypeSchema.org @type: Store, ClothingStore, ElectronicsStore, FurnitureStore, HomeGoodsStore, JewelryStore, BookStore, HardwareStore, or LocalBusiness
Business AddressFull street address for schema
Business PhonePhone number (international format preferred)

13. Performance Tab

Optimization

SettingDescription
Lazy Load ImagesImages load only when they enter the viewport. Reduces initial page load time significantly.
Defer JavaScriptAdds defer attribute to non-critical scripts for faster page rendering.
Minify HTMLStrips extra whitespace and comments from HTML output.
Minify CSSGenerates a minified gaper.min.css file (~30-40% smaller). Auto-regenerated when source CSS is newer.
Minify JSGenerates a minified gaper.min.js file (~20-30% smaller). Same auto-regeneration behavior as Minify CSS.
Preload Critical CSSAdds <link rel="preload"> for the theme stylesheet.
Browser CachingAdds Cache-Control and ETag headers for static assets.

CDN & Preloading

SettingDescription
Preload FontsPreload Google Fonts for faster text rendering
Preconnect CDNAdd <link rel="preconnect"> for CDN domain
CDN URLYour CDN base URL (e.g., https://cdn.yourdomain.com)

Analytics & Tracking

SettingDescription
GTM IDGoogle Tag Manager container ID (GTM-XXXXXXX)
GA4 IDGoogle Analytics 4 measurement ID (G-XXXXXXXXXX)
Facebook PixelFacebook/Meta Pixel ID
TikTok PixelTikTok Pixel ID
Note on Minification: When Minify CSS or Minify JS is enabled, the theme automatically detects if the source file (gaper.css or gaper.js) has been modified since the last minified version was generated. If so, it regenerates the minified file on the next page load. You can safely edit the source files without worrying about stale minified versions.

14. Custom Code Tab

Warning: Invalid code can break your storefront. Always test in a staging environment first.
FieldDescription
Custom CSSAdded inside <style> in <head>. Use for quick CSS overrides without editing theme files.
Custom JavaScriptAdded inside <script> before </body>. Use for tracking snippets, chat widgets, etc.
Head CodeRaw HTML injected at the end of <head>. Useful for meta tags, verification codes, or external stylesheet links.
Body Start CodeRaw HTML injected right after <body>. Useful for noscript tags or body-level tracking.
Footer CodeRaw HTML injected before </body>. Useful for third-party scripts that must load last.

15. Dark Theme Mode

The Gaper theme supports a full dark mode that is automatically activated based on the Background Color setting in the Colors & Fonts tab.

How It Works

The theme uses a luminance calculation on the Background Color:

Luminance = R * 0.299 + G * 0.587 + B * 0.114

If the luminance value is below 80, the theme adds the gaper-dark class to the <html> element, which triggers comprehensive dark mode CSS overrides for all components.

Activating Dark Mode

Simply select the "Dark Theme" preset in the Colors & Fonts tab, or manually set a dark Background Color (e.g., #1a1a1a). The theme will automatically:

  • Add the gaper-dark class to the HTML element
  • Apply dark overrides for all Bootstrap components
  • Adjust form controls, dropdowns, tables, cards, modals
  • Style the navigation bar with white text on primary background
  • Apply dark styles to product cards, checkout, OPC, and CMS pages
  • Adjust the category sidebar, banner module, and product modules

Dark Preset Colors

The built-in Dark preset uses a gold/amber + black color scheme:

VariableColor
Primary #c8952c (Gold)
Background #1a1a1a (Near Black)
Surface #242424 (Dark Gray)
Text #e8e8e8 (Light Gray)
Accent #e8a830 (Amber)
You can fully customize these colors while maintaining dark mode — as long as the Background Color luminance stays below 80.

16. Mobile Experience

The theme includes a complete mobile-optimized experience for screens < 992px.

Mobile Header

  • Compact header bar: Hamburger menu (left), centered logo, search icon and cart icon (right)
  • Cart badge shows item count, syncs with desktop mini-cart via AJAX
  • Search icon expands a full-width search bar below the header

Off-Canvas Mobile Menu

  • Slide-in menu from the left side with overlay backdrop
  • Accordion-style sub-menus auto-populated from desktop navigation
  • Account links section at the top
  • Quick links at the bottom: Wishlist, Cart, Checkout, Compare
  • Smooth slide transition with scrollable body

Responsive Behaviors

  • Desktop navigation bar hidden on mobile (replaced by off-canvas menu)
  • Top bar simplified: Center message hidden, text labels hidden (icons only)
  • Sticky header disabled on mobile (mobile has its own compact header)
  • Product countdown timer stacks below price on screens < 576px
  • Mini-cart content adapts to full width with truncated product names

17. Quickview

The Quickview feature allows customers to preview product details in a modal without leaving the current page.

Features

  • Full product images with gallery thumbnails
  • Product name, price, and availability
  • All option types supported:
    • Select, Radio, Checkbox (including Modern card style)
    • Text, Textarea
    • File upload (AJAX-based, uses OC4 tool/upload)
    • Date, Time, DateTime (native HTML5 inputs)
  • Quantity +/- controls
  • Add to Cart button
  • "View Full Details" link to the product page
The Quickview button appears on product cards when "Quick View" is enabled in the Category tab settings.

18. One Page Checkout (OPC)

The One Page Checkout replaces OpenCart's default multi-step checkout with a streamlined single-page experience.

Features

Single Page AJAX Auto-Save Real-time Updates Two Layout Options Sticky Summary Guest Checkout Dark Theme Support
  • All checkout fields visible on one page
  • AJAX auto-save: Form data saves automatically when Region/State is selected
  • Real-time shipping and payment method updates
  • Shipping methods load immediately on page open (no address required first)
  • Payment methods load automatically after shipping is saved
  • Two layout options: Two Columns or Single Column
  • Sticky order summary sidebar (in Two Column mode)
  • Coupon code field (toggleable)
  • Order comment field (toggleable)
  • Terms agreement checkbox in the sidebar (not in the form)
  • Compatible with both registered and guest checkout
  • Full dark theme support

How It Works

For guest customers, the theme pre-seeds the session with the store's default country and zone (from System → Settings → General). This allows shipping quotes and payment methods to load immediately without requiring the customer to fill in their address first.

Loading Chain — Physical Products

  1. Page loads → shipping methods auto-load (500ms delay)
  2. First shipping method auto-selected and saved
  3. After shipping save → payment methods load automatically
  4. First payment method auto-selected and saved
  5. Order summary and confirm section update

Loading Chain — Digital Products

  1. Page loads → payment methods auto-load directly (500ms delay)
  2. First payment method auto-selected and saved
  3. Order summary and confirm section update

When the customer fills in their address and selects a Region/State, the form auto-saves via AJAX. Shipping and payment methods then reload with rates specific to that address.

How to Enable

  1. Go to theme settings → Checkout tab
  2. Toggle "Enable OPC" to On
  3. Configure layout and field options
  4. Save
The OPC templates are only loaded when OPC is enabled. When disabled, the default OpenCart checkout templates are used.

19. Newsletter System

The theme includes a built-in newsletter subscription system.

Frontend

A newsletter signup section appears in the footer (when enabled in Footer tab). Customers enter their email address and subscribe via AJAX. Duplicate emails are handled gracefully with user-friendly messages.

Admin — Subscriber Management

View and manage subscribers from the admin panel:

Extensions → Themes → Gaper Theme → Edit → (see "Subscribers" link)

The subscriber list shows:

  • Email address
  • IP address
  • Subscription date
  • Status
Subscriber data is stored in the gaper_subscriber database table, which is created automatically during theme installation.

20. CMS Blog & Articles Compatibility

OpenCart 4's built-in CMS system (Topics and Articles/Blog) is fully compatible with the Gaper theme. No template overrides are needed — the CMS pages automatically inherit the theme's styling.

Supported Pages

  • Blog listing (cms/blog): Search, topic filter, article cards
  • Article detail (cms/blog_info): Full content, tags, author
  • Comments: Comment cards, reply threads, like/dislike, modal form
  • Blog widget module: Product-thumb style cards
  • Topic sidebar module: List group with active state

Dark Mode

All CMS components have dark theme overrides:

  • Comment cards with dark surface background
  • Modal dialogs with themed header
  • Form controls and buttons
  • Borders and dividers
  • Blog widget cards
No additional configuration is required. Simply add Topics and Articles through the OpenCart admin (CMS menu), and they will be styled automatically.

21. Template Override System

The Gaper theme uses OpenCart 4's event system to override templates without modifying core files.

How It Works

The startup controller (catalog/controller/startup/gaper.php) registers an event listener for view/*/before. When a template route matches the override list, it redirects to the Gaper version at extension/gaper/{route}.

Overridden Templates

Common

  • common/header
  • common/footer
  • common/home
  • common/menu
  • common/cart (mini-cart)
  • common/search
  • common/maintenance

Product

  • product/thumb (product card)
  • product/product (product page)
  • product/category
  • product/search
  • product/special
  • product/related
  • product/review
  • product/manufacturer_info

Account

  • account/login
  • account/register
  • account/account

Checkout (Standard)

  • checkout/cart

Checkout (OPC Only — Loaded When OPC Is Enabled)

  • checkout/checkout
  • checkout/register
  • checkout/shipping_method
  • checkout/payment_method
  • checkout/payment_address
  • checkout/shipping_address
  • checkout/confirm

Information

  • information/information
  • information/contact

Error

  • error/not_found

Modules

  • extension/opencart/module/category (3-level accordion)
  • extension/opencart/module/banner (modern redesign)
  • extension/opencart/module/featured
  • extension/opencart/module/latest
  • extension/opencart/module/bestseller
  • extension/opencart/module/special

Data Injection

The startup controller also injects additional data into templates:

  • All templates: $args['gaper'] array with all theme settings
  • Product page: Countdown timer data (date_end for special price)
  • Category module: 3-level category hierarchy data
  • Header: Compare URL and text_compare language string
  • All pages: CSS variables, dark mode class, Google Fonts

22. OCMOD Core Modifications

The theme includes an OCMOD file (gaper.ocmod.xml) that modifies core OpenCart controllers to provide additional data needed by the theme.

Modifications

1. Category Controller

catalog/controller/product/category.php
Loads the manufacturer model, resolves manufacturer name for each product (for "Show Brand" feature), and adds subcategory thumbnail images (for Thumbnail Grid subcategory style).

2. Search Controller

catalog/controller/product/search.php
Same manufacturer name resolution as category controller.

3. Special Controller

catalog/controller/product/special.php
Same manufacturer name resolution as category controller.

These modifications are non-destructive and are applied via OCMOD's virtual file system. Original core files are never modified.

Important: After installing or updating the OCMOD file, you must refresh the modifications cache: Extensions → Modifications → Refresh button.

23. OCMOD Editor (For Theme Updates)

The OCMOD tab in the Gaper Theme admin panel provides a built-in editor to view and update the OCMOD modification stored in the database. This is primarily used when updating the theme to a new version.

Why is this needed?

OpenCart 4 stores OCMOD modifications in the database (oc_modification table), not as files on disk. When you update theme files via FTP, the OCMOD in the database still contains the old version. The OCMOD Editor allows you to update it without uninstalling the theme (which would delete all your settings).

How to Update the Theme

StepAction
1Extract the new version zip file
2Upload/overwrite files via FTP: copy upload/admin/ to extension/gaper/admin/, upload/catalog/ to extension/gaper/catalog/, and upload/install.json to extension/gaper/install.json
3Go to Gaper Theme settings → click the OCMOD tab
4Click Edit → select all (Ctrl+A) → delete
5Open upload/ocmod/gaper.ocmod.xml from the new version in a text editor, copy all contents (Ctrl+A, Ctrl+C)
6Paste into the textarea (Ctrl+V) → click Save to Database
7Go to Extensions → Modifications → Refresh
8Flush all caches from Dashboard

OCMOD Editor Features

ElementDescription
TextareaDisplays the current OCMOD XML from the database. Read-only by default.
Version BadgeShows the current OCMOD version stored in the database.
Edit ButtonUnlocks the textarea for editing.
Save to DatabaseValidates the XML and saves it to the oc_modification table. The modification code is always kept as gaper.
Cancel ButtonReverts any unsaved changes and locks the textarea.
Warning: The OCMOD Editor is intended for updating the OCMOD XML during theme updates. Modifying the OCMOD code requires knowledge of OpenCart's OCMOD system. Incorrect modifications can cause errors on your storefront. If you are not familiar with OCMOD, only use this editor to paste the exact XML provided in theme update packages — do not manually edit the code.
🛈 After saving, you must go to Extensions → Modifications and click Refresh for changes to take effect.

24. Multi-Store Support

Gaper Theme fully supports OpenCart's Multi-Store feature. You can run 2, 3, or more stores on a single OpenCart installation and give each one its own completely independent Gaper configuration — different colors, fonts, logos, layouts, modules, checkout mode, header style, footer links, and every other setting.

How It Works

OpenCart 4 stores all theme settings in its setting database table scoped by store_id. Gaper's admin controller reads and writes settings for the store you are currently editing. When a visitor accesses the frontend, OpenCart automatically loads the settings for that store based on the domain or URL, so each store renders with its own Gaper configuration.

Accessing the Store Switcher

When you have 2 or more stores configured in OpenCart (System > Settings), the Gaper admin page automatically displays a store dropdown at the top of the settings panel, labelled "Editing store:".

  • Default Store — selects the default/global settings (store_id = 0)
  • Additional stores appear below with their configured store name

Switching stores reloads the page and loads that store's settings for editing. If you have unsaved changes, you will be prompted to confirm before switching.

Inheritance Behavior

When you first open a non-default store for editing, settings that have never been saved for that store will show values from the Default Store. This lets you start from a clean baseline. A blue info banner at the top confirms:

"You are editing settings for a specific store. Unsaved fields inherit values from the Default Store."

Once you save the form for a specific store, that store gets its own complete set of settings that override the default.

Per-Store vs. Global Data

Per-Store (different per store)Global (shared across all stores)
  • All theme colors, fonts, layout settings
  • Header style, topbar content, search style
  • Category, Product, Checkout tab settings
  • Module column counts, carousel settings
  • Footer colors, social links, payment icons
  • SEO settings, robots meta, JSON-LD toggles
  • Performance toggles, analytics IDs
  • Cookie consent text and colors
  • Custom CSS/JS/HTML code
  • Custom Color Presets
  • Home Layout Builder rows
  • Newsletter subscribers database (single list)
  • Gaper-Exclusive Module instances — but each instance can be assigned to specific stores via Design > Layouts
  • OCMOD modification XML (structural only)

Setup Checklist (Multi-Store)

  1. Create your additional store(s) under System > Settings > [New Store] and configure the store URL or domain.
  2. For each store (including Default): go to System > Settings > [Edit that store] > General tab, set Theme to "Gaper Theme", then Save.
  3. Open the Gaper Theme admin page. The store dropdown appears at the top of the settings card.
  4. Select each store from the dropdown and configure its settings individually. Remember to click Save on each store before switching.
  5. Verify by visiting the frontend URL of each store — they should render with their respective configured settings.

Troubleshooting

ProblemSolution
Store dropdown not appearingYou need 2 or more stores configured in OpenCart. Add a second store under System > Settings to see the dropdown.
Theme not activating on secondary store frontendEnsure you have selected "Gaper Theme" in System > Settings > [Edit that store] > General > Theme, AND that Status is enabled in the Gaper admin for that store.
All stores show the same settingsYou may have saved settings only on the Default Store. Switch to each individual store via the dropdown and save settings separately.

25. File Structure

extension/gaper/ │ ├── install.json Extension metadata │ ├── admin/ │ ├── controller/theme/ │ │ └── gaper.php Admin controller (settings, save) │ ├── view/template/theme/ │ │ ├── gaper.twig Admin settings panel │ │ └── gaper_subscribers.twig Newsletter subscribers page │ └── language/en-gb/theme/ │ └── gaper.php Admin language file │ ├── catalog/ │ ├── controller/ │ │ ├── startup/ │ │ │ └── gaper.php Startup controller (events, data) │ │ ├── product/ │ │ │ └── quickview.php Quickview AJAX controller │ │ └── module/ │ │ └── newsletter.php Newsletter subscription controller │ │ │ ├── model/ │ │ └── module/ │ │ └── newsletter.php Newsletter data model │ │ │ └── view/ │ ├── stylesheet/ │ │ └── gaper.css Main theme stylesheet │ ├── javascript/ │ │ └── gaper.js Main theme JavaScript │ └── template/ All template overrides (.twig) │ ├── common/ Header, footer, home, menu, cart... │ ├── product/ Product, category, search, thumb... │ ├── checkout/ Cart, OPC templates... │ ├── account/ Login, register, account... │ ├── information/ Information, contact... │ ├── error/ 404 page... │ └── extension/opencart/module/Module overrides (category,banner, featured, latest,bestseller, special) │ └── ocmod/ └── gaper.ocmod.xml Core controller modifications

Changelog

v1.2.1

TypeDescription
New FeatureSmart Search (Header) — Added a modern live search system with grouped results, keyboard shortcuts, mobile fullscreen mode, synonyms, promoted results, smart redirect, popular searches, scope selector, voice search, recently viewed support, and zero-result analytics logging.
New FeatureMega Menu Builder (Header) — Added a dedicated Mega Menu configuration area in the Header tab, including builder controls and improved admin layout separation between Header General, Smart Search, and Mega Menu sections.
ImprovementHeader Admin UX — Header settings are now organized using internal tabs (General, Smart Search, Mega Menu) for faster navigation and clearer structure.

v1.2.0

TypeDescription
New FeatureMulti-Store Full Support — Admin store switcher dropdown in the theme settings card header. Each store has fully independent Gaper settings (colors, fonts, logos, layouts, modules, checkout mode, header style, footer, etc.). Inheritance notice alert shown when editing a non-default store. Dirty-form confirmation before switching stores. See Multi-Store Support.
New FeatureHome Layout Builder — Drag-and-drop row/column builder for the home page with 10 Bootstrap-grid column ratio presets. Master toggle falls back to default OC layout when off.
New FeatureGaper-Exclusive Modules — Six new module types managed from the Modules tab: Featured Categories, Featured Manufacturers, Products by Category, Products by Manufacturer, Gallery Images (with lightbox + clickable title link), and Gallery Videos (with inline YouTube modal playback).
FixCard Hover Lift Clipping — Hover-lift animation (translateY(-3px)) no longer clips the top border of cards inside carousel containers. Fixed by adding padding/negative-margin to .carousel-inner to expand the overflow boundary.
FixGallery Videos / YouTube Error 153 — Added referrerpolicy="strict-origin-when-cross-origin" to the embed iframe and switched to youtube-nocookie.com to resolve the "Video player configuration error" on sites with a strict referrer policy.

v1.1.0

TypeDescription
New FeatureFlip Hover Effect — New product card hover option that performs a 3D flip animation to reveal the second product image. Requires products to have more than one image. Available in Category tab → Hover Effect.
New FeatureLive Price — Real-time price updates on the product page when customers change quantity or select options with price modifiers. Supports quantity discounts, special prices, tax calculations, and multi-currency formatting. Enable in Product tab → Live Price.
New FeatureOCMOD Editor — Built-in OCMOD editor in the admin panel (OCMOD tab) for updating the theme's OCMOD modification without uninstalling. Allows safe theme updates while preserving all settings.

v1.0.0

Initial release.