我有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函数,它可以在文档就绪时运行并纠正这个问题,但由于上面提到的双重加载问题,它会将所有文本返回到先前的状态。
答案 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
文件负责内容的双重加载。它可能不是最好的解决方案,但却是一个有效的解决方案。