Búsqueda de sitios web

javascript - Agregar una condicional a mustache/php


Considera:

<?php
/**
 * Single variation display
 *
 * This is a javascript-based template for single variations (see https://codex.wordpress.org/Javascript_Reference/wp.template).
 * The values will be dynamically replaced after selecting attributes.
 *
 * @see     https://docs.woocommerce.com/document/template-structure/
 * @author  WooThemes
 * @package WooCommerce/Templates
 * @version 2.5.0
 */
if ( ! defined( 'ABSPATH' ) ) {
    exit;
}
?>
<script type="text/template" id="tmpl-variation-template">
    <div class="woocommerce-variation-description">{{{ data.variation.variation_description }}}</div>

    <div class="woocommerce-variation-price">{{{ data.variation.price_html }}}</div>

    <div class="woocommerce-variation-availability">{{{ data.variation.availability_html }}}</div>

 <div class="woocommerce-variation-custom-text-field">
        GTIN: <span class="sku">{{{ data.variation.wccaf_gtin }}}</span>
    </div>

 <div class="woocommerce-variation-custom-text-field">
        MPN: <span class="sku">{{{ data.variation.wccaf_mpn }}}</span>
    </div>

</script>
<script type="text/template" id="tmpl-unavailable-variation-template">
    <p><?php _e( 'Sorry, this product is unavailable. Please choose a different combination.', 'woocommerce' ); ?></p>
</script>

¿Cómo implemento una condicional, de tal manera que SI {{{ data.variation.wccaf_gtin }}} devuelve un valor vacío/blank, ENTONCES mostrar "GTIN no disponible"?

Lo que he intentado:

He leído esto en la wiki:

Plantilla con etiqueta de sección:

{{#x}} Algún texto {{/x}} Aquí, cuando x es un valor booleano, entonces la etiqueta de sección actúa como una condicional if

Así que lo intenté

 <div class="woocommerce-variation-custom-text-field">
        GTIN: <span class="sku">{{#repo}}{{ data.variation.wccaf_gtin }}{{/repo}}{{^repo}}N/A{{/repo}}</span>
    </div>

lo cual no funciona.

Pero soy completamente nuevo en mustache y necesito algo de orientación.

Respuesta #1

Eso no es una plantilla Mustache, como señala el comentario, es una solución personalizada de WordPress wp.template.

No tiene ninguna etiqueta de lógica, pero tiene etiquetas de evaluación <# #>.

De una búsqueda rápida en Google, aquí hay un ejemplo de cómo escribirías un cheque usando ellos:

  <# if ( data.trueValue ) { #>
    <p> I am only output if <code>data.trueValue</code> is true.
  <# } #>

Vía https://lkwdwrd.com/wp-template-js-templates-wp

Respuesta #2

Según la documentación de Mustache

// if exist
{{#repo}}
  <b>{{name}}</b>        
{{/repo}}

// if not exist
{{^repo}}
  No repos :(
{{/repo}}

Puedes probar esto

<div class="woocommerce-variation-custom-text-field">
        GTIN: <span class="sku">{{#data.variation.wccaf_gtin}}{{ data.variation.wccaf_gtin }}{{/data.variation.wccaf_gtin}}{{^data.variation.wccaf_gtin}}N/A{{/data.variation.wccaf_gtin}}</span>
</div>