2010-06-03 13 views
5

Necesito mostrar una sección u otra en una plantilla smarty. Mi condición es simple: si un valor de smarty comienza con una cadena, debería mostrar una sección; de lo contrario, debería mostrarse la otra sección de smarty. Puedo cambiar solo los archivos tpl.Cómo verificar una condición compleja en Smarty (PHP)

{php} 
    if (substr($url,0,4) != 'http') 
    { 
    {/php} 
        section 1 

    {php} 
    } 
    else 
    { 
    {/php} 
     section 2 
    {php} 
    } 
    {/php} 

El problema es que no puedo leer la varible url que se asignó previamente usando $ smarty-> Asignar. Básicamente, estoy buscando la función inteligente que se puede utilizar para recuperar un valor, o si hay una mejor solución.

+1

¿Por qué no puede leer la variable url si se ha asignado a la plantilla? – pws5068

Respuesta

5

Primero, limpiaría su código. Usted no necesita etiquetas PHP, usted está utilizando Smarty:

{if substr($url,0,4) neq 'http'} 

    section 1 

{else} 
     section 2 
{/if} 

eso no está probado, pero debe estar muy cerca ..

Ahora, si usted está tratando de leer algo así como una constante, por ejemplo, una variable de servidor como HTTP_HOST, puede hacer algo como esto:

{assign var='url' value=$smarty.server.HTTP_HOST} 

{if substr($url,0,4) neq 'http'} 

    section 1 

{else} 
     section 2 
{/if} 
+0

Lo he intentado pero no funciona. – adiian

+0

No funcionará porque php_self no es la variable de servidor correcta, solo lo usé como ejemplo. Es posible que desee probar $ smarty.server.HTTP_HOST, pero que probablemente corta el http. Para ver los valores de las variables de su servidor cargue una página con solo pws5068

+0

no funcionaba debido a algún otro problema – adiian