Добавление иконок в пункты меню в odoo

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

Я хочу знать, поддерживается ли он по-прежнему элементом меню в odoo v7 / 8. Если нет, как добавить значок в пункт меню?

Изменить:

Пытаюсь настроить вид меню в odoo. Поэтому я переопределяю шаблон, отображающий меню в "webClient_templates.xml" из веб-модуля следующим образом:

<template id="my_menu_link" inherit_id="web.menu_link">
  <span position="replace">
     <span class="oe_menu_text">
        <i class="fa fa-check"></i>
        <t t-esc="menu['name']"/>
     </span>
  </span>
</template>

Вероятно, все пункты меню будут иметь одинаковый значок (например, fa-check) из библиотеки font-awesome. Теперь я пытаюсь добавить определенный значок для каждого элемента меню, чтобы я мог каким-то образом определить его в XML-описании элемента меню как своего рода атрибут или что-то еще, и получить его следующим образом:

<i t-attrs-class="menu['icon']"></i>

Я попытался использовать атрибут значка элемента меню, даже если он устарел, но меню ['значок'] не распознается на уровне шаблона.

Пожалуйста, какие-нибудь предложения?


person iouhammi    schedule 04.05.2015    source источник
comment
Что вы на самом деле сделали для решения своей проблемы? Вы читали документацию?   -  person Ron    schedule 04.05.2015
comment
Собственно, я расширил шаблоны web.menu и web.menu_secondary в webclientTemplate из веб-модуля и настроил отображение элементов меню.   -  person iouhammi    schedule 06.05.2015
comment
Я не знаю, остался ли этот вопрос без ответа, но сейчас я использую odoo-12, а поле значка все еще находится в модели ir.ui.menu, но точное имя - web_icon, так что вы пытались войти в разработчик режим, чтобы увидеть имя поля? Может <i t-attrs-class="menu['web_icon']"></i> работает ... (не пробовал)   -  person Thomas Di G    schedule 07.03.2020


Ответы (2)


AFAIK, отображающий значки в пунктах меню, устарел и не работает в веб-клиенте. Вероятно, для этого вам нужно будет создать модуль для веб-клиента, расширяющий его с помощью этой возможности.

person Daniel Reis    schedule 04.05.2015
comment
Это именно то, что я сделал. Собственно, я расширил шаблоны web.menu и web.menu_secondary в webclientTemplate из веб-модуля и настроил отображение элементов меню. Но я заблокирован тем, как динамически получать дополнительную информацию из файла xml. Я имею в виду, что если я хочу получить информацию о значке из объявления xml элемента menuitem, любой дополнительный атрибут (например, class ...) не принимается, поэтому я не могу определить свой значок из xml, даже если я переопределю отображение. Любая идея в этом случае, пожалуйста? - person iouhammi; 06.05.2015
comment
Вы должны написать вопрос, объясняя, что вы пробовали и где именно вас заблокировали ... - person Daniel Reis; 06.05.2015

Сейчас я использую odoo v12, а на модели ir.ui.menu есть неиспользуемое поле для значков.

Мне удалось показать значки в меню бэкэнда, вот разница с вашим кодом:

  • Поле значка называется web_icon, оно может быть специфическим для v10 +, у меня нет v8, чтобы это проверить.
  • Синтаксис шаблонов для установки атрибутов - t-att-<name>, а не t-attrs-<name>.
  • И самое главное: меню в бэкэнде генерируются с использованием javascript, поэтому шаблоны, которые нужно изменить, нужно найти в web/static/src/xml/menu.xml
  • There are 3 places to add an <i> markup in 2 templates:
    • <t t-name="Menu.link">
      • Line 47: <span><i t-att-class="menu.web_icon"></i> <t t-esc="menu.name"/></span>
      • Строка 59: <span><i t-att-class="menu.web_icon"></i> <t t-esc="menu.name"/></span>
    • <t t-name="Menu.sections">
      • Line 81: <i t-att-class="second_level_menu.web_icon"></i> <t t-esc="second_level_menu.name"/>

Данные, которые нужно установить в поле значка меню, - это все классы CSS с потрясающим шрифтом:
fa fa-check

Это хорошо, если вы добавите дополнительные наборы значков, вам не нужно будет снова изменять шаблоны. Но если вы хотите принудительно использовать font-awesome или хотите использовать другой набор значков, например font-awesome solid (с использованием класса fas), вы можете использовать эту разметку в шаблонах:

<i t-attf-class="fas fa-#{menu.web_icon}"></i>
(обратите внимание t-attf-<name> на использование «функции атрибута»)

И так данные в поле будут только _15 _...

И, наконец, лучше всего создать модуль для наследования шаблонов и внести эту модификацию, чтобы не изменять его напрямую, как это сделал я ...
А также добавить еще несколько стилей CSS для правильного выравнивания значка и текста (здесь значки не такого же размера).

person Thomas Di G    schedule 08.03.2020