【Shopify】自主开发评论功能

本次教程内容为如何使用公司技术部自主开发的评论功能替换掉原有付费插件Loox:


Loox
事前准备:

1.自主开发的评论功能,在网页中的使用方法与原有Loox插件完全相同,但隐藏评论功能需在ERP中进行,请各网站负责人自行联系 技术部李向阳同事 开通ERP相关权限。

2.请在开始修改代码前将当前网站使用Loox发布的全部评论导出为表格,并命名为其对应的网站名称后发给 技术部肖金栋 同事,该同事会将原有评论数据全部导入到后台数据库,以避免造成卸载插件后原有评论消失,导出步骤如下:

导出表格步骤

代码修改:

代码修改大体分为两部分,第一部分的功能是实现详情页提交新评论及显示评论的功能,第二部分是实现在列表页中的产品下方显示评论的数量和评分星级,以下为详细步骤:

第一部分:实现详情页提交评论及显示评论功能:
功能展示
  • 打开shopify后台 -- 依次点击 Online Store -- Actions -- Edit Code -- 搜索并打开product-template.liquid -- 请Ctrl + F搜索关键词loox,如果搜索到如下相关代码,请选中删掉,如果没有搜索到,可跳出此步直接进行下一步:
需删除的代码段
  • 请在左侧文件夹列表找到 Snippets 文件夹,并点击 Add a new snippet ,新建名称为 review 的空文件,并将 代码段1 (见下)全选复制粘贴于review文件中:
Add a new snippet

新建的review文件

代码段1:

<!doctype html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <title>Me</title>
    <meta name="viewport" content="width=device-width,initial-scale=1.0,maximum-scale=1.0,user-scalable=no"/>
</head>
<body>
<div id="app"></div>
<script type="text/javascript">  
  window.webServer = '{{ shop.name }}';
  window.currProductId = '{{ product.id }}';
</script>
<script type="text/javascript" src="https://s3-us-west-2.amazonaws.com/image.chic-fusion.com/promotion/shopify_file/vendors~build.js"></script>
<script type="text/javascript" src="https://s3-us-west-2.amazonaws.com/image.chic-fusion.com/promotion/shopify_file/build.js"></script>
</body>
</html>
  • 搜索并打开product.liquid -- 检查是否有 loox 相关代码,请将整行代码删除:
image.png

该文件中每行代码的顺序代表了在详情中每个功能板块的顺序:


image.png

所以,想将产品评论功能放在页面中的哪个位置,就将以下代码(代码段2)放置在对应的位置上即可。

代码段2:

{% include 'review' %}

开始举例:
如果想将评论版块放在you may also like上方,请将代码段2放在第二行,如下:


举个栗子

举例完毕,以上。

到此,第一部分功能完成。

第二部分:列表页中产品下方显示评论的数量和评分星级
功能展示
  • 打开shopify后台 -- 依次点击 Online Store -- Actions -- Edit Code -- 搜索并打开product-item.liquid -- 请Ctrl + F搜索关键词loox,如果搜索到如下相关代码,请选中删掉并将代码段3添加至该位置:

需删除代码

代码段3:

<!--Review code-->
        {% if product.description contains 'reviewCount' and product.description contains 'reviewScore'%}
          <span style="display:none;">{{product.description}}</span>
          <a href="{{ product.url | within: collection }}" title="{{ product.title }}" class="review-score">
          {% assign str1 = product.description | strip_html | split: " " %}<!--Original string-->
          {% assign str2 = str1.last %}<!--Useful string-->
          {% if str2 != '00'%}
            <!--Score is not an integer-->
            {% if str2 contains '.' %}
                {%assign str3 = str2 | split: "."%}
                {%assign strScore= str3[0].last %}
                {%assign strCount= str3[0] | split: "" | reverse |join : ""  | remove_first:strScore | split: "" | reverse |join : ""   %}
                    {% for i in (1..strScore) %}
                        <i class="iconfont">&#xe768;</i>
                    {% endfor %}
                    <i class="iconfont">&#xe769;</i>
                    {% for i in (strScore..3) %}
                    <i class="iconfont">&#xe76b;</i>
                    {% endfor %}
            {% else %}
            <!--Score is an integer-->
                {%assign strScore= str2.last %}
                {%assign strCount= str2 | split: "" | reverse |join : ""  | remove_first:strScore | split: "" | reverse |join : ""   %}
                    {% for i in (1..strScore) %}
                        <i class="iconfont">&#xe768;</i>
                    {% endfor %}
                    {% for i in (strScore..4) %}
                    <i class="iconfont">&#xe76b;</i>
                    {% endfor %}
            {% endif %}
            <span style="margin-left:10px;">({{strCount}})</span>
          {% endif %}
        </a>
        {% endif %}
        <!--Review code-->

添加后效果,代码段3将原有的loox相关代码替换掉,位置不变:


不要只看行数,要看上下文内容锁定位置

最后一步,将以下样式代码(代码段4)全选复制粘贴于 theme.scss.liquid 最底部即可。
代码段4:

/** Review code **/
@font-face {
  font-family: 'iconfont';  /* project id 384296 */
  src: url('//at.alicdn.com/t/font_384296_9yny40yhm1n.eot');
  src: url('//at.alicdn.com/t/font_384296_9yny40yhm1n.eot?#iefix') format('embedded-opentype'),
  url('//at.alicdn.com/t/font_384296_9yny40yhm1n.woff2') format('woff2'),
  url('//at.alicdn.com/t/font_384296_9yny40yhm1n.woff') format('woff'),
  url('//at.alicdn.com/t/font_384296_9yny40yhm1n.ttf') format('truetype'),
  url('//at.alicdn.com/t/font_384296_9yny40yhm1n.svg#iconfont') format('svg');
}
.iconfont{
    font-family:"iconfont" !important;
    font-size:16px;font-style:normal;
    -webkit-font-smoothing: antialiased;
    -webkit-text-stroke-width: 0.2px;
    -moz-osx-font-smoothing: grayscale;
}
.review-score i{
  font-size:inherit;
  letter-spacing:-3px;
  color:#e64545;/* Custom color */
}
/** Review code **/
注意事项:

1.在导出表格后,成功替换代码前这段时间,建议不要再添加评论。(因为自开发的功能读取的数据只有表格中的数据以及替换代码后新增的数据)

2.在技术部肖同事成功导入数据之前替换完上述代码,会导致一段时间内没有评论显示,不必着急,耐心等待数据更新成功即可。

3.因自开发的评论功能样式功能完全模仿Loox,所以如果同事们在使用中有更好的优化建议,请讨论后向总负责人提出,合理需求一定会予以采纳。😊

4.在替换过程中,发生网站报错,请先还原代码后联系技术部同事。

5.在使用过程中,若出现:评论无法提交,无法上传图片等bug,请联系技术部同事。

6.在网页上提交评论后,列表上的总评论数需要一分钟左右时间更新,属正常情况。

7.大家在自己刷评论时填写的邮箱请使用统一的“test@test.com”,这样方便以后拉取客户真实数据时有明显的区分。

新增功能:

在详情页中SKU下方显示评分数量与评级,点击能够定位至当前页面评论区,效果可参考https://gracebabe.com/中的产品详情页:

新增功能

  • 打开shopify后台 -- 依次点击 Online Store -- Actions -- Edit Code -- 搜索并打开product-meta.liquid -- 请Ctrl + F搜索关键词ProductMeta__Sku,并将代码5放置在该行代码下方:
目标位置

代码段5:

<!--Review code-->
        {% if product.description contains 'reviewCount' and product.description contains 'reviewScore'%}
          <span style="display:none;">{{product.description}}</span>
          <a href="#reviewArea" title="{{ product.title }}" class="review-score">
          {% assign str1 = product.description | strip_html | split: " " %}<!--Original string-->
          {% assign str2 = str1.last %}<!--Useful string-->
          {% if str2 != '00'%}
            <!--Score is not an integer-->
            {% if str2 contains '.' %}
                {%assign str3 = str2 | split: "."%}
                {%assign strScore= str3[0].last %}
                {%assign strCount= str3[0] | split: "" | reverse |join : ""  | remove_first:strScore | split: "" | reverse |join : ""   %}
                    {% for i in (1..strScore) %}
                        <i class="iconfont">&#xe768;</i>
                    {% endfor %}
                    <i class="iconfont">&#xe769;</i>
                    {% for i in (strScore..3) %}
                    <i class="iconfont">&#xe76b;</i>
                    {% endfor %}
            {% else %}
            <!--Score is an integer-->
                {%assign strScore= str2.last %}
                {%assign strCount= str2 | split: "" | reverse |join : ""  | remove_first:strScore | split: "" | reverse |join : ""   %}
                    {% for i in (1..strScore) %}
                        <i class="iconfont">&#xe768;</i>
                    {% endfor %}
                    {% for i in (strScore..4) %}
                    <i class="iconfont">&#xe76b;</i>
                    {% endfor %}
            {% endif %}
            <span style="margin-left:10px;">({{strCount}})</span>
          {% endif %}
        </a>
        {% endif %}
        <!--Review code-->

操作中遇到困难请联系技术部同事。(我相信你自己可以的)
有任何意见建议请联系技术部同事或评论区留言。
😊

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 205,033评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,725评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,473评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,846评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,848评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,691评论 1 282
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,053评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,700评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,856评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,676评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,787评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,430评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,034评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,990评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,218评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,174评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,526评论 2 343