重写Magento 倒计时插件 为其增加新功能

7天成为Magento系统架构师,现在开始学习Magento全栈开发!

《Magento2.X企业级开发实战》

最近由于活动需要个个倒计时的功能
虽然模板自带到计时这个功能 但是由于是写到模板里使用的并不是很方便 其实这个写的非常好 如果不需要特别高级定制的话这个足够了 这是代码 还自带轮播哦

getProductCollection()) && $_collectionSize = $_products->getSize()): ?>

getItems() as $_product): ?>
__('Deals') ?> getSpecialFromDate())){ $toDate = $_product->getSpecialFromDate();}else{ $toDate = $_product->getSpecialTODate();}?> getPrice() > $_product->getSpecialPrice()) : ?> getSpecialPrice()!= 0 || $_product->getSpecialPrice()!= "" ) :?>

注意CSS 的优先级以及js 的冲突等
这边还有一个好友的办法 跟这个差不多 但他那个方法跟简洁点 因为这个是直接重模板中 拿出来的 magento简单的促销倒计时功能
由于这个并不能达到我的需求 于是我下了个插件 这个插件重写了

  Apptha_Timer_Block_Product_ListApptha_Timer_Block_Product_View

虽然功能比这篇文章的少minyue-magento简单的促销倒计时功能就一个显示时间的功能 不过由于他重写了这两个模块 让他变得 适应跟多的模板 虽然也要修改 但让事情简单了不少
首先我们来下载插件magentoPrice_Countdown-1.4.0-倒计时插件 这个插件版本看起来好像有点老 不过能用就行
这插件功能就只有一个显示 离促销结束时间
好了我们现在来给他增加一个 离促销开始 时间倒计时
首先我们打开 /app/code/local/Apptha/Timer/etc/system.xml


                            selectApptha_Timer_Model_System_Config_Source_Showin2111Timer Caption
<label>离促销结束到计时头部</label>
                            <frontend_type>text</frontend_type><sort_order>3</sort_order><show_in_default>1</show_in_default><show_in_website>1</show_in_website><show_in_store>1</show_in_store><comment>Timer Heading Text.</comment>

                            text3111促销倒计时开始 头部

然后我们打开 /app/code/local/Apptha/Timer/Block/Product/view.php
这是未修改以前的

 public function getPriceCountDown(){
    	if(Mage::helper('timer')->isEnabled()){
    		$currentDate = Mage::getModel('core/date')->date('Y-m-d');
    		$todate =  $this->getProduct()->getSpecialToDate();
    		$fromdate =  $this->getProduct()->getSpecialFromDate();
    		if($this->getProduct()->getSpecialPrice() != 0 || $this->getProduct()->getSpecialPrice()) {
    			if($this->getProduct()->getSpecialToDate() != null) {
    				if(strtotime($todate) >= strtotime($currentDate) && strtotime($fromdate) 

这是修改后的


class Apptha_Timer_Block_Product_View extends Mage_Catalog_Block_Product_View  
{
    public function getPriceCountDown(){
    	if(Mage::helper('timer')->isEnabled()){
    		$currentDate = Mage::getModel('core/date')->date('Y-m-d');
    		$todate =  $this->getProduct()->getSpecialToDate();
    		$fromdate =  $this->getProduct()->getSpecialFromDate();
    		if($this->getProduct()->getSpecialPrice() != 0 || $this->getProduct()->getSpecialPrice()) {
    			if($this->getProduct()->getSpecialToDate() != null) {
    				if(strtotime($todate) >= strtotime($currentDate) && strtotime($fromdate) = 系统时间 && 开始时间 getTimerTitle();//促销结束倒计时
						//后台 要记得设置title 输出页面有个判断
						return array($todate,$title,true);//判断是否开始促销  是 显示时间  不是则分回 false
    				}	
    			}
    		}
    	}
		//如过 你想做个促销开始倒计时的话 你可以把这个改为 true也行
		$title=Mage::helper('timer')->getWeicotTitle();//促销开始倒计时 
		//这个是我增加的 用来获得后台的 title 的设置
    	return  array($fromdate,$title,true) ;
		//return  true;
		
    }
	

同理 List.php 也可以用这个 方法 都一样只不过继承的类不同而已
这只是简单的为其增加了一个功能而已
但然你还的写个后台的选项表
并且在/app/code/local/Apptha/Timer /Helper/Data.php 中添加

//大概在 40 行添加
const XML_PATH_TITLES 		 = 'timer/general/titles';
//并添加一个方法
public function getWeicotTitle(){
		return $this->conf(self::XML_PATH_TITLES, $store);
	}

这是模板的 修改方法 当然你也可以输出到其他模板当中

getProduct();
//$toDate = $_product->getSpecialTODate();
$toDate = $this->getPriceCountDown()[0];//开始时间
?>
helper('wishlist')->getAddUrl($_product); ?>

getPriceCountDown()[2])==true)); ?>
getPriceCountDown()[2])==true): ?>
isShowTitle('viewpage')): ?>


getPriceCountDown()[1] ?>

isShowCaption('viewpage')): ?>



__('Days') ?>


__('Hours') ?>


__('Minutes') ?>


__('Seconds') ?>

效果 前台
后台

Magento 后台可以设置
产品的购买数量
产品促销开始和结束时间
产品促销折扣信息
促销后自动恢复原价
当然你可指定一个目录专门做促销 然后用指定的模板输出 分类id 就像这样
Magento首页自定义调用目录
当然你也可以 创建一个新的块来输出 并通过xml 把它放到你所要放到的任何地方
你也可以 在块中添加属性筛选来输出你指定的数据
比如专门输出蓝色的裙子等
反正很自由的 -个xml几乎能完成所有的布局 不用sql就几乎能获得所有的数据
某些情况下 调用失败的 请检查你的块是否有启用

getLoadedProductCollection();
$_helper = $this->helper('catalog/output');
?>
count()): ?>
    
__('There are no products matching the selection.') ?>

__($this->getTitle()) ?>
    • dealSaveImage($_product); //促销上标?>

      htmlEscape($_product->getName()) ?>

      SKU:htmlEscape($_product->getSku()); ?>
      getPriceHtml($_product, true, $this->getPriceSuffix()) ?>
      getStore()) && Mage::helper('peexl_dailydeals')->isActiveDealProduct($_product) && Mage::getStoreConfig('dailydeals/peexl_dailydeals_configuration_group/peexl_dailydeals_show_remaining_qty', Mage::app()->getStore())) : ?>
      setProductFinalPrice($_product); echo $this->getPriceHtml($_products, true) ?> getItemRemainingQty($_product) ?> __('item(s) left') ?>
      getProductTimer($_product) ?>
      getCategoryIds(); ?> In $_category_id): ?> 1) {break;} ?> load($_category_id) ?> getName() ?>

这个插件整体的效果并不是很好 完全可以用 我写的那个插件 加后台原有的促销功能代替 不过这个插件写的不错
其实magento 的自带的促销功能已经很强大了
来两张高级版


像购物车规则以及
优惠券等
总之很强大
Magento的优惠券的功能设置步骤很简单 通过几个步骤就可以轻松搞定了

第一,进入管理后台
第二,选择promotion –> shopping cart price rule
第三,新建一个rule,并输入相关的信息
其中包括rule名称,所要应用的站点(如果你运行多个站点),可以使用的客户组,还有就是优惠券的编码了。尽量弄一个有点规则但是又不是那么明显的编码。这样比较可信,而又不会让那些没得到优惠券的人滥用。
第四,设定优惠券的使用次数和每个用户可以使用的次数。
第五,如果没有选择应用的日期,则将永久应用该优惠规则直到你设置日期为止。当然不要忘了激活些规则。
第六,我们不需要设置条件,除非你想限定只有某些特定的商品才可以使用优惠券。

然后是最关键的一步,在action标签中,选择:在Apply后面的下拉框中选择Fixed amount discount.

备注
以上是个人的笔记 如有不足或错误 欢迎指出、

转载请注明:(●--●) Hello.My Weicot » 重写Magento 倒计时插件 为其增加新功能

文章来源于互联网:重写Magento 倒计时插件 为其增加新功能

如无特殊说明或标注,任何个人或组织,复制、转载、采集本站内容请注明:
本文来源于:【Magento中文网】,并添加本文地址链接。
如未按上述操作复制或转载,本站有权追究法律责任。
若本站内容侵犯了原著者的合法权益,可联系我们进行处理。