2

我尝试将一个图标设置为menuitem,所以我发现属性图标是支持的,但是当我改变它的值时没有发生任何变化。

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

编辑:

我尝试在 odoo 中自定义菜单的视图。因此,我覆盖了在 Web 模块中呈现“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>

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

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

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

请问有什么建议吗?

4

2 回答 2

0

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

于 2015-05-04T15:34:08.957 回答
0

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

我设法在后端菜单上显示图标,以下是您的代码的区别:

  • 图标字段名为web_icon,它可能特定于 v10+ ,我没有 v8 来验证这一点。
  • 设置属性的模板语法是t-att-<name>而不是t-attrs-<name>
  • 最重要的是:后端的菜单是使用javascript生成的,所以要修改的模板是在web/static/src/xml/menu.xml
  • 有 3 个地方可以<i>在 2 个模板中添加标记:
    • <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 类:
fa fa-check

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

<i t-attf-class="fas fa-#{menu.web_icon}"></i>
(注意t-attf-<name>使用“属性函数”)

因此,该领域的数据将只有check......

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

于 2020-03-08T12:08:27.087 回答