Magento: отображение пользовательского атрибута продукта в административном блоке заказанных товаров

Я пытаюсь отобразить значение своего пользовательского атрибута в заказе администратора - Блок заказанных товаров. Он будет отображать баллы, заработанные за каждый продукт, точно так же, как он показывает SKU и другую информацию. Значение атрибута сохраняется в таблицах sales_flat_quote_item и sales_flat_order_item.

введите здесь описание изображения

Пространство имен/Имя модуля/Блок/Adminhtml/Продажи/Заказ/Вид/Элементы/Renderer/Default.phtml

<?php

class Namespace_Modulename_Block_Adminhtml_Sales_Order_View_Items_Renderer_Default extends Mage_Adminhtml_Block_Sales_Order_View_Items_Renderer_Default
{

}

?>

app/design/adminhtml/design/design/layout/namespace/modulename.xml

<adminhtml_sales_order_view>
        <reference name="order_items">
            <action method="addItemRender"><type>default</type>
                <block>sales/order_item_renderer_default</block>
                <template>namespace/modulename/sales/order/items/renderer/default.phtml</template>
            </action>
        </reference>
</adminhtml_sales_order_view>

app/design/adminhtml/default/default/template/namespace/modulename/sales/order/view/items/rederer/default.phtml

    <?php $finalPointsEarned = ($_item->getCustomerProductPoints() * $_item->getQtyOrdered()); ?>
    <div class="product-cart-sku">
        <span style="color: #d4af37; font-weight: bold;"><?php echo $this->__('Points Earned:'); ?>
            <?php echo $finalPointsEarned ?>
        </span>
    </div>

Выполнение приведенного выше кода дает исключение ниже

Invalid method Mage_Sales_Block_Order_Item_Renderer_Default::addColumnRender(Array
(
    [0] => qty
    [1] => adminhtml/sales_items_column_qty
    [2] => sales/items/column/qty.phtml
)
)

Изменение <adminhtml_sales_order_view> на <sales_order_view> не дает никаких результатов, и пользовательский атрибут продукта не отображается.

Попытка вторая:

<adminhtml_sales_order_view>
        <reference name="order_items"> 
            <action method="addColumnRender">
                <column>NORTH FACE</column>
                <block>adminhtml/sales_items_column_name</block>
                <template>modulename/sales/items/column/name.phtml</template>
            </action>
        </reference> 
</adminhtml_sales_order_view>

добавил свой собственный код в name.phtml, все еще нет вывода.

  1. Как отобразить значение пользовательского атрибута продукта в блоке заказанных товаров?
  2. Как отобразить то же значение на странице сведений о заказе счета-фактуры администратора?
  3. Выше приведена лучшая практика/метод для отображения пользовательского атрибута на страницах административного заказа/счета/возврата точно так же, как он отображает SKU, Size и другие значения?

person Slimshadddyyy    schedule 11.01.2016    source источник


Ответы (1)


Самый простой и эффективный способ — создать пользовательскую тему для администратора магазина, скопировать и вставить туда запрошенный шаблон и переписать вывод так, как вы хотите.

Таким образом, вы сможете полностью настроить его. Кроме того, такой подход снизит риск получения ошибок и предоставит вам возможность настраивать любые шаблоны (в том числе счета-фактуры, кредит-ноты и т. д.)

Взгляни:

  • Установите пользовательскую тему: (это можно сделать в app/etc/local xml или в настройках конфигурации вашего расширения):

Image1

  • Скопируйте нужный шаблон:

Изображение 2

  • Настройте его, как вам нужно:

Изображение 3

  • И получить желаемый результат:

Изображение 4

Обратите внимание, что настраиваемый атрибут обычно вводится с помощью метода get. Если у вас возникли проблемы с этим, просто проверьте, существует ли он для выбранного элемента в базе данных. В таблице sales_flat_order_item найдите все элементы, относящиеся к выбранному порядку, и убедитесь, что он имеет значение, отличное от null. Вот как это работало в моем случае:

Изображение 5Изображение 6 Изображение 7

person Mageworx    schedule 11.01.2016
comment
Таблица sales_flat_order_item будет отображать значения настраиваемых атрибутов на странице информации о заказе. Будет ли то же самое работать, когда счет-фактура создается в админке и в счете-фактуре клиента во внешнем интерфейсе? - person Slimshadddyyy; 11.01.2016
comment
чтобы получить эти данные из инвойса, атрибут должен ссылаться на sales_flat_invoice_item. В качестве альтернативы вы получаете элемент заказа из своего счета, а затем получаете значение атрибута там. - person Mageworx; 11.01.2016
comment
Предположим, я не использовал <sales_convert_quote_item> <customer_product_points> <to_order_item>*</to_order_item> <to_invoice_item>*</to_invoice_item> <to_shipment_item>*</to_shipment_item> <to_cm_item>*</to_cm_item> </customer_product_points> </sales_convert_quote_item> для преобразования пользовательских атрибутов в соответствующую таблицу. Как показать стоимость в счете-фактуре внешнего интерфейса? Элемент заказа не показывает значение пользовательского атрибута. Или мне нужно использовать наборы полей для вставки значения в таблицы? - person Slimshadddyyy; 12.01.2016
comment
Если у вас нет этих атрибутов ни в одной из используемых сущностей, вам необходимо получить объект позиции котировки из этих сущностей (идентификатор позиции котировки можно найти в любой позиции заказа). Далее вы можете использовать его для получения необходимых значений атрибутов. - person Mageworx; 12.01.2016