Magento - добавить столбец в сетку клиента - PullRequest
1 голос
/ 18 мая 2011

как добавить пользовательский столбец в сетку клиентов magento?

Большое спасибо.

Ответы [ 5 ]

7 голосов
/ 18 мая 2011

Необходимо переопределить класс Mage_Adminhtml_Block_Customer_Grid (app / code / core / Mage / Adminhtml / Block / Customer / Grid.php) и применить следующие изменения:

1 - добавить новый атрибут для отображения в функции _prepareCollection ()

2 - добавить новый столбец для отображения в функции _prepareColumns ()

2 голосов
/ 27 ноября 2012

Кредит: http://www.leonhostetler.com/blog/magento-add-attribute-columns-in-manage-products-grid-201205/

Magento не предоставляет нам возможность выбирать, какие атрибуты включены в виде столбцов в сетке «Управление продуктами», но внести необходимые изменения в код довольно просто.

Код, который генерирует сетку управления продуктами, находится по адресу /app/code/core/Mage/Adminhtml/Block/Catalog/Product/Grid.php. Первое, что вам нужно сделать, это скопировать Grid.php в структуру локального каталога. Другими словами, вы копируете Grid.php в следующую папку; / Приложение / код / ​​местные / Mage / Adminhtml / Block / Каталог / / продукта. Если такого расположения нет, то вы должны создать необходимые каталоги. Окончательное местоположение файла должно быть; /app/code/local/Mage/Adminhtml/Block/Catalog/Product/Grid.php

Теперь откройте Grid.php (файл в структуре локального каталога) и начните редактирование. Найдите следующий код:

$ this-> addColumn ( 'Код', массив ( 'header' => Mage :: helper ('catalog') -> __ ('SKU'), 'width' => '80px', 'index' => 'sku', ));

Это код, который добавляет столбец SKU в таблицу продуктов. Теперь предположим, что у вас есть настраиваемый атрибут с именем поставщика (идентификатор_поставщика), и вы хотите, чтобы он также отображался в сетке управления продуктами. Поместите следующий код до или после указанного выше блока кода, если он находится внутри _prepareColumns ().

$this->addColumn('supplier_id',
    array(
        'header'=> Mage::helper('catalog')->__('Supplier ID'),
        'width' => '150px',
        'index' => 'supplier_id',
    ));

Затем добавьте следующую строку в _prepareCollection (), где другие атрибуты перечислены так:

-> addAttributeToSelect ( 'supplier_id')

Это должно быть все, что вам нужно сделать. Возможно, вам придется перекомпилировать, обновить кэши, выйти и снова войти в систему, чтобы увидеть изменения в сетке вашего продукта.

Приведенный выше пример предназначен для добавления атрибута с типом ввода каталога для владельца магазина текстового поля. Что если ваш атрибут использует выпадающий список? Приведенный выше код необходимо будет изменить.

Допустим, у вас есть атрибут «Поставщик (поставщик)», который в редакторе продуктов представляет раскрывающийся список поставщиков на выбор. Для этого мы можем добавить следующий код в _prepareColumns ():

$ supplier_items = Mage :: getModel ( 'EAV / entity_attribute_option') -> getCollection () -> setStoreFilter () -> Join (атрибут '', 'attribute.attribute_id = main_table.attribute_id', 'Attribute_code'); foreach ($ supplier_items как $ supplier_item): if ($ supplier_item-> getAttributeCode () == 'поставщик') $ supplier_options [$ supplier_item-> getOptionId ()] = $ supplier_item-> getValue (); endforeach; $ This-> addColumn ( 'поставщик', массив ( 'header' => Mage :: helper ('catalog') -> __ ('supplier'), 'width' => '150px', 'type' => 'options', 'index' => 'поставщик', 'options' => $ supplier_options,));

И давайте не забудем добавить следующую строку в _prepareCollection (), где другие атрибуты перечислены так:

-> addAttributeToSelect ( 'поставщик')

Это должно сделать это для вас. Перекомпилируйте, обновите кэши и выйдите из системы, а затем вернитесь, если вам нужно.

1 голос
/ 17 октября 2013

Перепишите блок сетки клиента с помощью пользовательского модуля.

app / code / [local or community] /YourCompany/YourModule/etc/config.xml

<?xml version="1.0"?>
<config>
    <modules>
        <yourcompany_yourmodule>
            <version>0.1.0</version>
        </yourcompany_yourmodule>
    </modules>
    <global>
        <blocks>
            <adminhtml>
                <rewrite>
                    <customer_grid>YourCompany_YourModule_Block_Customer_Grid</customer_grid>
                </rewrite>
            </adminhtml>
        </blocks>
    </global>
</config>

app / code / [local or community] /YourCompany/YourModule/Block/Customer/Grid.php

<?php

class YourCompany_YourModule_Block_Customer_Grid extends Mage_Adminhtml_Block_Customer_Grid
{
    public function setCollection($collection)
    {
        $collection->addAttributeToSelect('confirmation');                    
        parent::setCollection($collection);
    }

    protected function _prepareColumns()
    {
        parent::_prepareColumns();

        $this->addColumn('confirmation', array(
                'header'=> Mage::helper('sales')->__('Confirmed'),
                'index' => 'confirmation',
                'type'  => 'text',
                'width' => '100px',
        ));
        return parent::_prepareColumns();
    }
}

Подробное объяснение можно найти здесь:

http://tipsmagento.blogspot.com/2011/03/add-new-column-on-customers-grid.html

1 голос
/ 10 апреля 2013

Я опубликую здесь с реальным примером.

Если вам нужно добавить атрибут custome, вам может потребоваться тщательно позаботиться о операторах соединения.

->joinAttribute('billing_postcode', 'customer_address/postcode', 'default_billing', null, 'left')
0 голосов
/ 17 февраля 2015

Обязательно ознакомьтесь с TigerMin для Magento. Это инструмент, с помощью которого вы можете легко добавлять столбцы в таблицу продуктов и даже встроенные значения редактирования мгновенно. Вот живая демонстрация: http://demo.emvee -solutions.com / tigermin /

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...