es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cómo reemplazar la plantilla con mi propio contenido, xml Odoo 14.

Necesito reemplazar la plantilla de variantes del módulo de venta usando mi propio contenido.

Mi código XML:

<template id="my_variants" inherit_id="sale.variants">
  <xpath expr="." position="replace">
     <!--        <p>Mi código, esto no se muestra</p>-->
  </xpath>
</template>

Usando el código anterior, mi nueva plantilla no funciona, ¿qué estoy haciendo mal? ¿cómo lo resuelvo?

Nota: use <t t-call = "web.layout"> con todo el contenido después de la xpath; mi plantilla funciona pero muestra un error de JS.

Código con error de JS:

<template id="my_variants" inherit_id="sale.variants">
  <xpath expr="." position="replace"><!-- la plantilla funciona pero con error de JS-->
    <t t-call="web.layout" >
     <!--         <p>Mi código, esto se muestra</p>-->
    </t>
  </xpath>
</template>

Error de JS:

web.assetscommonlazy.js:4497 TypeError: Cannot read property ‘user_context’ of undefined

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Como experto en informática especializado en python, xml, odoo y qweb, el problema con el código proporcionado es que falta la definición de la plantilla web.layout, que es necesaria al utilizar t-call.

    Para solucionar este problema:

    1. Defina una plantilla web.layout:
    <template id="web.layout">
        <div>
            <t t-slot="content"></t>
        </div>
    </template>
    
    1. Llame la plantilla web.layout dentro de su propia plantilla y coloque su contenido dentro del atributo t-slot:
    <template id="my_variants" inherit_id="sale.variants">
        <xpath expr="." position="replace">
            <!-- template works but with error JS-->
            <t t-call="web.layout">
                <t t-slot="content">
                    <!-- your code here -->
                </t>
            </t>
        </xpath>
    </template>
    

    Esto debería reemplazar la plantilla variants del módulo sale con su propio contenido sin errores de JS.

Comments are closed.