I'm new to the new umbraco grid functionality and I have a question about it.
I have a page with an article where I use the grid functionality to show some image and text besides that image. This is working fine.
In the properties of that page I have put a checkbox for saying that the article is for sale or not, when checked the product should automatically appear on a for sale page.
I can get the product that is for sale on that page, but now I also want to show the image and text on that page. I've created a List with a custom viewmodel to hold the content for every product that is for sale. The problem is with providing the JObject to the GetGridHtml function. This function wants a string and I'm providing the property which results in an error.
What is the best way to get the content for the grid to show on that separate page?
@inherits Umbraco.Web.Mvc.UmbracoTemplatePage
@{
var home = CurrentPage.Site();
List<ForSaleItemsViewModel> forSaleItemsVM = new List<ForSaleItemsViewModel>();
if(home.Children.Any())
{
foreach(var childPage in home.Children)
{
if(childPage.Children.Any())
{
foreach(var child in childPage.Children)
{
if(child.HasProperty("ForSale") && child.ForSale)
{
forSaleItemsVM.Add(new ForSaleItemsViewModel
{
ID = 1,
Content = child.Content,
Sold = child.Sold
});
}
}
}
}
}
}
<div class="container">
@foreach(var item in forSaleItemsVM)
{
if (item.Sold)
{
<span>SOLD!</span>
}
CurrentPage.GetGridHtml(item.Content.ToString(), "bootstrap3");
}
</div>
It says - There is no managed api to drill into the grid content and target specific cell content - so a grid layout is not a recommended storage of reusable content - it simply wasn't designed for this scenario. If you wish to reuse content in multiple pages, it is still recommended that you store these pieces of content as seperate content nodes, so they can be stored, cached and queried as usual.
Then the grid system is in fact just for editors to easily add content on specific places without the need of a developer. It is a nice system but then I cannot use it on my website, because several articles can be for sale and needs to be visible on the for sale page.
Also thanks for the links, I will read them trough.
Reuse umbraco grid with custom viewmodel
I'm new to the new umbraco grid functionality and I have a question about it.
I have a page with an article where I use the grid functionality to show some image and text besides that image. This is working fine.
In the properties of that page I have put a checkbox for saying that the article is for sale or not, when checked the product should automatically appear on a for sale page.
I can get the product that is for sale on that page, but now I also want to show the image and text on that page. I've created a List with a custom viewmodel to hold the content for every product that is for sale. The problem is with providing the JObject to the GetGridHtml function. This function wants a string and I'm providing the property which results in an error.
What is the best way to get the content for the grid to show on that separate page?
Hi Jurgen,
If you see the documentation for best pratices for the grid layout https://our.umbraco.org/Documentation/Using-Umbraco/Backoffice-Overview/Property-Editors/Built-in-Property-Editors-v7/Grid-Layout-Best-Practices there is a chapter about the limitations for the grid layout https://our.umbraco.org/Documentation/Using-Umbraco/Backoffice-Overview/Property-Editors/Built-in-Property-Editors-v7/Grid-Layout-Best-Practices#Limitations. And of the limitions of using the grid layout is that it´s not for reused content.
It says - There is no managed api to drill into the grid content and target specific cell content - so a grid layout is not a recommended storage of reusable content - it simply wasn't designed for this scenario. If you wish to reuse content in multiple pages, it is still recommended that you store these pieces of content as seperate content nodes, so they can be stored, cached and queried as usual.
/Dennis
Thanks for the answer Dennis.
Then the grid system is in fact just for editors to easily add content on specific places without the need of a developer. It is a nice system but then I cannot use it on my website, because several articles can be for sale and needs to be visible on the for sale page.
Also thanks for the links, I will read them trough.
is working on a reply...