Magento 将产品添加到购物篮时切换下拉式迷你购物车
我有一个jQuery下拉式迷你购物车放在我的Magento商店的标题中。当“您的购物车”链接悬停时,下拉菜单将显示最近添加的项目 我现在已经集成了Ajax添加到购物车扩展,它允许客户在不刷新页面的情况下添加到购物车。我现在遇到的问题是,当产品被添加时,如果没有“你的购物车”链接,就无法判断 我想能够有迷你车自动下拉时,产品被添加,但我不知道如何做到这一点 谁能给我一些建议吗 提前谢谢 Ajax添加到购物车的代码:Magento 将产品添加到购物篮时切换下拉式迷你购物车,magento,jquery,Magento,Jquery,我有一个jQuery下拉式迷你购物车放在我的Magento商店的标题中。当“您的购物车”链接悬停时,下拉菜单将显示最近添加的项目 我现在已经集成了Ajax添加到购物车扩展,它允许客户在不刷新页面的情况下添加到购物车。我现在遇到的问题是,当产品被添加时,如果没有“你的购物车”链接,就无法判断 我想能够有迷你车自动下拉时,产品被添加,但我不知道如何做到这一点 谁能给我一些建议吗 提前谢谢 Ajax添加到购物车的代码: <script type="text/javascript">
<script type="text/javascript">
//<![CDATA[
var productAddToCartForm = new VarienForm('product_addtocart_form');
productAddToCartForm.submit = function(button, url) {
if (this.validator.validate()) {
var form = this.form;
var oldUrl = form.action;
if (url) {
form.action = url;
}
var e = null;
// Start of our new ajax code
if (!url) {
url = jQuery('#product_addtocart_form').attr('action');
}
url = url.replace("checkout/cart","ajax/index"); // New Code
var data = jQuery('#product_addtocart_form').serialize();
data += '&isAjax=1';
jQuery('#ajax_loader').show();
try {
jQuery.ajax( {
url : url,
dataType : 'json',
type : 'post',
data : data,
success : function(data) {
jQuery('#ajax_loader').show();
//alert(data.status + ": " + data.message);
if(jQuery('.block-cart')){
jQuery('.block-cart').replaceWith(data.sidebar);
}
if(jQuery('.header .links')){
jQuery('.header .links').replaceWith(data.toplink);
}
}
});
} catch (e) {
}
// End of our new ajax code
this.form.action = oldUrl;
if (e) {
throw e;
}
}
}.bind(productAddToCartForm);
productAddToCartForm.submitLight = function(button, url){
if(this.validator) {
var nv = Validation.methods;
delete Validation.methods['required-entry'];
delete Validation.methods['validate-one-required'];
delete Validation.methods['validate-one-required-by-name'];
if (this.validator.validate()) {
if (url) {
this.form.action = url;
}
this.form.submit();
}
Object.extend(Validation.methods, nv);
}
}.bind(productAddToCartForm);
//]]>
</script>
And code for Mini-Cart:
function slideUp()
{
jQuery('#topCartContent:visible').slideUp(1000);
jQuery('.top-link-cart').addClass('mini-cart-layer-up');
jQuery('.top-link-cart').removeClass('mini-cart-layer-down');
}
function slideDown()
{
jQuery('#topCartContent:hidden').slideDown(1000);
/*startTimer()*/ /* optional*/
jQuery('.top-link-cart').addClass('mini-cart-layer-down');
jQuery('.top-link-cart').removeClass('mini-cart-layer-up');
}
function toggleTopCart()
{
if(jQuery('#topCartContent').is(':visible'))
{
slideUp();
} else {
slideDown();
}
}
var timer;
function startTimer()
{
timer = setTimeout(function(){
slideUp();
}, 5000);
}
jQuery(document).ready(function(){
jQuery('.top-link-cart').mouseover(function(){
toggleTopCart();
});
jQuery('.top-link-cart').mouseover(function(){
clearTimeout(timer);
}).mouseout(function(){
startTimer();
});
jQuery("#topCartContent").mouseover(function() {
clearTimeout(timer);
}).mouseout(function(){
startTimer();
});
});
//
迷你购物车的名称和代码:
函数slideUp()
{
jQuery('#topCartContent:visible').slideUp(1000);
jQuery('.top-link-cart').addClass('mini-cart-layer-up');
jQuery('.top-link-cart').removeClass('mini-cart-layer-down');
}
函数slideDown()
{
jQuery(“#topCartContent:hidden”).slideDown(1000);
/*startTimer()*/*可选*/
jQuery('.top-link-cart').addClass('mini-cart-layer-down');
jQuery('.top-link-cart').removeClass('mini-cart-layer-up');
}
函数toggleTopCart()
{
if(jQuery('#topCartContent').is(':visible'))
{
slideUp();
}否则{
向下滑动();
}
}
无功定时器;
函数startTimer()
{
计时器=设置超时(函数(){
slideUp();
}, 5000);
}
jQuery(文档).ready(函数(){
jQuery('.top link cart').mouseover(函数(){
toggleTopCart();
});
jQuery('.top link cart').mouseover(函数(){
清除超时(计时器);
}).mouseout(函数(){
startTimer();
});
jQuery(“#topCartContent”).mouseover(函数(){
清除超时(计时器);
}).mouseout(函数(){
startTimer();
});
});
你说“。。。当添加产品时,如果不浏览“您的购物车”链接,就无法判断。一定有办法。触发购物车“下拉”操作的代码是什么
很可能是jQuery.sliedeDown或类似的。在ajax调用的success函数中,您需要执行相同的操作。或者,您可以通过编程触发JavaScript事件,例如,在success函数中:$(“#cart”).mouseover() 如果使用jQuery slideDown()、-Up()或-Toggle(),您会注意到一个动画小故障(即垂直移动层一秒钟) 所以我做的很简单:
if ( $('.messages .success-msg').length ) {
$('.messages').css('display','none'); // 'disable' default messages on top of content
function showCartForASecOrThreeAndAHalf() {
$('#mini-cart .menu').css('display','block');
setTimeout(function () { $('#mini-cart .menu').css('display',''); }, 3500); // display:'' to restore previous settings
}
showCartForASecOrThreeAndAHalf();
}
希望这能进一步帮助您;-) 这非常简单,但我是在浪费了几个小时后才学会的(实际上它们并不是浪费时间) 创建一个观察者,以便在产品添加到购物车时进行观察 Config.xml
<events>
<checkout_cart_product_add_after>
<observers>
<namespace_triggerevent>
<type>singleton</type>
<class>NameSpace_TriggerEvent_Model_Observer</class>
<method>opencartafteradd</method>
</namespace_triggerevent>
</observers>
</checkout_cart_product_add_after>
</events>
独生子女
名称空间\触发事件\模型\观察者
opencartafteradd
现在是Observer.php
<?php
class NameSpace_TriggerEvent_Model_Observer
{
public function opencartafteradd($observer) {
$event = $observer->getEvent();
$product = $event->getProduct();
Mage::getSingleton('core/session')->setOpenMinicart('ON');
}
}
我在上面添加了“迷你购物车购物车”下拉列表^!谢谢,炒菜很好
<script type="text/javascript">
var $k = jQuery.noConflict();
$k(document).ready(function() {
var screen_width = $k(window).width();
var openminicart = '<?php echo Mage::getSingleton('core/session')->getOpenMinicart();?>';
if (screen_width > 780) {
if (openminicart == 'ON') {
jQuery("#header-cart").slideToggle('slow');
jQuery("#header-cart").addClass('skip-active');
setTimeout(function() {
jQuery("#header-cart").slideUp('fast');
$k('#header-cart').removeClass('skip-active');
}, 4000);
<?php Mage::getSingleton('core/session')->unsOpenMinicart();?>
}
}
});
</script>