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
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:
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
3. General Tab
| Setting | Description |
|---|---|
| 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.
| Option | Description |
|---|---|
| None | No shadows at all — completely flat design |
| Light | Subtle, minimal depth — barely visible elevation |
| Medium | Balanced depth (Default) — standard modern look |
| Strong | Bold, prominent depth — dramatic elevation effect |
This setting overrides the following CSS variables globally:
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.
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.
| Action | Description |
|---|---|
| Click | Apply the saved colors to the form |
| Hover (left) | Update button — overwrite preset with current colors |
| Hover (right) | Delete button — remove the preset |
| Double-click name | Rename the preset (max 20 characters) |
Core Colors
| Color | Usage |
|---|---|
| Primary Color | Main brand color used for buttons, links, navigation |
| Secondary Color | Hover states and secondary elements |
| Accent Color | Highlights, badges, and call-to-action elements |
| Text Color | Primary body text color |
| Muted Color | Secondary text, captions, and placeholders |
| Background Color | Page background color |
| Surface Color | Card and panel backgrounds |
| Border Color | Borders, dividers, and separators |
| Success Color | Success messages and indicators |
| Danger Color | Error messages and alerts |
| Warning Color | Warning messages |
Typography
| Setting | Description |
|---|---|
| Body Font | Font for body text (Google Fonts). Default: Inter |
| Heading Font | Font for headings (Google Fonts). Default: Inter |
| Base Font Size | Root font size in pixels (default: 16) |
| Line Height | Body text line height (default: 1.6) |
| Border Radius | Card and container border radius in pixels (default: 8) |
| Button Radius | Button border radius in pixels (default: 6) |
5. Header Tab
Top Bar
| Setting | Description |
|---|---|
| Show Top Bar | Toggle the utility bar above the header |
| Top Bar BG | Background color of the top bar |
| Top Bar Text | Text color in the top bar |
| Top Bar Link | Link color in the top bar (hover uses Accent color) |
| Phone | Phone number displayed in top bar (with click-to-call) |
| Email address displayed in top bar (with mailto link) | |
| Center Message | Promotional message displayed in the center of top bar (e.g., "Free Shipping on Orders Over $99!") |
Header
| Setting | Description |
|---|---|
| Sticky Header | Header stays fixed at the top when scrolling. Transitions from full-size to compact mode at 60px scroll. Disabled on mobile (mobile has its own compact header). |
| Header Style |
Style 1 (Classic): Logo left, search center, icons right Style 2 (Centered): Logo centered, search below |
| Header BG | Background color of the main header area |
| Header Shadow | Toggle drop shadow below the header |
| Search Style |
Full: Always visible search bar Compact: Icon toggle that expands search bar |
| Show Wishlist | Display wishlist icon in header |
| Show Compare | Display compare icon in header |
Dropdowns
Currency, Language, and My Account dropdowns use hover-based activation on desktop (>= 768px) with a smooth fade-in transition. On mobile, they use the default Bootstrap click behavior.
Header Internal Tabs
| Tab | Purpose |
|---|---|
| General | Top Bar and Main Header settings (style, sticky behavior, header colors, icons). |
| Smart Search | Live search behavior, result rendering, intelligence features, and analytics toggles. |
| Mega Menu | Mega Menu activation and builder area for managing navigation structure. |
Smart Search (Header)
| Group | Details |
|---|---|
| Core UX | Live grouped dropdown results for Products, Categories, Brands, and Information pages with keyword highlight, skeleton loading, and view-all link. |
| Accessibility | Keyboard shortcut support (Ctrl+K and /), arrow navigation, Enter select, and Esc close. Mobile fullscreen search mode supported. |
| Intelligence | Synonyms mapping, promoted/pinned products by keyword, exact-match smart redirect, did-you-mean suggestion, and optional server-side popular search tracking. |
| Experience | Scope selector (All/Category), optional voice search button, recent searches, popular searches, and recently viewed products in empty state. |
| Insights | Zero-result query tracking with top-query visibility in admin to guide synonym/rule improvements. |
Mega Menu (Header)
| Capability | Details |
|---|---|
| Builder Placement | Configured directly in Header tab under the dedicated Mega Menu pane for faster workflow. |
| Activation | Independent enable/disable toggle with separate area from Smart Search to avoid configuration overlap. |
| Admin UX | Header settings are organized into three tabs (General, Smart Search, Mega Menu) to reduce scrolling and improve discoverability. |
6. Category Tab
Listing Options
| Setting | Description |
|---|---|
| Default View | Grid or List view for product listings |
| Products Per Row | Number 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 Page | Number of products shown per page (12/16/24/32/48) |
| Sidebar | Position of the sidebar: Left, Right, or None |
| Image Ratio | Product 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 View | Enable/disable quickview button on product cards |
| Show Brand | Display manufacturer/brand name on product cards (requires OCMOD to be installed and refreshed) |
| Show SKU | Display SKU on product cards |
| Sidebar Count | Show product count next to categories in sidebar. When disabled, skips the count query for better performance. |
Subcategory Display
| Setting | Description |
|---|---|
| Subcategory Style | Text List: Simple text links Thumbnail Grid: Image cards with category thumbnails |
| Show Subcategory Image | Toggle thumbnail images in grid view |
| Subcategories Per Row | Number 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
| Setting | Description |
|---|---|
| Image Zoom | Magnify product image on hover |
| Sticky Add to Cart | Add-to-cart bar stays visible when scrolling down |
| Related Products | Show/hide related products section |
| Related Columns | Number 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 |
| Breadcrumb | Show/hide breadcrumb navigation |
| Share Buttons | Social sharing buttons (Facebook, X, Pinterest, WhatsApp, Email) |
| Show SKU | Display product SKU/model |
| Show Stock | Display stock availability |
| Sale Countdown | Show 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)
| Setting | Description |
|---|---|
| Enable OPC | Replace 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 Checkout | Allow customers to checkout without creating an account |
Checkout Fields
| Setting | Description |
|---|---|
| Coupon Code Field | Show/hide coupon input in checkout |
| Order Comment | Show/hide order comment textarea |
| Terms & Conditions | Show 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.
Settings (per module)
| Setting | Description |
|---|---|
| Products Per Row | Number 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 |
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.
| Module | Description |
|---|---|
| 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. |
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
| Setting | Description |
|---|---|
| Enable Home Layout | When 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
| Setting | Description |
|---|---|
| Schema Markup | JSON-LD structured data on pages |
| Open Graph Tags | og: meta tags for Facebook/LinkedIn link previews |
| Twitter Cards | twitter:card meta tags for X/Twitter previews |
| Canonical URL | <link rel="canonical"> to prevent duplicate content |
| Breadcrumb Schema | BreadcrumbList JSON-LD for Google breadcrumb display |
| Product Schema | Product JSON-LD with price, availability, and reviews |
| Local Business Schema | LocalBusiness JSON-LD for location-based searches |
Social & Business Info
| Setting | Description |
|---|---|
| Twitter Handle | Your @handle for Twitter Card site attribution |
| Business Name | Used in Organization and LocalBusiness schema |
| Business Type | Schema.org @type: Store, ClothingStore, ElectronicsStore, FurnitureStore, HomeGoodsStore, JewelryStore, BookStore, HardwareStore, or LocalBusiness |
| Business Address | Full street address for schema |
| Business Phone | Phone number (international format preferred) |
13. Performance Tab
Optimization
| Setting | Description |
|---|---|
| Lazy Load Images | Images load only when they enter the viewport. Reduces initial page load time significantly. |
| Defer JavaScript | Adds defer attribute to non-critical scripts for faster page rendering. |
| Minify HTML | Strips extra whitespace and comments from HTML output. |
| Minify CSS | Generates a minified gaper.min.css file (~30-40% smaller). Auto-regenerated when source CSS is newer. |
| Minify JS | Generates a minified gaper.min.js file (~20-30% smaller). Same auto-regeneration behavior as Minify CSS. |
| Preload Critical CSS | Adds <link rel="preload"> for the theme stylesheet. |
| Browser Caching | Adds Cache-Control and ETag headers for static assets. |
CDN & Preloading
| Setting | Description |
|---|---|
| Preload Fonts | Preload Google Fonts for faster text rendering |
| Preconnect CDN | Add <link rel="preconnect"> for CDN domain |
| CDN URL | Your CDN base URL (e.g., https://cdn.yourdomain.com) |
Analytics & Tracking
| Setting | Description |
|---|---|
| GTM ID | Google Tag Manager container ID (GTM-XXXXXXX) |
| GA4 ID | Google Analytics 4 measurement ID (G-XXXXXXXXXX) |
| Facebook Pixel | Facebook/Meta Pixel ID |
| TikTok Pixel | TikTok Pixel ID |
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
| Field | Description |
|---|---|
| Custom CSS | Added inside <style> in <head>. Use for quick CSS overrides without editing theme files. |
| Custom JavaScript | Added inside <script> before </body>. Use for tracking snippets, chat widgets, etc. |
| Head Code | Raw HTML injected at the end of <head>. Useful for meta tags, verification codes, or external stylesheet links. |
| Body Start Code | Raw HTML injected right after <body>. Useful for noscript tags or body-level tracking. |
| Footer Code | Raw 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:
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-darkclass 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:
| Variable | Color |
|---|---|
| Primary | #c8952c (Gold) |
| Background | #1a1a1a (Near Black) |
| Surface | #242424 (Dark Gray) |
| Text | #e8e8e8 (Light Gray) |
| Accent | #e8a830 (Amber) |
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
18. One Page Checkout (OPC)
The One Page Checkout replaces OpenCart's default multi-step checkout with a streamlined single-page experience.
Features
- 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
- Page loads → shipping methods auto-load (500ms delay)
- First shipping method auto-selected and saved
- After shipping save → payment methods load automatically
- First payment method auto-selected and saved
- Order summary and confirm section update
Loading Chain — Digital Products
- Page loads → payment methods auto-load directly (500ms delay)
- First payment method auto-selected and saved
- 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
- Go to theme settings → Checkout tab
- Toggle "Enable OPC" to On
- Configure layout and field options
- Save
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:
The subscriber list shows:
- Email address
- IP address
- Subscription date
- Status
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
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/headercommon/footercommon/homecommon/menucommon/cart(mini-cart)common/searchcommon/maintenance
Product
product/thumb(product card)product/product(product page)product/categoryproduct/searchproduct/specialproduct/relatedproduct/reviewproduct/manufacturer_info
Account
account/loginaccount/registeraccount/account
Checkout (Standard)
checkout/cart
Checkout (OPC Only — Loaded When OPC Is Enabled)
checkout/checkoutcheckout/registercheckout/shipping_methodcheckout/payment_methodcheckout/payment_addresscheckout/shipping_addresscheckout/confirm
Information
information/informationinformation/contact
Error
error/not_found
Modules
extension/opencart/module/category(3-level accordion)extension/opencart/module/banner(modern redesign)extension/opencart/module/featuredextension/opencart/module/latestextension/opencart/module/bestsellerextension/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_endfor special price) - Category module: 3-level category hierarchy data
- Header: Compare URL and
text_comparelanguage 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.
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
| Step | Action |
|---|---|
| 1 | Extract the new version zip file |
| 2 | Upload/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 |
| 3 | Go to Gaper Theme settings → click the OCMOD tab |
| 4 | Click Edit → select all (Ctrl+A) → delete |
| 5 | Open upload/ocmod/gaper.ocmod.xml from the new version in a text editor, copy all contents (Ctrl+A, Ctrl+C) |
| 6 | Paste into the textarea (Ctrl+V) → click Save to Database |
| 7 | Go to Extensions → Modifications → Refresh |
| 8 | Flush all caches from Dashboard |
OCMOD Editor Features
| Element | Description |
|---|---|
| Textarea | Displays the current OCMOD XML from the database. Read-only by default. |
| Version Badge | Shows the current OCMOD version stored in the database. |
| Edit Button | Unlocks the textarea for editing. |
| Save to Database | Validates the XML and saves it to the oc_modification table. The modification code is always kept as gaper. |
| Cancel Button | Reverts any unsaved changes and locks the textarea. |
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) |
|---|---|
|
|
Setup Checklist (Multi-Store)
- Create your additional store(s) under System > Settings > [New Store] and configure the store URL or domain.
- For each store (including Default): go to System > Settings > [Edit that store] > General tab, set Theme to "Gaper Theme", then Save.
- Open the Gaper Theme admin page. The store dropdown appears at the top of the settings card.
- Select each store from the dropdown and configure its settings individually. Remember to click Save on each store before switching.
- Verify by visiting the frontend URL of each store — they should render with their respective configured settings.
Troubleshooting
| Problem | Solution |
|---|---|
| Store dropdown not appearing | You 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 frontend | Ensure 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 settings | You may have saved settings only on the Default Store. Switch to each individual store via the dropdown and save settings separately. |
25. File Structure
Changelog
v1.2.1
| Type | Description |
|---|---|
| New Feature | Smart 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 Feature | Mega 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. |
| Improvement | Header Admin UX — Header settings are now organized using internal tabs (General, Smart Search, Mega Menu) for faster navigation and clearer structure. |
v1.2.0
| Type | Description |
|---|---|
| New Feature | Multi-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 Feature | Home 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 Feature | Gaper-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). |
| Fix | Card 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. |
| Fix | Gallery 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
| Type | Description |
|---|---|
| New Feature | Flip 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 Feature | Live 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 Feature | OCMOD 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.