Moin,
Ich suche nach einer Möglichkeit über eine ModelExtension des BundleItemModel an das Product aus dem ProductService zu kommen.
Ich muss realisieren, das in den Bestelldetails zu den Positionen eines Bundles auch die die Bilder der bundleItems angezeigt werden.
Im Warenkorb ist das ja Standard.
Hier mein Code mit dem ich es Probieren habe.
using SmartStore.Core.Infrastructure; using SmartStore.Services.Catalog; using static abc.Web.Models.Order.OrderDetailsModel; namespace abc.Extensions.SmartstoreExtensions { public static class BundleItemModelExtension { public static string GetBundleItemImage(this BundleItemModel bundleItemModel) { var productService = EngineContext.Current.Resolve<IProductService>(); // var fileName = productService.GetProductBySystemName(orderItemModel.ProductSeName); //productService.GetProductById var url = bundleItemModel.ProductUrl; // var test = productService.GetBundleItems(orderItemModel.ProductId)[0].Item.Product.ProductPictures; return ""; } } }
Wie komme ich an die Bilder ?
Über die ProductId des Bundles würde das vlt. gehen, aber wie kann ich das dann den einzelnen Positionen in der View zuordnen ?
@helper BundleProducts(OrderDetailsModel.OrderItemModel parentItem) { if (parentItem.BundleItems != null) { foreach (var item in parentItem.BundleItems.OrderBy(x => x.DisplayOrder)) { <div class="cart-row cart-row-child"> <div class="cart-col cart-col-main"> <div class="row sm-gutters"> <div class="col cart-item-img"> <!-- Spacer --> </div> <div class="col"> <div class="mr-3" style="@("width: {0}px;".FormatInvariant(Math.Min(60, 60)))"> @if (string.IsNullOrEmpty(item.GetBundleItemImage())) // Kommt von mir { <img class="img-fluid" src="@parentItem.Picture.ImageUrl" alt="@parentItem.Picture.AlternateText" title="@parentItem.Picture.Title" /> } </div> @if (item.Quantity > 1 && parentItem.BundlePerItemShoppingCart) { <span class="font-weight-medium">@(item.Quantity) ×</span> } @if (item.VisibleIndividually) { <a class="cart-item-link" href="@item.ProductUrl" title="@T("Products.Details")" dir="auto">@item.ProductName</a> } else { <span class="cart-item-link" dir="auto">@item.ProductName</span> } @if (item.AttributeInfo.HasValue()) { <div class="cart-item-attrs"> @Html.Raw(item.AttributeInfo) </div> } </div> </div> </div> <div class="cart-col cart-col-price"> @if (item.PriceWithDiscount.HasValue()) { <span class="price">@Html.Raw(item.PriceWithDiscount)</span> } else { <text> </text> } </div> <div class="cart-col"> </div> <div class="cart-col"> </div> </div> } } }