shoplazza-cli 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (181) hide show
  1. package/.editorconfig +28 -0
  2. package/.prettierrc +9 -0
  3. package/LICENSE +21 -0
  4. package/README.md +208 -0
  5. package/bin/shoplazza +117 -0
  6. package/fixtures/assets/blog.scss +74 -0
  7. package/fixtures/assets/cart_modal.scss +450 -0
  8. package/fixtures/assets/collection_detail.js +234 -0
  9. package/fixtures/assets/collection_detail.scss +345 -0
  10. package/fixtures/assets/collection_list.scss +11 -0
  11. package/fixtures/assets/collection_slider.scss +169 -0
  12. package/fixtures/assets/feature_columns.scss +26 -0
  13. package/fixtures/assets/feature_product.scss +109 -0
  14. package/fixtures/assets/footer.js +58 -0
  15. package/fixtures/assets/footer.scss +337 -0
  16. package/fixtures/assets/four_images.scss +29 -0
  17. package/fixtures/assets/gallery.scss +55 -0
  18. package/fixtures/assets/header.js +178 -0
  19. package/fixtures/assets/header.scss +929 -0
  20. package/fixtures/assets/image_text.scss +72 -0
  21. package/fixtures/assets/logo_bar.scss +11 -0
  22. package/fixtures/assets/newsletter.scss +90 -0
  23. package/fixtures/assets/not_found.scss +39 -0
  24. package/fixtures/assets/page_detail.scss +16 -0
  25. package/fixtures/assets/pagination.scss +150 -0
  26. package/fixtures/assets/postcss.config.js +6 -0
  27. package/fixtures/assets/product_description.scss +88 -0
  28. package/fixtures/assets/product_detail.js +634 -0
  29. package/fixtures/assets/product_detail.scss +1106 -0
  30. package/fixtures/assets/relative_product.scss +45 -0
  31. package/fixtures/assets/reviews.scss +70 -0
  32. package/fixtures/assets/rich_text.scss +71 -0
  33. package/fixtures/assets/search.js +87 -0
  34. package/fixtures/assets/search.scss +67 -0
  35. package/fixtures/assets/slide.scss +51 -0
  36. package/fixtures/assets/slider.scss +141 -0
  37. package/fixtures/assets/theme.css +976 -0
  38. package/fixtures/assets/theme.scss +1100 -0
  39. package/fixtures/assets/three_images.scss +20 -0
  40. package/fixtures/assets/tools.scss +23 -0
  41. package/fixtures/assets/two_images.scss +24 -0
  42. package/fixtures/assets/video.scss +45 -0
  43. package/fixtures/assets/video_text.scss +63 -0
  44. package/fixtures/config/settings_data.json +107 -0
  45. package/fixtures/config/settings_schema.json +690 -0
  46. package/fixtures/layout/theme.liquid +76 -0
  47. package/fixtures/locales/ar-SA.json +212 -0
  48. package/fixtures/locales/de-DE.json +290 -0
  49. package/fixtures/locales/en-US.json +290 -0
  50. package/fixtures/locales/es-ES.json +290 -0
  51. package/fixtures/locales/fr-FR.json +290 -0
  52. package/fixtures/locales/id-ID.json +212 -0
  53. package/fixtures/locales/it-IT.json +212 -0
  54. package/fixtures/locales/ja-JP.json +289 -0
  55. package/fixtures/locales/ko-KR.json +290 -0
  56. package/fixtures/locales/nl-NL.json +290 -0
  57. package/fixtures/locales/pl-PL.json +290 -0
  58. package/fixtures/locales/pt-PT.json +212 -0
  59. package/fixtures/locales/ru-RU.json +212 -0
  60. package/fixtures/locales/th-TH.json +212 -0
  61. package/fixtures/locales/zh-CN.json +290 -0
  62. package/fixtures/locales/zh-TW.json +290 -0
  63. package/fixtures/sections/apps.liquid +47 -0
  64. package/fixtures/sections/blog.liquid +137 -0
  65. package/fixtures/sections/collection_desc.liquid +34 -0
  66. package/fixtures/sections/collection_detail.liquid +436 -0
  67. package/fixtures/sections/collection_image.liquid +104 -0
  68. package/fixtures/sections/collection_list.liquid +161 -0
  69. package/fixtures/sections/collection_name.liquid +34 -0
  70. package/fixtures/sections/collection_slider.liquid +330 -0
  71. package/fixtures/sections/feature_columns.liquid +275 -0
  72. package/fixtures/sections/feature_product.liquid +227 -0
  73. package/fixtures/sections/footer.liquid +488 -0
  74. package/fixtures/sections/four_images.liquid +160 -0
  75. package/fixtures/sections/gallery.liquid +258 -0
  76. package/fixtures/sections/header.liquid +1157 -0
  77. package/fixtures/sections/html.liquid +40 -0
  78. package/fixtures/sections/image_text.liquid +350 -0
  79. package/fixtures/sections/instagram_plus.liquid +393 -0
  80. package/fixtures/sections/logo_bar.liquid +183 -0
  81. package/fixtures/sections/newsletter.liquid +225 -0
  82. package/fixtures/sections/not_found.liquid +39 -0
  83. package/fixtures/sections/overlay_image.liquid +648 -0
  84. package/fixtures/sections/page_detail.liquid +39 -0
  85. package/fixtures/sections/photo_collection.liquid +433 -0
  86. package/fixtures/sections/product_description.liquid +208 -0
  87. package/fixtures/sections/product_detail.liquid +611 -0
  88. package/fixtures/sections/products.liquid +216 -0
  89. package/fixtures/sections/relative_product.liquid +121 -0
  90. package/fixtures/sections/reviews.liquid +115 -0
  91. package/fixtures/sections/rich_text.liquid +157 -0
  92. package/fixtures/sections/search.liquid +163 -0
  93. package/fixtures/sections/slide.liquid +719 -0
  94. package/fixtures/sections/three_images.liquid +157 -0
  95. package/fixtures/sections/two_images.liquid +125 -0
  96. package/fixtures/sections/video.liquid +95 -0
  97. package/fixtures/sections/video_text.liquid +128 -0
  98. package/fixtures/snippets/bgset.liquid +21 -0
  99. package/fixtures/snippets/card_title.liquid +8 -0
  100. package/fixtures/snippets/cart_modal.liquid +74 -0
  101. package/fixtures/snippets/collection.liquid +77 -0
  102. package/fixtures/snippets/collection_filter_modal.liquid +56 -0
  103. package/fixtures/snippets/default_image_4.liquid +14 -0
  104. package/fixtures/snippets/default_image_6.liquid +18 -0
  105. package/fixtures/snippets/default_image_8.liquid +23 -0
  106. package/fixtures/snippets/four_images_item.liquid +8 -0
  107. package/fixtures/snippets/header_ads.liquid +95 -0
  108. package/fixtures/snippets/hero_image.liquid +94 -0
  109. package/fixtures/snippets/icon_video_play_large.liquid +1 -0
  110. package/fixtures/snippets/icon_video_play_medium.liquid +4 -0
  111. package/fixtures/snippets/icon_video_play_small.liquid +4 -0
  112. package/fixtures/snippets/lazyimg.liquid +22 -0
  113. package/fixtures/snippets/lazyimg_art.liquid +36 -0
  114. package/fixtures/snippets/lazysizes.liquid +41 -0
  115. package/fixtures/snippets/link.liquid +2 -0
  116. package/fixtures/snippets/pagination.liquid +48 -0
  117. package/fixtures/snippets/product.liquid +126 -0
  118. package/fixtures/snippets/product_art_tpl.liquid +152 -0
  119. package/fixtures/snippets/product_info_body.liquid +337 -0
  120. package/fixtures/snippets/product_info_tpl.liquid +423 -0
  121. package/fixtures/snippets/product_label.liquid +46 -0
  122. package/fixtures/snippets/settings.liquid +295 -0
  123. package/fixtures/snippets/social-meta-tags.liquid +106 -0
  124. package/fixtures/snippets/video_html.liquid +11 -0
  125. package/fixtures/snippets/video_source.liquid +98 -0
  126. package/fixtures/snippets/video_thumb_icon.liquid +2 -0
  127. package/fixtures/templates/404.liquid +1 -0
  128. package/fixtures/templates/collection.liquid +92 -0
  129. package/fixtures/templates/index.liquid +206 -0
  130. package/fixtures/templates/page.liquid +1 -0
  131. package/fixtures/templates/product.liquid +99 -0
  132. package/fixtures/templates/search.liquid +1 -0
  133. package/jest.config.js +192 -0
  134. package/lib/__tests__/log.test.js +15 -0
  135. package/lib/__tests__/utils.test.js +69 -0
  136. package/lib/auth/__mocks__/getCode.js +7 -0
  137. package/lib/auth/__mocks__/index.js +0 -0
  138. package/lib/auth/child.js +23 -0
  139. package/lib/auth/getCode.js +35 -0
  140. package/lib/auth/index.js +91 -0
  141. package/lib/commands/__tests__/login.test.js +77 -0
  142. package/lib/commands/__tests__/logout.test.js +29 -0
  143. package/lib/commands/__tests__/store.test.js +44 -0
  144. package/lib/commands/__tests__/switch.test.js +45 -0
  145. package/lib/commands/login.js +99 -0
  146. package/lib/commands/logout.js +14 -0
  147. package/lib/commands/store.js +14 -0
  148. package/lib/commands/switch.js +52 -0
  149. package/lib/commands/theme/__tests__/delete.test.js +49 -0
  150. package/lib/commands/theme/__tests__/init.test.js +21 -0
  151. package/lib/commands/theme/__tests__/list.test.js +80 -0
  152. package/lib/commands/theme/__tests__/package.test.js +17 -0
  153. package/lib/commands/theme/__tests__/publish.test.js +61 -0
  154. package/lib/commands/theme/__tests__/pull.test.js +69 -0
  155. package/lib/commands/theme/__tests__/push.test.js +63 -0
  156. package/lib/commands/theme/__tests__/serve.test.js +107 -0
  157. package/lib/commands/theme/delete.js +64 -0
  158. package/lib/commands/theme/init.js +51 -0
  159. package/lib/commands/theme/list.js +28 -0
  160. package/lib/commands/theme/package.js +37 -0
  161. package/lib/commands/theme/publish.js +56 -0
  162. package/lib/commands/theme/pull.js +62 -0
  163. package/lib/commands/theme/push.js +106 -0
  164. package/lib/commands/theme/serve.js +153 -0
  165. package/lib/commands/theme/share.js +20 -0
  166. package/lib/commands/version.js +6 -0
  167. package/lib/config.js +5 -0
  168. package/lib/db/__mocks__/index.js +9 -0
  169. package/lib/db/__tests__/analytics.test.js +19 -0
  170. package/lib/db/__tests__/user.test.js +20 -0
  171. package/lib/db/analytics.js +48 -0
  172. package/lib/db/index.js +9 -0
  173. package/lib/db/user.js +68 -0
  174. package/lib/log.js +13 -0
  175. package/lib/openAPI/__mocks__/index.js +20 -0
  176. package/lib/openAPI/api.js +76 -0
  177. package/lib/openAPI/index.js +46 -0
  178. package/lib/report.js +37 -0
  179. package/lib/tracing.js +50 -0
  180. package/lib/utils.js +48 -0
  181. package/package.json +54 -0
@@ -0,0 +1,216 @@
1
+ {% assign p = collections[section.settings.collection.id].products %}
2
+ {% if section.settings.is_show_recommended_products != nil %}
3
+ {% assign isShowRecommendedProducts = section.settings.is_show_recommended_products %}
4
+ {% else %}
5
+ {% assign isShowRecommendedProducts = true %}
6
+ {% endif %}
7
+ {% if isShowRecommendedProducts %}
8
+ {% if product.recommend_collection_id != nil %}
9
+ {% if collections[product.recommend_collection_id]].products.size > 0%}
10
+ {% assign p = collections[product.recommend_collection_id]].products %}
11
+ {% endif %}
12
+ {% endif %}
13
+ {% endif %}
14
+
15
+ {% if p.size > 0 or shop.env == 1 %}
16
+ <div class="container container-gap">{% comment %} 卡片标题 {% endcomment %}
17
+ {% if section.settings.name %}
18
+ {% include 'card_title',
19
+ title: section.settings.name,
20
+ titlePath: 'name'
21
+ %}
22
+ {% endif %}
23
+ {% assign grid = section.settings.grid | default: 4 %}
24
+ {% case grid %}
25
+ {% when 2 %}
26
+ {% assign colMd="col-md-6"%}
27
+ {% when 3 %}
28
+ {% assign colMd="col-md-4"%}
29
+ {% when 4 %}
30
+ {% assign colMd="col-md-3"%}
31
+ {% when 5 %}
32
+ {% assign colMd="col-md-2_4"%}
33
+ {% else %}
34
+ {% assign colMd="col-md-3"%}
35
+ {% endcase %}
36
+ {% if grid == 2 %}
37
+ {% assign col="col-12"%}
38
+ {% else %}
39
+ {% assign col="col-6"%}
40
+ {% endif %}
41
+
42
+ {% case section.settings.image_size %}
43
+ {% when "small" %}
44
+ {% assign imageHeight="100%" %}
45
+ {% when "medium" %}
46
+ {% assign imageHeight="121%" %}
47
+ {% when "large" %}
48
+ {% assign imageHeight="150%" %}
49
+ {% when "auto" %}
50
+ {% assign imageHeight="auto" %}
51
+ {% else %}
52
+ {% assign imageHeight="100%" %}
53
+ {% endcase %}
54
+
55
+ <div class="row common__product-row">
56
+ {% comment %} 渲染C端节点 {% endcomment %}
57
+ {% assign lineNumber = section.settings.line_number | times: grid %}
58
+ {% assign showProductNum = 0 %}
59
+ {% assign collection_id = section.settings.collection.id %}
60
+ {% for block in p %}
61
+ {% if showProductNum < lineNumber %}
62
+ {% if block.published %}
63
+ <div class="{{col}} {{colMd}} common__product-gap">
64
+ {% include 'product',
65
+ product: block,
66
+ image_size: imageHeight %}
67
+ </div>
68
+ {% assign showProductNum = showProductNum | plus: 1 %}
69
+ {% endif %}
70
+ {% endif %}
71
+ {% endfor %}
72
+ {% comment %} 补充模拟数据 {% endcomment %}
73
+ {% if shop.env == 1 %}
74
+ {% assign num = lineNumber | minus: showProductNum %}
75
+ {% for block in (1..num) %}
76
+
77
+ <div class="{{col}} {{colMd}} common__product-gap">
78
+ {% include 'product',
79
+ product: default_product,
80
+ image_size: imageHeight %}
81
+ </div>
82
+ {% endfor %}
83
+ {% endif %}
84
+ </div>
85
+ {% if section.settings.view_all %}
86
+ <div class="text-center">
87
+ <a href="{{ section.settings.collection.url }}" class="btn btn-primary">{{ 'i18n.collections.general.all_of_collection' | t }}</a>
88
+ </div>
89
+ {% endif %}
90
+ </div>
91
+ {% endif %}
92
+
93
+ {% schema %}
94
+ {
95
+ "name": "products",
96
+ "contentType": [
97
+ "products"
98
+ ],
99
+ "settings": [
100
+ {
101
+ "type": "collection",
102
+ "id": "collection",
103
+ "label": {
104
+ "en-US": "Collection",
105
+ "zh-CN": "专辑"
106
+ }
107
+ },
108
+ {
109
+ "type": "text",
110
+ "id": "name",
111
+ "label": {
112
+ "en-US": "Heading",
113
+ "zh-CN": "标题"
114
+ },
115
+ "default": "Featured collection",
116
+ "placeholder": {
117
+ "zh-CN": "请输入内容",
118
+ "en-US": "Input heading"
119
+ }
120
+ },
121
+ {
122
+ "type": "range",
123
+ "label": {
124
+ "zh-CN": "PC展示排数",
125
+ "en-US": "Show rows on desktop"
126
+ },
127
+ "id": "line_number",
128
+ "min": 1,
129
+ "max": 6,
130
+ "step": 1,
131
+ "default": 2
132
+ },
133
+ {
134
+ "type": "range",
135
+ "label": {
136
+ "zh-CN": "PC每排商品数",
137
+ "en-US": "Show products per row on desktop"
138
+ },
139
+ "id": "grid",
140
+ "min": 2,
141
+ "max": 5,
142
+ "step": 1,
143
+ "default": 4
144
+ },
145
+ {
146
+ "type": "select",
147
+ "label": {
148
+ "zh-CN": "图片高度",
149
+ "en-US": "Image height"
150
+ },
151
+ "id": "image_size",
152
+ "default": "medium",
153
+ "options": [
154
+ {
155
+ "value": "small",
156
+ "label": {
157
+ "zh-CN": "小",
158
+ "en-US": "Small"
159
+ }
160
+ },
161
+ {
162
+ "value": "medium",
163
+ "label": {
164
+ "zh-CN": "中",
165
+ "en-US": "Medium"
166
+ }
167
+ },
168
+ {
169
+ "value": "large",
170
+ "label": {
171
+ "zh-CN": "大",
172
+ "en-US": "Large"
173
+ }
174
+ },
175
+ {
176
+ "value": "auto",
177
+ "label": {
178
+ "zh-CN": "原始比例",
179
+ "en-US": "Natural"
180
+ }
181
+ }
182
+ ]
183
+ },
184
+ {
185
+ "type": "checkbox",
186
+ "label": {
187
+ "zh-CN": "显示”View all“",
188
+ "en-US": "Show \"View all\""
189
+ },
190
+ "id": "view_all",
191
+ "default": false
192
+ }
193
+ ],
194
+ "presets": [
195
+ {
196
+ "name": "products",
197
+ "cname": {
198
+ "zh-CN": "专辑商品",
199
+ "en-US": "Collection products"
200
+ },
201
+ "category": {
202
+ "en-US": "Product",
203
+ "zh-CN": "商品"
204
+ },
205
+ "ccategory": {
206
+ "en-US": "Product",
207
+ "zh-CN": "商品"
208
+ },
209
+ "display": true,
210
+ "is_show_recommended_products": true,
211
+ "view_all": false,
212
+ "blocks": []
213
+ }
214
+ ]
215
+ }
216
+ {% endschema %}
@@ -0,0 +1,121 @@
1
+ {% use 'relative_product.css' %}
2
+
3
+ {% comment %} 商品详情页 商品推荐 {% endcomment %}
4
+ <div class="container col-12 relative_product lazyload">
5
+ {% if section.settings.heading != blank %}
6
+ <div class="relative_product__title dj_skin_title_font position-relative">
7
+ {{ section.settings.heading}}
8
+ <span class="relative_product__change d-none">{{ 'i18n.product.product_detail.not_like_these' | t}}</span>
9
+ </div>
10
+ {% endif %}
11
+ <div class="relative_product__content row"></div>
12
+ </div>
13
+ {% comment %} 定义前端模板 {% endcomment %}
14
+ <script id="relative-product-art-tpl" type="text/html">
15
+ <% for(var i = 0; i < products.length; i++) { %>
16
+ <div class="col-6 <%= colMd %> common__product-gap">
17
+ <% include ('product_art_tpl', {
18
+ product: products[i]
19
+ }) %>
20
+ </div>
21
+ <% } %>
22
+ </script>
23
+
24
+ {% javascript %}
25
+ $(function() {
26
+ $('.relative_product').lazy(function() {
27
+ var page = 1, per_page = 30, products = [], related_count = {{section.settings.product_number | default: 4}}, enableChangeCount = 10;
28
+ var $section = $('[data-section-id=' + {{section.id}} + ']');
29
+ {% comment %} 获取异步商品 {% endcomment %}
30
+ $.get('/api/product/similar-products?product_id={{product.id}}'+'&page='+page+'&per_page='+per_page, function(res) {
31
+ if (!(res.state == 0 && res.data)) { return ; }
32
+ products = (res.data.products || []).filter(function(item) { return item.published; });
33
+ {% comment %} 可以切换推荐 {% endcomment %}
34
+ products.length > enableChangeCount && $section.find('.relative_product__change').removeClass('d-none');
35
+ {% if shop.env == 0 %}
36
+ $('.relative_product__title')[products.length?"show":"hide"]();
37
+ {% else %}
38
+ if (products.length < related_count) {
39
+ products = products.concat(Array.apply(null, Array(related_count - products.length)).map(function(){ return {
40
+ image: { src: '{{ '0745b09b31974decc653e9a927fb444c.jpg' | img_url }}', width: 100, height: 100 },
41
+ compare_at_price: '99.99',
42
+ price: '88.88',
43
+ available: true,
44
+ published: true,
45
+ isMock: true,
46
+ title: 'Product Title'
47
+ }; }));
48
+ }
49
+ {% endif %}
50
+ var colMd = 'col-md-6';
51
+ colMd = ["","col-md-6","col-md-6","col-md-4","col-md-3","col-md-2_4"][related_count] || colMd;
52
+ var render = function () {
53
+ var count = 0;
54
+ products.length < related_count ? (count = products.length) : (count = related_count);
55
+ $section.find('.relative_product__content').html(window.template('relative-product-art-tpl', {
56
+ products: new Array(count).fill(0).map(function (item, i) {
57
+ return products[((page-1)*related_count+i)%(products.length)];
58
+ }),
59
+ colMd: colMd
60
+ }));
61
+ console.log()
62
+ page+=1;
63
+ };
64
+ render();
65
+ $(document).on('click', '.relative_product__change', render);
66
+ });
67
+ });
68
+ });
69
+ {% endjavascript %}
70
+
71
+ {% schema %}
72
+ {
73
+ "name": "relative_product",
74
+ "templates": [
75
+ "product"
76
+ ],
77
+ "limit": 1,
78
+ "settings": [
79
+ {
80
+ "type": "text",
81
+ "id": "heading",
82
+ "label": {
83
+ "en-US": "Heading",
84
+ "zh-CN": "标题"
85
+ },
86
+ "default": "You may also like"
87
+ },
88
+ {
89
+ "type": "range",
90
+ "id": "product_number",
91
+ "step": 1,
92
+ "max": 5,
93
+ "min": 2,
94
+ "label": {
95
+ "zh-CN": "商品总数",
96
+ "en-US": "Products number"
97
+ },
98
+ "default": 4,
99
+ "unit": ""
100
+ }
101
+ ],
102
+ "presets": [
103
+ {
104
+ "name": "relative_product",
105
+ "cname": {
106
+ "en-US": "Product recommendations",
107
+ "zh-CN": "商品推荐"
108
+ },
109
+ "category": {
110
+ "en-US": "Page",
111
+ "zh-CN": "页面"
112
+ },
113
+ "ccategory": {
114
+ "en-US": "Page",
115
+ "zh-CN": "页面"
116
+ },
117
+ "display": true
118
+ }
119
+ ]
120
+ }
121
+ {% endschema %}
@@ -0,0 +1,115 @@
1
+ {% assign defaultImg = 'oss/operation/1468cb0e248c143782cd5161c2a81455.png' | img_url: '1080x' %}
2
+
3
+ <div class="container">
4
+ <div class="row d-block reviews-product-container pt-5" data-aos="reviews">
5
+ <div class="reviews-product">
6
+ {% assign first_product_id = '0' %}
7
+ {% for i in (1..4) %}
8
+ {% assign key = i | prepend:"product" %}
9
+ {% assign product_id = section.settings[key].id %}
10
+ {% assign product = all_products[product_id] %}
11
+ {% if first_product_id == '0' and product.published and product.available %}
12
+ {% assign first_product_id = product_id %}
13
+ {% endif %}
14
+ {% if product.published and product.available %}
15
+ <div class="review-product-item {% if first_product_id == product_id %}on{% endif %}" data-review-product-id="{{product_id}}">
16
+ <div class="image-wrap lazyload" data-bgset='{%if product.image.src %}{{ product.image.src }}{% else %}{{ defaultImg }}{% endif %}' alt="{{ product.image.alt | default: product.title }}" title="{{ product.image.alt || product.title }}"></div>
17
+ <h3>{%if product.title %}{{ product.title }}{% else %}Example product{% endif %}</h3>
18
+ </div>
19
+ {%else%}
20
+ <div class="review-product-item" data-review-product-id="">
21
+ <div class="image-wrap lazyload" data-bgset='{{ defaultImg }}' alt="" title=""></div>
22
+ <h3>Example product</h3>
23
+ </div>
24
+ {% endif %}
25
+ {% endfor %}
26
+
27
+ </div>
28
+ </div>
29
+ <div class="row d-block reviews-content reviews-section" id="section-{{section.id}}-contents" data-product-reviews="{{ first_product_id }}">
30
+ <div class="sep-loading__content reviews-content-loading"></div>
31
+ </div>
32
+ </div>
33
+
34
+ {% use 'reviews.css' %}
35
+
36
+ {% javascript %}
37
+ $(function () {
38
+ $(document.body).on('click', '.review-product-item', function (event) {
39
+ $(this).addClass('on').siblings().removeClass('on');
40
+ $("#section-{{section.id}}-contents").attr("data-product-reviews", $(this).attr("data-review-product-id")).html('<div class="sep-loading__content reviews-content-loading"></div>');
41
+ $(document.body).trigger("update_section_review");
42
+ !event.isTrigger && this.scrollIntoView({
43
+ behavior: "smooth",
44
+ block: "start",
45
+ inline: "center"
46
+ });
47
+ });
48
+ $('.review-product-item:eq(0)').click();
49
+ })
50
+ {% endjavascript %}
51
+
52
+ {% schema %}
53
+ {
54
+ "name": "reviews",
55
+ "settings": [
56
+ {
57
+ "type": "product",
58
+ "id": "product1",
59
+ "label": {
60
+ "zh-CN": "商品",
61
+ "en-US": "Product"
62
+ },
63
+ "default": ""
64
+ },
65
+ {
66
+ "type": "product",
67
+ "id": "product2",
68
+ "label": {
69
+ "zh-CN": "商品",
70
+ "en-US": "Product"
71
+ },
72
+ "default": ""
73
+ },
74
+ {
75
+ "type": "product",
76
+ "id": "product3",
77
+ "label": {
78
+ "zh-CN": "商品",
79
+ "en-US": "Product"
80
+ },
81
+ "default": ""
82
+ },
83
+ {
84
+ "type": "product",
85
+ "id": "product4",
86
+ "label": {
87
+ "zh-CN": "商品",
88
+ "en-US": "Product"
89
+ },
90
+ "default": ""
91
+ }
92
+ ],
93
+ "blocks": [],
94
+ "presets": [
95
+ {
96
+ "name": "reviews",
97
+ "cname": {
98
+ "zh-CN": "评论",
99
+ "en-US": "Testimonial"
100
+ },
101
+ "category": {
102
+ "en-US": "Material",
103
+ "zh-CN": "素材"
104
+ },
105
+ "ccategory": {
106
+ "en-US": "Material",
107
+ "zh-CN": "素材"
108
+ },
109
+ "display": true,
110
+ "blocks": [],
111
+ "icon": "oss/operation/e0ccc00871bdced0e572c90bfabfcacc.png"
112
+ }
113
+ ]
114
+ }
115
+ {% endschema %}
@@ -0,0 +1,157 @@
1
+ {% use 'rich_text.css' %}
2
+ <div class="container container-gap">
3
+ <div class="row">
4
+ {% assign width= section.settings.width %}
5
+ {% assign text_size= section.settings.text_size %}
6
+ <div class="rich-text container-gap mb-padding text-center rich-text__width_{{width}}">
7
+ {% for block in section.blocks %}
8
+ {% if block.type == 'heading' and block.settings.title %}
9
+ <div class="rich-text__title rich-text__title_{{ text_size }} dj_skin_title_font">{{ block.settings.title | escape }}</div>
10
+ {% endif %}
11
+ {% if block.type == 'text' and block.settings.text %}
12
+ <div class="dj-mce-view rich-text__text_{{ text_size }} dj_skin_text">{{ block.settings.text }}</div>
13
+ {% endif %}
14
+ {% endfor %}
15
+ </div>
16
+ </div>
17
+ </div>
18
+
19
+
20
+
21
+ {% schema %}
22
+ {
23
+ "name": "rich_text",
24
+ "max_blocks": 2,
25
+ "settings": [
26
+ {
27
+ "type": "select",
28
+ "id": "text_size",
29
+ "label": {
30
+ "zh-CN": "字体大小",
31
+ "en-US": "Font Size"
32
+ },
33
+ "default": "medium",
34
+ "options": [
35
+ {
36
+ "value": "large",
37
+ "label": {
38
+ "zh-CN": "大",
39
+ "en-US": "Large"
40
+ }
41
+ },
42
+ {
43
+ "value": "medium",
44
+ "label": {
45
+ "zh-CN": "中",
46
+ "en-US": "Medium"
47
+ }
48
+ },
49
+ {
50
+ "value": "small",
51
+ "label": {
52
+ "zh-CN": "小",
53
+ "en-US": "Small"
54
+ }
55
+ }
56
+ ]
57
+ },
58
+ {
59
+ "type": "select",
60
+ "id": "width",
61
+ "label": {
62
+ "en-US": "Text width",
63
+ "zh-CN": "文本宽度"
64
+ },
65
+ "default": "large",
66
+ "options": [
67
+ {
68
+ "value": "large",
69
+ "label": {
70
+ "zh-CN": "大(1080px)",
71
+ "en-US": "Large(1080px)"
72
+ }
73
+ },
74
+ {
75
+ "value": "medium",
76
+ "label": {
77
+ "zh-CN": "中(760px)",
78
+ "en-US": "Medium(760px)"
79
+ }
80
+ }
81
+ ]
82
+ }
83
+ ],
84
+ "blocks": [
85
+ {
86
+ "type": "heading",
87
+ "name": {
88
+ "zh-CN": "标题",
89
+ "en-US": "Heading"
90
+ },
91
+ "limit": 1,
92
+ "settings": [
93
+ {
94
+ "type": "text",
95
+ "id": "title",
96
+ "label": {
97
+ "en-US": "Heading",
98
+ "zh-CN": "标题"
99
+ },
100
+ "default": "Talk about your brand"
101
+ }
102
+ ]
103
+ },
104
+ {
105
+ "type": "text",
106
+ "name": {
107
+ "zh-CN": "文字",
108
+ "en-US": "Text"
109
+ },
110
+ "limit": 1,
111
+ "settings": [
112
+ {
113
+ "type": "richtext",
114
+ "id": "text",
115
+ "label": {
116
+ "en-US": "Text",
117
+ "zh-CN": "文本"
118
+ },
119
+ "default": "<p><span>A sentence or two introducing your brand, what you sell, and what makes your brand compelling to customers.</span></p>"
120
+ }
121
+ ]
122
+ }
123
+ ],
124
+ "presets": [
125
+ {
126
+ "name": "rich_text",
127
+ "cname": {
128
+ "en-US": "Rich text",
129
+ "zh-CN": "富文本"
130
+ },
131
+ "category": {
132
+ "en-US": "Material",
133
+ "zh-CN": "素材"
134
+ },
135
+ "ccategory": {
136
+ "en-US": "Material",
137
+ "zh-CN": "素材"
138
+ },
139
+ "display": true,
140
+ "blocks": [
141
+ {
142
+ "type": "heading",
143
+ "settings": {
144
+ "title": "Talk about your brand"
145
+ }
146
+ },
147
+ {
148
+ "type": "text",
149
+ "settings": {
150
+ "text": "<p><span>A sentence or two introducing your brand, what you sell, and what makes your brand compelling to customers.</span></p>"
151
+ }
152
+ }
153
+ ]
154
+ }
155
+ ]
156
+ }
157
+ {% endschema %}