将图标添加到odoo中的菜单项

Adding icons to menu items in odoo

我尝试给menuitem设置一个图标,结果发现支持属性icon,但是改值后没有变化。

我想知道odoo中的menuitem是否还支持它v7/8。如果没有,如何给菜单项添加图标?

编辑:

我尝试在 odoo 中自定义菜单的视图。所以我重写了在 "webClient_templates.xml" 中从 web 模块呈现菜单的模板,如下所示:

<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>

很可能,所有菜单项都将具有来自 font-awesome 库的相同图标(即 fa-check)。 现在,我尝试为每个菜单项添加一个特定的图标,我可以在菜单项的 xml 描述中以某种方式将其定义为一种属性或其他任何东西,并像这样检索它:

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

我尝试使用 menuitem 的 icon 属性,即使它已被弃用,但菜单 ['icon'] 在模板级别无法识别。

有什么建议吗?

AFAIK 在菜单项中显示图标已被弃用,并且在网络客户端上不起作用。可能要实现这一点,您需要为 Web 客户端创建一个模块以扩展它的功能。

我现在使用的是odoo v12,ir.ui.menu型号上还有一个未使用的图标字段。

我设法在后端菜单上显示图标,这是与您的代码的不同之处:

  • 图标字段名为web_icon,可能是v10+特有的,我没有v8可以验证。
  • 设置属性的模板语法是t-att-<name>而不是t-attrs-<name>
  • 最重要的是:后台的菜单是使用javascript生成的,所以要修改的模板在web/static/src/xml/menu.xml
  • 中找到
  • 在 2 个模板中有 3 个地方可以添加 <i> 标记:
    • <t t-name="Menu.link">
      • 第 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">
      • 第 81 行:<i t-att-class="second_level_menu.web_icon"></i> <t t-esc="second_level_menu.name"/>

要在菜单的图标字段中设置的数据是整个字体真棒 CSS classes:
fa fa-check

如果你添加更多的图标集就好了,你不需要再次修改模板。 但是如果你想强制使用 font-awesome,或者想使用另一个图标集,比如 font-awesome solid(使用 fas class),你可以在模板中使用这个标记:

<i t-attf-class="fas fa-#{menu.web_icon}"></i>
(注意t-attf-<name>使用"attribute function")

因此该字段中的数据将仅为 check...

最后,最好的应该是创建一个模块来继承模板并进行此修改,而不是像我那样直接修改它...
并添加更多 CSS 样式以正确对齐图标和文本(此处图标大小不同)。