Created
January 28, 2015 21:42
-
-
Save amacgregor/089b316a6627564ccd7e to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| <?php | |
| class Mage_Adminhtml_Block_Catalog_Product_Grid extends Mage_Adminhtml_Block_Widget_Grid | |
| { | |
| // echo $_product->getResource()->getAttribute('attribute name')->getFrontend()->getValue($_product) | |
| public function __construct() | |
| { | |
| parent::__construct(); | |
| $this->setId('productGrid'); | |
| $this->setDefaultSort('entity_id'); | |
| $this->setDefaultDir('DESC'); | |
| $this->setSaveParametersInSession(true); | |
| $this->setUseAjax(true); | |
| $this->setVarNameFilter('product_filter'); | |
| } | |
| protected function _getStore() | |
| { | |
| $storeId = (int) $this->getRequest()->getParam('store', 0); | |
| return Mage::app()->getStore($storeId); | |
| } | |
| protected function _prepareCollection() | |
| { | |
| $store = $this->_getStore(); | |
| $collection = Mage::getModel('catalog/product')->getCollection() | |
| ->addAttributeToSelect('sku') | |
| ->addAttributeToSelect('name') | |
| ->addAttributeToSelect('attribute_set_id') | |
| ->addAttributeToSelect('type_id') | |
| ->addAttributeToSelect('color'); | |
| //var_dump($collection);die; | |
| $collection->addAttributeToSelect('color') | |
| ->addAttributeToSelect('manufacturer'); | |
| if (Mage::helper('catalog')->isModuleEnabled('Mage_CatalogInventory')) { | |
| $collection->joinField('qty', | |
| 'cataloginventory/stock_item', | |
| 'qty', | |
| 'product_id=entity_id', | |
| '{{table}}.stock_id=1', | |
| 'left'); | |
| } | |
| if ($store->getId()) { | |
| //$collection->setStoreId($store->getId()); | |
| $adminStore = Mage_Core_Model_App::ADMIN_STORE_ID; | |
| $collection->addStoreFilter($store); | |
| $collection->joinAttribute( | |
| 'name', | |
| 'catalog_product/name', | |
| 'entity_id', | |
| null, | |
| 'inner', | |
| $adminStore | |
| ); | |
| $collection->joinAttribute( | |
| 'color', | |
| 'catalog_product/color', | |
| 'entity_id', | |
| null, | |
| 'left', | |
| $store->getId() | |
| ); | |
| $collection->joinAttribute( | |
| 'custom_name', | |
| 'catalog_product/name', | |
| 'entity_id', | |
| null, | |
| 'inner', | |
| $store->getId() | |
| ); | |
| $collection->joinAttribute( | |
| 'status', | |
| 'catalog_product/status', | |
| 'entity_id', | |
| null, | |
| 'inner', | |
| $store->getId() | |
| ); | |
| $collection->joinAttribute( | |
| 'visibility', | |
| 'catalog_product/visibility', | |
| 'entity_id', | |
| null, | |
| 'inner', | |
| $store->getId() | |
| ); | |
| $collection->joinAttribute( | |
| 'price', | |
| 'catalog_product/price', | |
| 'entity_id', | |
| null, | |
| 'left', | |
| $store->getId() | |
| ); | |
| } | |
| else { | |
| $collection->addAttributeToSelect('color'); | |
| $collection->addAttributeToSelect('price'); | |
| $collection->joinAttribute('status', 'catalog_product/status', 'entity_id', null, 'inner'); | |
| $collection->joinAttribute('visibility', 'catalog_product/visibility', 'entity_id', null, 'inner'); | |
| } | |
| $this->setCollection($collection); | |
| parent::_prepareCollection(); | |
| $this->getCollection()->addWebsiteNamesToResult(); | |
| return $this; | |
| } | |
| protected function _addColumnFilterToCollection($column) | |
| { | |
| if ($this->getCollection()) { | |
| if ($column->getId() == 'websites') { | |
| $this->getCollection()->joinField('websites', | |
| 'catalog/product_website', | |
| 'website_id', | |
| 'product_id=entity_id', | |
| null, | |
| 'left'); | |
| } | |
| } | |
| return parent::_addColumnFilterToCollection($column); | |
| } | |
| protected function _getAttributeOptions($attribute_code) | |
| { | |
| $attribute = Mage::getModel('eav/config')->getAttribute('catalog_product', $attribute_code); | |
| $options = array(); | |
| foreach( $attribute->getSource()->getAllOptions(true, true) as $option ) { | |
| $options[$option['value']] = $option['label']; | |
| } | |
| return $options; | |
| } | |
| protected function _prepareColumns() | |
| { | |
| $this->addColumn('color', | |
| array( | |
| 'header'=> Mage::helper('catalog')->__('Color'), | |
| 'width' => '100px', | |
| 'index' => 'color', | |
| 'type' => 'select', | |
| 'options' => $this->_getAttributeOptions('color'), | |
| )); | |
| $this->addColumn('entity_id', | |
| array( | |
| 'header'=> Mage::helper('catalog')->__('ID'), | |
| 'width' => '50px', | |
| 'type' => 'number', | |
| 'index' => 'entity_id', | |
| 'options' => $this->_getAttributeOptions('entity_id') | |
| )); | |
| $this->addColumn('name', | |
| array( | |
| 'header'=> Mage::helper('catalog')->__('Name'), | |
| 'index' => 'name', | |
| 'options' => $this->_getAttributeOptions('name') | |
| )); | |
| $store = $this->_getStore(); | |
| if ($store->getId()) { | |
| $this->addColumn('custom_name', | |
| array( | |
| 'header'=> Mage::helper('catalog')->__('Name in %s', $store->getName()), | |
| 'index' => 'custom_name', | |
| 'options' => $this->_getAttributeOptions('color') | |
| )); | |
| } | |
| $this->addColumn('type', | |
| array( | |
| 'header'=> Mage::helper('catalog')->__('Type'), | |
| 'width' => '60px', | |
| 'index' => 'type_id', | |
| 'type' => 'options', | |
| 'options' => Mage::getSingleton('catalog/product_type')->getOptionArray(), | |
| )); | |
| $sets = Mage::getResourceModel('eav/entity_attribute_set_collection') | |
| ->setEntityTypeFilter(Mage::getModel('catalog/product')->getResource()->getTypeId()) | |
| ->load() | |
| ->toOptionHash(); | |
| $this->addColumn('set_name', | |
| array( | |
| 'header'=> Mage::helper('catalog')->__('Attrib. Set Name'), | |
| 'width' => '30px', | |
| 'index' => 'attribute_set_id', | |
| 'type' => 'options', | |
| 'options' => $sets, | |
| )); | |
| $this->addColumn('sku', | |
| array( | |
| 'header'=> Mage::helper('catalog')->__('SKU'), | |
| 'width' => '80px', | |
| 'index' => 'sku', | |
| )); | |
| $store = $this->_getStore(); | |
| $this->addColumn('price', | |
| array( | |
| 'header'=> Mage::helper('catalog')->__('Price'), | |
| 'type' => 'price', | |
| 'currency_code' => $store->getBaseCurrency()->getCode(), | |
| 'index' => 'price', | |
| )); | |
| if (Mage::helper('catalog')->isModuleEnabled('Mage_CatalogInventory')) { | |
| $this->addColumn('qty', | |
| array( | |
| 'header'=> Mage::helper('catalog')->__('Qty'), | |
| 'width' => '100px', | |
| 'type' => 'number', | |
| 'index' => 'qty', | |
| )); | |
| } | |
| $this->addColumn('visibility', | |
| array( | |
| 'header'=> Mage::helper('catalog')->__('Visibility'), | |
| 'width' => '70px', | |
| 'index' => 'visibility', | |
| 'type' => 'options', | |
| 'options' => Mage::getModel('catalog/product_visibility')->getOptionArray(), | |
| )); | |
| $this->addColumn('status', | |
| array( | |
| 'header'=> Mage::helper('catalog')->__('Status'), | |
| 'width' => '70px', | |
| 'index' => 'status', | |
| 'type' => 'options', | |
| 'options' => Mage::getSingleton('catalog/product_status')->getOptionArray(), | |
| )); | |
| if (!Mage::app()->isSingleStoreMode()) { | |
| $this->addColumn('websites', | |
| array( | |
| 'header'=> Mage::helper('catalog')->__('Websites'), | |
| 'width' => '100px', | |
| 'sortable' => false, | |
| 'index' => 'websites', | |
| 'type' => 'options', | |
| 'options' => Mage::getModel('core/website')->getCollection()->toOptionHash(), | |
| )); | |
| } | |
| $this->addColumn('action', | |
| array( | |
| 'header' => Mage::helper('catalog')->__('Action'), | |
| 'width' => '50px', | |
| 'type' => 'action', | |
| 'getter' => 'getId', | |
| 'actions' => array( | |
| array( | |
| 'caption' => Mage::helper('catalog')->__('Edit'), | |
| 'url' => array( | |
| 'base'=>'*/*/edit', | |
| 'params'=>array('store'=>$this->getRequest()->getParam('store')) | |
| ), | |
| 'field' => 'id' | |
| ) | |
| ), | |
| 'filter' => false, | |
| 'sortable' => false, | |
| 'index' => 'stores', | |
| )); | |
| if (Mage::helper('catalog')->isModuleEnabled('Mage_Rss')) { | |
| $this->addRssList('rss/catalog/notifystock', Mage::helper('catalog')->__('Notify Low Stock RSS')); | |
| } | |
| return parent::_prepareColumns(); | |
| } | |
| protected function _prepareMassaction() | |
| { | |
| $this->setMassactionIdField('entity_id'); | |
| $this->getMassactionBlock()->setFormFieldName('product'); | |
| $this->getMassactionBlock()->addItem('delete', array( | |
| 'label'=> Mage::helper('catalog')->__('Delete'), | |
| 'url' => $this->getUrl('*/*/massDelete'), | |
| 'confirm' => Mage::helper('catalog')->__('Are you sure?') | |
| )); | |
| $statuses = Mage::getSingleton('catalog/product_status')->getOptionArray(); | |
| array_unshift($statuses, array('label'=>'', 'value'=>'')); | |
| $this->getMassactionBlock()->addItem('status', array( | |
| 'label'=> Mage::helper('catalog')->__('Change status'), | |
| 'url' => $this->getUrl('*/*/massStatus', array('_current'=>true)), | |
| 'additional' => array( | |
| 'visibility' => array( | |
| 'name' => 'status', | |
| 'type' => 'select', | |
| 'class' => 'required-entry', | |
| 'label' => Mage::helper('catalog')->__('Status'), | |
| 'values' => $statuses | |
| ) | |
| ) | |
| )); | |
| if (Mage::getSingleton('admin/session')->isAllowed('catalog/update_attributes')){ | |
| $this->getMassactionBlock()->addItem('attributes', array( | |
| 'label' => Mage::helper('catalog')->__('Update Attributes'), | |
| 'url' => $this->getUrl('*/catalog_product_action_attribute/edit', array('_current'=>true)) | |
| )); | |
| } | |
| Mage::dispatchEvent('adminhtml_catalog_product_grid_prepare_massaction', array('block' => $this)); | |
| return $this; | |
| } | |
| public function getGridUrl() | |
| { | |
| return $this->getUrl('*/*/grid', array('_current'=>true)); | |
| } | |
| public function getRowUrl($row) | |
| { | |
| return $this->getUrl('*/*/edit', array( | |
| 'store'=>$this->getRequest()->getParam('store'), | |
| 'id'=>$row->getId()) | |
| ); | |
| } | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment