torment написал:У меня похожая ситуация. На примере рассматриваемой ситуации:
С вертикального меню я попадаю на "Подраздел 2"
Как мне получить все статьи этого подраздела?
В редакторе страницы "Подраздел 2" я указываю Правила Данных по аналогии с представлениями:
Тип содержимого categories
Фильтр содержимого И UserKey == {Подраздел-2}
Но на странице Раздел1/Подраздел 2 (точнее в представлении, которое на этой странице)
выводятся все данные, что есть. Без фильтрации.
В самом представлении я не могу указать "И UserKey == {Подраздел-2} " так как придется для каждого подраздела создавать свое представление.
То есть грубо говоря: как связать Страницу с Категориями?
вот пример кода с разделами и подразделами:
@using Kooboo.CMS.Content.Models
//Функция вытаскивающая дочерние объекты (она есть в примере kooboo)
@functions{
IEnumerable<TextContent> GetChildContents(string parentUUID)
{
var all = (TextContent[])ViewBag.MenuCategories;
return all.Where(it => (it["ParentUUID"] ==null && null == parentUUID) || (it["ParentUUID"] !=null && it["ParentUUID"].ToString() == parentUUID) );
}
}
<a href="@Url.FrontUrl().PageUrl("catalog")"><h2>Товары и услуги</h2></a>
<div class="panel-group category-products" id="accordian"><!--category-productsr-->
@foreach (dynamic item in GetChildContents(null)){
int count = 0;
// проверяем на наличие дочерних объектов (может не совсем верно, но я по другому пока не нашел как)
foreach (dynamic childItem in GetChildContents(item.UUID))
{
count++;
}
// если есть дочерние объекты, count != 0, следовательно выводим блок с дочерними объектами
if (count !=0)
{
<div class="panel panel-default">
<div class="panel-heading">
<h4 class="panel-title">
<a data-toggle="collapse" data-parent="#accordian" href="#@item.Id">
<span class="badge pull-right"><i class="fa fa-plus"></i></span>
@item.Title
</a>
</h4>
</div>
<div id="@item.Id" class="panel-collapse collapse">
<div class="panel-body">
<ul>
//цикл выводит дочерние объекты
@foreach (dynamic childItem in GetChildContents(item.UUID))
{
<li><a href="@Url.FrontUrl().PageUrl("catalog/category" ,new { category = item.Link, subcategory = childItem.Link })">@childItem.Title</a></li>
}
</ul>
</div>
</div>
</div>
}
// если дочерних объектов нет, то выводится ссылка на раздел каталога
else
{
<div class="panel panel-default">
<div class="panel-heading">
<h4 class="panel-title"><a href="@Url.FrontUrl().PageUrl("catalog",new { category = item.Link })">@item.Title</a></h4>
</div>
</div>
}
}
</div><!--/category-products-->
должны быть страницы catalog/category/subcategory (хотя subcategory, наверное, можно не использовать)
в настройках URL на страницах category и subcategory заполняем путь URL и значение ключа по умолчанию, как выше написала Элла:
Настройки - Маршрут URL - Путь URL
По умолчанию, там установлен - {UserKey} (имеется в виду ключевое поле категории)
По заданию нам нужно два ключевых поля категории, т.е. можно написать так:
{UserKey1}/{UserKey2}
Или для удобства
{category}/{subcategory}
Сохраняешь, мотом ставишь * в альтернативное имя.
пример этого меню можешь посмотреть на starprint.sevenit.ru
Пользователь mishok прикрепил следующие файлы:
Снимок.PNG
(26kb) загружен 2 раз(а).У Вас нет прав для просмотра или загрузки вложений. Попробуйте зарегистрироваться.