Skip to content

Developer notes

Item Value
Add-on id kv_theme_bento
Theme kv_bento (child of responsive), installed from var/themes_repository/kv_bento
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 bt- (theme), kv- (kit)
  • design/themes/kv_bento/css/kit/{fonts,base,features,addons}.less (kit layer), css/skin/skin.less (Bento), styles/data/{Fog,Graphite,Pop,Lab}.less (styles).
  • Block templates: blocks/products/kv_bento.tpl (product section, featured 2 × 2 card), blocks/products/kv_deal_tile.tpl (deal-of-the-day tile), blocks/categories/kv_mosaic.tpl (category mosaic), blocks/static_templates/kv_cathead.tpl (category header tile), plus the kit’s blocks/menu/kv_mega.tpl, blocks/static_templates/kv_icons.tpl and blocks/wrappers/kv_gate.tpl.
  • Hook files in templates/addons/kv_theme_bento/hooks/products/: product_multicolumns_list.pre (compare toggle, spec chips, featured lead on every grid card; card parts are placed by CSS grid), main_info_title.pre (SKU kicker), main_info_title.post (lead and chips), product_tabs.pre (“The numbers” tiles). Core and add-on templates are not overridden.
  • Add-on: Tygh/Addons/KvThemeBento/Theme/Kit.php (install, licence gate, admin notice, upgrade refresh, card data), Theme/Demo.php (demo content on activation), License/, Upgrade/Synchronizer.php, js/addons/kv_theme_bento/{kit,theme}.js.
Hook Use
before_dispatch (storefront) assigns $kv_theme while the add-on is enabled, the storefront runs kv_bento and the licence is active
gather_additional_products_data_post kit: kv_chips (features shown in product lists), kv_promo_end (end of the active catalog promotion); Bento: bt_chips (fallback: first three short feature values)
get_product_data_post products.view only: bt_specs (five short feature values) and bt_numbers (number + unit + feature name, up to five)
get_categories_post bt_lead (first sentence of a top-level category description, for the mosaic’s big tile)
dispatch_before_display, update_addon_status_post kit: admin notice, demo content, status

Every data hook returns at once unless the storefront runs the licensed theme; the data depends on the catalogue only (one feature query per product list).

The theme prints nothing visitor-specific into cached markup. The countdown is an end date (the same for everyone), ticked by theme.js. The compare toggle is a core AJAX link (product_features.add_product / delete_product, result ids comparison_list,account_info*); its ticked state is kept in the visitor’s browser (localStorage) and reset when the account block reports an empty comparison list. Header counters are filled by kit.js from the core cart and account blocks.

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_*, @bt_*) set by each style file; the ruled grid of Lab is @bt_ruled: true with @bt_grid_gap: 1px and @bt_grid_bg as the hairline colour.