Витрина ShopB2C
Обзор
- Scope
- ShopB2C web storefront, layout contribution, checkout channel behavior и cache integration
Ключевые понятия
- Storefront
- ShopB2C web/template layer поверх Shop commerce domain.
- Basket Line Resolver
- Shop contract, привязанный ShopB2C к B2cBasketLineResolver для storefront basket line presentation.
- Warehouse Context
- Storefront-selected warehouse/store context, используемый relevant catalog и stock behavior.
Структура
- Dependencies
- ModuleShopB2C
- Required ModuleShop
- Routes
- Catalog
- /catalog
- /catalog/{slug}
- /product/{slug}
- Cart
- /cart
- /cart/add
- /cart/items/{item}
- /cart/promo
- Checkout
- /checkout
- /checkout/success/{number}
- Account/dashboard/orders
- Catalog
- Contributions
- Layout Drivershop_b2c
- Page CmsShopB2CContributor tagged page.cms.contributors
- Order ValidationB2cCheckoutPlacementValidator tagged shop.order.placement.validators
Факты
- ShopB2CServiceProvider не регистрирует module routes, когда Shop не установлен. authoritative
- ShopB2C регистрирует cart, checkout, price, promotion, warehouse, currency, cache, catalog-navigation, account-presentation, layout и settings services. authoritative
- ShopB2C добавляет B2C checkout validator в Shop placement-validator tag вместо замены Shop order placement. authoritative
- Когда Shop установлен, provider слушает login events и мержит guest cart через CartService. authoritative
- Storefront cache listeners реагируют на Shop catalog-section, assortment и settings-saved events. authoritative
- Storefront order-history route защищён auth; catalog, cart, checkout, store-selection, newsletter и about routes регистрируются отдельно. authoritative
- ProductCardPresenter вызывает PriceResolver::preloadForProductCards перед рендерингом product collection, чтобы storefront cards резолвили prices из одного batched shop_prices query per request scope. authoritative
Инструкции
Add Storefront Route
- confirm Shop dependency и current ShopB2C route registration
- place presentation/controller logic в ShopB2C
- delegate domain mutation к Shop services
- identify cache events и authenticated-account requirements
Правила
Architectural rule
Держите product, stock и order domain rules в Shop; storefront presentation и channel validation — в ShopB2C.
Примеры
Basket Line Resolver
$this->app->bind(BasketLineResolver::class, B2cBasketLineResolver::class);
modules/ShopB2C/Providers/ShopB2CServiceProvider.php
Price Preload Batch
$this->prices->preloadForProductCards($productIds, $displayOfferIdByProductId);
modules/ShopB2C/Support/ProductCardPresenter.php
Shop Gate Routes
Используйте isModule по manifest name Shop, а не slug shop-b2c.
if (! isModule('Shop')) { return; }
modules/ShopB2C/Providers/ShopB2CServiceProvider.php