Атомный дизайн в Odoo с шаблонами QWeb - PullRequest
0 голосов
/ 22 октября 2018

Я проектирую веб-сайт в odoo 11.0 и хотел бы создать файл для некоторых элементов, который будет использоваться в нескольких представлениях, например, календарь, мне нужно создать файл, содержащий все элементы HTML для календаряи затем в каждом представлении, в котором мне нужно показать календарь, просто импортировали файл, в котором он содержится, то есть применили Atomic Design, но я искал и не смог его найти.

1 Ответ

0 голосов
/ 24 октября 2018

Чтобы создать файл для каждого элемента, который необходимо повторно использовать в другое время, необходимо создать файл с тегами <odoo>, <data> и <template>, как если бы это был общий вид, а затем импортировать его, используя <t t-call = "module.template_id"> </ t>, например, в моем случае мне нужно создать календарь со всеми элементами html и затем импортировать его в другие представления, для этого:

  1. Я создаю календарь .xml файл в папке my_module / views / share со следующим кодом:

    <?xml version="1.0" encoding="UTF-8"?>
    <odoo>
    <data>
    <template id="calendar">
    
        <!--HTML code-->
    
    </template>
    </data>
    </odoo>
    
  2. Я импортирую этот файл в модуль __ manifest__.py file

  3. , чтобы импортировать его в другое представление, используйте t-call, предположим, что мой модуль называется my_module , для импорта мы пишем:

    <odoo>
    <data>
    <template id="index_template">
        <t t-call="website.layout">
            <div id="wrap">
                <div class="container">
    
                    <!--=============importing calendar============-->
                    <t t-call="my_module.calendar">
                    </t>
    
                   <!--=============other HTML code============-->
    
                </div>
            </div>
        </t>
    </template>        
    </data>
    </odoo>
    

В случае, если импортируемое представление показывает динамические данные, например, мне нужно показать плакат типа: выберите дату для: 'event_type' где возможные значения: событие, вечеринка, бронирование и т. Д. .и что он примет значение в момент показа календаря, в файле календаря мы используем переменную, которая будет установлена ​​из представления, которое его импортирует, файл calendar.xml будет выглядеть следующим образом:

    <?xml version="1.0" encoding="UTF-8"?>
    <odoo>
    <data>
    <template id="calendar">
        <h1>Choose the date for the <t t-esc="event_type"/></h1>
        <!--HTML code-->

    </template>
    </data>
    </odoo>

В файле, который я импортирую, я должен установить значение для переменной ' event_type '. В этом случае будет отображаться: 'Выбратьдата для партии ', файл будет выглядеть следующим образом:

    <odoo>
    <data>
    <template id="index_template">
        <t t-call="website.layout">
            <div id="wrap">
                <div class="container">

                    <!--=============importing calendar============-->
                    <t t-call="my_module.calendar"> 
                       <t t-set="event_type">party</t>
                    </t>

                   <!--=============other HTML code============-->

                </div>
            </div>
        </t>
    </template>        
</data>
</odoo>

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...