1

I already have a problem. In the backoffice, in Catalog/category i have created a new tab for Push_Ahead products.

But now, I want some features and it's not work... I want when a product is not selected, and we make a save that the product is un push ahead.

I have a list with ALL/yes,No and i wanted to display all the product, product push ahead ( yes) and all the product not push ahead(no) But it's not work.

Here is my code : `

/* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */

class Mycompany_Tetegondole_Block_Adminhtml_Catalog_Category_Tab_Pushahead extends Mage_Adminhtml_Block_Catalog_Category_Tab_Product {

protected function _prepareCollection()
{
    $collection = Mage::getModel('catalog/category')->load((int) $this->getRequest()->getParam('id', 0))->getProductCollection()
        ->addAttributeToSelect('name')
        ->addAttributeToSelect('sku')
        ->addAttributeToSelect('price');

    $this->setCollection($collection);
    $this->getCollection()->addAttributeToFilter('push_ahead', true);

    return Mage_Adminhtml_Block_Widget_Grid::_prepareCollection();
}

protected function _prepareColumns()
{
    if (!$this->getCategory()->getProductsReadonly()) {
        $this->addColumn('is_push', array(
            'header_css_class' => 'a-center',
            'type'      => 'checkbox',
            'name'      => 'is_push',
            'values'    => $this->_getSelectedProducts(),
            'align'     => 'center',
            'index'     => 'entity_id'
        ));
    }
    $this->addColumn('entity_id', array(
        'header'    => Mage::helper('catalog')->__('ID'),
        'sortable'  => true,
        'width'     => '60',
        'index'     => 'entity_id'
    ));
    $this->addColumn('name', array(
        'header'    => Mage::helper('catalog')->__('Name'),
        'index'     => 'name'
    ));
    $this->addColumn('sku', array(
        'header'    => Mage::helper('catalog')->__('SKU'),
        'width'     => '80',
        'index'     => 'sku'
    ));
    $this->addColumn('price', array(
        'header'    => Mage::helper('catalog')->__('Price'),
        'type'  => 'currency',
        'width'     => '1',
        'currency_code' => (string) Mage::getStoreConfig(Mage_Directory_Model_Currency::XML_PATH_CURRENCY_BASE),
        'index'     => 'price'
    ));

    return Mage_Adminhtml_Block_Widget_Grid::_prepareColumns();
}

protected function _addColumnFilterToCollection($column)
{
    // Set custom filter for in category flag
    if ($column->getId() == 'is_push') {
        $productIds = $this->_getSelectedProducts();
        if (empty($productIds)) {
            $productIds = 0;
        }
        if ($column->getFilter()->getValue()) {
            $this->getCollection()->addFieldToFilter('push_ahead', array('in'=>$productIds));
        }
        elseif(!empty($productIds)) {
            $this->getCollection()->addFieldToFilter('push_ahead', array('nin'=>$productIds));
        }
    }
    else {
        return Mage_Adminhtml_Block_Widget_Grid::_addColumnFilterToCollection($column);
    }
    return $this;
}

 protected function _getSelectedProducts()
{
    $products = $this->getRequest()->getPost('push_ahead');
    if (is_null($products)) {
        $products = $this->getCategory()->getProductsPosition();
        return array_keys($products);
    }
    return $products;
}

} `

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Browse other questions tagged or ask your own question.