1

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

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

我尝试的是通过将类添加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最初生成它的适当元素中。如您所见,问题在于当页面加载时,它会在位置上完美显示图标,然后会重新加载一些 WooCommerce 参数并通过返回其原始值再次隐藏它。因此,没有我添加的课程。

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

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

添加两个附加信息: - 我知道当我解决问题时,我将隐藏(可能通过添加评论)a打印“购物车”一词的第一个链接 - 我从支持部门得到的最后回复如下(以防万一它有任何帮助):

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

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

4

1 回答 1

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文件是负责双重加载内容的文件。它可能不是最好的解决方案,但却是一个可行的解决方案。

于 2013-10-11T08:22:02.090 回答