以Newsletter Subscribers为例
第一步,模型文件里添加方法
\app\code\core\Mage\Newsletter\Model\Subscriber.php
const STATUS_SUBSCRIBED = 1;
const STATUS_NOT_ACTIVE = 2;
const STATUS_UNSUBSCRIBED = 3;
const STATUS_UNCONFIRMED = 4;
/*2015年10月17日新增
FDS 5
PETS 6
SALON 7
DT 8
SPORTS 9
*/
const STATUS_FDS = 5;
const STATUS_PETS = 6;
const STATUS_SALON = 7;
const STATUS_DT = 8;
const STATUS_SPORTS = 9;
/**
* @date 2015年10月22日
* 把所有选择项归到FDS一组(设置SubscriberStatus为STATUS_FDS)
*/
public function fds()
{
if ($this->hasCheckCode() && $this->getCode() != $this->getCheckCode()) {
Mage::throwException(Mage::helper('newsletter')->__('Invalid subscription confirmation code.'));
}
$this->setSubscriberStatus(self::STATUS_FDS)
->save();
return $this;
}
/**
* @date 2015年10月22日
* 把所有选择项归到STATUS_PETS一组(设置SubscriberStatus为 STATUS_PETS)
*/
public function pets()
{
if ($this->hasCheckCode() && $this->getCode() != $this->getCheckCode()) {
Mage::throwException(Mage::helper('newsletter')->__('Invalid subscription confirmation code.'));
}
$this->setSubscriberStatus(self::STATUS_PETS)
->save();
return $this;
}
/**
* @date 2015年10月22日
* 把所有选择项归到SALON一组(设置SubscriberStatus为STATUS_SALON)
*/
public function salon()
{
if ($this->hasCheckCode() && $this->getCode() != $this->getCheckCode()) {
Mage::throwException(Mage::helper('newsletter')->__('Invalid subscription confirmation code.'));
}
$this->setSubscriberStatus(self::STATUS_SALON)
->save();
return $this;
}
/**
* @date 2015年10月22日
* 把所有选择项归到DT一组(设置SubscriberStatus为 STATUS_DT)
*/
public function dt()
{
if ($this->hasCheckCode() && $this->getCode() != $this->getCheckCode()) {
Mage::throwException(Mage::helper('newsletter')->__('Invalid subscription confirmation code.'));
}
$this->setSubscriberStatus(self::STATUS_DT)
->save();
return $this;
}
/**
* @date 2015年10月22日
* 把所有选择项归到SPORTS一组(设置SubscriberStatus为 STATUS_SPORTS)
*/
public function sports()
{
if ($this->hasCheckCode() && $this->getCode() != $this->getCheckCode()) {
Mage::throwException(Mage::helper('newsletter')->__('Invalid subscription confirmation code.'));
}
$this->setSubscriberStatus(self::STATUS_SPORTS)
->save();
return $this;
}
第二步:
Grid添加列
\app\code\core\Mage\Adminhtml\Block\Newsletter\Subscriber\Grid.php
大约108行
$this->addColumn('status', array(
'header' => Mage::helper('newsletter')->__('Status'),
'index' => 'subscriber_status',
'type' => 'options',
'options' => array(
Mage_Newsletter_Model_Subscriber::STATUS_FDS => Mage::helper('newsletter')->__('FDS'),
Mage_Newsletter_Model_Subscriber::STATUS_PETS => Mage::helper('newsletter')->__('PETS'),
Mage_Newsletter_Model_Subscriber::STATUS_SALON => Mage::helper('newsletter')->__('SALON'),
Mage_Newsletter_Model_Subscriber::STATUS_DT => Mage::helper('newsletter')->__('DT'),
Mage_Newsletter_Model_Subscriber::STATUS_SPORTS => Mage::helper('newsletter')->__('SPORTS'),
Mage_Newsletter_Model_Subscriber::STATUS_NOT_ACTIVE => Mage::helper('newsletter')->__('Not Activated'),
Mage_Newsletter_Model_Subscriber::STATUS_SUBSCRIBED => Mage::helper('newsletter')->__('Subscribed'),
Mage_Newsletter_Model_Subscriber::STATUS_UNSUBSCRIBED => Mage::helper('newsletter')->__('Unsubscribed'),
Mage_Newsletter_Model_Subscriber::STATUS_UNCONFIRMED => Mage::helper('newsletter')->__('Unconfirmed'),
)
));
还要添加预处理action
protected function _prepareMassaction()
{
$this->setMassactionIdField('subscriber_id');
$this->getMassactionBlock()->setFormFieldName('subscriber');
//2015年10月22日
$this->getMassactionBlock()->addItem('FDS', array(
'label' => Mage::helper('newsletter')->__('FDS'),
'url' => $this->getUrl('*/*/massFDS')
));
//2015年10月22日
$this->getMassactionBlock()->addItem('PETS', array(
'label' => Mage::helper('newsletter')->__('PETS'),
'url' => $this->getUrl('*/*/massPETS')
));
//2015年10月22日
$this->getMassactionBlock()->addItem('SALON', array(
'label' => Mage::helper('newsletter')->__('SALON'),
'url' => $this->getUrl('*/*/massSALON')
));
//2015年10月22日
$this->getMassactionBlock()->addItem('DT', array(
'label' => Mage::helper('newsletter')->__('DT'),
'url' => $this->getUrl('*/*/massDT')
));
//2015年10月22日
$this->getMassactionBlock()->addItem('SPORTS', array(
'label' => Mage::helper('newsletter')->__('SPORTS'),
'url' => $this->getUrl('*/*/massSPORTS')
));
$this->getMassactionBlock()->addItem('unsubscribe', array(
'label' => Mage::helper('newsletter')->__('Unsubscribe'),
'url' => $this->getUrl('*/*/massUnsubscribe')
));
$this->getMassactionBlock()->addItem('delete', array(
'label' => Mage::helper('newsletter')->__('Delete'),
'url' => $this->getUrl('*/*/massDelete')
));
return $this;
}
第三步:控制器中
\app\code\core\Mage\Adminhtml\controllers\Newsletter\SubscriberController.php
/**
* @date 2015年10月22日
* 归到FDS一组
*/
public function massFDSAction()
{
$subscribersIds = $this->getRequest()->getParam('subscriber');
if (!is_array($subscribersIds)) {
Mage::getSingleton('adminhtml/session')->addError(Mage::helper('newsletter')->__('Please select subscriber(s)'));
}
else {
try {
foreach ($subscribersIds as $subscriberId) {
$subscriber = Mage::getModel('newsletter/subscriber')->load($subscriberId);
$subscriber->fds();
}
Mage::getSingleton('adminhtml/session')->addSuccess(
Mage::helper('adminhtml')->__('Total of %d record(s) were updated', count($subscribersIds))
);
} catch (Exception $e) {
Mage::getSingleton('adminhtml/session')->addError($e->getMessage());
}
}
$this->_redirect('*/*/index');
}
/**
* @date 2015年10月22日
* 归到PETS一组
*/
public function massPETSAction()
{
$subscribersIds = $this->getRequest()->getParam('subscriber');
if (!is_array($subscribersIds)) {
Mage::getSingleton('adminhtml/session')->addError(Mage::helper('newsletter')->__('Please select subscriber(s)'));
}
else {
try {
foreach ($subscribersIds as $subscriberId) {
$subscriber = Mage::getModel('newsletter/subscriber')->load($subscriberId);
$subscriber->pets();
}
Mage::getSingleton('adminhtml/session')->addSuccess(
Mage::helper('adminhtml')->__('Total of %d record(s) were updated', count($subscribersIds))
);
} catch (Exception $e) {
Mage::getSingleton('adminhtml/session')->addError($e->getMessage());
}
}
$this->_redirect('*/*/index');
}
/**
* @date 2015年10月22日
* 归到SALON一组
*/
public function massSALONAction()
{
$subscribersIds = $this->getRequest()->getParam('subscriber');
if (!is_array($subscribersIds)) {
Mage::getSingleton('adminhtml/session')->addError(Mage::helper('newsletter')->__('Please select subscriber(s)'));
}
else {
try {
foreach ($subscribersIds as $subscriberId) {
$subscriber = Mage::getModel('newsletter/subscriber')->load($subscriberId);
$subscriber->salon();
}
Mage::getSingleton('adminhtml/session')->addSuccess(
Mage::helper('adminhtml')->__('Total of %d record(s) were updated', count($subscribersIds))
);
} catch (Exception $e) {
Mage::getSingleton('adminhtml/session')->addError($e->getMessage());
}
}
$this->_redirect('*/*/index');
}
/**
* @date 2015年10月22日
* 归到DT一组
*/
public function massDTAction()
{
$subscribersIds = $this->getRequest()->getParam('subscriber');
if (!is_array($subscribersIds)) {
Mage::getSingleton('adminhtml/session')->addError(Mage::helper('newsletter')->__('Please select subscriber(s)'));
}
else {
try {
foreach ($subscribersIds as $subscriberId) {
$subscriber = Mage::getModel('newsletter/subscriber')->load($subscriberId);
$subscriber->dt();
}
Mage::getSingleton('adminhtml/session')->addSuccess(
Mage::helper('adminhtml')->__('Total of %d record(s) were updated', count($subscribersIds))
);
} catch (Exception $e) {
Mage::getSingleton('adminhtml/session')->addError($e->getMessage());
}
}
$this->_redirect('*/*/index');
}
/**
* @date 2015年10月22日
* 归到FDS一组
*/
public function massSPORTSAction()
{
$subscribersIds = $this->getRequest()->getParam('subscriber');
if (!is_array($subscribersIds)) {
Mage::getSingleton('adminhtml/session')->addError(Mage::helper('newsletter')->__('Please select subscriber(s)'));
}
else {
try {
foreach ($subscribersIds as $subscriberId) {
$subscriber = Mage::getModel('newsletter/subscriber')->load($subscriberId);
$subscriber->sports();
}
Mage::getSingleton('adminhtml/session')->addSuccess(
Mage::helper('adminhtml')->__('Total of %d record(s) were updated', count($subscribersIds))
);
} catch (Exception $e) {
Mage::getSingleton('adminhtml/session')->addError($e->getMessage());
}
}
$this->_redirect('*/*/index');
}
public function massUnsubscribeAction()
{
$subscribersIds = $this->getRequest()->getParam('subscriber');
if (!is_array($subscribersIds)) {
Mage::getSingleton('adminhtml/session')->addError(Mage::helper('newsletter')->__('Please select subscriber(s)'));
}
else {
try {
foreach ($subscribersIds as $subscriberId) {
$subscriber = Mage::getModel('newsletter/subscriber')->load($subscriberId);
$subscriber->unsubscribe();
}
Mage::getSingleton('adminhtml/session')->addSuccess(
Mage::helper('adminhtml')->__('Total of %d record(s) were updated', count($subscribersIds))
);
} catch (Exception $e) {
Mage::getSingleton('adminhtml/session')->addError($e->getMessage());
}
}
$this->_redirect('*/*/index');
}