Jump to content

[SOLUCIONADO] Crear variables globales para las tpl


Recommended Posts

Posted (edited)

Buenas, estoy intentando hacer que una característica no se vea en una parte de la tienda, anteriormente ya se había hecho y me encuentro este código en el tpl
 

                {foreach from=$product.grouped_features item=feature}
                    {if $feature.id_feature !== $FEATURE_M2_CAJA_ID
                    and $feature.id_feature !== $FEATURE_PIEZAS_CAJA_ID
                    and $feature.id_feature !== $FEATURE_TIPOLOGIA_PRECIO_ID
                    and $feature.id_feature !== $FEATURE_JUNTA_RECOMENDADA_ID
                    and $feature.id_feature !== $FEATURE_DIAS_PLAZO_ENTREGA_ID
                    and $feature.id_feature !== $FEATURE_TEXTO_MUESTRA_ID
                    and $feature.id_feature !== $FEATURE_JUNTAS_ID
                    and $feature.id_feature !== $FEATURE_HERRAMIENTAS_ID
                    and $feature.id_feature !== $FEATURE_PRODUCTOS_ID
                    and $feature.id_feature !== $FEATURE_MARCA_ID
                    }
                        <p>
                            <span class="uppercase">{$feature.name}{l s=': ' d='Shop.Theme.Catalog'}</span>
                            <span>{$feature.value|escape:'htmlall'|regex_replace:"/[\r\n]/" : ", " nofilter}</span>
                        </p>
                    {/if}
                {/foreach}

por lo que digo, perfecto agrego la mia que sería agregar un  "and $feature.id_feature !== $FEATURE_WEB_PRICE" al if, compruebo donde está declarada otra de las que aparecen, por ejemplo hago un ctrl+mayus+f de FEATURE_MARCA_ID para ver en mi ID todos los ficheros donde aparece y solo aparece en uno, en un override de FrontController en el que aparece 2 veces así que decido agregar mi variable justo debajo del mismo modo es decir:

 

	public const FEATURE_MARCA_ID = '39';
	public const FEATURE_WEB_PRICE = '44';

	...

	$this->context->smarty->assign( 'FEATURE_MARCA_ID', self::FEATURE_MARCA_ID );
	$this->context->smarty->assign( 'FEATURE_WEB_PRICE', self::FEATURE_WEB_PRICE );	

Y ya no aparece en ningún sitio mas, por lo que pienso, genial ahora no se debe ver en el producto la categoría, pero cuando voy a comprobarlo me salta el siguiente error, diciendo que la variable no está definida:

image.thumb.png.b59740e7ac03d0e8d4dfbaa21f435423.png

No lo entiendo, me falta algún paso? he borrado caché he reiniciado el servidor, pero por alguna razón no me pasa la variable al tpl. ¿Alquien sabe que pasa?

Edited by PepeFernandez
the topic is solved (see edit history)
Link to comment
Share on other sites

Haciendo pruebas, he comentado otras variables del if en el override del FrontController y la página no da error, así que no se si es algo de que tiene en alguna caché el FrontController y no se resetearlo o que, pero es como si no me entrara en el override, he puesto algunos die() en la función que asigna las variables que es la de assignGeneralPurposeVariables() y no pasa nada, sin embargo si pongo el die en la misma función del FrontController que no es override si para la ejecución, por lo que creo que estoy en el lugar correcto para asignar las variables, pero no me las genera por otra razón

Link to comment
Share on other sites

Posted (edited)

He probado también entrando en admin en rendimiento, poner el smarty en forzar compilación, borrando todas las caches y nada, sigue dando el mismo error, curioso que he probado también quitando el override del FrontController donde hay mas variables del if, pero da el mismo error, da fallo la que intento añadir yo, las demás no dan fallo incluso quitando el override.

de momento soluciono el error cambiando el if de esta manera:
 

                {assign var="dontShowThisFeatures" 
                value=[
                    $FEATURE_M2_CAJA_ID, 
                    $FEATURE_PIEZAS_CAJA_ID, 
                    $FEATURE_TIPOLOGIA_PRECIO_ID, 
                    44, 
                    $FEATURE_JUNTA_RECOMENDADA_ID,
                    $FEATURE_DIAS_PLAZO_ENTREGA_ID,
                    $FEATURE_TEXTO_MUESTRA_ID,
                    $FEATURE_JUNTAS_ID,
                    $FEATURE_HERRAMIENTAS_ID,
                    $FEATURE_PRODUCTOS_ID,
                    $FEATURE_MARCA_ID
                ]}

                {foreach from=$product.grouped_features item=feature}
                    {if !in_array($feature.id_feature, $dontShowThisFeatures)}
                        <p>
                            <span class="uppercase">{$feature.name}{l s=': ' d='Shop.Theme.Catalog'}</span>
                            <span>{$feature.value|escape:'htmlall'|regex_replace:"/[\r\n]/" : ", " nofilter}</span>
                        </p>
                    {/if}
                {/foreach}

pero claro, preferiría poder traerme el array desde el backend, pero no consigo que coja la variable ☹️

Edited by PepeFernandez (see edit history)
Link to comment
Share on other sites

Creo que ya he descubierto que pasa, aunque no se muy bien porque, para evitar liarla en la web, yo en cada directorio de ficheros que estoy editando creo un directorio old y ahí descargo lo que está actual antes de subir los cambios por si pasa algo deshacerlo.

bien, pues parece que prestashop cuando va a por el override si tengo uno en el old lo coge y claro ahí no están añadidas las variables de entorno

Por Ejemplo:
tengo un override/classes/controller/FrontController.php al que he agregado nuevas variables.

Entonces descargo el FrontController actual en override/classes/controller/old/FrontController.php
y ahora en local me dice que no están las variables definidas, solución renombrar el archivo:


override/classes/controller/old/_FrontController.php


Al renombrar la clase y vaciar la caché ya me coge de nuevo las variables que le había definido

Link to comment
Share on other sites

  • PepeFernandez changed the title to [SOLUCIONADO] Crear variables globales para las tpl

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...