문제

magento ver.1.9.3.3

** 사용자 정의 제품 속성 ** (나에게 의해 생성 된 게시자와 같은) Admin > sales >order에서 열을 추가하려고합니다.

복사

app/code/core/Mage/Adminhtml/Block/Sales/Order/Grid.php 
.

~

app/code/local/Mage/Adminhtml/Block/Sales/Order/Grid.php
.

& 렌더러 만들기

app/code/local/Mage/Adminhtml/Block/Sales/Order/Renderer/Productspublisher.php
. productspublisher.php

코드

    <?php
class Mage_Adminhtml_Block_Sales_Order_Renderer_Productspublisher extends Mage_Adminhtml_Block_Widget_Grid_Column_Renderer_Abstract
{
    public function render(Varien_Object $row)
    {                    
       $_item = $this->getItem());
       $product=Mage::getModel('catalog/product')->load($_item->getProductId());
       $str="";
       foreach($product as $item)
       {
         $str .= $item->getAttributeText('publisher');
       }

        unset($product);
        return $str;
    }
}
?>
. Protected 함수의

코드 _PREPERECOLUMNS () Grid.php

$this->addColumn('publisher', array(
        'header' => Mage::helper('sales')->__('Publisher'),
        'index' => 'publisher',
        'renderer' => 'Mage_Adminhtml_Block_Sales_Order_Renderer_Productspublisher',
    ));
.

그러나 오류가 발생

구문 분석 오류 : 구문 오류, 예기치 않은 ')' siteDomain.com \ App \ code \ local \ mage \ adminhtml \ block \ sales \ order \ renderer \ productspublisher.php 6 호선

도움이 되었습니까?

해결책

ProductsPublisher.php 에서이 코드를 사용하십시오.

<?php
class Mage_Adminhtml_Block_Sales_Order_Renderer_Productspublisher extends Mage_Adminhtml_Block_Widget_Grid_Column_Renderer_Abstract
{
    public function render(Varien_Object $row)
    {                    

          $order=Mage::getModel('sales/order')->load($row->getData('entity_id'));              
        $str="";

        foreach($order->getAllVisibleItems() as $_item){  
        $product=Mage::getModel('catalog/product')->load($_item->getProductId());                    
            $str .= $product->getAttributeText('publisher')."<br>";
    }       

        unset($order);
        return $str;
    }
}
?>
.

다른 팁

atwix에서 "nofollow"> Magento Orders 그리드에 열 추가 -레이아웃 핸들을 사용하여 대체 방법

다음을 수행하는 모듈이 필요함을 제안합니다.

관리 이벤트 sales_order_grid_collection_load_before를 듣고 Sales_Order 컬렉션에 올바른 속성 / 조인을 추가합니다.

public function salesOrderGridCollectionLoadBefore($observer)
{
    $collection = $observer->getOrderGridCollection();
    // Now you can add attributes to select or join onto this collection
}
.

모듈의 레이아웃 파일을 사용하여 올바른 열을 추가합니다.

<layout>
    <sales_order_grid_update_handle>
        <reference name="sales_order.grid">
            <action method="addColumnAfter">
                <columnId>column_id</columnId>
                <arguments>
                    <header>Column Title</header>
                    <index>column_attribute</index>
                    <filter_index>column_attribute</filter_index>
                    <type>text</type>
                </arguments>
                <after>shipping_name</after>
            </action>
        </reference>
    </sales_order_grid_update_handle>
    <adminhtml_sales_order_grid>
        <!-- apply layout handle defined above -->
        <update handle="sales_order_grid_update_handle" />
    </adminhtml_sales_order_grid>
    <adminhtml_sales_order_index>
        <!-- apply layout handle defined above -->
        <update handle="sales_order_grid_update_handle" />
    </adminhtml_sales_order_index>
</layout>
.

나는 이것을 나 자신을 시도하지 않았지만 완전한 블로그 게시물을 통해 읽는 것이 매우 기뻐할뿐만 아니라 재 작성 없이는 아주 좋은 접근 방식이 아닙니다.

코드에는 심각한 오류가 발생합니다.이것으로 무엇을 의미합니까 :

$order=Mage::getModel('catalog/product')->load($row->getData('getProductId'));
.

여기에 제품 모델을로드하고 주문 객체인가가 가정합니다.

foreach($order->getAllItems() as $_item){                 
.

제품 객체에서 getAllItems ()를 호출 할 수 없습니다.그것의 주문 모델의 함수.당신이 달성하려는 것을 공유하는 경우, 나는 당신을 도울 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 magento.stackexchange
scroll top