Files
wc-bootstrap/templates/wc-base.html.twig
magdev 6ee95f4a2f
All checks were successful
Create Release Package / PHP Lint (push) Successful in 57s
Create Release Package / Build Release (push) Successful in 1m11s
Fix template quirks and bump version to 0.1.0
Audit and fix 14 Twig templates for escaping bugs, CSS conflicts,
and missing Bootstrap styling:
- Fix nl2br/esc_html filter order in order details
- Add WC gallery modifier classes for zoom/photoswipe JS init
- Fix HTML entity double-encoding in headings (up-sells, cross-sells, related)
- Remove wrong 'is defined' guards on function calls
- Remove duplicate deprecated hooks in dashboard
- Add |raw to brand description HTML filter chain
- Add role="alert" for accessibility, |esc_attr on notification types
- Style mini-cart remove button as Bootstrap btn
- Make shipping form-check class conditional
- Add shop_table CSS reset and gallery opacity fallback

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-28 18:50:19 +01:00

78 lines
3.1 KiB
Twig

{#
# Base Template (Bootstrap 5 Override)
#
# WooCommerce base layout (renamed from base.html.twig to avoid
# shadowing the parent theme's full page shell).
# Provides the basic structure and block definitions.
#
# When _theme_wrapped is true, the parent theme already provides the page
# shell (header, footer, container). The outer wrapper, breadcrumbs,
# sidebar, and head blocks are skipped to avoid double-wrapping.
# The scripts block is always rendered because child templates use it for
# page-specific inline JavaScript (e.g. AJAX form handlers).
#
# @package WcBootstrap
# @since 0.1.0
#}
{% set _wrapped = _theme_wrapped is defined and _theme_wrapped %}
{% if not _wrapped %}{% block head %}{% endblock %}{% endif %}
{% if not _wrapped %}<div class="container my-4">{% endif %}
{% block notifications %}
{% if notifications is defined and notifications|length > 0 %}
{% for notification in notifications %}
<div class="alert alert-{{ notification.type|default('info')|esc_attr }} alert-dismissible fade show" role="alert">
{{ notification.message|wp_kses_post }}
<button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="{{ __('Close') }}"></button>
</div>
{% endfor %}
{% endif %}
{% if flash_messages is defined %}
{% for type, messages in flash_messages %}
{% for message in messages %}
<div class="alert alert-{{ type|esc_attr }} alert-dismissible fade show" role="alert">
{{ message|wp_kses_post }}
<button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="{{ __('Close') }}"></button>
</div>
{% endfor %}
{% endfor %}
{% endif %}
{% endblock %}
{% if not _wrapped %}<main>{% endif %}
{% block breadcrumbs %}
{% if not _wrapped and breadcrumbs is defined and breadcrumbs|length > 0 %}
<nav aria-label="{{ __('Breadcrumb') }}">
<ol class="breadcrumb">
<li class="breadcrumb-item">
<a href="{{ home_url() }}">{{ __('Home') }}</a>
</li>
{% for crumb in breadcrumbs %}
{% if crumb.url %}
<li class="breadcrumb-item">
<a href="{{ crumb.url|esc_url }}">{{ crumb.label|esc_html }}</a>
</li>
{% else %}
<li class="breadcrumb-item active" aria-current="page">{{ crumb.label|esc_html }}</li>
{% endif %}
{% endfor %}
</ol>
</nav>
{% endif %}
{% endblock %}
{% block content %}{% endblock %}
{% if not _wrapped %}</main>{% endif %}
{% block sidebar %}{% endblock %}
{% if not _wrapped %}</div>{% endif %}
{% block scripts %}{% endblock %}