我正在 Odoo 9 上制作网站,扩展网站和网络模块,并创建自定义主题。我在我的网站标题中添加了一些页面,其中之一是登录页面,用户可以在其中登录我的网站。
我的问题是,当用户登录时,“登录”仍然存在,我希望将其更改为“我的个人资料”页面,以便用户处理其个人资料设置。
如何检查用户是否已登录并更改标题中的元素?
我正在 Odoo 9 上制作网站,扩展网站和网络模块,并创建自定义主题。我在我的网站标题中添加了一些页面,其中之一是登录页面,用户可以在其中登录我的网站。
我的问题是,当用户登录时,“登录”仍然存在,我希望将其更改为“我的个人资料”页面,以便用户处理其个人资料设置。
如何检查用户是否已登录并更改标题中的元素?
我的解决方案很像@SDBot 之一:
<template id="custom_header" inherit_id="website.layout" name="Custom Header">
<xpath expr="//div[@id='wrapwrap']/header" position="attributes">
<attribute name="id">my_header</attribute>
</xpath>
<xpath expr="//ul[@class='nav navbar-nav navbar-right']/li" position="before">
<t t-if="user_id.partner_id.name == 'Public user'">
<li>
<a href="/page/website.signin">
<span data-oe-model="website.menu" data-oe-id="3" data-oe-field="name" data-oe-type="char" data-oe-expression="submenu.name">SignUp</span>
</a>
</li>
</t>
<t t-if="not user_id.partner_id.name == 'Public user'">
<li>
<a href="/page/website.profile">
<span data-oe-model="website.menu" data-oe-id="3" data-oe-field="name" data-oe-type="char" data-oe-expression="submenu.name">My Profile</span>
</a>
</li>
</t>
</xpath>
</template>
网站模块不是已经有标志页了吗?无论如何,您可以继承 website.layout 来自定义网站菜单,试试这个:
<template id="custom_sign_in" customize_show="True" inherit_id="website.layout" name="Custom Sign In">
<xpath expr="//ul[@id='top_menu']" position="inside">
<li groups="base.group_public">
<a t-attf-href="/web/YourSignInPage">
<b>Custom Sign in</b>
</a>
</li>
<li t-if="website.user_id != user_id">
<a t-attf-href="/web/YourAccountPage">
<b>Custom Account</b>
</a>
</li>
</xpath>
</template>
我正在使用 odoo 8,不确定它是否适用于 odoo 9,如果它不起作用,请告诉我。