Jump to content

Problemas con eventos JS en archivos TPL


Recommended Posts

Hola, buenas tardes. Tengo un problema en mi sitio web, especificamente en la sección de los productos. Yo he agregado un pequeño bloque de html dentro del archivo "product-prices.tpl"; que se encuentra en la siguiente ruta de archivos: "energytec.es>;public_html>themes>warehouse>templates>catalog>_partials>product-prices.tpl";. Este bloque que he agregado, es para poder mostrar información sobre la opción de financiación que ofrceemos. Lo que quiero mostrar se ve perfectamente, el problema está en que esta sección se repite en pantalla cada vez que el usuario hace click en alguna opción del producto, por ejemplo, al cambiar la cantidad de pruductos o al darle al botón de agregar al carrito. Parece que esta tomando algún evento JavaScript que yo no he agregado. El bloque de código que yo agregué es un div que tiene como clase = "financiacion" dentro del archivo que les mencioné, se encuentra al final del código. Podrían ayudarme? Les adjunto de lo que ocurre en la web y a continuación el código del archivo tpl:

<div class="bloque-producto">
    <div class="product-prices js-product-prices" style="float:left;">

        {block name='product_reference'}
            {if $iqitTheme.pp_reference == 'title'}
            {if isset($product.reference_to_display) && $product.reference_to_display neq ''}
                <div class="product-reference">
                    <label class="label">{l s='Reference' d='Shop.Theme.Catalog'} </label>
                    <span>{$product.reference_to_display}</span>
                </div>
            {/if}
            {/if}
        {/block}


        {if $product.show_price}

        {if !$configuration.is_catalog}
            {block name='product_availability'}
                {if $product.show_availability && $product.availability_message}
                    <span id="product-availability"
                          class="js-product-availability badge {if $product.availability == 'available'} {if $product.quantity <= 0  && !$product.allow_oosp} badge-danger product-unavailable  {elseif $product.quantity <= 0  && $product.allow_oosp}badge-warning product-unavailable-allow-oosp {else}badge-success product-available{/if}{elseif $product.availability == 'last_remaining_items'}badge-warning product-last-items{else}badge-danger product-unavailable{/if}">
                  {if $product.availability == 'available'}
                      <i class="fa fa-check rtl-no-flip" aria-hidden="true"></i>
                                                     {$product.availability_message}
                  {elseif $product.availability == 'last_remaining_items'}
                      <i class="fa fa-exclamation" aria-hidden="true"></i>
                                                     {$product.availability_message}
                  {else}
                      <i class="fa fa-ban" aria-hidden="true"></i>
                              {$product.availability_message}
                      {if isset($product.available_date) && $product.available_date != '0000-00-00'}
                      {if $product.available_date|strtotime > $smarty.now}<span
                              class="available-date"> - {l s='Availability date:' d='Shop.Theme.Catalog'} {$product.available_date}</span>{/if}
                  {/if}
                  {/if}
                </span>
                {/if}
            {/block}
        {/if}


        {block name='product_price'}
            <div class="{if $product.has_discount}has-discount{/if}">

                <div>
                    <span class="current-price"><span class="product-price current-price-value" content="{$product.rounded_display_price}">
                          {capture name='custom_price'}{hook h='displayProductPriceBlock' product=$product type='custom_price' hook_origin='product_sheet'}{/capture}
                            {if '' !== $smarty.capture.custom_price}
                                {$smarty.capture.custom_price nofilter}
                            {else}
                                {$product.price}
                            {/if}
                        </span></span>
                    {if $product.has_discount}
                        <span class="product-discount">
                            {hook h='displayProductPriceBlock' product=$product type="old_price"}
                            <span class="regular-price">{$product.regular_price}</span>
                         </span>

                        {if $product.discount_type === 'percentage'}
                            <span class="badge badge-discount discount discount-percentage">-{$product.discount_percentage_absolute}</span>
                        {else}
                            <span class="badge badge-discount discount discount-amount">-{$product.discount_to_display}</span>
                        {/if}

                        {if isset($product.specific_prices.to) && $product.specific_prices.to != '0000-00-00 00:00:00'}<meta itemprop="priceValidUntil" content="{$product.specific_prices.to}"/>{/if}

                    {/if}
                </div>

                {block name='product_unit_price'}
                    {if $displayUnitPrice}
                        <p class="product-unit-price text-muted">{$product.unit_price_full}</p>
                    {/if}
                {/block}
            </div>
        {/block}

        {block name='product_without_taxes'}
            {if $priceDisplay == 2}
                <p class="product-without-taxes text-muted">{l s='%price% tax excl.' d='Shop.Theme.Catalog' sprintf=['%price%' => $product.price_tax_exc]}</p>
            {/if}
        {/block}

        {block name='product_pack_price'}
            {if $displayPackPrice}
                <p class="product-pack-price">
                    <span>{l s='Instead of %price%' d='Shop.Theme.Catalog' sprintf=['%price%' => $noPackPrice]}</span>
                </p>
            {/if}
        {/block}

        {block name='product_ecotax'}
            {if !$product.is_virtual && $product.ecotax.amount > 0}
                <p class="price-ecotax text-muted">{l s='Including %amount% for ecotax' d='Shop.Theme.Catalog' sprintf=['%amount%' => $product.ecotax.value]}
                    {if $product.has_discount}
                        {l s='(not impacted by the discount)' d='Shop.Theme.Catalog'}
                    {/if}
                </p>
            {/if}
        {/block}

        {hook h='displayProductPriceBlock' product=$product type="weight" hook_origin='product_sheet'}

            <div class="tax-shipping-delivery-label">
                {if !$configuration.taxes_enabled}
                    {l s='No tax' d='Shop.Theme.Catalog'}
                {elseif $configuration.display_taxes_label}
                    {$product.labels.tax_long}
                {/if}
                {hook h='displayProductPriceBlock' product=$product type="price"}
                {hook h='displayProductPriceBlock' product=$product type="after_price"}
                {if $product.is_virtual    == 0}
                    {if $product.additional_delivery_times == 1}
                        {if $product.delivery_information}
                            <span class="delivery-information">{$product.delivery_information}</span>
                        {/if}
                    {elseif $product.additional_delivery_times == 2}
                        {if $product.quantity >= $product.quantity_wanted}
                            <span class="delivery-information">{$product.delivery_in_stock}</span>
                            {* Out of stock message should not be displayed if customer can't order the product. *}
                        {elseif $product.add_to_cart_url}
                            <span class="delivery-information">{$product.delivery_out_stock}</span>
                        {/if}
                    {/if}
                {/if}
            </div>

        {hook h='displayCountDown'}
        {/if}
    </div>

    <div class="financiacion" style="float:right; margin-right:200px;">
        <p style="color:#ABACAC; float:left;">Financia tus compras
        <a href="https://wa.me/34686347066"><br>+info</a>
        </p>
        <img src="/img/cms/BBVA-Logo.png" style="width: 70px; float: right; height: auto; margin-left:10px;">
    </div>

    
</div>

conError.png

sinError.png

Link to comment
Share on other sites

  • 2 months later...

El problema que estás experimentando probablemente ocurre porque el HTML dentro del archivo product-prices.tpl se vuelve a renderizar cada vez que una acción, como cambiar la cantidad o añadir al carrito, desencadena una actualización en la sección del producto. Para solucionar esto, necesitas asegurarte de que el bloque añadido no se duplique con cada nueva renderización.
En su lugar, te sugerimos que añadas tu contenido a través del Hook hookDisplayProductPriceBlock o uses cualquier otro archivo para agregar tu contenido.
Ex:
public function hookDisplayProductPriceBlock($params)
{
if ($params['type'] == 'after_price') {
));
return $this->display(__FILE__, 'views/templates/hook/displayProductPriceBlock.tpl');
}
}

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...