Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/38.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何在magento中以编程方式添加自己的优惠券列表?_Php_Magento_Magento 1.7_Magento 1.9_Magento 1.8 - Fatal编程技术网

Php 如何在magento中以编程方式添加自己的优惠券列表?

Php 如何在magento中以编程方式添加自己的优惠券列表?,php,magento,magento-1.7,magento-1.9,magento-1.8,Php,Magento,Magento 1.7,Magento 1.9,Magento 1.8,我想将我自己的优惠券添加到salerule,但我找到的所有示例都是由magento generator创建的 // Get the rule in question $rule = Mage::getModel('salesrule/rule')->load(21); //21 = ID of coupon in question // Define a coupon code generator model instance // Look at Mage_SalesRule_Mode

我想将我自己的优惠券添加到salerule,但我找到的所有示例都是由magento generator创建的

// Get the rule in question
$rule = Mage::getModel('salesrule/rule')->load(21); //21 = ID of coupon in question

// Define a coupon code generator model instance
// Look at Mage_SalesRule_Model_Coupon_Massgenerator for options
$generator = Mage::getModel('salesrule/coupon_massgenerator');

$parameters = array(
    'count'=>5,
    'format'=>'alphanumeric',
    'dash_every_x_characters'=>4,
    'prefix'=>'ABCD-EFGH-',
    'suffix'=>'-WXYZ',
    'length'=>8
);

if( !empty($parameters['format']) ){
  switch( strtolower($parameters['format']) ){
    case 'alphanumeric':
    case 'alphanum':
      $generator->setFormat( Mage_SalesRule_Helper_Coupon::COUPON_FORMAT_ALPHANUMERIC );
      break;
    case 'alphabetical':
    case 'alpha':
      $generator->setFormat( Mage_SalesRule_Helper_Coupon::COUPON_FORMAT_ALPHABETICAL );
      break;
    case 'numeric':
    case 'num':
      $generator->setFormat( Mage_SalesRule_Helper_Coupon::COUPON_FORMAT_NUMERIC );
      break;
  }
}

$generator->setDash( !empty($parameters['dash_every_x_characters'])? (int) $parameters['dash_every_x_characters'] : 0);
$generator->setLength( !empty($parameters['length'])? (int) $parameters['length'] : 6);
$generator->setPrefix( !empty($parameters['prefix'])? $parameters['prefix'] : '');
$generator->setSuffix( !empty($parameters['suffix'])? $parameters['suffix'] : '');

// Set the generator, and coupon type so it's able to generate
$rule->setCouponCodeGenerator($generator);
$rule->setCouponType( Mage_SalesRule_Model_Rule::COUPON_TYPE_AUTO );

// Get as many coupons as you required
$count = !empty($parameters['count'])? (int) $parameters['count'] : 1;
$codes = array();
for( $i = 0; $i < $count; $i++ ){
  $coupon = $rule->acquireCoupon();
  $code = $coupon->getCode();
  $codes[] = $code;
}
return $codes;
//获取有问题的规则
$rule=Mage::getModel('salesrule/rule')->load(21)//21=相关优惠券的ID
//定义优惠券代码生成器模型实例
//查看Mage_SalesRule_Model_优惠券_Massgenerator以获取选项
$generator=Mage::getModel('salesrule/优惠券\u massgenerator');
$parameters=数组(
“计数”=>5,
'格式'=>'字母数字',
'每字符破折号'=>4,
“前缀”=>“ABCD-EFGH-”,
'后缀'=>'-WXYZ',
“长度”=>8
);
如果(!empty($parameters['format'])){
开关(strtolower($parameters['format'])){
“字母数字”大小写:
“alphanum”案例:
$generator->setFormat(Mage\u SalesRule\u Helper\u优惠券::优惠券格式\u字母数字);
打破
按字母顺序排列:
案例“阿尔法”:
$generator->setFormat(Mage\u SalesRule\u Helper\u优惠券::优惠券格式\u字母顺序);
打破
大小写“数字”:
案例“num”:
$generator->setFormat(Mage\u SalesRule\u Helper\u优惠券::优惠券格式\u数字);
打破
}
}
$generator->setDash(!empty($parameters['dash_every_x_characters'])?(int)$parameters['dash_every_x_characters']:0);
$generator->setLength(!empty($parameters['length'])?(int)$parameters['length']:6);
$generator->setPrefix(!empty($parameters['prefix'])?$parameters['prefix']:'';
$generator->setSuffix(!empty($parameters['suffix'])?$parameters['suffix']:'';
//设置生成器和优惠券类型,以便能够生成
$rule->setCoupondeGenerator($generator);
$rule->setCouponType(Mage\u SalesRule\u Model\u rule::优惠券\u TYPE\u AUTO);
//获得您所需的尽可能多的优惠券
$count=!空($parameters['count'])?(int)$parameters['count']:1;
$codes=数组();
对于($i=0;$i<$count;$i++){
$优惠券=$rule->Acquire优惠券();
$code=$优惠券->获取代码();
$code[]=$code;
}
返回$code;

这很好,但这是通用代码,我有一个代码列表,必须放入salerules中。

您需要在直接sql查询中插入自定义优惠券:

// Get the rule in question
$rule = Mage::getModel('salesrule/rule')->load(21);

//preconfigure data
$primary = $rule->getPrimaryCoupon();
$data = array(
    $rule->getId(), 
   '', 
   intVal($primary->getUsageLimit()), 
   intVal($primary->getUsagePerCustomer()), 
   $primary->getExpirationDate(),
);   

$table = Mage::getSingleton('core/resource')->getTableName('salesrule/coupon');
//preconfig sql
$sql = "INSERT IGNORE INTO `$table` (`rule_id`, `code`, `usage_limit`, `usage_per_customer`, `expiration_date`) VALUES "; 

//coupons variable contain all needed coupon codes in array like
//$coupons = array('mycustomcoupon1','mycustomcoupon2');
$data[1] =  "'" . implode(',', $coupons) . "'";

//adding coupons string to preconfigured sql
$sql .= '(' . implode(',', $data) . '),';   

//USE YOUR COMPANYNAME_MODULENAME from config.xml
$db = Mage::getSingleton('core/resource')->getConnection('COMPANYNAME_MODULENAME');        
//insert coupons
$db->raw_query(substr($sql, 0, -1));

您需要在直接sql查询中插入自定义优惠券:

// Get the rule in question
$rule = Mage::getModel('salesrule/rule')->load(21);

//preconfigure data
$primary = $rule->getPrimaryCoupon();
$data = array(
    $rule->getId(), 
   '', 
   intVal($primary->getUsageLimit()), 
   intVal($primary->getUsagePerCustomer()), 
   $primary->getExpirationDate(),
);   

$table = Mage::getSingleton('core/resource')->getTableName('salesrule/coupon');
//preconfig sql
$sql = "INSERT IGNORE INTO `$table` (`rule_id`, `code`, `usage_limit`, `usage_per_customer`, `expiration_date`) VALUES "; 

//coupons variable contain all needed coupon codes in array like
//$coupons = array('mycustomcoupon1','mycustomcoupon2');
$data[1] =  "'" . implode(',', $coupons) . "'";

//adding coupons string to preconfigured sql
$sql .= '(' . implode(',', $data) . '),';   

//USE YOUR COMPANYNAME_MODULENAME from config.xml
$db = Mage::getSingleton('core/resource')->getConnection('COMPANYNAME_MODULENAME');        
//insert coupons
$db->raw_query(substr($sql, 0, -1));