[英]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.