Sorter etter

Teknikk

Pris

Kunstner

Stigende og fallende
Stigende og fallende
Per Kleiva

Stigende og fallende

Silketrykk
kr 16 000 Available in stock
Fontene
Fontene
Per Kleiva

Fontene

Silketrykk
kr 14 000 Available in stock
Den draumen
Den draumen
Per Kleiva

Den draumen

Silketrykk
kr 20 000 Available in stock
Vinter i St. Petersburg
Vinter i St. Petersburg
Morten Krogvold

Vinter i St. Petersburg

Fotografi
kr 10 000 Available in stock
Tidsreise, Island
Tidsreise, Island
Morten Krogvold

Tidsreise, Island

Fotografi
kr 5 000 Available in stock
Siste hilsen, Napoli
Siste hilsen, Napoli
Morten Krogvold

Siste hilsen, Napoli

Fotografi
kr 5 000 Available in stock
Morgen, Palau
Morgen, Palau
Morten Krogvold

Morgen, Palau

Fotografi
kr 12 000 Available in stock
Bevegelse, Milano
Bevegelse, Milano
Morten Krogvold

Bevegelse, Milano

Fotografi
kr 12 000 Available in stock
Late evening
Late evening
Morten Krogvold

Late evening

Fotografi
kr 4 500 Available in stock
Springlight from my window
Springlight from my window
Morten Krogvold

Springlight from my window

Fotografi
kr 4 500 Available in stock
Kirkeinteriør, Ulmer-Münster (Tyskland)
Kirkeinteriør, Ulmer-Münster (Tyskland)
Morten Krogvold

Kirkeinteriør, Ulmer-Münster (Tyskland)

Fotografi
kr 4 500 Available in stock
Shelter 3
Shelter 3
Kristian Krokfors

Shelter 3

Litografi
kr 5 000 Available in stock
Shelter 1
Shelter 1
Kristian Krokfors

Shelter 1

Litografi
kr 5 800 Available in stock
Shelter 2
Shelter 2
Kristian Krokfors

Shelter 2

Litografi
kr 5 800 Available in stock
Balloons 2
Balloons 2
Kristian Krokfors

Balloons 2

Litografi
kr 5 000 Available in stock
Balloons 1
Balloons 1
Kristian Krokfors

Balloons 1

Litografi
kr 5 000 Available in stock
In the first of May
In the first of May
John Kørner

In the first of May

kr 4 400 Available in stock
High speed heart beat IV
High speed heart beat IV
John Kørner

High speed heart beat IV

kr 7 500 Available in stock
Outside the box
Outside the box
Deborah Maris Lader

Outside the box

kr 2 600 Available in stock
Winds of smoke and water
Winds of smoke and water
Deborah Maris Lader

Winds of smoke and water

kr 5 600 Available in stock
Working on wings to fly
Working on wings to fly
Deborah Maris Lader

Working on wings to fly

kr 5 600 Available in stock
On thin ice
On thin ice
Deborah Maris Lader

On thin ice

kr 3 600 Available in stock
Comfort pillow, poet tree...
Comfort pillow, poet tree...
Deborah Maris Lader

Comfort pillow, poet tree...

kr 650 Available in stock
Tutkimusmatkalla / On an expedition
Tutkimusmatkalla / On an expedition
Janne Laine

Tutkimusmatkalla / On an expedition

Fotogravyr
kr 3 600 Available in stock
Kaukainen / Distant
Kaukainen / Distant
Janne Laine

Kaukainen / Distant

Fotogravyr
kr 3 600 Available in stock
Muutoksen tuulet / Winds of change
Muutoksen tuulet / Winds of change
Janne Laine

Muutoksen tuulet / Winds of change

Fotogravyr
kr 3 600 Available in stock
Toinen ulottuvuus / Other dimention
Toinen ulottuvuus / Other dimention
Janne Laine

Toinen ulottuvuus / Other dimention

Fotogravyr
kr 3 600 Available in stock
Yö laskeutuu / Night falls
Yö laskeutuu / Night falls
Janne Laine

Yö laskeutuu / Night falls

Fotogravyr
kr 3 600 Available in stock
Yöllistä kuohuntaa / Nightly turmoil
Yöllistä kuohuntaa / Nightly turmoil
Janne Laine

Yöllistä kuohuntaa / Nightly turmoil

Fotogravyr
kr 3 600 Available in stock
Yö väistyy / The night recedes
Yö väistyy / The night recedes
Janne Laine

Yö väistyy / The night recedes

Fotogravyr
kr 3 600 Available in stock
Kultainen hetki / Golden moment
Kultainen hetki / Golden moment
Janne Laine

Kultainen hetki / Golden moment

Fotogravyr
kr 3 600 Available in stock
Ilta / Evening
Ilta / Evening
Janne Laine

Ilta / Evening

Fotogravyr
kr 3 600 Available in stock
Lost in time I
Lost in time I
Janne Laine

Lost in time I

Fotopolymer , Fotogravyr
kr 900 Available in stock
Lost in time III
Lost in time III
Janne Laine

Lost in time III

Fotopolymer , Fotogravyr
kr 900 Available in stock
Sunset I
Sunset I
Janne Laine

Sunset I

Fotopolymer , Fotogravyr
kr 900 Available in stock
Silence III
Silence III
Janne Laine

Silence III

Fotopolymer , Fotogravyr
kr 900 Available in stock
Connected XI
Connected XI
Janne Laine

Connected XI

Fotopolymer , Fotogravyr
kr 900 Available in stock
Connected VIII
Connected VIII
Janne Laine

Connected VIII

Fotopolymer , Fotogravyr
kr 900 Available in stock
Layers of time II - 2
Layers of time II - 2
Janne Laine

Layers of time II - 2

Fotopolymer , Fotogravyr
kr 900 Available in stock
Darkness recedes
Darkness recedes
Janne Laine

Darkness recedes

Fotopolymer , Fotogravyr
kr 900 Available in stock
Oodi
Oodi
Janne Laine

Oodi

Fotopolymer , Fotogravyr
kr 900 Available in stock
On a crossroads
On a crossroads
Janne Laine

On a crossroads

Fotopolymer , Fotogravyr
kr 900 Available in stock
Direction
Direction
Janne Laine

Direction

Fotopolymer , Fotogravyr
kr 900 Available in stock
Pause from humming II
Pause from humming II
Janne Laine

Pause from humming II

Fotopolymer , Fotogravyr
kr 900 Available in stock
Pause from humming I
Pause from humming I
Janne Laine

Pause from humming I

Fotopolymer , Fotogravyr
kr 900 Available in stock
Together
Together
Janne Laine

Together

Fotopolymer , Fotogravyr
kr 900 Available in stock
Westbound
Westbound
Janne Laine

Westbound

Fotopolymer , Fotogravyr
kr 900 Available in stock
Eastbound
Eastbound
Janne Laine

Eastbound

Fotopolymer , Fotogravyr
kr 900 Available in stock
Somewhere in between night and daylight
Somewhere in between night and daylight
Janne Laine

Somewhere in between night and daylight

Fotogravyr
kr 3 600 Available in stock
Burning Sky I
Burning Sky I
Janne Laine

Burning Sky I

Fotogravyr
kr 4 900 Available in stock
Hidden Mountain
Hidden Mountain
Janne Laine

Hidden Mountain

kr 5 200 Available in stock
Night reflections II
Night reflections II
Janne Laine

Night reflections II

Fotogravyr
kr 4 900 Available in stock
Muotoja Vedessa III
Muotoja Vedessa III
Janne Laine

Muotoja Vedessa III

kr 900 Available in stock
Guardian 1
Guardian 1
Janne Laine

Guardian 1

Etsning , Fotopolymer
kr 900 Available in stock
Guardian 2
Guardian 2
Janne Laine

Guardian 2

Etsning , Fotopolymer
kr 900 Available in stock
Urban Song I
Urban Song I
Janne Laine

Urban Song I

kr 900 Available in stock
Beauty contest
Beauty contest
Janne Laine

Beauty contest

kr 900 Available in stock
Distant II
Distant II
Janne Laine

Distant II

Fotogravyr
kr 1 500 Available in stock
Glow
Glow
Janne Laine

Glow

Fotogravyr
kr 3 000 Available in stock
Suuri sininen / Big blue
Suuri sininen / Big blue
Janne Laine

Suuri sininen / Big blue

Fotogravyr
kr 3 600 Available in stock
Stokkur
Stokkur
Janne Laine

Stokkur

kr 900 Available in stock
Valissa
Valissa
Janne Laine

Valissa

kr 900 Available in stock
The evening star
The evening star
Janne Laine

The evening star

Fotogravyr
kr 4 700 Available in stock
Invasive species, variant
Invasive species, variant
Janne Laine

Invasive species, variant

Fotogravyr
kr 4 700 Available in stock
Invasive species, variant
Invasive species, variant
Janne Laine

Invasive species, variant

Fotogravyr
kr 4 700 Available in stock
Duetto II
Duetto II
Janne Laine

Duetto II

Fotopolymer
kr 1 200 Available in stock
Soolo IV
Soolo IV
Janne Laine

Soolo IV

Fotopolymer
kr 1 200 Available in stock
Pohjoinen
Pohjoinen
Janne Laine

Pohjoinen

Fotopolymer
kr 1 200 Available in stock
Fluffy XI
Fluffy XI
Janne Laine

Fluffy XI

Fotopolymer , Fotogravyr
kr 900 Available in stock
Myrkvidr
Myrkvidr
Janne Laine

Myrkvidr

Fotopolymer
kr 900 Available in stock
Myrkvidr
Myrkvidr
Janne Laine

Myrkvidr

Fotopolymer
kr 900 Available in stock
Lang historie
Lang historie
Runi Langum

Lang historie

Litografi
kr 7 800 Available in stock
Lyden
Lyden
Runi Langum

Lyden

Litografi
kr 1 400 Available in stock
Treffer
Treffer
Runi Langum

Treffer

Litografi
kr 1 600 Available in stock
Vilja og viljen
Vilja og viljen
Runi Langum

Vilja og viljen

Litografi
kr 8 000 Available in stock
Hold on
Hold on
Runi Langum

Hold on

Litografi
kr 4 800 Available in stock
Rebus
Rebus
Runi Langum

Rebus

Litografi
kr 6 000 Available in stock
Lito
Lito
Runi Langum

Lito

Litografi
kr 3 500 Available in stock
Dans
Dans
Runi Langum

Dans

Koldnål , Fotopolymer
kr 8 000 Available in stock
Hus
Hus
Runi Langum

Hus

Litografi
kr 3 300 Available in stock
Belonging
Belonging
Runi Langum

Belonging

Litografi
kr 5 800 Available in stock
Skute
Skute
Runi Langum

Skute

Litografi
kr 1 600 Available in stock
Seilas
Seilas
Runi Langum

Seilas

Litografi
kr 1 500 Available in stock
Move
Move
Runi Langum

Move

Litografi
kr 3 500 Available in stock
Play
Play
Runi Langum

Play

Litografi
kr 850 Available in stock
Luft
Luft
Runi Langum

Luft

Litografi
kr 1 600 Available in stock
Moment
Moment
Runi Langum

Moment

Litografi
kr 3 500 Available in stock
Kime
Kime
Runi Langum

Kime

Litografi
kr 3 500 Available in stock
Hilsen
Hilsen
Runi Langum

Hilsen

Litografi
kr 3 900 Available in stock
En
En
Runi Langum

En

Litografi
kr 3 800 Available in stock
Side by side
Side by side
Runi Langum

Side by side

Litografi
Error executing template "/Designs/Swift/Paragraph/Swift_ProductPrice_Mennt.cshtml"
System.NullReferenceException: Object reference not set to an instance of an object.
   at Dynamicweb.Ecommerce.Prices.PriceManager.GetPrice(PriceContext context, Product product, String unitId, Int64 stockLocationId)
   at System.Lazy`1.CreateValue()
   at System.Lazy`1.LazyInitValue()
   at Dynamicweb.Ecommerce.ProductCatalog.ViewEngine.<>c__DisplayClass3_2.<BulkCreateView>b__48()
   at System.Lazy`1.CreateValue()
   at System.Lazy`1.LazyInitValue()
   at Dynamicweb.Ecommerce.ProductCatalog.ViewEngine.GetPrice(PriceViewModelSettings settings, IList`1 products, Boolean& pricesHasBeenPrepared, Object lock, Lazy`1 priceInfo)
   at Dynamicweb.Ecommerce.ProductCatalog.ViewEngine.<>c__DisplayClass3_2.<BulkCreateView>b__49()
   at System.Lazy`1.CreateValue()
   at System.Lazy`1.LazyInitValue()
   at CompiledRazorTemplates.Dynamic.RazorEngine_44599f20126c4840961cc1ddf1b1949b.Execute() in D:\dynamicweb.net\Solutions\Mennt\KunstWeb2023.dw9.dynamicweb-cms.com\files\Templates\Designs\Swift\Paragraph\Swift_ProductPrice_Mennt.cshtml:line 86
   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 @inherits Dynamicweb.Rendering.ViewModelTemplate<Dynamicweb.Frontend.ParagraphViewModel> 2 @using Dynamicweb.Ecommerce.ProductCatalog 3 4 @{ 5 ProductViewModel product = null; 6 if (Dynamicweb.Context.Current.Items.Contains("ProductDetails")) 7 { 8 product = (ProductViewModel)Dynamicweb.Context.Current.Items["ProductDetails"]; 9 } 10 else if (Pageview.Page.Item["DummyProduct"] != null && Pageview.IsVisualEditorMode) 11 { 12 var pageViewModel = Dynamicweb.Frontend.ContentViewModelFactory.CreatePageInfoViewModel(Pageview.Page); 13 ProductListViewModel productList = pageViewModel.Item.GetValue("DummyProduct") != null ? pageViewModel.Item.GetValue("DummyProduct") as ProductListViewModel : new ProductListViewModel(); 14 15 if (productList?.Products is object) 16 { 17 product = productList.Products[0]; 18 } 19 } 20 21 string anonymousUsersLimitations = Pageview.AreaSettings.GetRawValueString("AnonymousUsers", ""); 22 bool anonymousUser = Pageview.User == null; 23 bool isErpConnectionDown = !Dynamicweb.Core.Converter.ToBoolean(Dynamicweb.Context.Current.Items["IsWebServiceConnectionAvailable"]); 24 bool hidePrice = anonymousUsersLimitations.Contains("price") && anonymousUser || Pageview.AreaSettings.GetBoolean("ErpDownHidePrices") && isErpConnectionDown; 25 26 bool productIsDiscontinued = product is object && product.Discontinued; 27 bool doNotShowPriceIfProductIsDiscontinued = Model.Item.GetBoolean("DoNotShowPriceIfProductIsDiscontinued"); 28 var isDiscontinued = productIsDiscontinued && doNotShowPriceIfProductIsDiscontinued; 29 } 30 31 @if (product is object && !hidePrice && !isDiscontinued) { 32 bool showInformativePrice = Model.Item.GetBoolean("ShowInformativePrice"); 33 string unitId = !string.IsNullOrEmpty(Dynamicweb.Context.Current.Request.Form.Get("UnitId")) ? Dynamicweb.Context.Current.Request.Form.Get("UnitId") : string.Empty; 34 35 string priceFontSize = Model.Item.GetRawValueString("PriceSize", "fs-2"); 36 string horizontalAlign = Model.Item.GetRawValueString("HorizontalAlignment", ""); 37 string layout = Model.Item.GetRawValueString("Layout", "horizontal"); 38 string textAlign = horizontalAlign == "center" ? "text-center" : string.Empty; 39 textAlign = horizontalAlign == "end" ? "text-end" : textAlign; 40 41 horizontalAlign = horizontalAlign == "center" && layout == "horizontal" ? "justify-content-center" : horizontalAlign; 42 horizontalAlign = horizontalAlign == "end" && layout == "horizontal" ? "justify-content-end" : horizontalAlign; 43 horizontalAlign = horizontalAlign == "center" && layout == "vertical" ? "align-items-center" : horizontalAlign; 44 horizontalAlign = horizontalAlign == "end" && layout == "vertical" ? "align-items-end" : horizontalAlign; 45 46 string flexDirection = layout == "horizontal" ? string.Empty : "flex-column"; 47 string flexGap = layout == "horizontal" ? "gap-3" : string.Empty; 48 string order = layout == "horizontal" ? string.Empty : "order-2"; 49 string theme = !string.IsNullOrWhiteSpace(Model.Item.GetRawValueString("Theme")) ? "theme " + Model.Item.GetRawValueString("Theme").Replace(" ", "").Trim().ToLower() : ""; 50 theme = GetViewParameter("theme") != null ? GetViewParameterString("theme") : theme; 51 52 string contentPadding = Model.Item.GetRawValueString("ContentPadding", ""); 53 contentPadding = contentPadding == "none" ? "p-0" : contentPadding; 54 contentPadding = contentPadding == "small" ? "p-1 px-md-2 py-md-1" : contentPadding; 55 contentPadding = contentPadding == "large" ? "p-2 px-md-3 py-md-2" : contentPadding; 56 57 string showPricesWithVat = Pageview.Area.EcomPricesWithVat.ToLower(); 58 bool neverShowVat = string.IsNullOrEmpty(showPricesWithVat); 59 60 string priceMin = ""; 61 string priceMax = ""; 62 63 string liveInfoClass = ""; 64 string productInfoFeed = ""; 65 bool isLazyLoadingForProductInfoEnabled = Dynamicweb.Core.Converter.ToBoolean(Dynamicweb.Context.Current.Items["IsLazyLoadingForProductInfoEnabled"]); 66 if (isLazyLoadingForProductInfoEnabled) 67 { 68 if (Dynamicweb.Context.Current.Items.Contains("ProductInfoFeed")) 69 { 70 productInfoFeed = Dynamicweb.Context.Current.Items["ProductInfoFeed"]?.ToString(); 71 if (!string.IsNullOrEmpty(productInfoFeed)) 72 { 73 productInfoFeed = $"data-product-info-feed=\"{productInfoFeed}\""; 74 } 75 } 76 liveInfoClass = "js-live-info"; 77 } 78 79 <div class="@textAlign @liveInfoClass item_@Model.Item.SystemName.ToLower()" data-product-id="@product.Id" data-variant-id="@product.VariantId" @productInfoFeed> 80 @if (showInformativePrice && product.PriceInformative.Price != 0) 81 { 82 <div class="opacity-50"> 83 <span>@Translate("RRP") </span> 84 <span class="text-decoration-line-through text-price">@product.PriceInformative.PriceFormatted</span> 85 </div> 86 } 87 <div class="@priceFontSize m-0 d-flex flex-wrap @flexDirection @flexGap @horizontalAlign" style="row-gap: 0 !important" itemprop="offers" itemscope itemtype="https://schema.org/Offer"> 88 <span itemprop="priceCurrency" content="@product.Price.CurrencyCode" class="d-none"></span> 89 90 91 @if (showPricesWithVat == "false" && !neverShowVat) 92 { 93 if (isLazyLoadingForProductInfoEnabled && !Pageview.IsVisualEditorMode) 94 { 95 <span itemprop="price" content="" class="d-none"></span> 96 <span class="text-decoration-line-through js-text-decoration-line-through opacity-75 me-3 text-price js-text-price d-none" data-show-if="LiveProductInfo.product.Price.Price != LiveProductInfo.product.PriceBeforeDiscount.Price"></span> 97 } 98 else 99 { 100 string beforePrice = !string.IsNullOrEmpty(unitId) ? product.GetPrice(unitId).PriceBeforeDiscount.PriceWithoutVatFormatted : product.PriceBeforeDiscount.PriceWithoutVatFormatted; 101 102 <span itemprop="price" content="@product.Price.PriceWithoutVat" class="d-none"></span> 103 if (product.Price.Price != product.PriceBeforeDiscount.Price) 104 { 105 <span class="text-decoration-line-through opacity-75 @order">@beforePrice</span> 106 } 107 } 108 } 109 else 110 { 111 if (isLazyLoadingForProductInfoEnabled && !Pageview.IsVisualEditorMode) 112 { 113 <span itemprop="price" content="" class="d-none"></span> 114 <span class="text-decoration-line-through js-text-decoration-line-through opacity-75 me-3 text-price js-text-price d-none" data-show-if="LiveProductInfo.product.Price.Price != LiveProductInfo.product.PriceBeforeDiscount.Price"></span> 115 } 116 else 117 { 118 string beforePrice = !string.IsNullOrEmpty(unitId) ? product.GetPrice(unitId).PriceBeforeDiscount.PriceFormatted : product.PriceBeforeDiscount.PriceFormatted; 119 120 <span itemprop="price" content="@product.Price.Price" class="d-none"></span> 121 122 if (product.Price.Price != product.PriceBeforeDiscount.Price) 123 { 124 <span class="text-decoration-line-through opacity-75 @order"> 125 <span class="text-price">@beforePrice</span> 126 </span> 127 } 128 } 129 } 130 131 @if (showPricesWithVat == "false" && !neverShowVat) 132 { 133 if (isLazyLoadingForProductInfoEnabled && !Pageview.IsVisualEditorMode) 134 { 135 <span class="text-price js-text-price"> 136 <span class="spinner-border" role="status"></span> 137 </span> 138 } 139 else 140 { 141 string price = !string.IsNullOrEmpty(unitId) ? product.GetPrice(unitId).Price.PriceWithoutVatFormatted : product.Price.PriceWithoutVatFormatted; 142 143 if (product?.VariantInfo?.VariantInfo != null) 144 { 145 priceMin = product?.VariantInfo?.PriceMin?.PriceWithoutVatFormatted != null ? product.VariantInfo.PriceMin.PriceWithoutVatFormatted : ""; 146 priceMax = product?.VariantInfo?.PriceMax?.PriceWithoutVatFormatted != null ? product.VariantInfo.PriceMax.PriceWithoutVatFormatted : ""; 147 } 148 if (priceMin != priceMax) 149 { 150 price = priceMin + " - " + priceMax; 151 } 152 <span class="@theme @contentPadding"> 153 <span class="text-price">@price</span> 154 </span> 155 } 156 } 157 else 158 { 159 if (isLazyLoadingForProductInfoEnabled && !Pageview.IsVisualEditorMode) 160 { 161 <span class="text-price js-text-price"> 162 <span class="spinner-border" role="status"></span> 163 </span> 164 } 165 else 166 { 167 string price = !string.IsNullOrEmpty(unitId) ? product.GetPrice(unitId).Price.PriceFormatted : product.Price.PriceFormatted; 168 169 if (product?.VariantInfo?.VariantInfo != null) 170 { 171 priceMin = product?.VariantInfo?.PriceMin?.PriceFormatted != null ? product.VariantInfo.PriceMin.PriceFormatted : ""; 172 priceMax = product?.VariantInfo?.PriceMax?.PriceFormatted != null ? product.VariantInfo.PriceMax.PriceFormatted : ""; 173 } 174 if (priceMin != priceMax) 175 { 176 price = priceMin + " - " + priceMax; 177 } 178 <span class="@theme @contentPadding"> 179 <span class="text-price">@price.Replace(",00", "")</span> 180 </span> 181 } 182 } 183 184 @* Stock state for Schema.org, start *@ 185 @{ 186 Uri url = Dynamicweb.Context.Current.Request.Url; 187 } 188 189 <link itemprop="url" href="@url"> 190 191 @{ 192 bool IsNeverOutOfStock = product.NeverOutOfstock; 193 } 194 195 @if (IsNeverOutOfStock) 196 { 197 <span itemprop="availability" class="d-none">@Translate("Available in stock")</span> 198 } 199 else 200 { 201 if (product.StockLevel > 0) 202 { 203 <span itemprop="availability" class="d-none">InStock</span> 204 } 205 else 206 { 207 <span itemprop="availability" class="d-none">OutOfStock</span> 208 } 209 } 210 @* Stock state for Schema.org, stop *@ 211 212 </div> 213 214 @if (showPricesWithVat == "false" && !neverShowVat) 215 { 216 if (isLazyLoadingForProductInfoEnabled && !Pageview.IsVisualEditorMode) 217 { 218 <small class="opacity-85 fst-normal js-text-price-with-vat d-none" data-suffix="@Translate("Incl. VAT")"></small> 219 } 220 else 221 { 222 string price = !string.IsNullOrEmpty(unitId) ? product.GetPrice(unitId).Price.PriceWithVatFormatted : product.Price.PriceWithVatFormatted; 223 224 if (product?.VariantInfo?.VariantInfo != null) 225 { 226 priceMin = product?.VariantInfo?.PriceMin?.PriceWithVatFormatted != null ? product.VariantInfo.PriceMin.PriceWithVatFormatted : ""; 227 priceMax = product?.VariantInfo?.PriceMax?.PriceWithVatFormatted != null ? product.VariantInfo.PriceMax.PriceWithVatFormatted : ""; 228 } 229 if (priceMin != priceMax) 230 { 231 price = priceMin + " - " + priceMax; 232 } 233 <small class="opacity-85 fst-normal">@price @Translate("Incl. VAT")</small> 234 } 235 } 236 </div> 237 } 238 else if (Pageview.IsVisualEditorMode) 239 { 240 <div class="alert alert-dark m-0" role="alert"> 241 <span>@Translate("No products available")</span> 242 </div> 243 } 244
Endring og mot
Endring og mot
Runi Langum

Endring og mot

Litografi
kr 9 000 Available in stock
Mot
Mot
Runi Langum

Mot

Litografi
kr 4 500 Available in stock
Resonans
Resonans
Runi Langum

Resonans

Litografi
kr 6 800 Available in stock
Hoi!
Hoi!
Runi Langum

Hoi!

Litografi
Error executing template "/Designs/Swift/Paragraph/Swift_ProductPrice_Mennt.cshtml"
System.NullReferenceException: Object reference not set to an instance of an object.
   at Dynamicweb.Ecommerce.Prices.PriceManager.GetPrice(PriceContext context, Product product, String unitId, Int64 stockLocationId)
   at System.Lazy`1.CreateValue()
   at System.Lazy`1.LazyInitValue()
   at Dynamicweb.Ecommerce.ProductCatalog.ViewEngine.<>c__DisplayClass3_2.<BulkCreateView>b__48()
   at System.Lazy`1.CreateValue()
   at System.Lazy`1.LazyInitValue()
   at Dynamicweb.Ecommerce.ProductCatalog.ViewEngine.GetPrice(PriceViewModelSettings settings, IList`1 products, Boolean& pricesHasBeenPrepared, Object lock, Lazy`1 priceInfo)
   at Dynamicweb.Ecommerce.ProductCatalog.ViewEngine.<>c__DisplayClass3_2.<BulkCreateView>b__49()
   at System.Lazy`1.CreateValue()
   at System.Lazy`1.LazyInitValue()
   at CompiledRazorTemplates.Dynamic.RazorEngine_44599f20126c4840961cc1ddf1b1949b.Execute() in D:\dynamicweb.net\Solutions\Mennt\KunstWeb2023.dw9.dynamicweb-cms.com\files\Templates\Designs\Swift\Paragraph\Swift_ProductPrice_Mennt.cshtml:line 86
   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 @inherits Dynamicweb.Rendering.ViewModelTemplate<Dynamicweb.Frontend.ParagraphViewModel> 2 @using Dynamicweb.Ecommerce.ProductCatalog 3 4 @{ 5 ProductViewModel product = null; 6 if (Dynamicweb.Context.Current.Items.Contains("ProductDetails")) 7 { 8 product = (ProductViewModel)Dynamicweb.Context.Current.Items["ProductDetails"]; 9 } 10 else if (Pageview.Page.Item["DummyProduct"] != null && Pageview.IsVisualEditorMode) 11 { 12 var pageViewModel = Dynamicweb.Frontend.ContentViewModelFactory.CreatePageInfoViewModel(Pageview.Page); 13 ProductListViewModel productList = pageViewModel.Item.GetValue("DummyProduct") != null ? pageViewModel.Item.GetValue("DummyProduct") as ProductListViewModel : new ProductListViewModel(); 14 15 if (productList?.Products is object) 16 { 17 product = productList.Products[0]; 18 } 19 } 20 21 string anonymousUsersLimitations = Pageview.AreaSettings.GetRawValueString("AnonymousUsers", ""); 22 bool anonymousUser = Pageview.User == null; 23 bool isErpConnectionDown = !Dynamicweb.Core.Converter.ToBoolean(Dynamicweb.Context.Current.Items["IsWebServiceConnectionAvailable"]); 24 bool hidePrice = anonymousUsersLimitations.Contains("price") && anonymousUser || Pageview.AreaSettings.GetBoolean("ErpDownHidePrices") && isErpConnectionDown; 25 26 bool productIsDiscontinued = product is object && product.Discontinued; 27 bool doNotShowPriceIfProductIsDiscontinued = Model.Item.GetBoolean("DoNotShowPriceIfProductIsDiscontinued"); 28 var isDiscontinued = productIsDiscontinued && doNotShowPriceIfProductIsDiscontinued; 29 } 30 31 @if (product is object && !hidePrice && !isDiscontinued) { 32 bool showInformativePrice = Model.Item.GetBoolean("ShowInformativePrice"); 33 string unitId = !string.IsNullOrEmpty(Dynamicweb.Context.Current.Request.Form.Get("UnitId")) ? Dynamicweb.Context.Current.Request.Form.Get("UnitId") : string.Empty; 34 35 string priceFontSize = Model.Item.GetRawValueString("PriceSize", "fs-2"); 36 string horizontalAlign = Model.Item.GetRawValueString("HorizontalAlignment", ""); 37 string layout = Model.Item.GetRawValueString("Layout", "horizontal"); 38 string textAlign = horizontalAlign == "center" ? "text-center" : string.Empty; 39 textAlign = horizontalAlign == "end" ? "text-end" : textAlign; 40 41 horizontalAlign = horizontalAlign == "center" && layout == "horizontal" ? "justify-content-center" : horizontalAlign; 42 horizontalAlign = horizontalAlign == "end" && layout == "horizontal" ? "justify-content-end" : horizontalAlign; 43 horizontalAlign = horizontalAlign == "center" && layout == "vertical" ? "align-items-center" : horizontalAlign; 44 horizontalAlign = horizontalAlign == "end" && layout == "vertical" ? "align-items-end" : horizontalAlign; 45 46 string flexDirection = layout == "horizontal" ? string.Empty : "flex-column"; 47 string flexGap = layout == "horizontal" ? "gap-3" : string.Empty; 48 string order = layout == "horizontal" ? string.Empty : "order-2"; 49 string theme = !string.IsNullOrWhiteSpace(Model.Item.GetRawValueString("Theme")) ? "theme " + Model.Item.GetRawValueString("Theme").Replace(" ", "").Trim().ToLower() : ""; 50 theme = GetViewParameter("theme") != null ? GetViewParameterString("theme") : theme; 51 52 string contentPadding = Model.Item.GetRawValueString("ContentPadding", ""); 53 contentPadding = contentPadding == "none" ? "p-0" : contentPadding; 54 contentPadding = contentPadding == "small" ? "p-1 px-md-2 py-md-1" : contentPadding; 55 contentPadding = contentPadding == "large" ? "p-2 px-md-3 py-md-2" : contentPadding; 56 57 string showPricesWithVat = Pageview.Area.EcomPricesWithVat.ToLower(); 58 bool neverShowVat = string.IsNullOrEmpty(showPricesWithVat); 59 60 string priceMin = ""; 61 string priceMax = ""; 62 63 string liveInfoClass = ""; 64 string productInfoFeed = ""; 65 bool isLazyLoadingForProductInfoEnabled = Dynamicweb.Core.Converter.ToBoolean(Dynamicweb.Context.Current.Items["IsLazyLoadingForProductInfoEnabled"]); 66 if (isLazyLoadingForProductInfoEnabled) 67 { 68 if (Dynamicweb.Context.Current.Items.Contains("ProductInfoFeed")) 69 { 70 productInfoFeed = Dynamicweb.Context.Current.Items["ProductInfoFeed"]?.ToString(); 71 if (!string.IsNullOrEmpty(productInfoFeed)) 72 { 73 productInfoFeed = $"data-product-info-feed=\"{productInfoFeed}\""; 74 } 75 } 76 liveInfoClass = "js-live-info"; 77 } 78 79 <div class="@textAlign @liveInfoClass item_@Model.Item.SystemName.ToLower()" data-product-id="@product.Id" data-variant-id="@product.VariantId" @productInfoFeed> 80 @if (showInformativePrice && product.PriceInformative.Price != 0) 81 { 82 <div class="opacity-50"> 83 <span>@Translate("RRP") </span> 84 <span class="text-decoration-line-through text-price">@product.PriceInformative.PriceFormatted</span> 85 </div> 86 } 87 <div class="@priceFontSize m-0 d-flex flex-wrap @flexDirection @flexGap @horizontalAlign" style="row-gap: 0 !important" itemprop="offers" itemscope itemtype="https://schema.org/Offer"> 88 <span itemprop="priceCurrency" content="@product.Price.CurrencyCode" class="d-none"></span> 89 90 91 @if (showPricesWithVat == "false" && !neverShowVat) 92 { 93 if (isLazyLoadingForProductInfoEnabled && !Pageview.IsVisualEditorMode) 94 { 95 <span itemprop="price" content="" class="d-none"></span> 96 <span class="text-decoration-line-through js-text-decoration-line-through opacity-75 me-3 text-price js-text-price d-none" data-show-if="LiveProductInfo.product.Price.Price != LiveProductInfo.product.PriceBeforeDiscount.Price"></span> 97 } 98 else 99 { 100 string beforePrice = !string.IsNullOrEmpty(unitId) ? product.GetPrice(unitId).PriceBeforeDiscount.PriceWithoutVatFormatted : product.PriceBeforeDiscount.PriceWithoutVatFormatted; 101 102 <span itemprop="price" content="@product.Price.PriceWithoutVat" class="d-none"></span> 103 if (product.Price.Price != product.PriceBeforeDiscount.Price) 104 { 105 <span class="text-decoration-line-through opacity-75 @order">@beforePrice</span> 106 } 107 } 108 } 109 else 110 { 111 if (isLazyLoadingForProductInfoEnabled && !Pageview.IsVisualEditorMode) 112 { 113 <span itemprop="price" content="" class="d-none"></span> 114 <span class="text-decoration-line-through js-text-decoration-line-through opacity-75 me-3 text-price js-text-price d-none" data-show-if="LiveProductInfo.product.Price.Price != LiveProductInfo.product.PriceBeforeDiscount.Price"></span> 115 } 116 else 117 { 118 string beforePrice = !string.IsNullOrEmpty(unitId) ? product.GetPrice(unitId).PriceBeforeDiscount.PriceFormatted : product.PriceBeforeDiscount.PriceFormatted; 119 120 <span itemprop="price" content="@product.Price.Price" class="d-none"></span> 121 122 if (product.Price.Price != product.PriceBeforeDiscount.Price) 123 { 124 <span class="text-decoration-line-through opacity-75 @order"> 125 <span class="text-price">@beforePrice</span> 126 </span> 127 } 128 } 129 } 130 131 @if (showPricesWithVat == "false" && !neverShowVat) 132 { 133 if (isLazyLoadingForProductInfoEnabled && !Pageview.IsVisualEditorMode) 134 { 135 <span class="text-price js-text-price"> 136 <span class="spinner-border" role="status"></span> 137 </span> 138 } 139 else 140 { 141 string price = !string.IsNullOrEmpty(unitId) ? product.GetPrice(unitId).Price.PriceWithoutVatFormatted : product.Price.PriceWithoutVatFormatted; 142 143 if (product?.VariantInfo?.VariantInfo != null) 144 { 145 priceMin = product?.VariantInfo?.PriceMin?.PriceWithoutVatFormatted != null ? product.VariantInfo.PriceMin.PriceWithoutVatFormatted : ""; 146 priceMax = product?.VariantInfo?.PriceMax?.PriceWithoutVatFormatted != null ? product.VariantInfo.PriceMax.PriceWithoutVatFormatted : ""; 147 } 148 if (priceMin != priceMax) 149 { 150 price = priceMin + " - " + priceMax; 151 } 152 <span class="@theme @contentPadding"> 153 <span class="text-price">@price</span> 154 </span> 155 } 156 } 157 else 158 { 159 if (isLazyLoadingForProductInfoEnabled && !Pageview.IsVisualEditorMode) 160 { 161 <span class="text-price js-text-price"> 162 <span class="spinner-border" role="status"></span> 163 </span> 164 } 165 else 166 { 167 string price = !string.IsNullOrEmpty(unitId) ? product.GetPrice(unitId).Price.PriceFormatted : product.Price.PriceFormatted; 168 169 if (product?.VariantInfo?.VariantInfo != null) 170 { 171 priceMin = product?.VariantInfo?.PriceMin?.PriceFormatted != null ? product.VariantInfo.PriceMin.PriceFormatted : ""; 172 priceMax = product?.VariantInfo?.PriceMax?.PriceFormatted != null ? product.VariantInfo.PriceMax.PriceFormatted : ""; 173 } 174 if (priceMin != priceMax) 175 { 176 price = priceMin + " - " + priceMax; 177 } 178 <span class="@theme @contentPadding"> 179 <span class="text-price">@price.Replace(",00", "")</span> 180 </span> 181 } 182 } 183 184 @* Stock state for Schema.org, start *@ 185 @{ 186 Uri url = Dynamicweb.Context.Current.Request.Url; 187 } 188 189 <link itemprop="url" href="@url"> 190 191 @{ 192 bool IsNeverOutOfStock = product.NeverOutOfstock; 193 } 194 195 @if (IsNeverOutOfStock) 196 { 197 <span itemprop="availability" class="d-none">@Translate("Available in stock")</span> 198 } 199 else 200 { 201 if (product.StockLevel > 0) 202 { 203 <span itemprop="availability" class="d-none">InStock</span> 204 } 205 else 206 { 207 <span itemprop="availability" class="d-none">OutOfStock</span> 208 } 209 } 210 @* Stock state for Schema.org, stop *@ 211 212 </div> 213 214 @if (showPricesWithVat == "false" && !neverShowVat) 215 { 216 if (isLazyLoadingForProductInfoEnabled && !Pageview.IsVisualEditorMode) 217 { 218 <small class="opacity-85 fst-normal js-text-price-with-vat d-none" data-suffix="@Translate("Incl. VAT")"></small> 219 } 220 else 221 { 222 string price = !string.IsNullOrEmpty(unitId) ? product.GetPrice(unitId).Price.PriceWithVatFormatted : product.Price.PriceWithVatFormatted; 223 224 if (product?.VariantInfo?.VariantInfo != null) 225 { 226 priceMin = product?.VariantInfo?.PriceMin?.PriceWithVatFormatted != null ? product.VariantInfo.PriceMin.PriceWithVatFormatted : ""; 227 priceMax = product?.VariantInfo?.PriceMax?.PriceWithVatFormatted != null ? product.VariantInfo.PriceMax.PriceWithVatFormatted : ""; 228 } 229 if (priceMin != priceMax) 230 { 231 price = priceMin + " - " + priceMax; 232 } 233 <small class="opacity-85 fst-normal">@price @Translate("Incl. VAT")</small> 234 } 235 } 236 </div> 237 } 238 else if (Pageview.IsVisualEditorMode) 239 { 240 <div class="alert alert-dark m-0" role="alert"> 241 <span>@Translate("No products available")</span> 242 </div> 243 } 244
Fritt ut
Fritt ut
Runi Langum

Fritt ut

Litografi
kr 1 800 Available in stock
Surf
Surf
Runi Langum

Surf

Litografi
kr 900 Available in stock
Vending
Vending
Runi Langum

Vending

Litografi
kr 5 800 Available in stock
Det beste vi har
Det beste vi har
Runi Langum

Det beste vi har

Litografi
kr 9 000 Available in stock
Hed
Hed
Stephen Lawlor

Hed

Etsning
kr 1 600 Available in stock
Angsjon
Angsjon
Stephen Lawlor

Angsjon

Etsning
kr 1 600 Available in stock
A calm
A calm
Stephen Lawlor

A calm

Etsning
kr 3 800 Available in stock
St. George III
St. George III
Stephen Lawlor

St. George III

Etsning
kr 1 600 Available in stock
Tolkning
Tolkning
Stephen Lawlor

Tolkning

Etsning
kr 6 500 Available in stock
Uttersberg forest
Uttersberg forest
Stephen Lawlor

Uttersberg forest

Etsning
kr 2 000 Available in stock
St. George I
St. George I
Stephen Lawlor

St. George I

Etsning
kr 1 600 Available in stock
How long has it been
How long has it been
Stephen Lawlor

How long has it been

Etsning
kr 1 400 Available in stock
Was I awake or sleeping
Was I awake or sleeping
Stephen Lawlor

Was I awake or sleeping

Etsning
kr 2 400 Available in stock
Busted dream
Busted dream
Stephen Lawlor

Busted dream

Etsning
kr 3 800 Available in stock
Woman
Woman
Stephen Lawlor

Woman

Etsning
kr 2 900 Available in stock
And England's Dreaming
And England's Dreaming
Stephen Lawlor

And England's Dreaming

Etsning
kr 7 000 Available in stock
Meru
Meru
Stephen Lawlor

Meru

Etsning
kr 3 800 Available in stock
Two trees
Two trees
Stephen Lawlor

Two trees

Etsning
kr 1 600 Available in stock
Headland II
Headland II
Stephen Lawlor

Headland II

Etsning
kr 1 600 Available in stock
Memory
Memory
Stephen Lawlor

Memory

Etsning
kr 3 500 Available in stock
Study after Memling
Study after Memling
Stephen Lawlor

Study after Memling

Etsning
kr 3 800 Available in stock
Boundary
Boundary
Stephen Lawlor

Boundary

Etsning
kr 3 500 Available in stock
Birches
Birches
Stephen Lawlor

Birches

Etsning
kr 3 800 Available in stock
Night thoughts
Night thoughts
Stephen Lawlor

Night thoughts

Etsning
kr 3 500 Available in stock
Pilvikuva (Skybilde)
Pilvikuva (Skybilde)
Tuula Lehtinen

Pilvikuva (Skybilde)

kr 2 400 Available in stock
960 ut av 1760 produkter
Hent flere produkter
Ved å trykke på "Godta alle" godkjenner du at vi kan samle inn informasjon om deg til forskjellig bruk. F.eks funksjonalitet, statistikk og markedsføring