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.
- package/.editorconfig +28 -0
- package/.prettierrc +9 -0
- package/LICENSE +21 -0
- package/README.md +208 -0
- package/bin/shoplazza +117 -0
- package/fixtures/assets/blog.scss +74 -0
- package/fixtures/assets/cart_modal.scss +450 -0
- package/fixtures/assets/collection_detail.js +234 -0
- package/fixtures/assets/collection_detail.scss +345 -0
- package/fixtures/assets/collection_list.scss +11 -0
- package/fixtures/assets/collection_slider.scss +169 -0
- package/fixtures/assets/feature_columns.scss +26 -0
- package/fixtures/assets/feature_product.scss +109 -0
- package/fixtures/assets/footer.js +58 -0
- package/fixtures/assets/footer.scss +337 -0
- package/fixtures/assets/four_images.scss +29 -0
- package/fixtures/assets/gallery.scss +55 -0
- package/fixtures/assets/header.js +178 -0
- package/fixtures/assets/header.scss +929 -0
- package/fixtures/assets/image_text.scss +72 -0
- package/fixtures/assets/logo_bar.scss +11 -0
- package/fixtures/assets/newsletter.scss +90 -0
- package/fixtures/assets/not_found.scss +39 -0
- package/fixtures/assets/page_detail.scss +16 -0
- package/fixtures/assets/pagination.scss +150 -0
- package/fixtures/assets/postcss.config.js +6 -0
- package/fixtures/assets/product_description.scss +88 -0
- package/fixtures/assets/product_detail.js +634 -0
- package/fixtures/assets/product_detail.scss +1106 -0
- package/fixtures/assets/relative_product.scss +45 -0
- package/fixtures/assets/reviews.scss +70 -0
- package/fixtures/assets/rich_text.scss +71 -0
- package/fixtures/assets/search.js +87 -0
- package/fixtures/assets/search.scss +67 -0
- package/fixtures/assets/slide.scss +51 -0
- package/fixtures/assets/slider.scss +141 -0
- package/fixtures/assets/theme.css +976 -0
- package/fixtures/assets/theme.scss +1100 -0
- package/fixtures/assets/three_images.scss +20 -0
- package/fixtures/assets/tools.scss +23 -0
- package/fixtures/assets/two_images.scss +24 -0
- package/fixtures/assets/video.scss +45 -0
- package/fixtures/assets/video_text.scss +63 -0
- package/fixtures/config/settings_data.json +107 -0
- package/fixtures/config/settings_schema.json +690 -0
- package/fixtures/layout/theme.liquid +76 -0
- package/fixtures/locales/ar-SA.json +212 -0
- package/fixtures/locales/de-DE.json +290 -0
- package/fixtures/locales/en-US.json +290 -0
- package/fixtures/locales/es-ES.json +290 -0
- package/fixtures/locales/fr-FR.json +290 -0
- package/fixtures/locales/id-ID.json +212 -0
- package/fixtures/locales/it-IT.json +212 -0
- package/fixtures/locales/ja-JP.json +289 -0
- package/fixtures/locales/ko-KR.json +290 -0
- package/fixtures/locales/nl-NL.json +290 -0
- package/fixtures/locales/pl-PL.json +290 -0
- package/fixtures/locales/pt-PT.json +212 -0
- package/fixtures/locales/ru-RU.json +212 -0
- package/fixtures/locales/th-TH.json +212 -0
- package/fixtures/locales/zh-CN.json +290 -0
- package/fixtures/locales/zh-TW.json +290 -0
- package/fixtures/sections/apps.liquid +47 -0
- package/fixtures/sections/blog.liquid +137 -0
- package/fixtures/sections/collection_desc.liquid +34 -0
- package/fixtures/sections/collection_detail.liquid +436 -0
- package/fixtures/sections/collection_image.liquid +104 -0
- package/fixtures/sections/collection_list.liquid +161 -0
- package/fixtures/sections/collection_name.liquid +34 -0
- package/fixtures/sections/collection_slider.liquid +330 -0
- package/fixtures/sections/feature_columns.liquid +275 -0
- package/fixtures/sections/feature_product.liquid +227 -0
- package/fixtures/sections/footer.liquid +488 -0
- package/fixtures/sections/four_images.liquid +160 -0
- package/fixtures/sections/gallery.liquid +258 -0
- package/fixtures/sections/header.liquid +1157 -0
- package/fixtures/sections/html.liquid +40 -0
- package/fixtures/sections/image_text.liquid +350 -0
- package/fixtures/sections/instagram_plus.liquid +393 -0
- package/fixtures/sections/logo_bar.liquid +183 -0
- package/fixtures/sections/newsletter.liquid +225 -0
- package/fixtures/sections/not_found.liquid +39 -0
- package/fixtures/sections/overlay_image.liquid +648 -0
- package/fixtures/sections/page_detail.liquid +39 -0
- package/fixtures/sections/photo_collection.liquid +433 -0
- package/fixtures/sections/product_description.liquid +208 -0
- package/fixtures/sections/product_detail.liquid +611 -0
- package/fixtures/sections/products.liquid +216 -0
- package/fixtures/sections/relative_product.liquid +121 -0
- package/fixtures/sections/reviews.liquid +115 -0
- package/fixtures/sections/rich_text.liquid +157 -0
- package/fixtures/sections/search.liquid +163 -0
- package/fixtures/sections/slide.liquid +719 -0
- package/fixtures/sections/three_images.liquid +157 -0
- package/fixtures/sections/two_images.liquid +125 -0
- package/fixtures/sections/video.liquid +95 -0
- package/fixtures/sections/video_text.liquid +128 -0
- package/fixtures/snippets/bgset.liquid +21 -0
- package/fixtures/snippets/card_title.liquid +8 -0
- package/fixtures/snippets/cart_modal.liquid +74 -0
- package/fixtures/snippets/collection.liquid +77 -0
- package/fixtures/snippets/collection_filter_modal.liquid +56 -0
- package/fixtures/snippets/default_image_4.liquid +14 -0
- package/fixtures/snippets/default_image_6.liquid +18 -0
- package/fixtures/snippets/default_image_8.liquid +23 -0
- package/fixtures/snippets/four_images_item.liquid +8 -0
- package/fixtures/snippets/header_ads.liquid +95 -0
- package/fixtures/snippets/hero_image.liquid +94 -0
- package/fixtures/snippets/icon_video_play_large.liquid +1 -0
- package/fixtures/snippets/icon_video_play_medium.liquid +4 -0
- package/fixtures/snippets/icon_video_play_small.liquid +4 -0
- package/fixtures/snippets/lazyimg.liquid +22 -0
- package/fixtures/snippets/lazyimg_art.liquid +36 -0
- package/fixtures/snippets/lazysizes.liquid +41 -0
- package/fixtures/snippets/link.liquid +2 -0
- package/fixtures/snippets/pagination.liquid +48 -0
- package/fixtures/snippets/product.liquid +126 -0
- package/fixtures/snippets/product_art_tpl.liquid +152 -0
- package/fixtures/snippets/product_info_body.liquid +337 -0
- package/fixtures/snippets/product_info_tpl.liquid +423 -0
- package/fixtures/snippets/product_label.liquid +46 -0
- package/fixtures/snippets/settings.liquid +295 -0
- package/fixtures/snippets/social-meta-tags.liquid +106 -0
- package/fixtures/snippets/video_html.liquid +11 -0
- package/fixtures/snippets/video_source.liquid +98 -0
- package/fixtures/snippets/video_thumb_icon.liquid +2 -0
- package/fixtures/templates/404.liquid +1 -0
- package/fixtures/templates/collection.liquid +92 -0
- package/fixtures/templates/index.liquid +206 -0
- package/fixtures/templates/page.liquid +1 -0
- package/fixtures/templates/product.liquid +99 -0
- package/fixtures/templates/search.liquid +1 -0
- package/jest.config.js +192 -0
- package/lib/__tests__/log.test.js +15 -0
- package/lib/__tests__/utils.test.js +69 -0
- package/lib/auth/__mocks__/getCode.js +7 -0
- package/lib/auth/__mocks__/index.js +0 -0
- package/lib/auth/child.js +23 -0
- package/lib/auth/getCode.js +35 -0
- package/lib/auth/index.js +91 -0
- package/lib/commands/__tests__/login.test.js +77 -0
- package/lib/commands/__tests__/logout.test.js +29 -0
- package/lib/commands/__tests__/store.test.js +44 -0
- package/lib/commands/__tests__/switch.test.js +45 -0
- package/lib/commands/login.js +99 -0
- package/lib/commands/logout.js +14 -0
- package/lib/commands/store.js +14 -0
- package/lib/commands/switch.js +52 -0
- package/lib/commands/theme/__tests__/delete.test.js +49 -0
- package/lib/commands/theme/__tests__/init.test.js +21 -0
- package/lib/commands/theme/__tests__/list.test.js +80 -0
- package/lib/commands/theme/__tests__/package.test.js +17 -0
- package/lib/commands/theme/__tests__/publish.test.js +61 -0
- package/lib/commands/theme/__tests__/pull.test.js +69 -0
- package/lib/commands/theme/__tests__/push.test.js +63 -0
- package/lib/commands/theme/__tests__/serve.test.js +107 -0
- package/lib/commands/theme/delete.js +64 -0
- package/lib/commands/theme/init.js +51 -0
- package/lib/commands/theme/list.js +28 -0
- package/lib/commands/theme/package.js +37 -0
- package/lib/commands/theme/publish.js +56 -0
- package/lib/commands/theme/pull.js +62 -0
- package/lib/commands/theme/push.js +106 -0
- package/lib/commands/theme/serve.js +153 -0
- package/lib/commands/theme/share.js +20 -0
- package/lib/commands/version.js +6 -0
- package/lib/config.js +5 -0
- package/lib/db/__mocks__/index.js +9 -0
- package/lib/db/__tests__/analytics.test.js +19 -0
- package/lib/db/__tests__/user.test.js +20 -0
- package/lib/db/analytics.js +48 -0
- package/lib/db/index.js +9 -0
- package/lib/db/user.js +68 -0
- package/lib/log.js +13 -0
- package/lib/openAPI/__mocks__/index.js +20 -0
- package/lib/openAPI/api.js +76 -0
- package/lib/openAPI/index.js +46 -0
- package/lib/report.js +37 -0
- package/lib/tracing.js +50 -0
- package/lib/utils.js +48 -0
- package/package.json +54 -0
|
@@ -0,0 +1,295 @@
|
|
|
1
|
+
{% assign titleFont = settings.skin_title_font_family %}
|
|
2
|
+
{% assign textFont = settings.skin_text_font_family %}
|
|
3
|
+
{% assign btnFont = settings.skin_btn_font_family %}
|
|
4
|
+
{% assign productHeaderFont = settings.skin_product_header_font_family %}
|
|
5
|
+
|
|
6
|
+
{% capture titleFontDesc %}
|
|
7
|
+
font-family: {{titleFont.family}},{{titleFont.fallback_families}} !important;
|
|
8
|
+
font-style:{{titleFont.style}} !important;
|
|
9
|
+
font-weight:{{titleFont.weight}} !important;
|
|
10
|
+
{% endcapture %}
|
|
11
|
+
|
|
12
|
+
{% capture textFontDesc %}
|
|
13
|
+
font-family: {{textFont.family}},{{textFont.fallback_families}} !important;
|
|
14
|
+
font-style:{{textFont.style}} !important;
|
|
15
|
+
font-weight:{{textFont.weight}} !important;
|
|
16
|
+
{% endcapture %}
|
|
17
|
+
|
|
18
|
+
{% capture btnFontDesc %}
|
|
19
|
+
font-family: {{btnFont.family}},{{btnFont.fallback_families}} !important;
|
|
20
|
+
font-style:{{btnFont.style}} !important;
|
|
21
|
+
font-weight:{{btnFont.weight}} !important;
|
|
22
|
+
{% endcapture %}
|
|
23
|
+
|
|
24
|
+
{% capture productHeaderFontDesc %}
|
|
25
|
+
font-family: {{productHeaderFont.family}},{{productHeaderFont.fallback_families}} !important;
|
|
26
|
+
font-style:{{productHeaderFont.style}} !important;
|
|
27
|
+
font-weight:{{productHeaderFont.weight}} !important;
|
|
28
|
+
{% endcapture %}
|
|
29
|
+
<style type="text/css">
|
|
30
|
+
:root {
|
|
31
|
+
--skin_primary_btn_bg_color: {{settings.skin_primary_btn_bg_color}};
|
|
32
|
+
--skin_primary_btn_text_color: {{settings.skin_primary_btn_text_color}};
|
|
33
|
+
--skin_bg: {{settings.skin_bg}};
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
@media (min-width: 768px){
|
|
37
|
+
{% assign general_layout_width = settings.general_layout_width | default: 1080 %}
|
|
38
|
+
{% assign general_layout_spacing = settings.general_layout_spacing | default: 40 %}
|
|
39
|
+
.container{
|
|
40
|
+
max-width: {{general_layout_spacing | times: 2 | plus : general_layout_width}}px !important;
|
|
41
|
+
padding-right: {{general_layout_spacing | plus : 15}}px !important;
|
|
42
|
+
padding-left: {{general_layout_spacing | plus : 15}}px !important;
|
|
43
|
+
}
|
|
44
|
+
.tw-container{
|
|
45
|
+
max-width: {{general_layout_spacing | times: 2 | plus : general_layout_width}}px !important;
|
|
46
|
+
padding-right: {{general_layout_spacing | plus : 15}}px !important;
|
|
47
|
+
padding-left: {{general_layout_spacing | plus : 15}}px !important;
|
|
48
|
+
margin: 0 auto;
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
.tw-container{
|
|
53
|
+
width: 100%;
|
|
54
|
+
padding-right: 15px;
|
|
55
|
+
padding-left: 15px;
|
|
56
|
+
margin-right: auto;
|
|
57
|
+
margin-left: auto;
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
/* 字体 */
|
|
61
|
+
{% assign titleFont = settings.skin_title_font_family %}
|
|
62
|
+
{% assign textFont = settings.skin_text_font_family %}
|
|
63
|
+
{% assign btnFont = settings.skin_btn_font_family %}
|
|
64
|
+
{% assign productHeaderFont = settings.skin_product_header_font_family %}
|
|
65
|
+
{% capture fonts %}{{ titleFont.font_face }}|{{ textFont.font_face }}|{{ btnFont.font_face }}|{{ productHeaderFont.font_face }}{% endcapture %}
|
|
66
|
+
{% assign arr = fonts | split:"|" | uniq %}
|
|
67
|
+
{% for f in arr %}{{ f }}{% endfor %}
|
|
68
|
+
|
|
69
|
+
/* 页面背景 */
|
|
70
|
+
.dj_skin_bg {
|
|
71
|
+
background-color: {{settings.skin_bg}} !important;
|
|
72
|
+
}
|
|
73
|
+
/* 全局标题 */
|
|
74
|
+
.dj_skin_title {
|
|
75
|
+
color: {{settings.skin_title_color}} !important;
|
|
76
|
+
font-size: {{settings.skin_title_font_size}}px !important;
|
|
77
|
+
{{titleFontDesc}}
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
/* 全局标题 --- 不包含font-size */
|
|
81
|
+
.dj_skin_title_font {
|
|
82
|
+
color: {{settings.skin_title_color}} !important;
|
|
83
|
+
{{titleFontDesc}}
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
.dj_skin_title_font_family {
|
|
87
|
+
{{titleFontDesc}}
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
/* 全局文本 */
|
|
91
|
+
.dj_skin_text {
|
|
92
|
+
color: {{settings.skin_text_color}} !important;
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
.dj_skin_body {
|
|
96
|
+
-webkit-font-smoothing: antialiased;
|
|
97
|
+
{{textFontDesc}}
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
/* 全局文本字体 */
|
|
101
|
+
.dj_skin_text_font_family {
|
|
102
|
+
{{textFontDesc}}
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
/*----------------------------*/
|
|
106
|
+
|
|
107
|
+
/* 商品标题 */
|
|
108
|
+
.dj_skin_product_title {
|
|
109
|
+
color: {{settings.skin_title_color}} !important;
|
|
110
|
+
{{titleFontDesc}};
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
/* 商品列表标题 */
|
|
114
|
+
.dj_skin_product_list_title{
|
|
115
|
+
color: {{settings.skin_text_color}} !important;
|
|
116
|
+
font-size: {{settings.skin_product_header_font_size}}px !important;
|
|
117
|
+
{{productHeaderFontDesc}};
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
/* 商品标题字体 */
|
|
121
|
+
.dj_skin_product_title_font_family{
|
|
122
|
+
{{productHeaderFontDesc}}
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
/* 商品副标题 */
|
|
126
|
+
.dj_skin_product_brief_title {
|
|
127
|
+
{{textFontDesc}}
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
/* 商品现价 */
|
|
131
|
+
.dj_skin_product_price {
|
|
132
|
+
color: {{settings.skin_price_color}} !important;
|
|
133
|
+
font-size: {{settings.skin_price_font_size}}px !important;
|
|
134
|
+
{{textFontDesc}}
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
/* 商品详情现价--不需要限制字体 */
|
|
138
|
+
.dj_skin_product_detail_price {
|
|
139
|
+
color: {{settings.skin_price_color}} !important;
|
|
140
|
+
{{textFontDesc}}
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
/* 商品原价 */
|
|
144
|
+
.dj_skin_product_compare_at_price {
|
|
145
|
+
color: {{settings.skin_compare_at_price_color}} !important;
|
|
146
|
+
font-size: {{settings.skin_compare_at_price_font_size}}px !important;
|
|
147
|
+
{{textFontDesc}}
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
/* 商品详情原价--不需要限制字体 */
|
|
151
|
+
.dj_skin_product_detail_compare_at_price {
|
|
152
|
+
color: {{settings.skin_compare_at_price_color}} !important;
|
|
153
|
+
{{textFontDesc}}
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
/* 商品数目和排序 */
|
|
157
|
+
.dj_skin_product_text {
|
|
158
|
+
color: {{settings.skin_text_color}} !important;
|
|
159
|
+
{{textFontDesc}}
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
/* 商品详情款式选择框 */
|
|
163
|
+
.dj_skin_product_variants_selected {
|
|
164
|
+
color: {{settings.skin_primary_btn_bg_color}} !important;
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
.dj_skin_product_variants_selected:hover {
|
|
168
|
+
color: {{settings.skin_primary_btn_bg_color}} !important;
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
.dj_skin_product_variants_selected::before,.dj_skin_product_variants_selected label::before {
|
|
172
|
+
border: 2px solid {{settings.skin_primary_btn_bg_color}} !important;
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
{% assign label_color = settings.label_color | default: '#FFFFFF' %}
|
|
176
|
+
{% assign label_background_color = settings.label_background_color | default: '#9B3C44' %}
|
|
177
|
+
.product-info__label {
|
|
178
|
+
color: {{label_color}};
|
|
179
|
+
background: {{label_background_color}};
|
|
180
|
+
}
|
|
181
|
+
.product-info__label-triangle {
|
|
182
|
+
box-shadow: 0px -100px 0px 100px {{label_background_color}};
|
|
183
|
+
}
|
|
184
|
+
/* 优惠折扣标签同时存在 */
|
|
185
|
+
{% if settings.is_discount_show and settings.product_save_amount %}
|
|
186
|
+
.product-info__discount-label{
|
|
187
|
+
font-size: 12px;
|
|
188
|
+
}
|
|
189
|
+
.product-info__save-label{
|
|
190
|
+
font-weight: 300;
|
|
191
|
+
}
|
|
192
|
+
.product-info__label-triangle{
|
|
193
|
+
max-width: 90px;
|
|
194
|
+
}
|
|
195
|
+
@media (max-width: 576px){
|
|
196
|
+
.product-info__discount-label, .product-info__label-badge .money{
|
|
197
|
+
font-size: 10px;
|
|
198
|
+
}
|
|
199
|
+
.product-info__save-label{
|
|
200
|
+
font-size: 12px;
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
{% endif %}
|
|
204
|
+
|
|
205
|
+
{% unless settings.is_discount_show %}.product-info__header_tag{display:none!important;}{% endunless %}
|
|
206
|
+
{% unless settings.skin_price_color %}.dj_skin_product_detail_price{display:none!important;}{% endunless %}
|
|
207
|
+
{% unless settings.is_compare_at_price_show %}.dj_skin_product_compare_at_price{display:none!important;}{% endunless %}
|
|
208
|
+
{% unless settings.is_sales_show %}.product__select_modal .product-info__header_sales {display:none!important;}{% endunless %}
|
|
209
|
+
{% unless settings.is_stock_show %}.product-info__qty_stock {display:none!important;}{% endunless %}
|
|
210
|
+
{% unless settings.is_brief_show %}.product-info__header_brief {display:none!important;}{% endunless %}
|
|
211
|
+
{% unless settings.is_quantity_box_show %}.product-info__qty_container {display:none!important;}{% endunless %}
|
|
212
|
+
{% unless settings.vendor_enable %}.product-info__vendor {display:none!important;}{% endunless %}
|
|
213
|
+
|
|
214
|
+
/*----------------------------*/
|
|
215
|
+
/* 页尾 */
|
|
216
|
+
.dj_skin_footer_title{
|
|
217
|
+
{{titleFontDesc}}
|
|
218
|
+
}
|
|
219
|
+
/*----------------------------*/
|
|
220
|
+
.btn {
|
|
221
|
+
{{btnFontDesc}}
|
|
222
|
+
}
|
|
223
|
+
|
|
224
|
+
/* 主要按钮 */
|
|
225
|
+
.btn-primary {
|
|
226
|
+
position: relative !important;
|
|
227
|
+
border-color: {{settings.skin_primary_btn_border_color}} !important;
|
|
228
|
+
background: {{settings.skin_primary_btn_bg_color}} !important;
|
|
229
|
+
color: {{settings.skin_primary_btn_text_color}} !important;
|
|
230
|
+
}
|
|
231
|
+
.btn-primary:hover {
|
|
232
|
+
color: {{settings.skin_primary_btn_text_color}} !important;
|
|
233
|
+
border-color: {{settings.skin_primary_btn_border_color}} !important;
|
|
234
|
+
background: {{settings.skin_primary_btn_bg_color}} !important;
|
|
235
|
+
opacity: .9 !important;
|
|
236
|
+
}
|
|
237
|
+
.btn-primary:active,.btn-primary:focus {
|
|
238
|
+
color: {{settings.skin_primary_btn_text_color}} !important;
|
|
239
|
+
border-color: {{settings.skin_primary_btn_border_color}} !important;
|
|
240
|
+
background: {{settings.skin_primary_btn_bg_color}} !important;
|
|
241
|
+
opacity: .9 !important;
|
|
242
|
+
}
|
|
243
|
+
.btn-primary:disabled,.btn-primary.disabled {
|
|
244
|
+
color: #f9f9f9 !important;
|
|
245
|
+
background: #d6d6d6 !important;
|
|
246
|
+
border: 1px solid #d6d6d6 !important;
|
|
247
|
+
}
|
|
248
|
+
|
|
249
|
+
/* 次级按钮 */
|
|
250
|
+
.btn-secondary {
|
|
251
|
+
position: relative !important;
|
|
252
|
+
background: {{settings.skin_secondary_btn_bg_color}} !important;
|
|
253
|
+
color: {{settings.skin_secondary_btn_text_color}} !important;
|
|
254
|
+
border: 1px solid {{settings.skin_secondary_btn_text_color}} !important;
|
|
255
|
+
}
|
|
256
|
+
.btn-secondary:hover {
|
|
257
|
+
color: {{settings.skin_secondary_btn_text_color}} !important;
|
|
258
|
+
border: 1px solid {{settings.skin_secondary_btn_text_color}} !important;
|
|
259
|
+
background: {{settings.skin_secondary_btn_bg_color}} !important;
|
|
260
|
+
opacity: .9 !important;
|
|
261
|
+
}
|
|
262
|
+
.btn-secondary:active,.btn-secondary:focus {
|
|
263
|
+
color: {{settings.skin_secondary_btn_text_color}} !important;
|
|
264
|
+
border: 1px solid {{settings.skin_secondary_btn_text_color}} !important;
|
|
265
|
+
background: {{settings.skin_secondary_btn_bg_color}} !important;
|
|
266
|
+
opacity: .9 !important;
|
|
267
|
+
}
|
|
268
|
+
.btn-secondary:disabled,.btn-secondary.disabled {
|
|
269
|
+
background: #f9f9f9 !important;
|
|
270
|
+
color: #d6d6d6 !important;
|
|
271
|
+
border-color: #d6d6d6 !important;
|
|
272
|
+
}
|
|
273
|
+
|
|
274
|
+
{% comment %} 列表色卡 {% endcomment %}
|
|
275
|
+
.color-swatch {
|
|
276
|
+
position: relative;
|
|
277
|
+
display: inline-block;
|
|
278
|
+
text-indent: -9999px;
|
|
279
|
+
overflow-y: hidden;
|
|
280
|
+
width: 14px;
|
|
281
|
+
height: 14px;
|
|
282
|
+
background-position: center;
|
|
283
|
+
background-size: cover;
|
|
284
|
+
background-repeat: no-repeat;
|
|
285
|
+
margin: 0 2px 2px 0;
|
|
286
|
+
border-radius: 50%;
|
|
287
|
+
border: 1px solid {{ settings.skin_primary_btn_border_color | default: '#212121' }};
|
|
288
|
+
}
|
|
289
|
+
@media (min-width: 768px){
|
|
290
|
+
.color-swatch {
|
|
291
|
+
width: 17px;
|
|
292
|
+
height: 17px;
|
|
293
|
+
}
|
|
294
|
+
}
|
|
295
|
+
</style>
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
{% assign template_base = template.name | split: '.' | first %}
|
|
2
|
+
{% assign og_title = shop.name %}
|
|
3
|
+
{% assign og_url = canonical_url | default: shop.url %}
|
|
4
|
+
{% assign og_type = 'website' %}
|
|
5
|
+
{% assign og_description = page_description | default: shop.description | default: shop.name %}
|
|
6
|
+
|
|
7
|
+
{% assign page_image = images[settings.homepage_social_image] %}
|
|
8
|
+
|
|
9
|
+
{% if template_base == 'product' %}
|
|
10
|
+
{% assign og_title = product.title | strip_html %}
|
|
11
|
+
{% assign og_type = 'product' %}
|
|
12
|
+
{% assign og_description = product.meta_description | newline_to_br | replace: "<br />", " " | default: shop.name %}
|
|
13
|
+
{% if og_description == " " %}
|
|
14
|
+
{% assign og_description = shop.name %}
|
|
15
|
+
{% endif %}
|
|
16
|
+
{% if product.image %}
|
|
17
|
+
{% assign page_image = product.image %}
|
|
18
|
+
{% endif %}
|
|
19
|
+
{% elsif template_base == 'article' %}
|
|
20
|
+
{% assign og_title = article.title | strip_html %}
|
|
21
|
+
{% assign og_type = 'article' %}
|
|
22
|
+
{% assign og_description = article.excerpt_or_content | strip_html %}
|
|
23
|
+
{% if article.image %}
|
|
24
|
+
{% assign page_image = article.image %}
|
|
25
|
+
{% endif %}
|
|
26
|
+
{% elsif template_base == 'collection' %}
|
|
27
|
+
{% if collection.image.src != blank %}
|
|
28
|
+
{% assign page_image = collection.image %}
|
|
29
|
+
{% else %}
|
|
30
|
+
{% paginate collection.products by 1 %}
|
|
31
|
+
{% assign collection_product0 = collection.products[0] %}
|
|
32
|
+
{% endpaginate %}
|
|
33
|
+
{% if collection_product0 %}
|
|
34
|
+
{% assign page_image = collection_product0.image %}
|
|
35
|
+
{% endif %}
|
|
36
|
+
{% endif %}
|
|
37
|
+
{% endif %}
|
|
38
|
+
|
|
39
|
+
<meta property="og:site_name" content="{{ shop.name }}">
|
|
40
|
+
<meta property="og:url" content="{{ og_url }}">
|
|
41
|
+
<meta property="og:title" content="{{ og_title }}">
|
|
42
|
+
<meta property="og:type" content="{{ og_type }}">
|
|
43
|
+
<meta property="og:description" content="{{ og_description | strip_html | escape }}">
|
|
44
|
+
{% if template_base == 'product' %}
|
|
45
|
+
{% unless product.published %}
|
|
46
|
+
{% assign availability = 'discontinued' %}
|
|
47
|
+
{% else %}
|
|
48
|
+
{% if product.available %}
|
|
49
|
+
{% assign availability = 'in stock' %}
|
|
50
|
+
{% else %}
|
|
51
|
+
{% assign availability = 'out of stock' %}
|
|
52
|
+
{% endif %}
|
|
53
|
+
{% endunless %}
|
|
54
|
+
{% assign selectedVariantId = "" %}
|
|
55
|
+
{% assign selectedVariant = nil %}
|
|
56
|
+
{% if product.variants.size == 1 %}
|
|
57
|
+
{% for variant in product.variants %}
|
|
58
|
+
{% if variant.available_quantity > 0 %}
|
|
59
|
+
{% assign selectedVariantId = variant.id %}
|
|
60
|
+
{% break %}
|
|
61
|
+
{% endif %}
|
|
62
|
+
{% endfor %}
|
|
63
|
+
{% endif %}
|
|
64
|
+
|
|
65
|
+
{% assign params = REQUEST_URI | split: "?" | last | split: "&" %}
|
|
66
|
+
{% for p in params %}
|
|
67
|
+
{% assign pair = p | split: "=" %}
|
|
68
|
+
{% if pair[0] contains "variant" and pair[1] != '' %}
|
|
69
|
+
{% assign selectedVariantId = pair[1] %}
|
|
70
|
+
{% endif %}
|
|
71
|
+
{% endfor %}
|
|
72
|
+
|
|
73
|
+
{% for variant in product.variants %}
|
|
74
|
+
{% if variant.id == selectedVariantId %}
|
|
75
|
+
{% assign selectedVariant = variant %}
|
|
76
|
+
{% endif %}
|
|
77
|
+
{% endfor %}
|
|
78
|
+
|
|
79
|
+
{% if selectedVariant %}
|
|
80
|
+
{% if selectedVariant.available %}
|
|
81
|
+
{% assign availability = 'in stock' %}
|
|
82
|
+
{% else %}
|
|
83
|
+
{% assign availability = 'out of stock' %}
|
|
84
|
+
{% endif %}
|
|
85
|
+
{% endif %}
|
|
86
|
+
<meta property="product:price:amount" content="{% if selectedVariant %}{{ selectedVariant.price }}{% else %}{{ product.price }}{% endif %}">
|
|
87
|
+
<meta property="product:price:currency" content="{{shop.currency_code}}">
|
|
88
|
+
<meta property="product:condition" content="new">
|
|
89
|
+
<meta property="product:availability" content="{{ availability }}">
|
|
90
|
+
<meta property="product:retailer_item_id" content="{% if selectedVariant %}{{ selectedVariant.id }}{% else %}{{ product.id }}{% endif %}">
|
|
91
|
+
{% comment %} 预加载商品选中的第一张图片 {% endcomment %}
|
|
92
|
+
<link rel="preload" as="image" href="{% if selectedVariant and selectedVariant.image.src %}{{ selectedVariant.image.src | img_url: '1080x' }}{% else %}{{ product.image.src | img_url: '1080x' }}{% endif %}">
|
|
93
|
+
{% endif %}
|
|
94
|
+
|
|
95
|
+
{% if page_image.src %}
|
|
96
|
+
<meta property="og:image" content="http:{{ page_image | img_url }}">
|
|
97
|
+
<meta property="og:image:secure_url" content="https:{{ page_image | img_url }}">
|
|
98
|
+
<meta property="og:image:width" content="{{ page_image.width }}">
|
|
99
|
+
<meta property="og:image:height" content="{{ page_image.height }}">
|
|
100
|
+
<meta property="og:image:alt" content="{{ page_image.alt }}">
|
|
101
|
+
{% endif %}
|
|
102
|
+
|
|
103
|
+
<meta name="twitter:site" content="{{ settings.twitter_url | split: 'twitter.com/' | last | prepend: '@' }}">
|
|
104
|
+
<meta name="twitter:card" content="summary_large_image">
|
|
105
|
+
<meta name="twitter:title" content="{{ og_title }}">
|
|
106
|
+
<meta name="twitter:description" content="{{ og_description | strip_html | escape }}">
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
<div style="padding-bottom: {{ padding_bottom }};" class="video_play_controls {{class}}">
|
|
2
|
+
<video x5-playsinline="true" playsinline="true" webkit-playsinline="true" poster="{{media.preview_image}}">
|
|
3
|
+
{% if media.hls %}
|
|
4
|
+
<source src="{{media.hls}}" type="application/x-mpegURL">
|
|
5
|
+
{% endif %}
|
|
6
|
+
{% if media.mp4 %}
|
|
7
|
+
<source src="{{media.mp4}}" type="video/mp4">
|
|
8
|
+
{% endif %}
|
|
9
|
+
</video>
|
|
10
|
+
<div class="video_pause_icon">{% include 'icon_video_play_large' %}</div>
|
|
11
|
+
</div>
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
<style>
|
|
2
|
+
.video_play_controls {
|
|
3
|
+
position: relative;
|
|
4
|
+
}
|
|
5
|
+
.video_play_controls > video {
|
|
6
|
+
position: absolute;
|
|
7
|
+
top: 0px;
|
|
8
|
+
right: 0px;
|
|
9
|
+
bottom: 0px;
|
|
10
|
+
left: 0px;
|
|
11
|
+
margin: auto;
|
|
12
|
+
width: 100%;
|
|
13
|
+
height: 100%;
|
|
14
|
+
object-fit: contain;
|
|
15
|
+
cursor: pointer;
|
|
16
|
+
}
|
|
17
|
+
.video_play_controls::after {
|
|
18
|
+
content: '';
|
|
19
|
+
position: absolute;
|
|
20
|
+
left: 0;
|
|
21
|
+
top: 0;
|
|
22
|
+
width: 100%;
|
|
23
|
+
height: 100%;
|
|
24
|
+
}
|
|
25
|
+
.video_play_controls > .video_pause_icon {
|
|
26
|
+
display: none;
|
|
27
|
+
position: absolute;
|
|
28
|
+
top: 50%;
|
|
29
|
+
left: 50%;
|
|
30
|
+
transform: translate(-50%, -50%);
|
|
31
|
+
}
|
|
32
|
+
.video_play_controls > .video_pause_icon > svg {
|
|
33
|
+
display: block;
|
|
34
|
+
}
|
|
35
|
+
.video_play_controls.playing > .video_pause_icon {
|
|
36
|
+
display: none !important;
|
|
37
|
+
}
|
|
38
|
+
.slides-active .video_play_controls > .video_pause_icon,
|
|
39
|
+
.slick-active .video_play_controls > .video_pause_icon {
|
|
40
|
+
display: block;
|
|
41
|
+
}
|
|
42
|
+
</style>
|
|
43
|
+
|
|
44
|
+
<script>
|
|
45
|
+
try {
|
|
46
|
+
window.handleVideoClick = window.handleVideoClick || (e => {
|
|
47
|
+
const classList = e.target.classList;
|
|
48
|
+
if (!classList.contains('video_play_controls')) return;
|
|
49
|
+
const video = e.target.querySelector('video');
|
|
50
|
+
video.paused ? video.play() : video.pause();
|
|
51
|
+
});
|
|
52
|
+
document.removeEventListener('click', window.handleVideoClick);
|
|
53
|
+
document.addEventListener('click', window.handleVideoClick);
|
|
54
|
+
['pause', 'ended'].forEach(event => {
|
|
55
|
+
window.addEventListener(event, e => {
|
|
56
|
+
const video = e.target;
|
|
57
|
+
video.parentNode.classList.remove('playing');
|
|
58
|
+
}, true);
|
|
59
|
+
});
|
|
60
|
+
document.addEventListener('play', e => {
|
|
61
|
+
const video = e.target;
|
|
62
|
+
video.parentNode.classList.add('playing');
|
|
63
|
+
}, true);
|
|
64
|
+
} catch (e) {
|
|
65
|
+
console.error(e);
|
|
66
|
+
}
|
|
67
|
+
window.addEventListener("load", () => {
|
|
68
|
+
window.template.defaults.imports.media_parse = function (url) {
|
|
69
|
+
var result = {};
|
|
70
|
+
try {
|
|
71
|
+
url.replace(/[?&]+([^=&]+)=([^&]*)/gi, function (str, key, value) {
|
|
72
|
+
try {
|
|
73
|
+
result[key] = decodeURIComponent(value);
|
|
74
|
+
} catch (e) {
|
|
75
|
+
result[key] = value;
|
|
76
|
+
}
|
|
77
|
+
});
|
|
78
|
+
result.preview_image = url.split('?')[0];
|
|
79
|
+
} catch (e) {};
|
|
80
|
+
return result;
|
|
81
|
+
}
|
|
82
|
+
});
|
|
83
|
+
</script>
|
|
84
|
+
|
|
85
|
+
|
|
86
|
+
<script type="text/html" id="video_html_tpl">
|
|
87
|
+
<div style="padding-bottom: <%= padding_bottom %>;" class="video_play_controls <%= class_name %>">
|
|
88
|
+
<video x5-playsinline="true" playsinline="true" webkit-playsinline="true" poster="<%-media.preview_image%>">
|
|
89
|
+
<% if (media.hls) { %>
|
|
90
|
+
<source src="<%-media.hls%>" type="application/x-mpegURL">
|
|
91
|
+
<% } %>
|
|
92
|
+
<% if (media.mp4) { %>
|
|
93
|
+
<source src="<%-media.mp4%>" type="video/mp4">
|
|
94
|
+
<% } %>
|
|
95
|
+
</video>
|
|
96
|
+
<div class="video_pause_icon">{% include 'icon_video_play_large' %}</div>
|
|
97
|
+
</div>
|
|
98
|
+
</script>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"content_for_page":[1539137345643],"sections":{"1539137345643":{"type":"not_found","settings":{"style":"1"},"version":"1","card_name":"404\u9875\u9762","customer_card_extra":6,"customer_card_name":"404\u9875\u97626","is_new":true}}}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
{
|
|
2
|
+
"content_for_page": [1646030043188, 1646030049883, 1646030047569, 1539149755240],
|
|
3
|
+
"sections": {
|
|
4
|
+
"1646030043188": {
|
|
5
|
+
"name": "collection_image",
|
|
6
|
+
"cname": {
|
|
7
|
+
"en-US": "Collection image",
|
|
8
|
+
"zh-CN": "专辑封面"
|
|
9
|
+
},
|
|
10
|
+
"category": {
|
|
11
|
+
"en-US": "Page",
|
|
12
|
+
"zh-CN": "页面"
|
|
13
|
+
},
|
|
14
|
+
"ccategory": {
|
|
15
|
+
"en-US": "Page",
|
|
16
|
+
"zh-CN": "页面"
|
|
17
|
+
},
|
|
18
|
+
"display": true,
|
|
19
|
+
"settings": {
|
|
20
|
+
"pc_img_height": 450,
|
|
21
|
+
"md_img_height": 200,
|
|
22
|
+
"cover_width": "auto"
|
|
23
|
+
},
|
|
24
|
+
"type": "collection_image"
|
|
25
|
+
},
|
|
26
|
+
"1646030049883": {
|
|
27
|
+
"name": "collection_name",
|
|
28
|
+
"cname": {
|
|
29
|
+
"en-US": "Collection name",
|
|
30
|
+
"zh-CN": "专辑名称"
|
|
31
|
+
},
|
|
32
|
+
"category": {
|
|
33
|
+
"en-US": "Page",
|
|
34
|
+
"zh-CN": "页面"
|
|
35
|
+
},
|
|
36
|
+
"ccategory": {
|
|
37
|
+
"en-US": "Page",
|
|
38
|
+
"zh-CN": "页面"
|
|
39
|
+
},
|
|
40
|
+
"display": true,
|
|
41
|
+
"settings": [],
|
|
42
|
+
"type": "collection_name"
|
|
43
|
+
},
|
|
44
|
+
"1646030047569": {
|
|
45
|
+
"name": "collection_desc",
|
|
46
|
+
"cname": {
|
|
47
|
+
"en-US": "Collection description",
|
|
48
|
+
"zh-CN": "专辑描述"
|
|
49
|
+
},
|
|
50
|
+
"category": {
|
|
51
|
+
"en-US": "Page",
|
|
52
|
+
"zh-CN": "页面"
|
|
53
|
+
},
|
|
54
|
+
"ccategory": {
|
|
55
|
+
"en-US": "Page",
|
|
56
|
+
"zh-CN": "页面"
|
|
57
|
+
},
|
|
58
|
+
"display": true,
|
|
59
|
+
"settings": [],
|
|
60
|
+
"type": "collection_desc"
|
|
61
|
+
},
|
|
62
|
+
"1539149755240": {
|
|
63
|
+
"type": "collection_detail",
|
|
64
|
+
"settings": {
|
|
65
|
+
"sort": true,
|
|
66
|
+
"is_pagination_show": false,
|
|
67
|
+
"select": 48,
|
|
68
|
+
"filter": false
|
|
69
|
+
},
|
|
70
|
+
"version": "1",
|
|
71
|
+
"card_name": "专辑详情",
|
|
72
|
+
"customer_card_extra": 405,
|
|
73
|
+
"customer_card_name": "专辑详情405",
|
|
74
|
+
"is_new": true,
|
|
75
|
+
"blocks": [{
|
|
76
|
+
"type": "tag_filter",
|
|
77
|
+
"settings": {
|
|
78
|
+
"title": "Color",
|
|
79
|
+
"is_all_tags_show": true,
|
|
80
|
+
"tags": "red,yellow,blue"
|
|
81
|
+
}
|
|
82
|
+
}, {
|
|
83
|
+
"type": "price_filter",
|
|
84
|
+
"settings": {
|
|
85
|
+
"title": "Price",
|
|
86
|
+
"is_last_price_show": true,
|
|
87
|
+
"tags": "0,50,100"
|
|
88
|
+
}
|
|
89
|
+
}]
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
}
|