как ограничить видимость контента сайта группой odoo 13

У меня есть контент на веб-сайте, который является частью подписки. на основе подписки я добавлю пользователя в группу, как показывать контент на основе группы на домашней странице

также, чтобы скрыть какую-то часть страницы - это пользователь (логин)

мой код

  <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>
      <attribute name="group">base.group_public</attribute>
    </xpath>
  </template>

person Moaz Mabrok    schedule 20.06.2020    source источник
comment
чтобы отобразить элемент в соответствии с группой, просто добавьте groups = module.group_name внутри тега xml, примерно так: ‹th groups = product.group_uom› UoM ‹/th›   -  person m0r7y    schedule 20.06.2020
comment
Чтобы проверить, вошел ли пользователь в систему, используйте этот собственный метод user_id._is_public (), он возвращает True, если пользователь не вошел в систему.   -  person m0r7y    schedule 20.06.2020
comment
mabrok, дайте мне знать, работает ли он, и я опубликую его как решение   -  person m0r7y    schedule 21.06.2020
comment
@ m0r7y извините за поздний ответ Я попробовал, но это не сработало Я использовал groups="base.group_public", чтобы показать панель навигации только для общедоступных пользователей и показать другую для вошедшего в систему пользователя, но не знал, как использовать "user_id._is_public()"   -  person Moaz Mabrok    schedule 03.07.2020
comment
Вы можете посмотреть этот addons / portal / views / portal_templates.xml, чтобы увидеть, как работает user_id._is_public ()   -  person m0r7y    schedule 03.07.2020
comment
@ m0r7y Я добавил код для своего group попробовал вас groups="product.group_uom", и он работает, но не groups="base.group_public"   -  person Moaz Mabrok    schedule 03.07.2020
comment
Я думаю, вы можете заменить base.group_public методом is_public (),   -  person m0r7y    schedule 03.07.2020
comment
может "user_id._is_public()" использоваться, чтобы скрыть элементы навигации, когда пользователь вошел в систему   -  person Moaz Mabrok    schedule 03.07.2020
comment
Конечно, в этом суть метода   -  person m0r7y    schedule 03.07.2020
comment
@ m0r7y ‹attribute name = t-if› user_id._is_public () ‹/attribute› он работает, спасибо, его можно использовать с именами групп, как t-if="not user_id.product.group_uom" что-то вроде этого   -  person Moaz Mabrok    schedule 03.07.2020
comment
@ m0r7y Это хакерский способ обойти этот вопрос https://stackoverflow.com/questions/62604027/how-to-create-a-custom-template-for-the-website-navigation-odoo-13, за который я добавил награду, и никто не хочет на него отвечать, спасибо большое, это спасатель жизни   -  person Moaz Mabrok    schedule 03.07.2020
comment
не могли бы вы подтвердить мой ответ, спасибо.   -  person m0r7y    schedule 03.07.2020
comment
Отвечаю за оба поста. Вы можете подтвердить два или один пост и настроить его на дублирование. Рад помочь вам.   -  person m0r7y    schedule 03.07.2020


Ответы (1)


Сделать это можно так же, как в addons / portal / views / portal_templates.xml.

                <div class="collapse navbar-collapse" id="top_menu_collapse">
                    <ul class="nav navbar-nav ml-auto text-right" id="top_menu">
                        <li class="nav-item divider" t-ignore="true" t-if="not user_id._is_public()"/>
                        <li class="nav-item dropdown" t-ignore="true" t-if="not user_id._is_public()">
                            <a href="#" class="nav-link dropdown-toggle" data-toggle="dropdown">
                                <b>
                                    <span t-esc="user_id.name[:23] + '...' if user_id.name and len(user_id.name) &gt; 25 else user_id.name"/>
                                </b>
                            </a>
                            <div class="dropdown-menu js_usermenu" role="menu">
                                <a id="o_logout" class="dropdown-item" t-attf-href="/web/session/logout?redirect=/" role="menuitem">Logout</a>
                            </div>
                        </li>
                    </ul>
                </div>

метод _is_public () возвращает True, если пользователь не вошел в систему иначе false

person m0r7y    schedule 03.07.2020
comment
Я работаю как оператор if, могу ли я использовать его так t-if="not user_id.product.group_uom" - person Moaz Mabrok; 03.07.2020
comment
@MoazMabrok, если хочешь поиграть с группой, надо сделать что-то вроде этого: t-if = request.env.user.has_group ('product.group_uom') - person m0r7y; 03.07.2020
comment
использование этого подразумевает, что пользователь подключен - person m0r7y; 03.07.2020
comment
значит, 1 ›есть пользователь 2› этот пользователь находится в product.group_uom - person Moaz Mabrok; 03.07.2020
comment
Я подтверждаю оба, хотя они могут быть решены этим методом, это разные вопросы, и, как я уже сказал, это хакерский метод для другого вопроса, поэтому, если никто не ответит на другой, я подтвердю ваш, можете ли вы объяснить в другом вопросе, что это обходной путь спасибо за вашу помощь - person Moaz Mabrok; 03.07.2020