Обзор
В моем проекте django cms (v3.7.3) у меня есть файл cms_toolbars.py с простым элементом тестового меню. cms_toolbars.py
from cms.toolbar_base import CMSToolbar
from cms.toolbar_pool import toolbar_pool
class TestMenu(CMSToolbar):
def populate(self):
self.toolbar.get_or_create_menu(
key='test_menu',
verbose_name='Test Menu',
)
toolbar_pool.register(TestMenu)
Это, очевидно, простой пример, который отлично работает. Мой новый пункт «Тестовое меню» отображается на панели инструментов cms слева рядом с пунктом меню «Страница».
Проблема
Позже я решил, что хочу, чтобы мой новый пункт «Тестовое меню» отображался в правой части панели инструментов. Итак, я изменил свой cms_toolbars.py на это: cms_toolbars.py - с дополнительным боковым параметром
from cms.toolbar_base import CMSToolbar
from cms.toolbar_pool import toolbar_pool
class TestMenu(CMSToolbar):
def populate(self):
self.toolbar.get_or_create_menu(
key='test_menu',
verbose_name='Test Menu',
side=self.toolbar.RIGHT,
)
toolbar_pool.register(TestMenu)
После перезапуска локального сервера «Тестовое меню» теперь отображается в правой части панели инструментов cms, но html / css потому что это испортилось. После проверки html в моем браузере я обнаружил, что есть два блока div для левого и правого пунктов меню: <div class="cms-toolbar-left">
и <div class="cms-toolbar-right">
. Проблема заключается в том, что для div cms-toolbar-right нет элемента <ul>
- только элемент <li>
моего «Тестового меню» отображается под div
Затем я решил взглянуть на код django -cms и заметил, что <div class="cms-toolbar-right">
даже не имеет элемента <ul>
с необходимыми классами панели инструментов, такими как <div class="cms-toolbar-left">
:
<div class="cms-toolbar-left">
...
<ul class="cms-toolbar-item cms-toolbar-item-navigation">
{% for item in cms_toolbar.get_left_items %}
{{ item.render }}
{% endfor %}
</ul>
...
</div>
<div class="cms-toolbar-right">
{% for item in cms_toolbar.get_right_items %}
{{ item.render }}
{% endfor %}
</div>
Вы можете увидеть полный django -cms html файл здесь
Вопрос
Кто-нибудь еще сталкивался с этой проблемой раньше? Если да, то как вы устранили проблему? Мне не хватает чего-то еще, что требуется для добавления пунктов меню в правой части? Также возможно, что это ошибка django -cms, но я решил, что сначала поставлю здесь проблему / вопрос на всякий случай.