Aprende a crear themes para Simple Machines Forum

Beware: This post was published 8 years ago and its content may be outdated.

Al comienzo del desarrollo de proSilver para SMF (a falta de un nombre definitivo) me topé con un gran problema: no encontraba tutoriales para aprender a crear themes (temas) para Simple Machines Forum (SMF) y toda la documentación que encontré estaba completamente en inglés.

En vista a que no encontraba nada, comencé a diseñar el theme partiendo del tema Core (el que hasta la versión 2.0 venía por defecto en SMF) y a la vez estuve tratando de aprender cómo funcionan los themes, las variables a tener en cuenta, el funcionamiento de cada archivo, etc.

Todo lo que he ido aprendiendo creo que le puede ser de mucha utilidad a cualquiera que esté interesado en el tema de la creación de themes para SMF y no encuentre información al respecto. Lo que voy a publicar no es una traducción del contenido de la documentación de SMF, sinó todas las notas mentales, aclaraciones, descubrimientos y demás que he ido viendo a lo largo del desarrollo del theme (que por cierto, cada día está más cerca).

No voy a publicarlo todo en un único artículo, ya que sería demasiado largo, y tardaría mucho en escribirlo, así que voy a ir poco a poco, comenzando desde los primeros archivos que modifiqué hasta llegar a los últimos que estoy modificando.

Introducción al sistema de themes de Simple Machines Forum

Antes de crear un theme, tenemos que tener claro qué es un theme y cómo funciona.

En líneas generales, un theme es un conjunto de archivos que son llamados por SMF cuando accedemos a cada página. Estos archivos contienen las instrucciones (en PHP) para mostrar el contenido de cada página: estructura, imágenes, textos, colores, etc.

¿Qué pasaría si no tuviésemos theme? Pues que al acceder a cualquier página, todo lo que veríamos sería un fondo blanco, aunque el foro en sí, sí que funcionaría, pero no se podría mostrar el contenido al que se pretende acceder.

El theme sólo toma valores de las variables que define SMF y los muestra. La diferencia básica entre los themes de SMF y los de otros CMS es que los temas de SMF no sólo muestran las variables, sinó que definen algunas funciones importantes del diseño (como la función de crear el menú, la de mostrar los botones, etc), llevando al máximo la personalización que ofrece el foro.

Sin embargo, esto también tiene un lado negativo, y es que crear un theme para SMF es más complicado (aunque tampoco muchísimo más) que crearlo para otro CMS y se requieren unos conocimientos básicos de PHP, aunque mejor avanzados (y como en cualquier otro CMS, de HTML y CSS).

Por último, hay que destacar el funcionamiento de los themes del SMF. Cuando se accede a un foro con un determinado theme activado, SMF comprobará la carpeta que contiene el theme en busca de los archivos necesarios para crear la página (index.template.php, boardindex.template.php, etc). En el caso de que no encuentre uno de los archivos del theme, SMF pasará a sustituirlo por el archivo correspondiente del theme default (Core).

Pero también hay que tener en cuenta que cada archivo incluye las funciones que muestran el contenido, así que si el archivo index.template.php existe, SMF lo cargará, pero si no está definida la función que muestra el contenid0 (no el código que muestra el contenido, sinó la función, en este caso template_init, que lo muestra), SMF mostrará un error.

Así que hay que diferenciar en el código que muestra el contenido (echo ‘contenido’) y la función que muestra el contenido, que en cada archivo es diferente (en index.template.php, template_init()). Aunque esto se verá de forma mucho más clara a lo largo de las próximas publicaciones.

En las próximas semanas iré publicando más información y seguiré continuando el tutorial.