在odoo

时间:2015-05-04 13:30:33

标签: odoo odoo-8

我尝试将图标设置为menuitem,因此我发现支持属性图标,但是当我更改其值时没有发生变化。

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

修改

我尝试在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>

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

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

我尝试使用menuitem的图标属性,即使它已被弃用,但菜单[&#39;图标&#39;]在模板级别无法识别。

请提出任何建议?

2 个答案:

答案 0 :(得分:0)

不推荐在菜单项中显示图标的AFAIK,但在Web客户端上不起作用。可能需要为Web客户端创建一个模块,以便使用该功能扩展它。

答案 1 :(得分:0)

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

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

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

如果添加更多图标集,这很好,您无需再次修改模板。 但是,如果您想强制使用超棒的字体,或者想使用另一个像超棒的实体的图标集(使用fas类),则可以在模板中使用以下标记:

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

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

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