Developer notes
| Item | Value |
|---|---|
| Add-on id | kv_theme_nordhaus |
| Theme | kv_nordhaus (child of responsive), installed from var/themes_repository/kv_nordhaus |
| 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 | nh- (theme), kv- (kit) |
design/themes/kv_nordhaus/css/kit/{fonts,base,features,addons}.less(kit layer),css/skin/skin.less(Nordhaus),styles/data/{Linen,Walnut,Fjord,Terrazzo}.less(styles).- Block templates:
blocks/categories/kv_nh_roombar.tpl(room bar + mega panels),kv_nh_rooms.tpl(shop by room),kv_nh_materials.tpl(material library),blocks/products/kv_nh_room.tpl(room scene with hotspots, room total and the “Add the room” form),kv_nh_grid.tpl(product section: grid, rail, tab),kv_nh_ribbon.tpl(sale ribbon),kv_nh_spot.tpl(spotlight with dimensions), and the kit templates (kv_icons,kv_mega,kv_gate). - Partials in
templates/addons/kv_theme_nordhaus/partials/:kv_nh_card.tpl(card extras),kv_nh_scene.tpl(built-in room scenes as inline SVG, painted with CSS variables--nh-wall,--nh-walld,--nh-floor,--nh-skirt). - Hook files in
templates/addons/kv_theme_nordhaus/hooks/:index/html_tag.pre(data-nhtokens: page type and settings),index/scripts.pre(texts for theme.js),products/product_multicolumns_list.pre(card extras),products/main_info_title.pre(room line and the buy-box extras theme.js moves into place: saving, monthly price, lead time with the delivery range, material images for the texture tiles),products/product_tabs.pre(Will it fit?),categories/view_description.post(product types of a room). Core and add-on templates are not overridden, so add-on hooks keep working. js/addons/kv_theme_nordhaus/theme.js: hotspot placement and highlight, room scroller, rails, filter bar, product page extras and texture tiles, doorway check; kit components (floating tab bar, 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_nordhaus 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.nh: swatches (sw: material name + texture image), first material, dimensions and text, lead time, delivery range in days, fast / made-to-order / from / new flags, saving and regular price; product page: fit drawing sizes and the material image map (kit: kv_promo_end, kv_seller) |
get_product_data_post |
products.view: nh_root (room of the product for the room bar), nh_room (room / product type line) |
get_category_data_post |
categories.view: nh_types (product types with image and count), nh_count |
get_categories_post |
Nordhaus categories blocks only: second and third level, piece counts and the bestseller per room (room bar), counts (room tiles), materials with counts and links (material library) |
| Block cache | callable_handlers.kv_theme_nordhaus = licence and settings state |
Every data hook returns at once unless the storefront runs the licensed theme; the data depends on the catalogue only and is kept in request caches (nothing is written to a persistent cache on storefront requests). Full page cache (4.21): the theme prints nothing visitor-specific; cart and saved counters come from the core blocks in the browser, the delivery window is computed in the browser and the doorway check never leaves the page.
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_*, @nh_*) set by each style file, e.g. @nh_wall / @nh_wall_deep / @nh_floor
/ @nh_skirt (room and wells), @nh_hot (hotspots), @nh_frame / @nh_frame_bg (room mat), @nh_bar (room bar),
@nh_ribbon (sale ribbon), @nh_band (services band), @nh_speckle (Terrazzo chips).