繁体   English   中英

Magento ProductController将categoryId附加到产品

[英]Magento ProductController append categoryId to products

我要添加一个群众动作来添加类别。 在大多数情况下,我只剩下一个要弄清楚的功能。

CLR \\ Categorymassaction \\ \\控制器Adminhtml \\目录\\ ProductController.php

    class Clr_Categorymassaction_Adminhtml_Catalog_ProductController extends Mage_Adminhtml_Controller_Action
    {
        public function massCategoryAction()
        {
            $productIds = $this->getRequest()->getParam('product');
            $cat = $this->getRequest()->getParam('Category');
            if (!is_array($productIds)) {
                $this->_getSession()->addError($this->__('Please select product(s).'));
                $this->_redirect('*/*/index');
            }
            else {
                    $cat = $category['label']->getCategoryId();
                    foreach($productIds as $product) {
                        //Process $cat into categoryId append categoryId to $productId
                       $cat->setPostedProducts($product);

                    }
              //Save product
              $cat->save();
            }



}
}

CLR \\ Categorymassaction \\型号\\观察

class Clr_Categorymassaction_Model_Observer {
    public function addCategoryMassAction(Varien_Event_Observer $observer)
    {
        $block = $observer ->getBlock();
        if ($block instanceof Mage_Adminhtml_Block_Catalog_Product_Grid) {
            $block->getMassactionBlock()->addItem('Clr_Categorymassaction', array(
                'label'     =>  Mage::helper('catalog')->__('Add to Category'),
                'url'       =>  $block->getUrl('*/*/massCategory', array('_current' => true)),
                'additional'=> array(
                    'visibility'    => array(
                        'name'          =>'Category',
                        'class'         =>'required-entry',
                        'label'         =>Mage::helper('catalog')->__('Categories'),
                        'type'          => 'select',
                        'values'        => Mage::getModel('Categorymassaction/system_config_source_category')->toOptionArray(),
                        'renderer'      => 'Categorymassaction/catalog_product_grid_render_category',

                        )
                    )
                ));
        };
    }


}

最后一件事

 class Clr_Categorymassaction_Model_System_Config_Source_Category
    {
        public function toOptionArray($addEmpty = true)
        {
            $options = array();
            foreach ($this->load_tree() as $category) {
                $options[$category['value']] =  $category['label'];
            }

            return $options;
        }

我在这里最麻烦的是因为我正在重构Flagbit_changeattributeset和Vuleticd_AdminGridCategoryFilter。 我知道我需要做的事情(至少我想我要做)我只是不知道如何完成此工作。 感谢您的阅读和阅读。

更新:来自Vuleticd_AdminGridCategoryFilter的观察者拥有此附加代码

                    'filter_condition_callback' => array($this, 'filterCallback'),
                    )
                )
            ));
    };
}
public function filterCallback($collection, $column)
{
    $value = $column->getFilter()->getValue();
    $_category = Mage::getModel('catalog/category')->load($value);
    $collection->addCategoryFilter($_category);

    return $collection;
}

这用于将过滤器应用于网格。 我想要做的是,而不是使用下拉列表来过滤列字段; 使用下拉菜单触发ProductController将选定的商品传递给新的categoryid。

https://magento.stackexchange.com/questions/67234/productcontroller-for-mass-action在magento的stackexchange上问了这个问题,我想在此张贴链接以供后代参考。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM