Developer notes
| Item | Value |
|---|---|
| Add-on id | kv_theme_volt |
| Theme | kv_volt (child of responsive), installed from var/themes_repository/kv_volt |
| Built with | Kavio theme kit 1.x (kv-files.json in the theme lists every file with its hash and the kit version) |
| CSS prefix | vt- (theme), kv- (kit) |
design/themes/kv_volt/css/kit/{fonts,base,features,addons}.less(kit layer),css/skin/skin.less(Volt),styles/data/{Daylight,Signal,Ember,Carbon}.less(styles).- Block templates:
blocks/categories/kv_vt_iconbar.tpl(category icon bar + mega panels),kv_vt_index.tpl(shop by category),kv_vt_brands.tpl(brand stores),blocks/products/kv_vt_stage.tpl(deal stage with spec callouts),kv_vt_tiles.tpl(countdown deal tiles),kv_vt_grid.tpl(product section: grid, deals row, rail, lab scores, tab),kv_vt_versus.tpl(head to head), and the kit templates (kv_search,kv_icons,kv_mega,kv_gate). - Hook files in
templates/addons/kv_theme_volt/hooks/:index/html_tag.pre(data-vttokens: page type and settings),index/scripts.pre(texts, settings and comparison URLs for theme.js),products/product_multicolumns_list.pre(card extras:partials/kv_vt_card.tpl),products/main_info_title.pre(brand line and the buy-box extras theme.js moves into place: saving, monthly price, at a glance, stock line, price history),categories/view_description.post(brand chips). Core and add-on templates are not overridden, so add-on hooks keep working. js/addons/kv_theme_volt/theme.js: compare toggles and the compare tray, rails, meter fill, product page extras and protection plan cards; kit components (bottom bar with a Compare tab, buy bar, option chips, filter sheet, swipe gallery).
| Hook | Use |
|---|---|
before_dispatch (storefront) |
assigns $kv_theme (theme, settings, data-kvt tokens) while the add-on is enabled, the storefront runs kv_volt and the licence is active |
dispatch_before_display (admin) |
notice while a storefront uses the theme and the design is off; demo content import after activation |
update_addon_status_post |
warning when the add-on is disabled while a storefront uses the theme |
gather_additional_products_data_post |
$product.vt: brand, condition, numeric specs with display values (specs), spec meters (m), lab score, saving, regular price, stock flag, price history (product page; Omnibus price history data) (kit: kv_promo_end, kv_seller) |
get_product_data_post |
products.view: vt_root (top-level category of the product for the icon bar) |
get_category_data_post |
categories.view: vt_brands (brand chips with counts and filter links) |
get_categories_post |
Volt categories blocks only: icon key, second and third level, brands and the top deal per category (icon bar), product counts (index), brands of the catalogue (brand stores) |
| Block cache | callable_handlers.kv_theme_volt = licence and settings state |
Every data hook returns at once unless the storefront runs the licensed theme; the data depends on the catalogue only.
Meter ranges (per main category, top-level category and catalogue) are kept in the registry cache and refreshed when
products, feature values or categories change. Full page cache (4.21): the theme prints nothing visitor-specific; cart,
wish list and compare counters come from the core blocks in the browser, and the compare tray keeps its list in the
browser and posts the stock product_features.add_product / delete_product dispatches.
Customising
Section titled “Customising”Use a child theme or the Theme editor’s custom CSS. Upgrades replace only theme files you have not changed. Design
tokens are LESS variables (@kv_*, @vt_*) set by each style file, e.g. @vt_top (top band), @vt_head (header),
@vt_bar (icon bar), @vt_stage (deal stage), @vt_lead_line (callout lines), @vt_meter / @vt_meter_gap (spec
meters), @vt_tray (compare tray), @vt_band (trade-in band), @vt_well (product image wells).