Magento admin gride yeni alan eklemek

Öncelikle eğer erp / muhasebe gibi bir sistem yazıyorsanız mutlaka magento nun kodlarını incelemenizi tavsiye ederim , daha önce ERP ve muhasebe projelerinde yer aldığım için orada spagetti olmuş, sürekli yama yapılan kodlar ile çalışınca bunu yazmak zorunda kaldım, temiz bakımı eklemesi hızlıca yapılan bir sistem hem işinizi hem iş-yerinizi sevmenizi sağlar.

Konumuza dönelim

Magento admin gridine kendiniz daha sonra dan alan ekleme yapabilirsiniz.

Örneğin 

protected function _prepareCollection()
{
   $collection = Mage::getModel('mpshipping/mpshipping')->getCollection();

gibi bir kodumuz olsun (webkulun kargo metodlarını listeler) 

buraya join ile satıcıların isimleri yazmamız gerekiyor 

tek yapacağımız 

$collection->getSelect()->join('marketplace_userdata', 'main_table.partner_id = marketplace_userdata.mageuserid and marketplace_userdata.store_id=1',array('shoptitle'));

bu kodu sonraki satıra eklemek “tam hali “

protected function _prepareCollection()
{
   $collection = Mage::getModel('mpshipping/mpshipping')->getCollection();
   $collection->getSelect()->join('marketplace_userdata', 'main_table.partner_id = marketplace_userdata.mageuserid and marketplace_userdata.store_id=1',array('shoptitle'));

   $this->setCollection($collection);
   

$collection->printLogQuery(true,true);

bu kod ile sql raw çıktısı alabilirsiniz.


protected function _prepareColumns()
{
   $this->addColumn(
   'shoptitle', array(
       'header'    => Mage::helper('mpshipping')->__('Shop title'),
       'align'     =>'right',
       'width'     => '50px',
       'index'     => 'shoptitle',
   )
);

daha sonra _prepareColumns fonksiyonuna bunu ekliyoruz , hepsi bu kadar.

Düzenleme 1 (eklediğimiz alana url linki vermek

)

Ek olarak eklediğimiz alana url linki vermek içinse şöyle yapıyoruz.

protected function _prepareCollection()
{
   $collection = Mage::getModel('mpshipping/mpshipping')->getCollection();
   $collection->getSelect()->join('marketplace_userdata', 'main_table.partner_id = marketplace_userdata.mageuserid and marketplace_userdata.store_id=1',array('shoptitle'));

   $this->setCollection($collection);

   //$collection->printLogQuery(true,true);

   foreach ($collection as $col) {
       $methodName = '';
       if ($col->getShippingMethodId()) {
           $methodName = Mage::getModel('mpshipping/mpshippingmethod')->load($col->getShippingMethodId())->getMethodName();
       }
       $col->shoptitle=sprintf('<a href="%s" title="'.$col->shoptitle.'">%s</a>',
           $this->getUrl("adminhtml/customer/edit",array("id"=>$col->partner_id)),$col->shoptitle);
       $col->setSubmethodName($methodName);
   }

   return parent::_prepareCollection();
}
    protected function _prepareColumns()
   {


       $this->addColumn(
           'shoptitle', array(
               'header'    => Mage::helper('mpshipping')->__('shop title'),
               'align'     =>'right',
               'width'     => '50px',
               'type'      => 'text',
               'index'     => 'shoptitle',
           )
       );

Daha Gelişmiş bir örnek