Recordad que para pedir soporte alguno, debéis facilitar los datos de soporte oportunos por favor, mirad aquí y leer las Normas generales del foro, esto nos servirá de ayuda para dar el mejor soporte..

Gracias.

La Administración de phpBB España.

Estilo  Errores más comunes en las plantillasTema Solucionado

Guías phpBB 3.1 3.2 3.3


towen
Moderador
Mensajes: 489
Registrado: 27 Dic 2011, 05:17
Género:
Edad: 25

Errores más comunes en las plantillas  Tema Solucionado

#1

Mensaje por towen »

En esta guía se muestran los errores más comunes producidos por un mal uso de las etiquetas especiales de phpBB en las plantillas y algunos consejos sobre como deben escribirse correctamente.

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
Cualquier otra es tomada como un simple comentario HTML y carece de valor para el intérprete de los códigos de las plantillas de phpBB

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)
Los paréntesis pueden ser utilizados para cambiar la prioridad de las operaciones.

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:
    Mal

    Código: Seleccionar todo

    <!--IF xxx == 1 -->
    <!--IF xxx==1-->
    Bien

    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

    Código: Seleccionar todo

    <!--IF xxx -->
    <!--ELSE -->
    <!--ENDIF -->
    
    <!--BEGIN xxx -->
    <!--END xxx -->
    Bien

    Có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:
    Bien

    Código: Seleccionar todo

    <!-- IF variable == 1 -->
    	<!-- BEGIN algo -->
    	<!-- END algo -->
    <!-- ENDIF -->
    Mal

    Código: Seleccionar todo

    <!-- IF variable == 1 -->
    	<!-- BEGIN algo -->
    <!-- ENDIF -->
    	<!-- END algo -->
El uso de las etiquetas es el siguiente:

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 -->
Errores más comunes

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 empty
Ocurre cuando el archivo que se desea incluir con la etiqueta INCLUDE no se encuentra o está vacío.

Código: Seleccionar todo

Parse error: parse error, unexpected '}' in C:\xampp\htdocs\quick\boards\test\includes\template.php(230) : eval()'d code on line 3
Cuando falta un IF o BEGIN, o cuando falta el espacio entre el inicio de la etiqueta del comentario y el nombre.

Código: Seleccionar todo

Parse error: parse error, unexpected $ in C:\xampp\htdocs\quick\boards\test\cache\tpl_prosilver_index_body.html.php on line 23
Cuando falta un ENDIF o END, o cuando falta el espacio entre el inicio de la etiqueta del comentario y el nombre.

Có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 4

Código: Seleccionar todo

Parse error: parse error, unexpected '(' in C:\xampp\htdocs\quick\boards\test\includes\template.php(230) : eval()'d code on line 5
Problemas en las condiciones de los IF o ELSEIF (posiblemente mal escritas o mal empleadas)

Código: Seleccionar todo

template->_php_include(): File ./xxxx.php does not exist or is empty
No existe el archivo a incluir con INCLUDEPHP (el error se muestra pero sigue la carga de la página)

Có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 11
Orden incorrecto de los ELSE y ELSEIF

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



  • Temas similares
    Respuestas
    Vistas
    Último mensaje

Volver a “📝 Guías sobre phpBB”