WooCommerce双重负载

时间:2013-10-03 13:08:20

标签: javascript jquery ajax wordpress woocommerce

我有Wordpress project,我正在使用WooCommerce Plug-in和WooCommerce Adamas Theme。我有以下问题:

我需要将右上角菜单中的“Cart”一词替换为购物车的图标,作为我项目的一部分。我的主题在其functions.php文件中的作用是创建两个{Carter'内容PoP Up元素的a链接。第一个是“购物车”,第二个是购物车产品柜台。

我试过的是通过将类cmagnet-cart添加到第二个来添加以下CSS属性,以便包含购物车图标。

.cmagnet-cart{
    background: url('http://www.athlokinisi.gr/images/shopping-cart.png') no-repeat 10px 6px;
    min-width: 45px;
    text-align: right;
    background-size: auto 17px;
}

我已将该类添加到最初生成它的functions.php cartShow() function处的相应元素。正如您所看到的,问题是当页面加载时,它会在位置上完美地显示图标,然后有一些joo重新加载一些WooCommerce参数并通过返回其原始值再次隐藏它。因此,没有我添加的课程。

在与PremiumCoding的Adamas主题支持团队联系之后,经过超过2周的多张门票之后,有人向我指出我需要对WooCommerce的JS功能进行更改,也许是cart-fragment.js。问题是我在那里没有任何意义,我真的找不到在哪里进行代码更改,以便Javascript的第二次加载包括我的函数或从双重加载中排除这个元素。那里的Suport团队无法帮助我。

我会无休止地感谢任何帮助以及为什么会发生这种情况的解释。对我来说,为什么要加载一些元素两次没有任何意义。

添加两个附加信息: - 我知道当我解决这个问题时,我会隐藏(可能是通过添加评论)第一个a链接打印“Cart”一词 - 我从支持得到的最后一个回答如下(如果有任何帮助的话):

  

即使您在加载WooCommerce Ajax后用图标替换文本,   文字将会回来。所以你需要改变WooCommerce js功能   或使用WPML插件翻译所有WooCommerce插件和主题   字符串翻译模块。

扩展信息 一般来说,仅仅用购物车的图像替换第一个显示“购物车”的a链接是不够的,因为它无法解决我的更大问题,其中包括以下内容:我正在使用希腊语进行此项目主题有很多uppercase个CSS元素。这有一些问题,因为大写的希腊单词不能自动转换,因为你必须从元音中删除重音。因此,我已经制作了一个jQuery函数,它可以在文档就绪时运行并纠正这个问题,但由于上面提到的双重加载问题,它会将所有文本返回到先前的状态。

1 个答案:

答案 0 :(得分:0)

我通过添加此代码解决了这个问题:

//Uppercase correction for Greek language
    String.prototype.replaceArray = function(find, replace){
        var replaceString = this;
        for (var i = 0; i < find.length; i++){
            replaceString = replaceString.replace(find[i], replace[i]);
        }
        return replaceString;
    };
    var e = jQuery('a, h2, h3, button, li'), l = e.length, i;
    if (typeof getComputedStyle == "undefined"){
        getComputedStyle = function(e) {return e.currentStyle;};
    }

    for (i=0; i<l; i++){
        if (getComputedStyle(e[i]).textTransform == "uppercase"){
            var find = ['ά', 'έ', 'ί', 'ή', 'ύ', 'ό', 'ώ'];
            var replace = ['α', 'ε', 'ι', 'η', 'υ', 'ο', 'ω'];
            var replaceTo = e[i].innerHTML;
            replaceTo = replaceTo.replaceArray(find, replace);
            e[i].innerHTML = replaceTo;
        }
    }
    //Uppercase correction for Greek language

进入文件:

wp-content/plugins/woocommerce/assets/js/frontend/cart-fragments.min.js

这个JS文件负责内容的双重加载。它可能不是最好的解决方案,但却是一个有效的解决方案。