You've already forked wc-bootstrap
Add two-column responsive grid (image gallery + product summary) for
single product pages, following the same bridge pattern used for
product archives.
Key changes:
- Create content-single-product.php bridge and Twig layout template
- Add single product renderer at template_redirect priority 11
- Disable WooCommerce block compatibility layer that strips classic
hooks when parent theme has theme.json
- Move PHP templates to woocommerce/ subfolder for cleaner structure
- Fix Twig templates to self-compute context data not passed by
wc_get_template() (tabs, short-description, meta, rating)
- Fix Underscore.js triple-brace syntax conflict in variation template
by wrapping in {% verbatim %}
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
45 lines
1.5 KiB
Twig
45 lines
1.5 KiB
Twig
{#
|
|
# Product Meta (Bootstrap 5 Override)
|
|
#
|
|
# Renders SKU, categories, and tags as a definition list.
|
|
#
|
|
# Expected context:
|
|
# product - WC_Product object (from TemplateOverride)
|
|
#
|
|
# WooCommerce PHP equivalent: single-product/meta.php
|
|
#
|
|
# @package WcBootstrap
|
|
# @since 0.1.0
|
|
#}
|
|
|
|
{# Compute categories/tags HTML when not passed as context. #}
|
|
{% if categories_html is not defined %}
|
|
{% set categories_html = fn('wc_get_product_category_list', product.get_id(), ', ') %}
|
|
{% endif %}
|
|
{% if tags_html is not defined %}
|
|
{% set tags_html = fn('wc_get_product_tag_list', product.get_id(), ', ') %}
|
|
{% endif %}
|
|
|
|
<div class="product_meta border-top pt-3 mt-3">
|
|
{{ do_action('woocommerce_product_meta_start') }}
|
|
|
|
<dl class="row mb-0 small">
|
|
{% if product.get_sku() is defined and product.get_sku() %}
|
|
<dt class="col-sm-3 text-body-secondary">{{ __('SKU:') }}</dt>
|
|
<dd class="col-sm-9">{{ product.get_sku()|esc_html }}</dd>
|
|
{% endif %}
|
|
|
|
{% if categories_html %}
|
|
<dt class="col-sm-3 text-body-secondary">{{ fn('_n', 'Category:', 'Categories:', product.get_category_ids()|length, 'woocommerce') }}</dt>
|
|
<dd class="col-sm-9">{{ categories_html|raw }}</dd>
|
|
{% endif %}
|
|
|
|
{% if tags_html %}
|
|
<dt class="col-sm-3 text-body-secondary">{{ fn('_n', 'Tag:', 'Tags:', product.get_tag_ids()|length, 'woocommerce') }}</dt>
|
|
<dd class="col-sm-9">{{ tags_html|raw }}</dd>
|
|
{% endif %}
|
|
</dl>
|
|
|
|
{{ do_action('woocommerce_product_meta_end') }}
|
|
</div>
|