Wie verweise ich auf einen Block, der nur einen Alias ​​und keinen Namen in Magento 2 hat?

7

Ich versuche, einige Argumente für einen Block zu ändern, der in module-sales/view/adminhtml/layout/sales_order_view.xmlZeile 41 definiert ist.

<block class="Magento\Sales\Block\Adminhtml\Order\View\Items\Renderer\DefaultRenderer" as="default" template="order/view/items/renderer/default.phtml">

Das Problem ist, dass der Block nicht mit einem Namen definiert ist, sondern nur einen Alias ​​hat, sodass ich so etwas nicht <referenceBlock name="default"/>ändern kann.

Ich muss das Argument "Spalten" in diesem Block ändern. Gibt es eine andere Möglichkeit, auf diesen Block zu verweisen, oder habe ich ziemlich viel Pech?

DrewK289
quelle
1
Nehmen Sie die genaue Referenz von magento.stackexchange.com/questions/134802/…
Krishna ijjada

Antworten:

2

Sie müssen nur mit der folgenden Methode überschreiben,

app / design / frontend / {Vendor} / {themename} /Magento_Sales/layout/sales_order_view.xml Datei

<?xml version="1.0"?>
<!--
/**
 * Copyright © 2016 Magento. All rights reserved.
 * See COPYING.txt for license details.
 */
-->
<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd">
    <body>
        <referenceContainer name="page.main.title">
            <block class="Magento\Sales\Block\Order\Info" name="order.status" template="order/order_status.phtml"/>
            <block class="Magento\Sales\Block\Order\Info" name="order.date" template="order/order_date.phtml"/>
            <container name="order.actions.container" htmlTag="div" htmlClass="actions-toolbar order-actions-toolbar">
                <block class="Magento\Sales\Block\Order\Info\Buttons" as="buttons" name="sales.order.info.buttons" cacheable="false"/>
            </container>
        </referenceContainer>
        <referenceContainer name="sales.order.info.buttons">
            <block class="Magento\Sales\Block\Order\Info\Buttons\Rss" as="buttons.rss" name="sales.order.info.buttons.rss" cacheable="false"/>
        </referenceContainer>
        <referenceContainer name="content">
            <block class="Magento\Sales\Block\Order\View" name="order.comments" template="order/order_comments.phtml" before="sales.order.info.links"/>
            <block class="Magento\Sales\Block\Order\View" name="sales.order.view" cacheable="false" after="sales.order.info.links">
                <block class="Magento\Sales\Block\Order\Items" name="order_items" template="order/items.phtml">
                    <block class="Magento\Framework\View\Element\RendererList" name="sales.order.items.renderers" as="renderer.list"/>
                    <block class="Magento\Sales\Block\Order\Totals" name="order_totals" template="order/totals.phtml">
                        <arguments>
                            <argument name="label_properties" xsi:type="string">colspan="2" class="mark"</argument>
                            <argument name="value_properties" xsi:type="string">class="amount"</argument>
                        </arguments>
                        <block class="Magento\Tax\Block\Sales\Order\Tax" name="tax" template="order/tax.phtml"/>
                    </block>
                </block>
            </block>
            <block class="Magento\Sales\Block\Order\Info" as="info" name="sales.order.info" after="sales.order.view"/>
        </referenceContainer>
        <block class="Magento\Framework\View\Element\Template" name="additional.product.info" template="Magento_Theme::template.phtml"/>
    </body>
</page>

Sie können die colspanobige Datei ändern .

Rakesh Jesadiya
quelle
3
Sicherlich muss es einen besseren Weg geben, als die vollständige Datei zu kopieren
Ben Crook
@BenCrook Ganz zu schweigen davon, dass dies nicht hilft, wenn ein Modul diese Vorlage ändern möchte. Die Lösung funktioniert nur, wenn sie in einem Thema ausgeführt wird. Es gibt einen bösen Hack hier: magento.stackexchange.com/a/157608
danemacmillan
0

Nicht die beste Lösung, aber es funktioniert, solange Sie einfache Produkte verwenden. Ich denke, Magento hat diesen Teil unvollendet gelassen. Auch 'discont' ist dort falsch geschrieben (irgendwie lustig):

<block class="Magento\Sales\Block\Adminhtml\Order\View\Items\Renderer\DefaultRenderer" name="simple" as="simple" template="order/view/items/renderer/default.phtml">
            <arguments>
                <argument name="columns" xsi:type="array">
                    <item name="product" xsi:type="string" translate="false">col-product</item>
                    <item name="status" xsi:type="string" translate="false">col-status</item>
                    <item name="price-original" xsi:type="string" translate="false">col-price-original</item>
                    <item name="price" xsi:type="string" translate="false">col-price</item>
                    <item name="qty" xsi:type="string" translate="false">col-ordered-qty</item>
                    <item name="subtotal" xsi:type="string" translate="false">col-subtotal</item>
                    <item name="tax-amount" xsi:type="string" translate="false">col-tax-amount</item>
                    <item name="tax-percent" xsi:type="string" translate="false">col-tax-percent</item>
                    <item name="discont" xsi:type="string" translate="false">col-discont</item>
                    <item name="total" xsi:type="string" translate="false">col-total</item>
                    <item name="action" xsi:type="string" translate="false">col-action</item>
                </argument>
            </arguments>
        </block>
Aivoris
quelle