Mam rozszerzony formularz informacji o klientach Magento, aby przechowywać dodatkowy atrybut dla klienta. Nazwijmy go "customer_referrer_id".Jak uzyskać dane dla podmiotu (na przykład klienta) z tabeli eav_attribute, które będą wyświetlane w Gridzie Klienta dla administratora
Mam rolę "polecającego", który ma dostęp tylko do siatki klientów i zamówienia. Chcę jednak ograniczyć stronę odsyłającą, aby zobaczyć tylko tych klientów, którzy mają identyfikator customer_referrer_id ustawiony jako identyfikator strony odsyłającej, który się zalogował. Podobnie w przypadku zamówień, zalogowany polecający będzie mógł zobaczyć tylko te zamówienia wykonane przez klientów, którzy have customer_referrer_id = loggedin_referrer_id.
już wiem jak zastąpić moduł i że mam głównie na celu zastąpić Adminhtml/pustak/klient/GRID :: _ prepareCollection i Adminhtml/Zablokuj/sprzedaży/Zamówienie/GRID :: _ prepareCollection
Używam Magento 1.4.1.1
to jest mój plik deklaracja moduł w app/etc/modules/Myproject_Adminhtml
<?xml version="1.0"?>
<config>
<modules>
<Myproject_Adminhtml>
<active>true</active>
<codePool>local</codePool>
<depends>
<Mage_Sales />
</depends>
</Myproject_Adminhtml>
</modules>
</config>
i mój modułów config.xml w local/myproject/Adminhtml/etc/jest następujący:
<config>
<modules>
<Myproject_Adminhtml>
<version>1.0.0</version>
</Myproject_Adminhtml>
</modules>
<global>
<blocks>
<adminhtml>
<rewrite>
<sales_order_grid>Myproject_Adminhtml_Block_Sales_Order_Grid</sales_order_grid>
<customer_grid>Myproject_Adminhtml_Block_Customer_Grid</customer_grid>
</rewrite>
</adminhtml>
</blocks>
</global>
</config>
I
class Myproject_Adminhtml_Block_Customer_Grid extends Mage_Adminhtml_Block_Customer_Grid
{
protected function _prepareCollection()
{
$collection = Mage::getResourceModel('customer/customer_collection')
->addNameToSelect()
->addAttributeToSelect('email')
->addAttributeToSelect('created_at')
->addAttributeToSelect('group_id')
->joinAttribute('billing_postcode', 'customer_address/postcode', 'default_billing', null, 'left')
->joinAttribute('billing_city', 'customer_address/city', 'default_billing', null, 'left')
->joinAttribute('billing_telephone', 'customer_address/telephone', 'default_billing', null, 'left')
->joinAttribute('billing_region', 'customer_address/region', 'default_billing', null, 'left')
->joinAttribute('billing_country_id', 'customer_address/country_id', 'default_billing', null, 'left');
$this->setCollection($collection);
$referrer_id = Mage::getSingleton('admin/session')->getUser()->getId();
Mage::log('Logged in admin has id: ' . $referrer_id);
return parent::_prepareCollection();
}
}
Nie próbowałem niczego dla tej sprawy, z wyjątkiem próby użycia kolekcji-> getSelect() -> joinLeft(). Ale nie byłem w stanie dowiedzieć się, jakie parametry dokładnie to wymaga. Poza tym próbowałem uzyskać customer_group_id z tabeli sales_flat_order na siatkę zamówienia, przy użyciu joinAttribute ("order", "main_entity.entity_id = order.entity_id", "customer_group_id"), ale to też nie działa dla mnie. –
Widzę komunikat "HURRAY" w /var/log/system.log –