Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

Already on GitHub? Sign in to your account

Exception при вложенных меню #40

Closed
Uznick opened this Issue Dec 12, 2011 · 8 comments

Comments

Projects
None yet
2 participants

Uznick commented Dec 12, 2011

Есть проблема:
Структура:
index.html:
{% sitetree_menu from "main_menu" include "trunk" template "sitetree/top_menu.html" %} -- главное меню
sitetree/top_menu.html:
{% sitetree_children of item for menu template "sitetree/top_child.html" %}
sitetree/top_child.html:
{% sitetree_menu from "main_menu" include "this-siblings" template "sitetree/secondlevel_menu.html" %}

На выходе получаем:
Caught SiteTreeError while rendering: Sitetree needs "django.core.context_processors.request" to be in TEMPLATE_CONTEXT_PROCESSORS in your settings file. If it is, check that your view pushes request data into the template.

Похоже, что при такой вложенности в последнее меню не проваливается контекст :(

Owner

idlesign commented Dec 13, 2011

Возможно и не проваливается %)
Какой функциональности хотите достичь такой вложенностью?

Uznick commented Dec 13, 2011

Древовидное меню:

<div class="mainNavigation">
    <ul class="firstLevel">
        <li class="current first">
            <a href="#">О компании</a>
            <div class="subNavigation">
                <ul class="secondLevel">
                    <li class="current"><span>Услуги</span></li>
                    <li><a href="#">Новости</a></li>
                    <li><a href="#">Статьи</a></li>
                </ul>
            </div>
        </li>
        <li class="second"><a href="#">Пункт 2</a></li>
        <li class="third"><a href="#">Пункт 3</a></li>
        <li class="fourth"><a href="#">П4</a></li>
    </ul>
</div>

Рендерится меню структуры

"Корень"
    "О компании"
        "Услуги"
        "Новости"
    "Пункт 2"
    "Пункт 3"
    "Пункт 4"

Соответственно, на странице "Услуги" рендерится меню вышепоказанной структуры :)

Owner

idlesign commented Dec 13, 2011

Я, похоже, чего-то не уловил: если на странице "Услуги" должна выводится та же структура, что и на прочих, то зачем плясать с "this-siblings"?

По задумке "sitetree_children" должен рекурсивно вызывать один и тот же шаблон, отрисовывая всё новых детей (как в шаблонах из комплекта). Таким образом, добро типа

{% sitetree_menu from "main_menu" include "this-siblings" template "sitetree/secondlevel_menu.html" %}

имеет смысл пихать не внутрь шаблонов sitetree, а на то место на странице, где нужно вывести эту часть меню.

Uznick commented Dec 13, 2011

На странице "услуги" выводится дерево 2 уровня + дерево 3 детей "О компании"
У пунктов 2,3,4 есть свои подпункты.

Поэтому в каждый момент времени должно выходить полностью всё дерево меню 2 уровня с одной развернутой веткой текущего раздела, поэтому кроме как внутрь sitetree я не нашел куда это запихать, чтобы оно кошерно отрендерилось средствами sitetree же :)

Owner

idlesign commented Dec 13, 2011

Эвона, понял. Спасибо. Вечерком подумаю как обойти.

Owner

idlesign commented Dec 13, 2011

Контекст проброшен, можно пробовать.

Uznick commented Dec 13, 2011

Похоже, всё отлично. Спасибо за оперативность! :)

@pws21 pws21 added a commit to pws21/django-sitetree that referenced this issue Dec 13, 2011

@idlesign @pws21 idlesign + pws21 Global template context is now passed down all sitetree-related templ…
…ates (see #39, see #40).
6a4643e
Owner

idlesign commented Dec 15, 2011

Ну, раз работает, то закрываю.

@idlesign idlesign closed this Dec 15, 2011

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment