{% sw_extends '@Storefront/storefront/page/product-detail/index.html.twig' %}{% block base_head %} {{ parent() }}{% endblock %}{% block base_content %} {% block page_product_detail %} <div class="container"> <div class="product-detail" itemscope itemtype="https://schema.org/Product"> {% block page_product_detail_inner %} {% block page_product_detail_content %} <div class="product-detail-content"> {% block page_product_detail_headline %} {% endblock %} {% set mediaItems = page.product.media.media %} {% block page_product_detail_main %} <div class="row product-detail-main"> {% block page_product_detail_media %} {{ parent() }} {% endblock %} {% block page_product_detail_buy %} <div class="col-lg-5 product-detail-buy"> <div class="row align-items-center product-detail-headline"> {% sw_include '@Storefront/storefront/page/product-detail/headline.html.twig' %} </div> {% sw_include '@Storefront/storefront/page/product-detail/buy-widget.html.twig' %} </div> {% endblock %} </div> {% endblock %} </div>{# 2024-04-18Uwe Feldmann: Anpassung der Darstellung StaffelpreisePreise und Warenkorb nur anzeigen, wenn eingeloggt#} {% block page_product_detail_content_zweipunkt_variant %} <span id="variants"></span> {% if page.allVariants and page.zweiPunktVariantTableConfig.zpvatabActive %} <table class="variant-table metallit"> <thead style=" background-color: {{ page.zweiPunktVariantTableConfig.zpvtheadBgcolor }}; color: {{ page.zweiPunktVariantTableConfig.zpvtfontBgcolor }}"> <tr> {% block zweipunkt_variant_table_img_columns_headers %} {% if page.zweiPunktVariantTableConfig.zpvtimgActive %} <th></th> {% endif %} {% endblock %} {% block zweipunkt_variant_table_productNumber_columns_headers %} {% if page.zweiPunktVariantTableConfig.zpvtpnActive %} <th> <span>{{ 'zweipunkt.variant.productNumber'|trans }}</span> </th> {% endif %} {% endblock %} {% block zweipunkt_variant_table_manufacturerNumber_columns_headers %} {% if page.zweiPunktVariantTableConfig.zpvtmnActive %} <th> <span>{{ 'zweipunkt.variant.manufacturerNumber'|trans }}</span> </th> {% endif %} {% endblock %} {% block zweipunkt_variant_table_options_columns_headers %} {% if page.zweiPunktVariantTableConfig.zpvtopActive %} <th> <span>{{ 'zweipunkt.variant.options'|trans }}</span> </th> {% endif %} {% endblock %} {% block zweipunkt_variant_table_purchaseSteps_columns_headers %} {% if page.zweiPunktVariantTableConfig.zpvtpsActive %} <th> <span>{{ 'zweipunkt.variant.purchaseSteps'|trans }}</span> </th> {% endif %} {% endblock %} {% block zweipunkt_variant_table_purchaseUnit_columns_headers %} {% if page.zweiPunktVariantTableConfig.showUnit %} <th> <span>{{ 'zweipunkt.variant.purchaseUnit'|trans }}</span> </th> {% endif %} {% endblock %} {% block zweipunkt_variant_table_price_columns_headers %} {% if page.zweiPunktVariantTableConfig.zpvtpActive and context.customer.customerNumber > "" %} <th> <span>{{ 'zweipunkt.variant.price'|trans }}{{ "general.star"|trans|sw_sanitize }}</span> </th> {% endif %} {% endblock %} {% block zweipunkt_variant_table_inStock_columns_headers %} {% if page.zweiPunktVariantTableConfig.zpvtisActive %} <th> <span>{{ 'zweipunkt.variant.inStock'|trans }}</span> </th> {% endif %} {% endblock %} {% block zweipunkt_variant_table_deliveryTime_columns_headers %} {% if page.zweiPunktVariantTableConfig.zpvtdsActive %} <th> <span>{{ 'zweipunkt.variant.deliveryTime'|trans }}</span> </th> {% endif %} {% endblock %} {% block zweipunkt_variant_table_advancedPrices_columns_headers %} {% set showAdvancedPrices = false %} {% if page.zweiPunktVariantTableConfig.zpvtspActive %} {% for variant in page.allVariants %} {% if variant.advancedPrices is not empty %} {% set showAdvancedPrices = true %} {% break %} {% endif %} {% endfor %} {% endif %} {% if showAdvancedPrices and context.customer.customerNumber > "" %} <th> <span>{{ 'zweipunkt.variant.advancedPrices'|trans }}</span> </th> {% endif %} {% endblock %} {% block zweipunkt_variant_table_extra_columns_headers %} {% endblock %} {% block zweipunkt_variant_table_basket_columns_headers %} {% if page.zweiPunktVariantTableConfig.zpvtkbActive and context.customer.customerNumber > "" %} <th class="basket-column"></th> {% endif %} {% endblock %} </tr> </thead> <tbody> {% for variant in page.allVariants %} <tr {% if variant.productNumber == page.product.productNumber %} class="active" {% endif %}> {% block zweipunkt_variant_table_img_columns %} {% if page.zweiPunktVariantTableConfig.zpvtimgActive %} <td {% if 2 == page.zweiPunktVariantTableConfig.zpvtArt %}class="td-compact"{% endif %}> <a href="{{ seoUrl('frontend.detail.page', {'productId': variant.id}) }}"> <img class="{% if 1 == page.zweiPunktVariantTableConfig.zpvtArt %}detail-variant-table-image{% else %}detail-variant-table-image-compact{% endif %}" src="{{ variant.media }}" alt="{{ variant.altTag }}" width="90" height="90"> </a> </td> {% endif %} {% endblock %} {% block zweipunkt_variant_table_productNumber_columns %} {% if page.zweiPunktVariantTableConfig.zpvtpnActive %} <td {% if 2 == page.zweiPunktVariantTableConfig.zpvtArt %}class="td-compact"{% endif %} data-title="{{ 'zweipunkt.variant.productNumber'|trans }}"> <a href="{{ seoUrl('frontend.detail.page', {'productId': variant.id}) }}"> <span class="zweipunkt-table-variant-content">{{ variant.productNumber }}</span> </a> </td> {% endif %} {% endblock %} {% block zweipunkt_variant_table_manufacturerNumber_columns %} {% if page.zweiPunktVariantTableConfig.zpvtmnActive %} <td {% if 2 == page.zweiPunktVariantTableConfig.zpvtArt %}class="td-compact"{% endif %} data-title="{{ 'zweipunkt.variant.manufacturerNumber'|trans }}"> <span class="zweipunkt-table-variant-content">{{ variant.manufacturerNumber }}</span> </td> {% endif %} {% endblock %} {% block zweipunkt_variant_table_options_columns %} {% if page.zweiPunktVariantTableConfig.zpvtopActive %} <td {% if 2 == page.zweiPunktVariantTableConfig.zpvtArt %}class="td-compact"{% endif %} data-title="{{ 'zweipunkt.variant.options'|trans }}"> {% for option in variant.options %} <span class="zweipunkt-table-variant-content">{{ option }}</span><br> {% endfor %} </td> {% endif %} {% endblock %} {% block zweipunkt_variant_table_purchaseSteps_columns %} {% if page.zweiPunktVariantTableConfig.zpvtpsActive %} <td {% if 2 == page.zweiPunktVariantTableConfig.zpvtArt %}class="td-compact"{% endif %} data-title="{{ 'zweipunkt.variant.purchaseSteps'|trans }}"> <span class="zweipunkt-table-variant-content">{{ variant.purchaseSteps }}</span> </td> {% endif %} {% endblock %} {% block zweipunkt_variant_table_purchaseUnit_columns %} {% if page.zweiPunktVariantTableConfig.showUnit %} <td {% if 2 == page.zweiPunktVariantTableConfig.zpvtArt %}class="td-compact"{% endif %} data-title="{{ 'zweipunkt.variant.purchaseUnit'|trans }}"> <span class="zweipunkt-table-variant-content">{{ variant.purchaseUnit }} {{ variant.purchaseUnitName }}</span> </td> {% endif %} {% endblock %}{# 2024-11-29Uwe Feldmann: Einzelpreis anzeigen wenn die Mindestabnahme > 1 ist#} {% block zweipunkt_variant_table_price_columns %} {% if page.zweiPunktVariantTableConfig.zpvtpActive and context.customer.customerNumber > "" %} <td {% if 2 == page.zweiPunktVariantTableConfig.zpvtArt %}class="td-compact"{% endif %} data-title="{{ 'zweipunkt.variant.price'|trans }}{{ "general.star"|trans|sw_sanitize }}"> {% block zweipunkt_variant_table_price_block_row %} <span class="zweipunkt-table-variant-content">{{ (variant.price/variant.minPurchase)|currency }}</span> {% if 0 != variant.referenceUnitPrice %} <span class="zweipunkt-variant-referenceUnit"> ({{ variant.referenceUnitPrice|currency }} / {{ variant.referenceUnit }} {{ variant.referenceUnitName }}) </span> {% endif %} {% endblock %} </td> {% endif %} {% endblock %} {% block zweipunkt_variant_table_inStock_columns %} {% if page.zweiPunktVariantTableConfig.zpvtisActive %} <td {% if 2 == page.zweiPunktVariantTableConfig.zpvtArt %}class="td-compact"{% endif %} data-title="{{ 'zweipunkt.variant.inStock'|trans }}"> <span class="zweipunkt-table-variant-content"> {% sw_include '@ZweiPunktVariantsTableOverview/storefront/deliveries/delivery-information-icon.html.twig' ignore missing with { product: variant } %} </span> </td> {% endif %} {% endblock %} {% block zweipunkt_variant_table_deliveryTime_columns %} {% if page.zweiPunktVariantTableConfig.zpvtdsActive %} <td {% if 2 == page.zweiPunktVariantTableConfig.zpvtArt %}class="td-compact"{% endif %} data-title="{{ 'zweipunkt.variant.deliveryTime'|trans }}"> <span class="zweipunkt-table-variant-content"> {% sw_include '@ZweiPunktVariantsTableOverview/storefront/deliveries/delivery-information-time.html.twig' ignore missing with { product: variant } %} </span> </td> {% endif %} {% endblock %} {% block zweipunkt_variant_table_advancedPrices_columns %} {% if page.zweiPunktVariantTableConfig.zpvtspActive and variant.advancedPrices and context.customer.customerNumber > "" %} <td id="td-advanced-prices" {% if 2 == page.zweiPunktVariantTableConfig.zpvtArt %}class="td-compact"{% endif %} data-title="{{ 'zweipunkt.variant.advancedPrices'|trans }}"> <div class="zweipunkt-table-variant-content"> <table class="table product-block-prices-grid"> <tbody class="product-block-prices-body">{# 2024-02-21Uwe Feldmann: Anpassung der Darstellung StaffelpreiseIm Standard wird der Preis immer mit dem Bis-Wert angezeigt.Da price.quantity auch immer nur den Bis-Wert enthält, wird hier in der Haupt-Schleife der letzte Bis-Wert in die Variable oldquantity geschrieben und um 1 erhöht. Dadurch enthält dieser Wert dann immer den Von-Wert der nächsten Staffel.In der ersten Zeile kann die Mengenangabe über CSS .product-block-prices-quantity-first unterdrückt werden.Die Anzeige der Einheiten kann über CSS .product-block-prices-quantity-unit gesteuert werden.#} {% set old_quantity = 1 %} {% for price in variant.advancedPrices %} {% if price %} <tr class="product-block-prices-row" itemprop="offers" itemscope itemtype="https://schema.org/Offer"> <td class="product-block-prices-cell product-block-prices-cell-thin"> {% set unitId = variant.unitId %} {% set unitPer = page.zweiPunktVariantTableConfig.unitPer %} {% set uniteEach = page.zweiPunktVariantTableConfig.uniteEach %} {% set unitFrom = page.zweiPunktVariantTableConfig.unitFrom %} {# {% if unitId in unitPer %} {{ 'zweipunkt.variant.unitPer'|trans|raw }} {% elseif unitId in uniteEach %} {{ 'zweipunkt.variant.uniteEach'|trans|raw }} {% elseif unitId in unitFrom %} {{ 'zweipunkt.variant.unitFrom'|trans|raw }} {% else %} {% endif %} #} {% if loop.first %} <span class="product-block-prices-quantity product-block-prices-quantity-first"> 1 </span> <span class="product-block-prices-quantity product-block-prices-quantity-first product-block-prices-quantity-unit"> {{ variant.unitShortCode|trans|sw_sanitize }} </span> {% else %} <span class="product-block-prices-quantity"> {{ "detail.priceDataInfoFrom"|trans|sw_sanitize }} {{ old_quantity }} </span> <span class="product-block-prices-quantity product-block-prices-quantity-unit"> {{ variant.unitShortCode|trans|sw_sanitize }} </span> {% endif %} </td> <td class="product-block-prices-cell product-block-prices-cell-thin"> {{ price.unitPrice|currency }} </td> </tr> {% endif %} {% set old_quantity = price.quantity+1 %} {% endfor %} </tbody> </table> </div> </td> {% endif %} {% endblock %} {% block zweipunkt_variant_table_extra_columns %} {% endblock %} {% block zweipunkt_variant_table_basket_columns %} {% if page.zweiPunktVariantTableConfig.zpvtkbActive and context.customer.customerNumber > "" %} <td class="basket-column{% if 2 == page.zweiPunktVariantTableConfig.zpvtArt %} td-compact{% endif %}"> <form id="productDetailPageBuyProductForm" action="{{ path('frontend.checkout.line-item.add') }}" method="post" class="buy-widget" data-add-to-cart="true"> {% if page.variantsTable_csrf_token %} <input type="hidden" name="_csrf_token" value="{{ page.variantsTable_csrf_token }}"> {% endif %} {% set buyable = variant.available%} {% if buyable %} {% if 1 == page.zweiPunktVariantTableConfig.zpvtArt %} <div class="zweipunkt-buybox-input"> <div class="zweipunkt-buy-decrease-button">-</div> <div class="input--field"> <input name="lineItems[{{ variant.id }}][quantity]" type="number" id="sQuantity" class="quantity--select buy-select" value="{{ variant.minPurchase }}" min="{{ variant.minPurchase }}" max="{{ variant.availableStock }}" step="{{ variant.purchaseSteps }}"> </div> <div class="zweipunkt-buy-increase-button">+</div> </div> {% endif %} <div class="form-row buy-widget-container"> <input type="hidden" name="redirectTo" value="frontend.detail.page"> <input type="hidden" name="redirectParameters" data-redirect-parameters="true" value='{"productId": "{{ variant.id }}"}'> <input type="hidden" name="lineItems[{{ variant.id }}][id]" value="{{ variant.id }}"> <input type="hidden" name="lineItems[{{ variant.id }}][type]" value="product"> <input type="hidden" name="lineItems[{{ variant.id }}][referencedId]" value="{{ variant.id }}"> <input type="hidden" name="lineItems[{{ variant.id }}][stackable]" value="1"> <input type="hidden" name="lineItems[{{ variant.id }}][removable]" value="1"> <input type="hidden" name="product-name" value="{{ variant.translated.name }}"> <button class="btn btn-primary btn-block btn-buy {% if 2 == page.zweiPunktVariantTableConfig.zpvtArt %}btn-compact{% endif %}" style="background-color: {{ page.zweiPunktVariantTableConfig.zpvtbuttonBgcolor }}; color: {{ page.zweiPunktVariantTableConfig.zpvtbuttonfontBgcolor }}; border-color: {{ page.zweiPunktVariantTableConfig.zpvtbuttonfontBgcolor }};" title="{{ "detail.addProduct"|trans|striptags }}" aria-label="{{ "detail.addProduct"|trans|striptags }}"> {% sw_icon 'basket' %} </button> </div> {% else %} <a class="btn btn-primary btn-block btn-buy {% if 2 == page.zweiPunktVariantTableConfig.zpvtArt %}btn-compact{% endif %}" style="background-color: {{ page.zweiPunktVariantTableConfig.zpvtbuttonBgcolor }}; color: {{ page.zweiPunktVariantTableConfig.zpvtbuttonfontBgcolor }}; border-color: {{ page.zweiPunktVariantTableConfig.zpvtbuttonfontBgcolor }};" href="{{ seoUrl('frontend.detail.page', {'productId': variant.id}) }}"> {% sw_icon 'info' %} </a> {% endif %} </form> </td> {% endif %} {% endblock %} </tr> {% endfor %} </tbody> </table> {% endif %} {% endblock %} {% endblock %} {% block page_product_detail_tabs %} {{ parent() }} {% endblock %} {% block page_product_detail_cross_selling %} {{ parent() }} {% endblock %} {% endblock %} </div> </div> {% endblock %}{% endblock %}