Odoo 11.0 загружает css / scripts или что-то еще в <head>только при визуализации шаблона - PullRequest
0 голосов
/ 27 декабря 2018

Я застрял с этой проблемой.У меня было 2 разных модуля, которые по-разному думают, и всем двум нужен тег для Safari iOS WebApp для добавления веб-страницы в качестве собственного приложения:

<link rel="apple-touch-icon" href="ic_launcher-web.png"/>
<meta name="apple-mobile-web-app-title" content="Title"/>
<meta name="apple-mobile-web-app-capable" content="yes"/>

Но проблема в том, что все два загружаются, потому что я наследую сеть.assets_frontend и добавьте их в него, чтобы добавить их в <head></head>.

Можно ли динамически загружать ресурсы или ресурсы css и js?Что-то вроде ... загружать эти шаблоны, когда соответствующий шаблон веб-страниц обрабатывается контроллером?

Добавлять это только при отображении шаблона 1

<template id="for_app_1">    
    <link rel="apple-touch-icon" href="ic_launcher-web1.png"/>    
    <meta name="apple-mobile-web-app-title" content="Title 1"/>    
    <meta name="apple-mobile-web-app-capable" content="yes"/>
</template>

Добавлять только в шаблон 2отображается

<template id="for_app_2">    
    <link rel="apple-touch-icon" href="ic_launcher-web2.png"/>  
    <meta name="apple-mobile-web-app-title" content="Title 2"/>
    <meta name="apple-mobile-web-app-capable" content="yes"/>
</template>

1 Ответ

0 голосов
/ 28 декабря 2018

Я нашел решение в addons / web / views / webclient_templates.xml

Как вы можете видеть, они определяют <t t-set='head'>, а внутри него <t t-call-assets>, который вызывает шаблон с именем assets_common, определенныйвыше.

Таким образом, с этими t-set='head' и t-call-assest они помещают объявленные assets_common внутри головы только тогда, когда отображается шаблон web.login_layout!

<template id="web.login_layout" name="Login Layout">
        <t t-call="web.layout">
            <t t-set="html_data" t-value="{'style': 'height: 100%;'}"/>
            <t t-set="head">
                <t t-call-assets="web.assets_common" t-js="false"/>
                <t t-call-assets="web.assets_frontend" t-js="false"/>
                <t t-call-assets="web.assets_common" t-css="false"/>
                <t t-call-assets="web.assets_frontend" t-css="false"/>
            </t>
            <t t-set="body_classname" t-value="'container'"/>

            <div class="row">
                <div class="col-md-6 col-md-offset-3 o_database_list">
                    <div class="text-center">
                        <img t-attf-src="/web/binary/company_logo{{ '?dbname='+db if db else '' }}"/>
                    </div>
                    <t t-raw="0"/>
                    <div class="text-center" t-if="not disable_footer">
                        <t t-if="not disable_database_manager">
                            <a class="" href="/web/database/manager">Manage Databases</a> |
                        </t>
                        <a href="https://www.odoo.com" target="_blank">Powered by <span>Odoo</span></a>
                    </div>
                </div>
            </div>
        </t>
    </template>

Здесь web.assets_common, где ониобъявите все css и javascript, которые полезны для шаблона login_layout.

<template id="web.assets_common" name="Common Assets (used in backend interface and website)">
        <t t-call="web.less_helpers"/>

        <link rel="stylesheet" type="text/css" href="/web/static/lib/jquery.ui/jquery-ui.css"/>
        <link rel="stylesheet" type="text/css" href="/web/static/lib/fontawesome/css/font-awesome.css"/>
        <link rel="stylesheet" type="text/less" href="/web/static/lib/bootstrap-datetimepicker/src/less/_bootstrap-datetimepicker.less"/>
        <link rel="stylesheet" type="text/css" href="/web/static/lib/select2/select2.css"/>
        <link rel="stylesheet" type="text/css" href="/web/static/lib/select2-bootstrap-css/select2-bootstrap.css"/>

        <link rel="stylesheet" type="text/less" href="/web/static/src/less/fonts.less"/>
        <link rel="stylesheet" type="text/less" href="/web/static/src/less/navbar.less"/>
        <link rel="stylesheet" type="text/less" href="/web/static/src/less/mimetypes.less"/>
        <link rel="stylesheet" type="text/less" href="/web/static/src/less/modal.less"/>
        <link rel="stylesheet" type="text/less" href="/web/static/src/less/animation.less"/>
        <link rel="stylesheet" type="text/less" href="/web/static/src/less/rainbow.less"/>
        <link rel="stylesheet" type="text/less" href="/web/static/src/less/datepicker.less"/>
<!-- And ore stuffs -->
</template>

Так что, если вам нужны некоторые определенные ресурсы, загруженные только в конкретный шаблон, вы можете просто установить их внутри определенных в верхних элементах внутри шаблона ивнутри него вызовите шаблон с нужными вам активами.

Ссылка: https://www.odoo.com/documentation/11.0/reference/javascript_reference.html#assets-management

...