通过ajax操作magento产品属性加一(如diggs +1)
作者:Jeen 发布于:2013-4-21 18:27 Sunday 分类:工作笔记
参考其他网站www.marcmart.com 实现 站内产品digg+1
这边简单的记一下流水账,希望对看到这篇文章的人有帮助
首先需要建立对应的产品属性,这边我们命名为 diggs . 类型为文本,默认值为 0
新建完成后添加此属性到对应的属性组,如Default
接下来,需要进行ajax操作 就要有一个对应的请求url
于是我们需要在控制器中添加对应的动作
修改core/Mage/Catalog/controllers
ProductController.php 文件,添加indexAction 方法 (由于magento local 目录中方法重载偶尔会抽风,所以这边直接对核心文件进行修改)
代码如下:
public function indexAction() { $productId = $this ->getRequest()->getParam( 'id' ); $qty = (int) $this ->getRequest()->getParam( 'qty' ); $key = Mage::getSingleton( 'core/cookie' )->get( $productId . 'diggs' ); if (! $key ){ Mage::getSingleton( 'core/cookie' )->set( $productId . 'diggs' ,md5( $productId . 'diggs' )); $product = Mage::getModel( 'catalog/product' ) ->load( $productId ) ->setDiggs( $qty ) ->save(); echo 'yes' ; } } |
属性及处理动作有了,现在要做的就是把他们关联起来了。
这边我们使用jquery进行操作,由于比较菜 就没用prototype去重写ajax 方法了
修改page.xml 或 catalog.xml 在对应位置 调用jquery库,为了防止js库冲突,建议在page.xml 中最先调用jquery
修改 产品查看页代码 view.phtml
添加动作按钮 及 调用相关数据的代码 (样式可自行定义):
1
2
3
4
5
|
<?php if ( $_product ->getDiggs()!= '' ): ?> <span class = "diggs" ><a id= "diggs" href= "javascript:;" >Diggs</a> (<span id= "diggs-qty" > <?php echo $_product ->getDiggs(); ?> </span> customers like this)</span><span id= "loadimg" style= "display:
none;background:url(<?php echo
$this->getUrl('js/jquery').'opc-ajax-loader.gif'; ?>)
no-repeat;float:left;height:16px;width:16px;" ></span> <?php endif ; ?> |
然后就是按钮动作控制的js代码了,样例代码如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
<script type= "text/javascript" > jQuery.noConflict(); jQuery( "#diggs" ).click( function (){ jQuery( "#loadimg" ).show(); var diggs = parseInt(jQuery( "#diggs-qty" ).text())+1; jQuery.ajax({ url: "<?php echo Mage::getBaseUrl()?>catalog/product/index" , dataType: "text" , data: "id=<?php echo $_product->getId();?>&qty=" +diggs, success: function (data){ jQuery( "#loadimg" ).hide(); if (data){ jQuery( "#diggs-qty" ).html(diggs); alert( 'Thank you!' ); } else {alert( 'You have already dugg this product.' )} }}); }); </script> |
这样一整条 逻辑流程 就算走完了, 清理缓存后测试看看吧
标签: magento
发表评论: