2 Страницы12>
Подразделы вертикального меню
mishok Offline
#1 Оставлено : 16 апреля 2014 г. 18:20:29(UTC)
Ранг: Member

Группы: Registered
Зарегистрирован: 08.04.2014(UTC)
Сообщений: 18
Откуда: Москва

Сказал(а) «Спасибо»: 4 раз
Поблагодарили: 1 раз в 1 постах
Доброго времени суток!
Использую стандартное вертикальное меню из шаблона SimpleSite. Подскажите, пожалуйста, есть ли возможность сделать ссылки на подразделы такого вида:
.../каталог/имя_раздела/имя_подраздела. Сейчас они вида .../каталог/Имя_раздела или имя_позраздела. или для каждого раздела нужно создавать подстраницу?
Ella Offline
#2 Оставлено : 17 апреля 2014 г. 8:53:45(UTC)

Ранг: Advanced Member

Группы: Registered, Тестеры
Зарегистрирован: 07.05.2012(UTC)
Сообщений: 241
Откуда: Россия

Сказал(а) «Спасибо»: 25 раз
Поблагодарили: 66 раз в 61 постах
Не совсем поняла, что нужно получить в итоге Confused
Каталог - имеется в виду типа контента "Категории"? Разделы - это названия страниц или что-то из содержимого?
Можно подробнее (например "есть тип контента такой-то или есть страницы такие-то, нужно меню такое-то, с такой-то вложенностью...")...
mishok Offline
#3 Оставлено : 17 апреля 2014 г. 9:30:06(UTC)
Ранг: Member

Группы: Registered
Зарегистрирован: 08.04.2014(UTC)
Сообщений: 18
Откуда: Москва

Сказал(а) «Спасибо»: 4 раз
Поблагодарили: 1 раз в 1 постах
Доброе утро!
Извиняюсь за несколько скомканный вопрос в первом сообщении. Нужно меню типа категории с двумя уровнями, например:
Раздел1
  • подраздел1.1

  • подраздел1.2

  • ....

Раздел2
  • Подраздел2.1

  • Подраздел2.2

  • ....


соответственно, ссылки к подразделам должны быть вида \каталог\раздел\подраздел, а сейчас они каталог\подраздел
Ella Offline
#4 Оставлено : 17 апреля 2014 г. 9:41:09(UTC)

Ранг: Advanced Member

Группы: Registered, Тестеры
Зарегистрирован: 07.05.2012(UTC)
Сообщений: 241
Откуда: Россия

Сказал(а) «Спасибо»: 25 раз
Поблагодарили: 66 раз в 61 постах
А куда ведут ссылки? Т.е. подразделы - это разные страницы или это одна и та же страница, но с какими либо фильтрами (например список статей по категории или т.п.)
mishok Offline
#5 Оставлено : 17 апреля 2014 г. 10:09:34(UTC)
Ранг: Member

Группы: Registered
Зарегистрирован: 08.04.2014(UTC)
Сообщений: 18
Откуда: Москва

Сказал(а) «Спасибо»: 4 раз
Поблагодарили: 1 раз в 1 постах
Ella написал:
А куда ведут ссылки? Т.е. подразделы - это разные страницы или это одна и та же страница, но с какими либо фильтрами (например список статей по категории или т.п.)

Совершенно верно, в каждом подразделе находятся товары.
Я пытался сделать все на одной странице, как и в шаблоне SimpleSite на странице Articles, но при этом URL не такой как надоSad
Ella Offline
#6 Оставлено : 17 апреля 2014 г. 11:05:23(UTC)

Ранг: Advanced Member

Группы: Registered, Тестеры
Зарегистрирован: 07.05.2012(UTC)
Сообщений: 241
Откуда: Россия

Сказал(а) «Спасибо»: 25 раз
Поблагодарили: 66 раз в 61 постах
А ссылка вида "\каталог\раздел\" будет существовать?
Но вопрос я поняла, постараюсь чуть позже ответить, сейчас не успеваю сделать более развернутый ответ (скажу пока кратко, что это надо в настройках страницы параметры пути задать...)
mishok Offline
#7 Оставлено : 17 апреля 2014 г. 12:08:40(UTC)
Ранг: Member

Группы: Registered
Зарегистрирован: 08.04.2014(UTC)
Сообщений: 18
Откуда: Москва

Сказал(а) «Спасибо»: 4 раз
Поблагодарили: 1 раз в 1 постах
Ella написал:
А ссылка вида "\каталог\раздел\" будет существовать?

Да будет.
Ella Offline
#8 Оставлено : 18 апреля 2014 г. 9:40:15(UTC)

Ранг: Advanced Member

Группы: Registered, Тестеры
Зарегистрирован: 07.05.2012(UTC)
Сообщений: 241
Откуда: Россия

Сказал(а) «Спасибо»: 25 раз
Поблагодарили: 66 раз в 61 постах
Если я правильно поняла, мы рассматриваем пример на SampleSite, где папка Категории (Category) содержит иерархический контент. В соответствии с ним на странице списка статей формируется меню (а-ля фильтр статей по категориям).
Чтобы реализовать подобные ссылки, можно попробовать сделать в настройках страницы, где непосредственно будет фильтр по статьям (или другому содержимому) установить следующий параметр:
Настройки - Маршрут URL - Путь URL
По умолчанию, там установлен - {UserKey} (имеется в виду ключевое поле категории)
По заданию нам нужно два ключевых поля категории, т.е. можно написать так:
{UserKey1}/{UserKey2}
Или для удобства
{category}/{subcategory}

Это нужно, чтобы страница принимала на вход параметры категорий, адрес страницы будет таким: articles/category/subcategory
Теперь в представлении, где формируется меню по категориям, можно генерировать ссылки этого вида (через ту же рекурсию). А на странице списка формировать список в зависимости от параметров category и subcategory. Запрашиваются они также как любой параметр, через querystring:
@Page_Context.Current.PageRequestContext.AllQueryString["category"]
Пользователь Ella прикрепил следующие файлы:
articles category url.png (38kb) загружен 17 раз(а).

У Вас нет прав для просмотра или загрузки вложений. Попробуйте зарегистрироваться.
1 пользователь поблагодарил Ella за этот пост.
mishok оставлено 18.04.2014(UTC)
mishok Offline
#9 Оставлено : 18 апреля 2014 г. 10:30:54(UTC)
Ранг: Member

Группы: Registered
Зарегистрирован: 08.04.2014(UTC)
Сообщений: 18
Откуда: Москва

Сказал(а) «Спасибо»: 4 раз
Поблагодарили: 1 раз в 1 постах
Спасибо большое за помощь, попробую сделать так)
torment Offline
#10 Оставлено : 26 февраля 2016 г. 19:05:48(UTC)
Ранг: Member

Группы: Registered
Зарегистрирован: 25.02.2016(UTC)
Сообщений: 14

Сказал(а) «Спасибо»: 5 раз
У меня похожая ситуация. На примере рассматриваемой ситуации:

С вертикального меню я попадаю на "Подраздел 2"
Как мне получить все статьи этого подраздела?

В редакторе страницы "Подраздел 2" я указываю Правила Данных по аналогии с представлениями:
Тип содержимого categories
Фильтр содержимого И UserKey == {Подраздел-2}

Но на странице Раздел1/Подраздел 2 (точнее в представлении, которое на этой странице)
выводятся все данные, что есть. Без фильтрации.

В самом представлении я не могу указать "И UserKey == {Подраздел-2} " так как придется для каждого подраздела создавать свое представление.

То есть грубо говоря: как связать Страницу с Категориями?
mishok Offline
#11 Оставлено : 26 февраля 2016 г. 20:15:30(UTC)
Ранг: Member

Группы: Registered
Зарегистрирован: 08.04.2014(UTC)
Сообщений: 18
Откуда: Москва

Сказал(а) «Спасибо»: 4 раз
Поблагодарили: 1 раз в 1 постах
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 раз(а).

У Вас нет прав для просмотра или загрузки вложений. Попробуйте зарегистрироваться.
mishok Offline
#12 Оставлено : 26 февраля 2016 г. 20:30:39(UTC)
Ранг: Member

Группы: Registered
Зарегистрирован: 08.04.2014(UTC)
Сообщений: 18
Откуда: Москва

Сказал(а) «Спасибо»: 4 раз
Поблагодарили: 1 раз в 1 постах
ой, кажется я не про то)
делай на разных страницах, на одной плохо получается(
Пользователь mishok прикрепил следующие файлы:
Снимок.PNG (4kb) загружен 20 раз(а).

У Вас нет прав для просмотра или загрузки вложений. Попробуйте зарегистрироваться.
torment Offline
#13 Оставлено : 27 февраля 2016 г. 0:36:43(UTC)
Ранг: Member

Группы: Registered
Зарегистрирован: 25.02.2016(UTC)
Сообщений: 14

Сказал(а) «Спасибо»: 5 раз
Нет, правильно писал. Я на телефоне смотрел, но не успел вникнуть, а тут уже нету :) (но кажется в браузере осталось, нет возможности посмотреть)
У меня примерно так и сделано, в смысле страниц. Только как в представлении связать адрес страницы и категорию не понимаю.

Я Kooboo и Razor изучаю 3-й день. Может это глупый вопрос. Я на WebForm порядком пописал. Здесь все в роде тоже самое, но мозги видать надо маленько перестроить.
По сути логика такая: есть адрес: ./Citroen/C4 (в WebForm было бы ./Citroen.aspx?idModel=5&title=C4, я бы получил с QueryString idModel=5 и по id выбрал из базы все товары на Citroen/C4 )
Вот как тут программно или визардом привязать "C4" и категорию "C4" (можно перебрать все категории на предмет "C4", но завтра "тупой пользователь" переименует C4 (в названии страницы или в меню) в "С4 кабриолет" - по русски с пробелом)?
mishok Offline
#14 Оставлено : 27 февраля 2016 г. 12:59:29(UTC)
Ранг: Member

Группы: Registered
Зарегистрирован: 08.04.2014(UTC)
Сообщений: 18
Откуда: Москва

Сказал(а) «Спасибо»: 4 раз
Поблагодарили: 1 раз в 1 постах
torment написал:
Нет, правильно писал. Я на телефоне смотрел, но не успел вникнуть, а тут уже нету :) (но кажется в браузере осталось, нет возможности посмотреть)
У меня примерно так и сделано, в смысле страниц. Только как в представлении связать адрес страницы и категорию не понимаю.

Я Kooboo и Razor изучаю 3-й день. Может это глупый вопрос. Я на WebForm порядком пописал. Здесь все в роде тоже самое, но мозги видать надо маленько перестроить.
По сути логика такая: есть адрес: ./Citroen/C4 (в WebForm было бы ./Citroen.aspx?idModel=5&title=C4, я бы получил с QueryString idModel=5 и по id выбрал из базы все товары на Citroen/C4 )
Вот как тут программно или визардом привязать "C4" и категорию "C4" (можно перебрать все категории на предмет "C4", но завтра "тупой пользователь" переименует C4 (в названии страницы или в меню) в "С4 кабриолет" - по русски с пробелом)?

ну выбор по категориям прописывается в правилах данных
Пользователь mishok прикрепил следующие файлы:
Снимок.PNG (6kb) загружен 14 раз(а).

У Вас нет прав для просмотра или загрузки вложений. Попробуйте зарегистрироваться.
1 пользователь поблагодарил mishok за этот пост.
torment оставлено 29.02.2016(UTC)
torment Offline
#15 Оставлено : 29 февраля 2016 г. 17:05:11(UTC)
Ранг: Member

Группы: Registered
Зарегистрирован: 25.02.2016(UTC)
Сообщений: 14

Сказал(а) «Спасибо»: 5 раз
Нашел почему не работает: есть страница ./Citroen и страница ./Citroen/C4, так вот UserKey у ./Citroen/C4 - пустая строка. То есть ./Citroen/C4/C4 (второй раз С4) UserKey = "C4" и тогда все работает.
Таким образом надо на странице ./Citroen/C4 тоже указать:
Путь URL = {UserKey}
И по умолчанию UserKey = С4 (где С4 это одна из категорий Citroen)

Может кому-то поможет

P.S. mishok, твой скрин навел на мысль
torment Offline
#16 Оставлено : 1 марта 2016 г. 0:29:40(UTC)
Ранг: Member

Группы: Registered
Зарегистрирован: 25.02.2016(UTC)
Сообщений: 14

Сказал(а) «Спасибо»: 5 раз
Вопрос: а есть возможность добавить пункт основного меню, не создав при этом страницу? (применительно к моему примеру: на странице ./Citroen будет возможность использовать UserKey = C4, и не плодить одинаковых страниц )

то есть так как в скриншоте:
http://forum.kooboo-cms.ru/resource.ashx?i=43

А у меня сейчас: (прикреплено изображение)
Пользователь torment прикрепил следующие файлы:
category.png (12kb) загружен 11 раз(а).

У Вас нет прав для просмотра или загрузки вложений. Попробуйте зарегистрироваться.
mishok Offline
#17 Оставлено : 1 марта 2016 г. 10:51:23(UTC)
Ранг: Member

Группы: Registered
Зарегистрирован: 08.04.2014(UTC)
Сообщений: 18
Откуда: Москва

Сказал(а) «Спасибо»: 4 раз
Поблагодарили: 1 раз в 1 постах
torment написал:
Вопрос: а есть возможность добавить пункт основного меню, не создав при этом страницу? (применительно к моему примеру: на странице ./Citroen будет возможность использовать UserKey = C4, и не плодить одинаковых страниц )

то есть так как в скриншоте:
http://forum.kooboo-cms.ru/resource.ashx?i=43

А у меня сейчас: (прикреплено изображение)


Конечно есть. Советую посмотреть стандартный шаблон sample. Там все есть. Однлй ветки каталог/категория/подкатегория вполне достаточно.
AlexeiK Offline
#18 Оставлено : 1 марта 2016 г. 12:42:41(UTC)
Ранг: Advanced Member

Группы: Registered
Зарегистрирован: 12.09.2012(UTC)
Сообщений: 45

Поблагодарили: 14 раз в 9 постах
код формирования меню основан на страницах.
то есть за основу взята самая обычная и простая схема.
поэтому пункт можно добавить, просто зайдя в View которая содержит html для menu
и дописать туда свою ссылку.

А так как у тебя по сути все данные для страницы хранятся в базе данных.
То можно просто сформировать ссылки не по страницам, а по папке Каталог.


Цитата:
<div id="templatemo_menu">
                <ul>
                  @{int total =0;int counter=1;foreach (var item in MenuHelper.Top()){total++;}}
                  @foreach (var item in MenuHelper.Top())
                    {
                        if (item.Navigation.Show)
                            {        
                                <li><a href="@Url.FrontUrl().PageUrl(item.FullName)" class ='@(MenuHelper.IsCurrent(item) ? "current" : "") @(counter == total?"last" :"")' >@item.LinkText</a></li>
                           }
                      counter++;
                  }
                </ul>        
            </div> <!-- end of templatemo_menu -->

Вот это код, для обычного меню. Тут цикл бежит по страницам созданными в сайте.

ПОэтому создаем DataRule
по нужной папке по статьями.
Потом жмем кнопку C# у DataRules
и получаем скрипт для цикла
Цитата:
<ul  class="list">
    @foreach (var item in ViewBag.w){
    <li>
        <a class='title' href='@Url.FrontUrl().PageUrl("post/detail",new { UserKey = item.UserKey})'>@item.title</a>
    </li>
    }
</ul>

типа такого.
Остается только href заполнить по типу того, как он сделан для menu скрипта.
1 пользователь поблагодарил AlexeiK за этот пост.
torment оставлено 01.03.2016(UTC)
torment Offline
#19 Оставлено : 1 марта 2016 г. 12:49:45(UTC)
Ранг: Member

Группы: Registered
Зарегистрирован: 25.02.2016(UTC)
Сообщений: 14

Сказал(а) «Спасибо»: 5 раз
AlexeiK, спасибо. Об этом я не подумал. Так даже удобнее, так как не придется страницы добавлять и вообще в меню не лазить.
AlexeiK Offline
#20 Оставлено : 1 марта 2016 г. 13:01:45(UTC)
Ранг: Advanced Member

Группы: Registered
Зарегистрирован: 12.09.2012(UTC)
Сообщений: 45

Поблагодарили: 14 раз в 9 постах
Да, по сути все алгоритмы для html в своей основе, это варианты компоновки разных текстов.
Лента RSS  Лента Atom
Пользователи, просматривающие эту тему
Guest
2 Страницы12>
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.