Docs

Витрина ShopB2C

uticms.shop.storefront · verified 2026-07-14

Обзор

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
  • 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

  1. confirm Shop dependency и current ShopB2C route registration
  2. place presentation/controller logic в ShopB2C
  3. delegate domain mutation к Shop services
  4. 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