- Para XenForo...
-
- 1.2.x
- 1.3.x
- 1.4.x
- 1.5.x
- Autor
- Brogan
- Imagen del autor
- URL de XenForo
- https://xenforo.com/community/resources/using-variables-in-templates.5034/
.
No siempre es obvio cuando una variable está disponible en una plantilla.
Por variable, entendemos algo así como $forum, $thread, $post, etc.
Esto se usa típicamente en Sentencias condicionales, uso del ID de nodo o de usuario, o posición, por ejemplo $forum.node_id, $thread.user_id, $post.position.
Sin embargo, hay un camino fácil para comprobar si la variable está disponible y, por lo tanto, puede usarse en una sentencia condicional.
En la plantilla a la que se quiere agregar la sentencia condicional, para cada variable que quieras comprobar agrega este código:
Reemplaza forum con el nombre de variable necesario, por ejemplo thread, post, etc.
Cuando recargas la página, si se devuelve alguna matríz, la variable está disponible y puede usarse. Si se retorna NULL, no puede usuarse por no estar disponible la variable.*
* En algunos casos es posible disponer de la variable; Para más detalles, véase esto: Configurar valores del contenedor
En esta guía comprobaremos en varias plantillascuando la variable $forum está disponible.
La primera plantilla a comprobar es la principal índice de foros, que se corresponde con la plantilla forum_list. Véase (Como determinar el nombre de una plantilla), algo así como:
Recargaremos el índice index del foro y comprobaremos el resultado.
Como es NULL el resultado, la variable no está disponible en esta plantilla.
Una página de la que se espera que tenga disponible la variable $forum pero sin enbargo, solo lo está cuando se ve un foro, que se corresponde con la plantilla forum_view.
Otra vez editaremos la platilla y añadiremos la línea de código:
Ahora, cuando se navega un foro, se verá esto:
Aquí tenemos una matríz de datos que nos pueden confundir de inicio pero que es muy sencilla de interpretar.
Nota: si tienes instalados complementos lo más seguro es que la matríz sea diferente, y se agreagn elementos a las matrices para agregar funcionalidades y mejorar el comportamiento.
La primera línea - array(39) - nos indica que hay 39 elementos en la matríz $forum, con cada elemento en su propia línea.
La línea resaltada en verde - ["node_id"] => int(2) - es el primer elemento en la matríz y es el ID de nodo.
En este caso el ID del nodo tiene un valor de 2 y es único en este foro y cada foro tiene un diferente ID de nodo.
Salvo que quieras usar $forum.node_id en una sentencia condicional y comprobar un valor de 2, algo así como:
Solo puede existir una coincidencia para este foro.
Las siguientes líneas son todos los demás elementos en la matríz $forum.
Por ejemplo, $forum.title es el título del foro, en este caso del Foro principal, similarmente el contaje de mensajes está disponible usando $forum.message_count y así con los demás.
Pueden usarse elementos individuales de la matríz agregando la siguiente línea de código a la plantilla:
Si está disponible para la plantilla, el valor correspondiente, en este caso Foro principal, se mostrará, no así de otro modo.
Uno de los usos más comunes para las sentencias condicionales son las plantillas ad_* para mostrar anuncios bajo varias condiciones.
No todas las variables están disponibles en las plantillas ad_* en todas las páginas, por lo que esta guía te ayudará a esteblecer qué valores están disponibles y cuales no.
La variable $forum, por ejemplo, está disponible en la plantilla ad_below_top_breadcrumb al visionar un foro o un tema pero no al visionar el índice u otras páginas tales como miembros, perfiles, etc.
No siempre es obvio cuando una variable está disponible en una plantilla.
Por variable, entendemos algo así como $forum, $thread, $post, etc.
Esto se usa típicamente en Sentencias condicionales, uso del ID de nodo o de usuario, o posición, por ejemplo $forum.node_id, $thread.user_id, $post.position.
Sin embargo, hay un camino fácil para comprobar si la variable está disponible y, por lo tanto, puede usarse en una sentencia condicional.
En la plantilla a la que se quiere agregar la sentencia condicional, para cada variable que quieras comprobar agrega este código:
Rich (BB code):
{xen:helper dump, $forum}
Cuando recargas la página, si se devuelve alguna matríz, la variable está disponible y puede usarse. Si se retorna NULL, no puede usuarse por no estar disponible la variable.*
* En algunos casos es posible disponer de la variable; Para más detalles, véase esto: Configurar valores del contenedor
En esta guía comprobaremos en varias plantillascuando la variable $forum está disponible.
La primera plantilla a comprobar es la principal índice de foros, que se corresponde con la plantilla forum_list. Véase (Como determinar el nombre de una plantilla), algo así como:
Recargaremos el índice index del foro y comprobaremos el resultado.
Como es NULL el resultado, la variable no está disponible en esta plantilla.
Una página de la que se espera que tenga disponible la variable $forum pero sin enbargo, solo lo está cuando se ve un foro, que se corresponde con la plantilla forum_view.
Otra vez editaremos la platilla y añadiremos la línea de código:
Ahora, cuando se navega un foro, se verá esto:
Aquí tenemos una matríz de datos que nos pueden confundir de inicio pero que es muy sencilla de interpretar.
Rich (BB code):
array(39) {
["node_id"] => int(2)
["title"] => string(10) "Main Forum"
["description"] => string(0) ""
["node_name"] => NULL
["node_type_id"] => string(5) "Forum"
["parent_node_id"] => int(1)
["display_order"] => int(1)
["display_in_list"] => int(1)
["lft"] => int(2)
["rgt"] => int(3)
["depth"] => int(1)
["style_id"] => int(0)
["effective_style_id"] => int(0)
["breadcrumb_data"] => string(164) "a:1:{i:1;a:7:{s:7:"node_id";i:1;s:9:"node_name";N;s:12:"node_type_id";s:8:"Category";s:5:"title";s:13:"Main Category";s:5:"depth";i:0;s:3:"lft";i:1;s:3:"rgt";i:4;}}"
["discussion_count"] => int(0)
["message_count"] => int(0)
["last_post_id"] => int(0)
["last_post_date"] => int(0)
["last_post_user_id"] => int(0)
["last_post_username"] => string(0) ""
["last_thread_title"] => string(0) ""
["moderate_threads"] => int(0)
["moderate_replies"] => int(0)
["allow_posting"] => int(1)
["allow_poll"] => int(1)
["count_messages"] => int(1)
["find_new"] => int(1)
["prefix_cache"] => string(0) ""
["default_prefix_id"] => int(0)
["default_sort_order"] => string(14) "last_post_date"
["default_sort_direction"] => string(4) "desc"
["list_date_limit_days"] => int(0)
["require_prefix"] => int(0)
["allowed_watch_notifications"] => string(3) "all"
["min_tags"] => int(0)
["forum_read_date"] => string(10) "1451818466"
["forum_is_watched"] => int(0)
["hasNew"] => bool(false)
["prefixCache"] => array(0) {
}
}
La primera línea - array(39) - nos indica que hay 39 elementos en la matríz $forum, con cada elemento en su propia línea.
La línea resaltada en verde - ["node_id"] => int(2) - es el primer elemento en la matríz y es el ID de nodo.
En este caso el ID del nodo tiene un valor de 2 y es único en este foro y cada foro tiene un diferente ID de nodo.
Salvo que quieras usar $forum.node_id en una sentencia condicional y comprobar un valor de 2, algo así como:
Insertar CODE, HTML o PHP:
<xen:if is="{$forum.node_id} == 2">
Las siguientes líneas son todos los demás elementos en la matríz $forum.
Por ejemplo, $forum.title es el título del foro, en este caso del Foro principal, similarmente el contaje de mensajes está disponible usando $forum.message_count y así con los demás.
Pueden usarse elementos individuales de la matríz agregando la siguiente línea de código a la plantilla:
Insertar CODE, HTML o PHP:
{$forum.title}
Uno de los usos más comunes para las sentencias condicionales son las plantillas ad_* para mostrar anuncios bajo varias condiciones.
No todas las variables están disponibles en las plantillas ad_* en todas las páginas, por lo que esta guía te ayudará a esteblecer qué valores están disponibles y cuales no.
La variable $forum, por ejemplo, está disponible en la plantilla ad_below_top_breadcrumb al visionar un foro o un tema pero no al visionar el índice u otras páginas tales como miembros, perfiles, etc.