Lo primero a tener en cuenta
Solo se analizan las siguiente etiquetas:
- BEGIN
 - BEGINELSE
 - END
 - IF
 - ELSE
 - ELSEIF
 - ENDIF
 - DEFINE
 - UNDEFINE
 - INCLUDE
 - INCLUDEPHP
 - PHP
 - ENDPHP
 
Los operadores que se permiten en las comparaciones son:
- == [eq]
 - != [neq, ne, <>]
 - !== (no idéntico en valor y tipo)
 - === (idéntico en valor y tipo)
 - > [gt]
 - < [lt]
 - >= [gte]
 - <= [lte]
 - && [and]
 - || [or]
 - % [mod]
 - ! [not]
 - +
 - -
 - *
 - /
 -  is (para usar junto a los siguientes operadores) 
- even (par)
 - odd (impar)
 - div
 
 - Operadores a nivel de de bit
- << (desplazar a la izquierda)
 - >> (desplazar a la derecha)
 - | (or)
 - ^ (xor)
 - & (and)
 - ~ (not)
 
 
Características específicas para un correcto funcionamiento
- Debe haber solo un espacio de separación entre los distintos elementos ya que en algunos casos los espacios pueden propiciar errores o comportamientos inesperados:
MalBienCódigo: Seleccionar todo
<!--IF xxx == 1 --> <!--IF xxx==1-->Código: Seleccionar todo
<!-- IF xxx == 1 --> - El espacio más importante es el que se encuentra entre el inicio del comentario HTML y el nombre de la etiqueta, si el espacio no se encuentra la etiqueta pierde su valor y produce errores:
Mal<!--END xxx -->Código: Seleccionar todo
<!--IF xxx --> <!--ELSE --> <!--ENDIF --> <!--BEGIN xxx -->
BienCódigo: Seleccionar todo
<!-- IF xxx --> <!-- ELSE --> <!-- ENDIF --> <!-- BEGIN xxx --> <!-- END xxx --> - A cada etiqueta BEGIN le corresponde una END y viceversa
 - A cada etiqueta BEGINELSE le corresponde una BEGIN y por consiguiente también una END
 - El orden para esta construcción es BEGIN - END o BEGIN - BEGINELSE - END
 - A cada etiqueta IF le corresponde una ENDIF y viceversa
 - A cada etiqueta ELSE o ELSEIF le corresponde una IF y por consiguiente también una ENDIF
 - El orden para esta construcción es IF - ENDIF o IF - ELSE - ENDIF o IF - ELSEIF - ENDIF o IF - ELSEIF - ELSE - ENDIF
 - Pueden haber varias etiquetas ELSEIF (con su respectiva condición) en una construcción pero solo una ELSE, la ELSE siempre debe ser la última
 - Las nombres para las variables definidas con DEFINE se rigen por las mismas limitantes que los nombres de las variables en PHP (lenguaje de programación)
 - Para asignarles valor se utiliza solo un signo igual (=) y las cadenas se deben encerrar entre comillas simples
 - Las etiquetas INCLUDEPHP y PHP solo funcionan si está habilitada la opción Permitir PHP en plantillas que se encuentra en ACP >> Pestaña General >> Configuración de seguridad
 - Las etiquetas INCLUDE e INCLUDEPHP funcionan de manera similar
 - A la etiqueta PHP le corresponde la etiqueta ENDPHP para el cierre:
Código: Seleccionar todo
<!-- PHP --> echo 'algo'; <!-- ENDPHP --> - Todas deben escribirse en mayúsculas
 - Deben ir encerradas entre las etiquetas de comentario de HTML: 
Código: Seleccionar todo
<!-- INCLUDE xxxx.html --> - Cuando hayan construcciones anidadas la primera que abre es la última que cierra:
BienMalCódigo: Seleccionar todo
<!-- IF variable == 1 --> <!-- BEGIN algo --> <!-- END algo --> <!-- ENDIF -->Código: Seleccionar todo
<!-- IF variable == 1 --> <!-- BEGIN algo --> <!-- ENDIF --> <!-- END algo --> 
Código: Seleccionar todo
<!-- IF condición == 1 -->
	La condición es igual a 1
<!-- ELSEIF condición == 2 -->
	La condición es igual a 2
<!-- ELSE -->
	La condición no es igual a 1 ó 2
<!-- ENDIF -->Código: Seleccionar todo
<!-- INCLUDE archivo.html -->Código: Seleccionar todo
<!-- BEGIN ejemplo -->
	{ejemplo.NAME}
<!-- BEGINELSE -->
	No hay ejemplo
<!-- END ejemplo -->Código: Seleccionar todo
<!-- DEFINE $variable = 'algo' -->
	{$variable}
<!-- UNDEFINE $variable -->Código: Seleccionar todo
<!-- INCLUDEPHP archivo.php -->
<!-- PHP -->
	echo 'php';
<!-- ENDPHP -->Estos son algunos de los errores que más comúnmente se muestran por un incorrecto uso de las etiquetas en las plantillas. Pueden existir otros o pueden ocurrir por otros motivos... estos son solo los que yo encontré.
Código: Seleccionar todo
template->_tpl_load_file(): File ./styles/prosilver/template/xxxx.html does not exist or is emptyCódigo: Seleccionar todo
Parse error: parse error, unexpected '}' in C:\xampp\htdocs\quick\boards\test\includes\template.php(230) : eval()'d code on line 3Código: Seleccionar todo
Parse error: parse error, unexpected $ in C:\xampp\htdocs\quick\boards\test\cache\tpl_prosilver_index_body.html.php on line 23Código: Seleccionar todo
Parse error: parse error, unexpected T_SR in C:\xampp\htdocs\quick\boards\test\includes\template.php(230) : eval()'d code on line 4Código: Seleccionar todo
Parse error: parse error, unexpected '(' in C:\xampp\htdocs\quick\boards\test\includes\template.php(230) : eval()'d code on line 5Código: Seleccionar todo
template->_php_include(): File ./xxxx.php does not exist or is emptyCódigo: Seleccionar todo
Parse error: parse error, unexpected T_ELSE in C:\xampp\htdocs\quick\boards\test\includes\template.php(230) : eval()'d code on line 11Si falta el PHP o el ENDPHP se muestra directamente el contenido entre ellos sin evaluarlo.
Aprende a usar los IF STATEMENT leyendo esta guía.
