跳到主要内容

扩展点

扩展点是结账页和感谢页上的固定插槽。把插槽名字填进 extend()extensionPoint 字段,你的 HTML 就渲染在那个位置:

import { extend } from 'shoplazza-extension-ui';

extend({
extensionPoint: 'Checkout::StepSubmit::RenderBefore',
component: '<p>30 天内免费退货</p>',
});

同一个扩展点可以被多次 extend,内容按调用顺序追加,不会互相覆盖。extend 的完整签名和 HTML 模板机制见 extend 函数。下面每个区域还列出了该区域可以用 deleteTarget 隐藏的原生模块,用来让自己的内容替换掉原生内容,而不是并排摆着。

结账页

以下扩展点渲染在结账页上。具体哪些插槽会出现在屏幕上取决于店铺配置:自提相关的插槽需要开启门店自提,分步骤的插槽只在两页和三页布局下才有。

页面框架

扩展点位置说明
Checkout::RenderBefore页面之前
Checkout::RenderAfter页面之后
Checkout::Head::RenderAfter页头的店铺 logo 后面
Checkout::Advertise::RenderBefore广告位之前
Checkout::MainHeader::RenderAfter主区域头部之后
Checkout::Main::RenderBefore地址信息列之前
Checkout::Main::RenderAfter地址信息列之后
Checkout::FooterTop::RenderAfter页脚顶部之后
Checkout::CheckoutFooter::RenderBefore页脚之前
Checkout::CheckoutFooter::RenderAfter页脚之后

这一区域可隐藏的原生模块:headerloginOrLogout

步骤导航栏

扩展点位置说明
Checkout::Navigate::RenderBefore步骤导航栏的前面
Checkout::Navigate::RenderAfter步骤导航栏的后面

这一区域可隐藏的原生模块:navigate

已填信息卡片

扩展点位置说明
Checkout::FilledInformation::RenderAfter已填信息卡片之后

这一区域可隐藏的原生模块:addressCard

联系信息

扩展点位置说明
Checkout::ContactInformation::RenderBefore联系信息模块的前面
Checkout::ContactInformation::RenderAfter联系信息模块的后面
Checkout::ContactInformationHeader::RenderAfter联系信息标题的后面
Checkout::BlockContactInformation::RenderAfter联系方式之后;联系方式被隐藏时这个点位也跟着隐藏
Checkout::ContactEmail::RenderAfter邮箱输入框的后面
Checkout::ContactPhone::RenderAfter手机号输入框的后面
Checkout::EmailOrPhone::RenderAfter「邮箱或手机号」输入框之后

这一区域可隐藏的原生模块:contactInformationcontactInformationHeadercontactEmailcontactPhoneemailOrPhonecontactSubscribe

收货地址

扩展点位置说明
Checkout::ShippingAddress::RenderAfter收货地址模块之后
Checkout::ShippingAddressHeader::RenderAfter收货地址标题之后
Checkout::ShippingAddressForm::RenderBefore收货地址表单之前
Checkout::ShippingAddressForm::RenderAfter收货地址表单之后

这一区域可隐藏的原生模块:shippingAddressshippingAddressHeadershippingAddressBooksecurityIdentifier

账单地址

扩展点位置说明
Checkout::BillingAddress::RenderBefore账单地址模块之前
Checkout::BillingAddress::RenderAfter账单地址模块之后

这一区域可隐藏的原生模块:billingAddress

交付方式

扩展点位置说明
Checkout::DeliveryMethod::RenderBefore交付方式模块之前
Checkout::DeliveryMethod::RenderAfter交付方式模块之后
Checkout::DeliveryMethodHeader::RenderAfter交付方式标题之后

这一区域可隐藏的原生模块:deliveryMethoddeliveryMethodHeader

物流方案列表

扩展点位置说明
Checkout::ShippingList::RenderAfter物流方案模块之后
Checkout::ShippingLinesTitle::RenderBefore物流方案列表标题的前面
Checkout::ShippingLinesTitle::RenderAfter物流方案列表标题的后面
Checkout::ShippingLines::RenderAfter物流方案列表之后

这一区域可隐藏的原生模块:shippingListshippingLinesTitle

自提信息

扩展点位置说明
Checkout::PickupInformation::RenderBefore自提信息模块之前;顾客切换到自提方式后才展示这个模块
Checkout::PickupInformation::RenderAfter自提信息模块之后;顾客切换到自提方式后才展示这个模块
Checkout::PickupInformationHeader::RenderAfter自提信息标题的后面

这一区域可隐藏的原生模块:pickupInformationpickupInformationHeader

自提地址列表

扩展点位置说明
Checkout::PickupAddress::RenderBefore自提地址列表的前面
Checkout::PickupAddress::RenderAfter自提地址列表的后面
Checkout::PickupAddressHeader::RenderAfter自提地址列表标题的后面

这一区域可隐藏的原生模块:pickupAddresspickupAddressHeader

支付

扩展点位置说明
Checkout::SectionPayment::RenderBefore支付区块之前
Checkout::SectionPayment::RenderAfter支付区块之后
Checkout::PaymentHeader::RenderBefore支付方式标题之前
Checkout::PaymentHeader::RenderAfter支付方式标题之后
Checkout::Payment::RenderAfter支付方式列表之后

这一区域可隐藏的原生模块:paymentHeaderpayPalExpress

提交按钮

扩展点位置说明
Checkout::StepSubmit::RenderBefore提交按钮之前
Checkout::StepSubmit::RenderAfter提交按钮之后
Checkout::InfoSubmit::RenderBefore信息步提交按钮之前
Checkout::InfoSubmit::RenderAfter信息步提交按钮之后
Checkout::ShippingSubmit::RenderBefore配送步提交按钮之前
Checkout::ShippingSubmit::RenderAfter配送步提交按钮之后
Checkout::PaymentSubmit::RenderBefore支付步提交按钮之前
Checkout::PaymentSubmit::RenderAfter支付步提交按钮之后

这一区域可隐藏的原生模块:infoSubmitshippingSubmitpaymentSubmitreturnBtn

留言备注

扩展点位置说明
Checkout::SpecialInstruction::RenderBefore留言备注模块之前
Checkout::SpecialInstruction::RenderAfter留言备注模块之后

这一区域可隐藏的原生模块:specialInstruction

订单摘要

扩展点位置说明
Checkout::Summary::RenderBefore商品信息列之前
Checkout::Summary::RenderAfter商品信息列之后
Checkout::OrderSummaryHeader::RenderBefore订单摘要标题之前
Checkout::OrderSummaryHeader::RenderAfter订单摘要标题之后
Checkout::OrderSummary::RenderAfter订单摘要之后

这一区域可隐藏的原生模块:orderSummaryorderSummaryHeader

商品行列表

扩展点位置说明
Checkout::ProductList::RenderBefore商品列表模块之前
Checkout::ProductList::RenderAfter商品列表模块之后

这一区域可隐藏的原生模块:productListProductListCoverproductListSkuProperties

优惠码与礼品卡

扩展点位置说明
Checkout::Reductions::RenderBefore优惠码与礼品卡模块之前
Checkout::Reductions::RenderAfter优惠码与礼品卡模块之后
Checkout::GiftCardTag::RenderAfter优惠码与礼品卡 tag 之后

这一区域可隐藏的原生模块:reductionsgiftCardTagmobileCoupon

价格明细

扩展点位置说明
Checkout::PriceList::RenderBefore价格明细模块之前
Checkout::PriceList::RenderAfter价格明细模块之后
Checkout::PriceListSubTotal::RenderAfter小计之后
Checkout::PriceListShippingTotal::RenderAfter物流费用之后
Checkout::PriceListTaxTotal::RenderAfter税费之后
Checkout::PriceListShippingTaxTotal::RenderAfter物流税费之后
Checkout::PriceListGiftCard::RenderAfter礼品卡扣减之后
Checkout::TotalPrice::RenderAfter总价之后

这一区域可隐藏的原生模块:priceListpriceListSubTotalpriceListShippingTotalpriceListTaxTotalpriceListShippingTaxTotalpriceListGiftCardtotalPrice

感谢页

以下扩展点渲染在感谢页,也就是顾客下单成功后落地的那个页面。感谢页上同样挂着 CheckoutAPI,但只有一部分方法能取到数据——顾客已经不再编辑订单了。

扩展点位置说明
Checkout::ThankyouHeader::RenderBefore感谢页头部之前
Checkout::ThankyouHeader::RenderAfter感谢页头部之后
Checkout::ThankyouContent::RenderBefore感谢页内容区之前
Checkout::ThankyouContent::RenderAfter感谢页内容区之后
Checkout::ResultContentInfo::RenderBefore订单结果信息块之前
Checkout::ResultContentInfo::RenderAfter订单结果信息块之后
Checkout::ResultFooter::RenderBefore感谢页底部之前
Checkout::ResultFooter::RenderAfter感谢页底部之后

这一区域可隐藏的原生模块:thankyouHeaderthankyouContentthankyouFooterthankyouShippingInfothankyouFailOrderStatusthankyouPageGiftCardAddressthankyouPagePickupAddress

动态扩展点

动态扩展点跟着数据走,每一行渲染一次——每个商品行、每个物流方案、每条价格明细、每个弹窗各一个,所以名字里带着这一行的 id。下面列的是模板,用时把 {id} 换成对应数据的 id。

扩展点位置说明
Checkout::Product-{id}::RenderAfter商品行的后面,{id} 是商品行 id
Checkout::ProductTitle-{id}::RenderAfter商品行标题的后面,{id} 是商品行 id
Checkout::ProductOption-{id}::RenderAfter商品行规格选项的后面,{id} 是商品行 id
Checkout::ProductProperty-{id}::RenderAfter商品行自定义属性的后面,{id} 是商品行 id
Checkout::ProductApplication-{id}::RenderAfter商品行所享优惠活动的后面,{id} 是商品行 id
Checkout::ShippingLine-{id}::RenderAfter物流方案列表中某一项的后面,{id} 是物流方案 id
Checkout::PriceListItemTitle-{id}::Replace替换价格明细中某一行的标题,{id} 是价格行 id
Checkout::Dialog-{id}::RenderAfter结算中断弹窗的内容区,{id}registerBuyerJourneyIntercept 回调返回的 pointId
Checkout::DialogFooter-{id}::RenderAfter结算中断弹窗的底部区,{id}registerBuyerJourneyIntercept 回调返回的 pointId
Checkout::DialogTrueBtn-{id}::Render结算中断弹窗的确认按钮,{id}registerBuyerJourneyIntercept 回调返回的 pointId
Checkout::DialogFalseBtn-{id}::Render结算中断弹窗的取消按钮,{id}registerBuyerJourneyIntercept 回调返回的 pointId

CheckoutAPI.extension.generateRealDynamicPoint() 拼出真实的点位名:

const [lineItem] = window.CheckoutAPI.summary.getProductList();
const point = window.CheckoutAPI.extension.generateRealDynamicPoint(
'Checkout::Product-{id}::RenderAfter',
lineItem.id,
);
// point === 'Checkout::Product-6c7c018e-bcc6-4896-9b75-238438178cc8::RenderAfter'

extend({
extensionPoint: point,
component: '<p>单独发货</p>',
});

它等价于把模板里的 {id} 替换成数据 id。各类 id 的来源:商品行 id 是 CheckoutAPI.summary.getProductList() 返回项里的 id,物流方案 id 是 CheckoutAPI.order.getShippingLines() 返回项里的 id,弹窗 id 是 registerBuyerJourneyIntercept 回调返回的 pointId。商品行 id 在删除后重新添加时会变,每次现取,不要缓存。

逻辑扩展点

扩展点位置说明
Checkout::LogicContainer::RenderAfter不渲染可见内容的容器

Checkout::LogicContainer::RenderAfter 是给没有界面的扩展用的点位。只需要在结账页跑代码——读 CheckoutAPI、注册监听、调自己的后端——又不想在页面上占位置时,挂到这个点位。