【问题标题】:Adding new column in Sales Order View Items in Magento Admin在 Magento Admin 的销售订单视图项目中添加新列
【发布时间】:2017-05-30 16:40:34
【问题描述】:

在 Magento 的管理界面中,我需要修改销售/订单/查看订单中的表格,以便它除了产品名称之外还显示其制造商。

我正在尝试查找要修改的文件以实现此目的。我以为我会找到一个部分,其中包含显示在 app/code/core/Mage/Sales/Block/Order/Item/Renderer/Default.php 中的所有列,但是通过检查它似乎没有对列的引用/产品属性。

我也试过修改 app/design/adminhtml/default/default/template/sales/order/view/items/renderer/default.phtml 通过改变

<?php echo $this->getColumnHtml($_item, 'name') ?>

进入

<?php echo $this->getColumnHtml($_item, 'manufacturer') ?>

但它什么也没改变,所以我想该文件没有涉及...

谁能指点我要修改的正确文件?

谢谢!

【问题讨论】:

    标签: magento admin


    【解决方案1】:

    在浏览了很多代码并在同事的帮助下,我们找到了要更改的两个文件以向此类视图添加列:

    • app/design/adminhtml/default/default/template/sales/order/view/items.phtml 用于添加表头

    • app/design/adminhtml/default/default/template/sales/order/view/items/renderer/default.phtml 用于用数据填充列。

    我对 Magento 并没有真正的经验,但我猜想,为了做一个“干净的工作”,不应该直接修改这些文件,而是覆盖它们。

    编辑

    • app/design/adminhtml/default/default/template/downloadable/sales/order/view/items/renderer/downloadable.phtml 用可下载产品的数据填充该列。

    【讨论】:

    • 请注意,可下载产品使用不同的模板app/design/adminhtml/default/default/template/downloadable/sales/order/view/items/renderer/downloadable.phtml 来填充数据。
    【解决方案2】:

    用于添加表头和它的价值添加布局 sales_order_view.xml 在您的主题或模块中使用新参数。

    <?xml version="1.0"?>
    <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" layout="admin-2columns-left" xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd">
    <body>
        <referenceBlock name="order_items">
            <arguments>
                <argument name="columns" xsi:type="array">
                    <item name="product" xsi:type="string" translate="true">Product</item>
                    <item name="status" xsi:type="string" translate="true">Item Status</item>
                    <item name="price-original" xsi:type="string" translate="true">Original Price</item>
                    <item name="price" xsi:type="string" translate="true">Price</item>
                    <item name="ordered-qty" xsi:type="string" translate="true">Qty</item>
                    <item name="subtotal" xsi:type="string" translate="true">Subtotal</item>
                    <item name="tax-amount" xsi:type="string" translate="true">Tax Amount</item>
                    <item name="tax-percent" xsi:type="string" translate="true">Tax Percent</item>
                    <item name="discont" xsi:type="string" translate="true">Discount Amount</item>
                    <item name="total" xsi:type="string" translate="true">Row Total</item>
                    <item name="repair" xsi:type="string" translate="true">Repair</item>
                </argument>
            </arguments>
            <block class="Namespace\Module\Block\Adminhtml\DefaultRenderer" as="default" template="Magento_Sales::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="repair" xsi:type="string" translate="false">col-repair</item>
                </argument>
            </arguments>
            </block>   
        </referenceBlock>     
    </body>
    

    ` 我添加了名称修复的新列。 现在您必须为该列添加值。所以你必须在你的块中覆盖 '\Magento\Sales\Block\Adminhtml\Order\View\Items\Renderer\DefaultRenderer' 文件,并且在 getColumnHtml() 方法中你必须为该列添加你的值。

    【讨论】:

      【解决方案3】:

      【讨论】:

      • 谢谢,这很详尽。
      【解决方案4】:

      添加表头: app/design/adminhtml/default/default/template/sales/order/view/items.phtml

      app/design/adminhtml/default/default/template/sales/order/view/items/renderer/default.phtml

      这些文件很有用。

      【讨论】:

        【解决方案5】:

        管理网格通常由其块控制。 对于销售,它是 Mage_Adminhtml_Block_Sales_Order_Grid 类

        修改/覆盖方法 _prepareColumns() 应该可以解决问题

        【讨论】:

          【解决方案6】:

          我没有可用的 magento 安装,但我有一些想法。 也许该列不是在模板文件 (phtml) 中定义的,而是在 xml 布局文件中定义的。 只需在 layout/sales.xml 文件中搜索即可。

          也许您没有禁用 magento 缓存,这就是您看不到任何更改的原因。

          【讨论】:

          • 感谢您寻找xml的建议,我从来没想过!不幸的是,情况并非如此,因为该 xml 描述了组成页面的“块”分组。我需要更改的是其中一个块的内容。
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2017-04-17
          • 1970-01-01
          相关资源
          最近更新 更多