Trixie
TRIXIE accompanies you and your pet from birth into old age, at home and on tour, for games and sports, and in every season with suitable products. In doing that, we do not only take into account the different preferences and needs of all breeds, we also keep an eye on current trends.
In short: TRIXIE has something suitable for every animal lover in our product range. That is not only due to our wide product range with 6,500 items, but also to our excellent price-performance ratio.



Error executing template "Designs/eldorado-b2b/eCom/Productlist/eldorado-brands-products-with-filters.cshtml"
System.Exception: _dynamicwebProduct is not Active. Settings are: {"Product":null,"Id":"33618","LanguageId":null,"VariantId":"15104","PrimaryVariantId":"15104","EmbeddedInModelList":false}
at Co3.Espresso.Website.Models.FrontEnd.Ecommerce.EspressoProduct.Populate(ProductSettings settings) in F:\TeamCity\BuildAgent 1\work\ea1444d680f7414e\Co3.Espresso.Website\Models\FrontEnd\Ecommerce\EspressoProduct.cs:line 755
at Co3.EldoradoIndsalg.Website.Frontend.Models.Frontend.Ecommerce.EldoradoProduct.Populate(ProductSettings settings) in C:\Users\ThomasLarsen\source\repos\co3.eldoradoindsalg\Co3.EldoradoIndsalg.Website.Frontend\Models\Frontend\Ecommerce\EldoradoProduct.cs:line 672
at Co3.Espresso.Website.Services.ProductService.GetEspressoProduct(ProductSettings settings) in F:\TeamCity\BuildAgent 1\work\ea1444d680f7414e\Co3.Espresso.Website\Services\ProductService.cs:line 215
at CompiledRazorTemplates.Dynamic.RazorEngine_d21986399f32411ba48b889cc88d6607.<>c.<Execute>b__1_0(LoopItem productLoopItem) in D:\dynamicweb.net\Solutions\eldorado.new.LIVE\Application\Files\Templates\Designs\eldorado-b2b\eCom\Productlist\eldorado-brands-products-with-filters.cshtml:line 106
at System.Linq.Enumerable.WhereSelectListIterator`2.MoveNext()
at System.Collections.Generic.List`1..ctor(IEnumerable`1 collection)
at System.Linq.Enumerable.ToList[TSource](IEnumerable`1 source)
at CompiledRazorTemplates.Dynamic.RazorEngine_d21986399f32411ba48b889cc88d6607.Execute() in D:\dynamicweb.net\Solutions\eldorado.new.LIVE\Application\Files\Templates\Designs\eldorado-b2b\eCom\Productlist\eldorado-brands-products-with-filters.cshtml:line 105
at RazorEngine.Templating.TemplateBase.RazorEngine.Templating.ITemplate.Run(ExecuteContext context, TextWriter reader)
at RazorEngine.Templating.RazorEngineService.RunCompile(ITemplateKey key, TextWriter writer, Type modelType, Object model, DynamicViewBag viewBag)
at RazorEngine.Templating.RazorEngineServiceExtensions.<>c__DisplayClass16_0.<RunCompile>b__0(TextWriter writer)
at RazorEngine.Templating.RazorEngineServiceExtensions.WithWriter(Action`1 withWriter)
at Dynamicweb.Rendering.RazorTemplateRenderingProvider.Render(Template template)
at Dynamicweb.Rendering.TemplateRenderingService.Render(Template template)
at Dynamicweb.Rendering.Template.RenderRazorTemplate()
1 @using System.Collections.Specialized
2 @using System.Text
3 @using Co3.Espresso.Base.Extensions
4 @using Co3.Espresso.Website.Models.FrontEnd
5 @using Co3.Espresso.Website.Models.FrontEnd.Ecommerce
6 @using Co3.Espresso.Website.Models.FrontEnd.Handlebars
7 @using Co3.Espresso.Website.Models.FrontEnd.Settings
8 @using Co3.Espresso.Website.Services
9 @using Dynamicweb.Ecommerce
10 @using Dynamicweb.Ecommerce.Products
11 @using ProductService = Co3.Espresso.Website.Services.ProductService
12 @using System.Web
13 @using Dynamicweb.Frontend
14 @using Dynamicweb.Indexing.Querying
15 @using Dynamicweb.Modules
16 @using Newtonsoft.Json
17 @using SortInfo = Dynamicweb.Indexing.Querying.Sorting.SortInfo
18 @inherits Co3.Espresso.Website.TemplateBases.Paragraphs.Module
19 @{
20 bool showFilters = Espresso.Item.FiltersShow == "True";
21 bool showNavigation = Espresso.Item.NavigationShow == "True";
22 bool showHeading = Espresso.Item.HeadingShow == "True";
23 EspressoSort sort = ProductListService.Instance.GetSort();
24 25 26 Properties moduleProperties = PageView.Current()?.CurrentParagraph?.ModuleProperties;
27 string moduleSortBy = sort.By; // GetString( "Ecom:ProductList.SortBy" );
28 string moduleSortOrder = sort.Order; // GetString( "Ecom:ProductList.SortOrder" );
29 30 if ( moduleProperties != null && moduleProperties.Values.ContainsKey( "QuerySortByParams" ) )
31 {
32 IEnumerable< SortInfo > sortInfos = new List< SortInfo >();
33 StringBuilder _moduleSortBy = new StringBuilder();
34 StringBuilder _moduleSortOrder = new StringBuilder();
35 36 if ( moduleProperties.Values[ "QuerySortByParams" ]?.ToString() != "null" )
37 {
38 string querySortByParams = moduleProperties.Values[ "QuerySortByParams" ].ToString().Replace( """, "\"" );
39 sortInfos = JsonConvert.DeserializeObject< IEnumerable< SortInfo > >( querySortByParams );
40 }
41 else
42 {
43 IQuery iQuery = new QueryService().LoadQuery( "EspressoProducts", "Products" );
44 sortInfos = iQuery.SortOrder;
45 }
46 47 foreach ( SortInfo sortOrder in sortInfos )
48 {
49 _moduleSortBy.AppendLine( sortOrder.Field );
50 _moduleSortOrder.AppendLine( sortOrder.SortDirection.ToString() == "Descending" ? "DESC" : "ASC" );
51 }
52 moduleSortBy = _moduleSortBy.Replace( Environment.NewLine, "," ).ToString();
53 moduleSortOrder = _moduleSortOrder.Replace( Environment.NewLine, "," ).ToString();
54 moduleSortBy = moduleSortBy.Substring( 0, moduleSortBy.Length - 1 );
55 moduleSortOrder = moduleSortOrder.Substring( 0, moduleSortOrder.Length - 1 );
56 }
57 58 ClassList asideClasses = new ClassList();
59 ClassList mainClasses = new ClassList();
60 61 if ( showNavigation )
62 {
63 asideClasses.AddClasses( "col-12 col-lg-3 col-xl-2" );
64 mainClasses.AddClasses( "col-12 col-lg-9 col-xl-10" );
65 }
66 else
67 {
68 asideClasses.AddClasses( "d-none" );
69 mainClasses.AddClasses( "col-12" );
70 }
71 72 73 HandlebarsProductListTemplate handlebarsProductListTemplate = HandlebarsService.Instance.GetProductListTemplate( new HandlebarsProductListTemplateSettings
74 {
75 Classes = new ClassList( "w-100 e-productlist js-e-productlist js-e-require" ),
76 HeaderClasses = new ClassList( "col-12" ),
77 MainClasses = mainClasses,
78 AsideClasses = asideClasses,
79 FooterClasses = new ClassList( "col-12 col-lg-3 col-xl-2" ),
80 PageSize = string.IsNullOrEmpty( HttpContext.Current.Request[ "PageSize" ] ) ? GetInteger( "Ecom:ProductList.PageSize" ).ToString() : HttpContext.Current.Request[ "PageSize" ],
81 PageNumber = string.IsNullOrEmpty( HttpContext.Current.Request[ "PageNum" ] ) ? GetInteger( "Ecom:ProductList.CurrentPage" ).ToString() : HttpContext.Current.Request[ "PageNum" ],
82 SortBy = string.IsNullOrEmpty( HttpContext.Current.Request[ "SortBy" ] ) ? moduleSortBy : HttpContext.Current.Request[ "SortBy" ],
83 SortOrder = string.IsNullOrEmpty( HttpContext.Current.Request[ "SortOrder" ] ) ? moduleSortOrder : HttpContext.Current.Request[ "SortOrder" ],
84 //SortBy = string.IsNullOrEmpty( HttpContext.Current.Request[ "SortBy" ] ) ? sort.By : HttpContext.Current.Request[ "SortBy" ],
85 //SortOrder = string.IsNullOrEmpty( HttpContext.Current.Request[ "SortOrder" ] ) ? sort.Order : HttpContext.Current.Request[ "SortOrder" ],
86 ShowFilters = showFilters,
87 ShowSorting = Espresso.Item.SortShow == "True",
88 Heading = Espresso.Item.HeadingShow == "True" ? Espresso.Item.Name : string.Empty
89 } );
90 91 92 List< EspressoPagingPage > productListPaging = new List< EspressoPagingPage >();
93 if ( GetLoop( "Ecom:ProductList.Pages" ).Count > 0 )
94 {
95 foreach ( LoopItem page in GetLoop( "Ecom:ProductList.Pages" ) )
96 {
97 productListPaging.Add( new EspressoPagingPage
98 {
99 Url = page.GetString( "Ecom:ProductList.Pages.Page.Url" ),
100 Number = page.GetString( "Ecom:ProductList.Pages.Page.Number" )
101 } );
102 }
103 }
104105 List< EspressoProduct > productListProducts = GetLoop( "Products" ).Select(
106 productLoopItem => ProductService.Instance.GetEspressoProduct(
107 new ProductSettings
108 {
109 Id = productLoopItem.GetString( "Ecom:Product.ID" ),
110 VariantId = productLoopItem.GetString( "Ecom:Product.VariantID" ),
111 PrimaryVariantId = productLoopItem.GetString( "Ecom:Product.DefaultVariantComboID" ),
112 EmbeddedInModelList = false
113 }
114 )
115 ).ToList();
116117 EspressoProductList espressoProductList = ProductListService.Instance.GetProductList(
118 new ProductListSettings
119 {
120 Products = productListProducts,
121 Paging = productListPaging,
122 PageSize = Convert.ToInt32( handlebarsProductListTemplate.PageSize ),
123 CurrentPage = Convert.ToInt32( handlebarsProductListTemplate.PageNumber )
124 }
125 );
126127 List< LoopItem > brandFacetOptions = GetLoop( "FacetGroups" ).FirstOrDefault( fg => fg.GetString( "FacetGroup.Name" ) == "Brands" ).GetLoop( "Facets" ).FirstOrDefault( f => f.GetString( "Facet.Name" ) == "FBrand" ).GetLoop( "FacetOptions" ).ToList();
128129 HttpContext.Current.Items[ "CurrentGroupID" ] = Values.ContainsKey( "Ecom:Group.ID" ) ? Values[ "Ecom:Group.ID" ] : string.Empty;
130 string fBrandValue = HttpContext.Current.Request.QueryString[ "FBrand" ];
131 }
132133 @*@using Co3.Espresso.Base.Extensions
134 @using Co3.Espresso.Base.Models
135 @using Co3.Espresso.Website.Models.FrontEnd
136 @using Co3.Espresso.Website.Models.FrontEnd.Elements
137 @using Co3.Espresso.Website.Models.FrontEnd.Settings
138 @using Co3.Espresso.Website.Services
139 @using Dynamicweb.Content
140 @using Dynamicweb.Content.Data
141 @using Dynamicweb.Core
142 @using Dynamicweb.Ecommerce
143 @using Dynamicweb.Ecommerce.Products
144 @using Dynamicweb.Ecommerce.Shops
145 @using Dynamicweb.Extensibility
146 @using Dynamicweb.Frontend
147 @using Dynamicweb.Security.Permissions
148149150 @{
151 PageView currentPageView = PageView.Current();
152 string areaUrlName = !string.IsNullOrEmpty( currentPageView.Area.UrlName ) ? "/" + currentPageView.Area.UrlName: "";
153154 Group group = Services.ProductGroups.GetGroup(GetString("Ecom:Group.ID"));
155 string groupName = string.Empty;
156 string groupImage = string.Empty;
157 Shop shop = new ShopService().GetShop( PageView.Current().Area.EcomShopId );
158 IEnumerable<Group> productGroupsPath = new List< Group >();
159 List<dynamic> breadCrumbCollection = new List< dynamic >();
160 string pageId = PageView.Current().Page.ID.ToString();
161162 if (group != null)
163 {
164 groupName = group.Name;
165 groupImage = !string.IsNullOrEmpty( group.LargeImage ) ? group.LargeImage : group.ParentGroups.Count > 0 ? group.ParentGroups.FirstOrDefault()?.LargeImage : string.Empty;
166 productGroupsPath = Services.ProductGroups.FindPath(shop, group );
167 }
168169170 foreach (ElementWithIndex< Group > _group in productGroupsPath.WithIndex() )
171 {
172 string _link = string.Format("/Default.aspx?ID={0}&GroupID={1}", pageId, _group.Element.Id);
173 breadCrumbCollection.Add( new
174 {
175 index = _group.Index,
176 link = _link,
177 label = _group.Element.Name
178 });
179 }
180181 ClassList sectionClasses = new ClassList();
182183184 string hideHeaderClass = "";
185 if ( Espresso.Item.HeadingShow == "False" )
186 {
187 hideHeaderClass = "d-none";
188 }
189 else
190 {
191 if(!string.IsNullOrEmpty(groupName) ) {
192 sectionClasses.AddClasses("e-section d-flex align-items-center eldorado-productlist-header");
193194 if (!string.IsNullOrEmpty(groupImage) )
195 {
196 groupImage = ImageService.Instance.GetImageURL( $"/Files{groupImage}", 1700, 300, 5, 90 );
197 sectionClasses.AddClasses("e-text-light e-section-height-xs");
198 }
199 else
200 {
201 sectionClasses.AddClasses("mt-5");
202 }
203 }
204 else
205 {
206 sectionClasses.AddClasses("e-section d-flex align-items-center eldorado-productlist-header");
207 }
208 }
209 <script>console.log(@JsonService.Instance.ToJson(Espresso.Item.HeadingShow));</script>
210 }
211212 @RenderingService.Instance.SectionEnd()
213214 @if ( ( bool )Espresso.Page.Item[ "HeaderHide" ] == false )
215 {
216 <section class="@sectionClasses @hideHeaderClass" style="background-image: url('@(groupImage)')">
217 <div class="container-fluid">
218 <div class="row">
219 <div class="col-12 col-md-12 col-lg-12 mx-auto">
220 <div class="row">
221222 <div class="p p-imagetext p-imagetext-tb col-12" >
223 <div class="row">
224 <div class="p-txt-container col-12">
225 <h2 class="mb-0">
226 @groupName
227 </h2>
228 </div>
229 </div>
230 </div>
231232 </div>
233 </div>
234 </div>
235 </div>
236 </section>
237 }
238 else
239 {
240 <a class="position-relative nav-link js-e-require" data-require="cart" href="@areaUrlName/shop/cart"></a>
241 }
242243244 <section class="p p-section e-section js-e-section pt-1 ">
245 <div class="container-fluid">
246 <div class="row">
247 <div class="col-12 mx-auto">
248 <div class="row">
249 <div class="p p-imagetext p-imagetext-tb col-12">
250251 <nav class="e-breadcrumb-container @hideHeaderClass">
252 <ol class="breadcrumb nav p-0" itemscope itemtype="https://schema.org/BreadcrumbList">
253 <li class="breadcrumb-item">
254 <a href="/">
255 @ServiceLocator.Current.GetPageService().GetFirstPageForArea( PageView.Current().Area.ID ).MenuText
256 </a>
257 </li>
258 @foreach (dynamic breadCrumbItem in breadCrumbCollection.OrderBy(bcc => bcc.index) )
259 {
260 <li class="breadcrumb-item">
261 <a href="@breadCrumbItem.link">
262 @breadCrumbItem.label
263 </a>
264 </li>
265 }
266 </ol>
267 </nav>
268 *@
269270271 <div class="@handlebarsProductListTemplate.Classes" data-current-page="@GetInteger( "Ecom:ProductList.CurrentPage" )" data-page-count="@GetLoop( "Ecom:ProductList.Pages" ).Count" data-page-size="@handlebarsProductListTemplate.PageSize" data-products-url="@Espresso.Item.ProductsUrl" data-filters-url="@Espresso.Item.ProductsUrl" data-require="productlist">
272 <div class="row">
273 <div class="col-12">
274 @RenderingService.Instance.PartialView( "ecom/productlist/partials/header.cshtml", handlebarsProductListTemplate )
275 </div>
276277 <div class="@handlebarsProductListTemplate.AsideClasses">
278279 <div class="d-lg-block d-none">
280 <div class="e-productlist-filters-group js-e-productlist-filters-group">
281 <fieldset class="collapse e-productlist-filters-group-options show p-0" id="e-productlist-filters-group-navigation">
282 <div class="e-nav-local e-nav-local-vertical mb-2">
283 <nav class="e-nav-local-container">
284 <ul class="flex-column nav">
285 @{
286 foreach ( LoopItem facetOption in brandFacetOptions.Where(bfo => bfo.GetInteger("FacetOption.Count") > 0) )
287 {
288 string pagePath = string.Format( "/Default.aspx?ID={0}&FBrand={1}", PageView.Current().Page.ID, facetOption.GetString("FacetOption.Value") );
289 string activeCssClass = fBrandValue == facetOption.GetString( "FacetOption.Value" ) ? "font-weight-bold" : string.Empty;
290 <li class="nav-item @activeCssClass">
291 <a class="nav-link" href="@pagePath">
292 <span class="e-nav-pagename">@facetOption.GetString("FacetOption.Label")</span>
293 </a>
294 </li>
295 }
296 }
297 </ul>
298 </nav>
299 </div>
300 </fieldset>
301 </div>
302 </div>
303304 @{
305 if ( Values.ContainsKey( "Ecom:Group.ID" ) )
306 {
307 Group productGroup = Services.ProductGroups.GetGroup( Values[ "Ecom:Group.ID" ]?.ToString() );
308 if ( productGroup != null )
309 {
310 string productListSidebarContentPage = productGroup.GetProductGroupFieldValue< string >( "ProductListSidebarContentPage" );
311 if ( !string.IsNullOrEmpty( productListSidebarContentPage ) )
312 {
313 int.TryParse( productListSidebarContentPage.Split( new[] { "=" }, StringSplitOptions.RemoveEmptyEntries ).Last(), out int productListSidebarContentPageID );
314 if ( productListSidebarContentPageID > 0 )
315 {
316 <div class="mt-3">
317 @RenderPageContent( productListSidebarContentPageID )
318 </div>
319 }
320 }
321 }
322 }
323 }
324 </div>
325326 <div class="@handlebarsProductListTemplate.MainClasses">
327 <form class="js-e-productlist-form">
328 <input name="PageNum" type="hidden" value="@HttpUtility.HtmlAttributeEncode( handlebarsProductListTemplate.PageNumber )">
329 <input name="SortBy" type="hidden" value="@HttpUtility.HtmlAttributeEncode( handlebarsProductListTemplate.SortBy )">
330 <input name="SortOrder" type="hidden" value="@HttpUtility.HtmlAttributeEncode( handlebarsProductListTemplate.SortOrder )">
331 <input name="PageSize" type="hidden" value="@HttpUtility.HtmlAttributeEncode( handlebarsProductListTemplate.PageSize )">
332333334 @{
335 NameValueCollection urlParams = Dynamicweb.Context.Current.Request.QueryString;
336 List< string > paramsToIgnore = new List< string >() { "PageNum", "SortBy", "SortOrder" };
337338 if ( handlebarsProductListTemplate.ShowFilters )
339 {
340 foreach ( LoopItem facetGroup in GetLoop( "FacetGroups" ) )
341 {
342 <input name="fg" type="hidden" value="@facetGroup.GetString( "FacetGroup.Name" )">
343 }
344 }
345346 foreach ( LoopItem queryParameter in GetLoop( "Query.Parameters" ) )
347 {
348 if ( string.IsNullOrEmpty( queryParameter.GetString( "Parameter.Value" ) ) == false )
349 {
350 if ( queryParameter.GetBoolean( "Parameter.IsHandledAsFacet" ) == false && queryParameter.GetString( "Parameter.Name" ) != "q" )
351 {
352 string dataAttrExcludeInUrlValue = "true";
353 if ( urlParams[ queryParameter.GetString( "Parameter.Name" ) ] != null )
354 {
355 dataAttrExcludeInUrlValue = string.Empty;
356 paramsToIgnore.Add( queryParameter.GetString( "Parameter.Name" ) );
357 }
358359 <input name="@queryParameter.GetString( "Parameter.Name" )" type="hidden" value="@HttpUtility.HtmlAttributeEncode( queryParameter.GetString( "Parameter.Value" ) )" data-excludeinurl="@dataAttrExcludeInUrlValue">
360 }
361 }
362 }
363364 foreach ( object urlParam in urlParams)
365 {
366 if ( !paramsToIgnore.Contains(urlParam.ToString()) && !paramsToIgnore.Contains(urlParam.ToString()))
367 {
368 <input name="@urlParam.ToString()" type="hidden" value="@HttpUtility.HtmlAttributeEncode( urlParams[urlParam.ToString()] )">
369 }
370 }
371 }
372373374 @{
375 Uri urlReferrer = HttpContext.Current.Request.UrlReferrer;
376 string urlBack = "/";
377 if ( urlReferrer != null )
378 {
379 urlBack = urlReferrer.LocalPath;
380 }
381 }
382383 @if ( ( bool )Espresso.Page.Item[ "HeaderHide" ] )
384 {
385 <a class="btn btn-sm btn-secondary mb-3 align-self-center js-e-back-link order-first arrow-left" href="@urlBack">
386 <i class="material-icons material-icons-large d-none">arrow_back</i>Tilbage
387 </a>
388 }
389390 @RenderingService.Instance.PartialView( "ecom/productlist/partials/filters-search.cshtml", Espresso )
391392393 @RenderingService.Instance.PartialView( "ecom/productlist/partials/horizontal-filters.cshtml", Espresso )
394 </form>
395 @RenderingService.Instance.PartialView( "ecom/productlist/partials/products.cshtml", espressoProductList )
396 @RenderingService.Instance.PartialView( "ecom/productlist/partials/paging.cshtml", espressoProductList )
397 @RenderingService.Instance.PartialView( "ecom/productlist/partials/footer.cshtml", handlebarsProductListTemplate )
398 </div>
399 </div>
400 </div>
401