Jump to content

Crear variables globales para las tpl


Recommended Posts

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?

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

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