Developer notes
| Item | Value |
|---|---|
| Add-on id | kv_theme_grove |
| Theme | kv_grove (child of responsive), installed from var/themes_repository/kv_grove |
| 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 | gr- (theme), kv- (kit) |
design/themes/kv_grove/css/kit/{fonts,base,features,addons}.less(kit layer),css/skin/skin.less(Grove),styles/data/{Oat,Fern,Rosehip,Dusk}.less(styles),media/images/grove/*.svg(botanical illustrations of the seals).- Block templates:
blocks/categories/kv_arches.tpl(ritual arches),blocks/products/kv_arch_grid.tpl(arch grid section),blocks/products/kv_ritual.tpl(ritual steps with one multi-product add-to-cart form, dispatchcheckout.add), plus the kit’sblocks/menu/kv_mega.tpl,blocks/static_templates/kv_icons.tplandblocks/wrappers/kv_gate.tpl. - Hook files in
templates/addons/kv_theme_grove/hooks/:products/product_multicolumns_list.post(seal, size, Latin name, quick sizes),products/product_multicolumns_list_control.post(Add in grids that hide it, by re-capturing the stock add-to-cart block),products/main_info_title.post,products/image_wrap.post(ring seal),products/product_detail_bottom.pre(note, claims),products/product_tabs.pre(what is inside, how to use),categories/view_description.pre(wide arch),index/footer.post(wordmark),wrapper/mainbox_simple_title.override(*word*accent titles; the stock title for every other title). Partials inpartials/kv_*.tpl. Core and add-on templates are not overridden.
Hooks and data
Section titled “Hooks and data”| Hook | Use |
|---|---|
before_dispatch (storefront) |
kit: assigns $kv_theme while the add-on is enabled, the storefront runs kv_grove and the licence is active |
gather_additional_products_data_post |
$product.kv_gr (latin, bot, seal_img, size, claims, ring, step, step_time, inside, howto) from features with the codes KEY_INGREDIENT, SIZE, CLAIMS, RITUAL_STEP, INSIDE_1..3, HOW_TO_USE (one query per product list; variant image of a select KEY_INGREDIENT via fn_get_image_pairs(..., 'feature_variant')) |
get_categories_post |
index only: kv_gr_lead (first sentence of the description) for the ritual arches |
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 (block cache and full page cache safe). The ritual form and the quick size chips post the stock add-to-cart request.
Style contract for a subscription / refill add-on
Section titled “Style contract for a subscription / refill add-on”<div class="gr-ptype" role="radiogroup"> <label class="gr-pt is-sel"><input type="radio" name="..."><i></i><span><b>Refill every 12 weeks</b>Save 10 %</span><em>$43.20</em></label></div>.gr-pt is a radio card (surface, hairline, selected = ink ring + accent dot). It is styled but not printed by Grove.
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_*, @gr_*) set by each style file.