Files
magdev 7fda8e1962 Add Bootstrap 5 single product page layout
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>
2026-02-28 17:55:39 +01:00

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>