Rechnungstemplate: logo.html.twig updatesicher anpassen

Hallo Gemeinde,
aus technischen Gründen muss ich die Datei

logo.html.twig

im Verzeichnis

/vendor/shopware/core/Framework/Resources/views/documents/includes

anpassen. Ich muss also einen Override erstellen. In der Shopware Doku wird leider nur beschrieben, wie ich das für die Datei in /documents machen kann. Also z.B. die Base Datei muss dann in

custom/plugins/DeinTheme/src/Resources/views/documents/

Wie kann ich es schaffen, dass die /includes/logo.html.twig updatesicher geändert werden kann?

Gruß
kweb

Einfach den entsprechenden Block aus der include in base.html.twig nach dem include Befehl schreiben. Dann wird der Block ersetzt.

Hi, dann würde die Base dann so aussehen?

{#

Notice for plugins and theme developer:

This template can be extended over sw_extends.
The blocks from the templates in the /includes folder can be overwritten directly in this template

merge 16.11.2020
#}
{% use '@Framework/documents/includes/loop.html.twig' %}
{% use '@Framework/documents/includes/footer.html.twig' %}
{% use '@Framework/documents/includes/summary.html.twig' %}
{% use '@Framework/documents/includes/payment_shipping.html.twig' %}
{% use '@Framework/documents/includes/comment.html.twig' %}
{% use '@Framework/documents/includes/shipping_address.html.twig' %}

{% block logo %}
    {# To include a header or footer on every site, these elements have to be defined before the content #}
    {% if config.displayHeader %}
        <header>
            {% block document_header %}
                {% if config.logo %}
                    <img src="HIER PASSE ICH AN..." class="logo"/>
                {% endif %}
            {% endblock %}
        </header>
    {% endif %}
{% endblock %}


{% block document_base %}
    {# @var order \Shopware\Core\Checkout\Order\OrderEntity #}
    {# @var config \Shopware\Core\Checkout\Document\DocumentConfiguration #}
    {# @var context \Shopware\Core\Framework\Context #}

    {# @var customer \Shopware\Core\Checkout\Order\Aggregate\OrderCustomer\OrderCustomerEntity #}
    {% set customer = order.orderCustomer %}

    {% set total = order.lineItems.count %}

    {# @var billingAddress \Shopware\Core\Checkout\Order\Aggregate\OrderAddress\OrderAddressEntity #}
    {% set billingAddress = order.addresses.get(order.billingAddressId) %}

    {% set currencyIsoCode = order.currency.isoCode %}

    {% set locale = order.language.locale.code %}
    {% set languageId = order.language.id %}

    {% set nestedLineItems = order.nestedLineItems %}

    {% if config.itemsPerPage|intval === 0 or config.itemsPerPage <= 0 %}
        {% set itemsPerPage = 10 %}
    {% else %}
        {% set itemsPerPage = config.itemsPerPage|intval %}
    {% endif %}

    <!DOCTYPE html>
    <html>
    <head>
        {% block document_head %}
            <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
            {#{% if config.title %}#}
            <title>{% block document_title_tag %}{% endblock %}</title>
            {#{% endif %}#}

            {% block document_font_links %}
                <link href="https://fonts.googleapis.com/css2?family=Source+Sans+Pro:ital,wght@0,200;0,300;0,400;0,600;0,700;0,900;1,200;1,300;1,400;1,600;1,700;1,900&display=swap" rel="stylesheet">
            {% endblock %}

            {% if config.pageOrientation == 'landscape' %}
                {% sw_include '@Framework/documents/style_base_landscape.css.twig' %}
            {% else %}
                {% sw_include '@Framework/documents/style_base_portrait.css.twig' %}
            {% endif %}
        {% endblock %}
    </head>

    <body>

    {{ block('footer') }}

    {% block document_body %}
        {% set position = 1 %}
        {% set prefix = '' %}
        {% set level = 0 %}

        {% for lineItem in nestedLineItems %}
            {{ block('loop') }}

            {% set position = position + 1 %}
        {% endfor %}

        {{ block('summary') }}

        {{ block('payment_shipping')  }}

        {{ block('comment')  }}

        {{ block('shipping_address')  }}
    {% endblock %}
    </body>
    </html>
{% endblock %}

Habe ich gerade mal versucht, scheint irgendwie nicht zu klappen. Denkfehler?
kweb

Ich habe es mir nicht inhaltlich angesehen, aber so in der Art. Was gibt es denn für einen Fehler aus?

so ähnlich, das tpl muss dann noch in ein Plugin oder Theme. An die richtige stelle im Filesystem und dann mit sw_extends das „Original“ erweitern.

image

oben in der Datei
{% sw_extends ‚@Framework/documents/base.html.twig‘ %}

Hi, also ich habe es jetzt so in der base.thml.twig:

 {% sw_extends ‚@Framework/documents/base.html.twig‘ %}
{#

Notice for plugins and theme developer:

This template can be extended over sw_extends.
The blocks from the templates in the /includes folder can be overwritten directly in this template

merge 16.11.2020
#}
{% use '@Framework/documents/includes/loop.html.twig' %}
{% use '@Framework/documents/includes/footer.html.twig' %}
{% use '@Framework/documents/includes/summary.html.twig' %}
{% use '@Framework/documents/includes/payment_shipping.html.twig' %}
{% use '@Framework/documents/includes/comment.html.twig' %}
{% use '@Framework/documents/includes/shipping_address.html.twig' %}

{% block logo %}
    {# To include a header or footer on every site, these elements have to be defined before the content #}
    {% if config.displayHeader %}
        <header>
            {% block document_header %}
                {% if config.logo %}
                    <img src="https://www.meinedomain.de/logo_neu_s.png" class="logo"/>
                {% endif %}
            {% endblock %}
        </header>
    {% endif %}
{% endblock %}


{% block document_base %}
    {# @var order \Shopware\Core\Checkout\Order\OrderEntity #}
    {# @var config \Shopware\Core\Checkout\Document\DocumentConfiguration #}
    {# @var context \Shopware\Core\Framework\Context #}

    {# @var customer \Shopware\Core\Checkout\Order\Aggregate\OrderCustomer\OrderCustomerEntity #}
    {% set customer = order.orderCustomer %}

    {% set total = order.lineItems.count %}

    {# @var billingAddress \Shopware\Core\Checkout\Order\Aggregate\OrderAddress\OrderAddressEntity #}
    {% set billingAddress = order.addresses.get(order.billingAddressId) %}

    {% set currencyIsoCode = order.currency.isoCode %}

    {% set locale = order.language.locale.code %}
    {% set languageId = order.language.id %}

    {% set nestedLineItems = order.nestedLineItems %}

    {% if config.itemsPerPage|intval === 0 or config.itemsPerPage <= 0 %}
        {% set itemsPerPage = 10 %}
    {% else %}
        {% set itemsPerPage = config.itemsPerPage|intval %}
    {% endif %}

    <!DOCTYPE html>
    <html>
    <head>
        {% block document_head %}
            <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
            {#{% if config.title %}#}
            <title>{% block document_title_tag %}{% endblock %}</title>
            {#{% endif %}#}

            {% block document_font_links %}
                <link href="https://fonts.googleapis.com/css2?family=Source+Sans+Pro:ital,wght@0,200;0,300;0,400;0,600;0,700;0,900;1,200;1,300;1,400;1,600;1,700;1,900&display=swap" rel="stylesheet">
            {% endblock %}

            {% if config.pageOrientation == 'landscape' %}
                {% sw_include '@Framework/documents/style_base_landscape.css.twig' %}
            {% else %}
                {% sw_include '@Framework/documents/style_base_portrait.css.twig' %}
            {% endif %}
        {% endblock %}
    </head>

    <body>

    {{ block('footer') }}

    {% block document_body %}
        {% set position = 1 %}
        {% set prefix = '' %}
        {% set level = 0 %}

        {% for lineItem in nestedLineItems %}
            {{ block('loop') }}

            {% set position = position + 1 %}
        {% endfor %}

        {{ block('summary') }}

        {{ block('payment_shipping')  }}

        {{ block('comment')  }}

        {{ block('shipping_address')  }}
    {% endblock %}
    </body>
    </html>
{% endblock %}

Die Datei liegt in /sw6/custom/plugins/TcinnThemeWareStrong/src/Resources/views/documents

Aber es kommt weder eine Fehlermeldung, noch funktioniert es so wie ich es gerne hätte. Ich habe genau mit diesem Code mal die Original überschrieben, also direkt die logo.tpl in dier /includes - das hat funktioniert. Habe alles wieder zurückgesetzt aber der Override scheint so nicht zu funktionieren.

oben stehen auch normale einfache Anführungszeichen, da stehen hier jetzt typographische und dann den Cache löschen, bzw. das template neu kompilieren

bin/console the:com
bin/console cac:cle

Ich verzweifel hier nocht…Du meinst

 {% sw_extends '@Framework/documents/base.html.twig' %}

anstatt

 {% sw_extends ‚@Framework/documents/base.html.twig‘ %}

Habe ich versucht - leider immer noch ohne Ergebnis. Cache gelöscht auch. Ich habe auch mal testweise einen Fehler in die base.html.twig gemacht, der eine Fehlermeldung auslösen wollte. Der Shop verhält sich selbst mit einer defekten Datei, alsob es keinen Override geben würde.

die Anführungszeichen passen, das Theme ist ganz sicher aktiviert (als Plugin) und dann auch einem Verkaufskanal zugewiesen ?

Und ich meine man muss theme kompilieren. Ich arbeite während der Entwicklung immer mit ausgeschaltetem Cache. (siehe Cache während der Entwicklung - #2 von Krispin)

Btw. mein nächstes Projekt ist ein Template Editor, der die Überschreibungen „generieren“ kann, ETA in den nächsten 2 Monaten. Das Zeug geht mir auch mächtig auf die Exxr :roll_eyes:

Hi, ja alles zugewiesen - aktiv, Cache geleert - zwischen den Templates mal geswitcht… usw…ich verstehs nicht mehr :confused:

Screenshot 2023-09-28 at 08-21-25 schäfer sport Verkaufskanäle Shopware Administration

Vielleicht überschreibt dein Theme schon das Template, so dass du nicht die document, sondern ThemeWare überschreiben müsstest. Ist aber nur geraden.

Lade dir doch mal das kostenlose CustomTemplates Plugin herunter, und erstelle dort eine Änderung und schaue, ob die Änderung übernommen wird.

Also ich habe das Plugin runtergeladen - kannte ich noch gar nicht. Nunja ich habe diese Änderungen gemacht:

Das sollte doch so passen oder? Aber nein - der Shop tut so, als wäre der Override gar nicht da…

In der Datei steht doch explizit drin, dass man diese nicht erweitern (extend) soll?!

Ein Override eines per block eingebundenen Blocks ist nicht möglich.

Wie in dem Template beschrieben muss die base erweitert werden.

Danke, endlich!

Was bin ich dir schuldig? Danke für deine Gedult!

1 „Gefällt mir“

Dir auch danke für deine Hilfe!