A medida que los temas se vuelven más ambiciosos, hemos estado buscando formas de permitirles manipular el comportamiento central del lado del servidor. Si bien nunca tendrán el mismo nivel de control que los plugins, podemos proporcionar algunos hooks predefinidos para que los temas los manipulen.
Presentamos: modificadores de tema ![]()
Se especifican usando la clave modifiers en el archivo about.json de su tema.
Para obtener una lista 100% actualizada de modificadores, consulte el esquema de la base de datos al final de theme_modifier_set.rb, pero aquí hay un resumen rápido de lo que tenemos hasta ahora:
-
serialize_topic_excerptsbooleano (predeterminadofalse) - incluir siempre extractos al serializar listas de temas -
csp_extensionsarray de cadenas - agregar directivas a la CSP. Funciona igual que el antiguo método de configuración de tema “extend_content_security_policy”. Pero recuerde, las etiquetas\u003cscript src=\"\"\u003esimples se permiten automáticamente. -
svg_iconsarray de cadenas - una lista de iconos que deben incluirse en el subconjunto de iconos -
topic thumbnailsarray de dimensiones - solicitar resoluciones adicionales en el conjunto de miniaturas de temas. Tenga en cuenta que se generan de forma asíncrona, por lo que debe usar una alternativa a la imagen original si el tamaño solicitado no se proporciona. Más información disponible en el mensaje de confirmación -
serialize_post_user_badgesarray de cadenas - una lista de nombres de insignias (que coinciden con las entradas en la tabla de insignias) para serializar junto con los datos de la publicación. Cuando se configura, el sistema incluye las insignias de usuario especificadas con cada publicación para la representación en el lado del cliente.
Un tema que hace un uso intensivo de estos nuevos hooks es Topic List Thumbnails consulte el código para ver cómo funciona.
Modificadores dependientes de la configuración
Los modificadores de tema también se pueden configurar para extraer su valor de una configuración del tema, lo que permite a los operadores del sitio anular el comportamiento del modificador sin editar el código del tema. Para hacer que un modificador dependa de una configuración, use esta sintaxis en su about.json:
{
"modifiers": {
"modifier_name": {
"type": "setting",
"value": "setting_name"
}
}
}
Por ejemplo, si tiene una configuración de tema llamada show_excerpts y quiere que controle el modificador serialize_topic_excerpts:
En settings.yml:
show_excerpts:
default: false
En about.json:
{
"modifiers": {
"serialize_topic_excerpts": {
"type": "setting",
"value": "show_excerpts"
}
}
}
Cuando se cambia la configuración show_excerpts, el valor del modificador se actualizará automáticamente para que coincida. Esto proporciona flexibilidad para que los operadores del sitio personalicen el comportamiento del tema a través de la interfaz de administración.
Este documento está controlado por versiones: sugiera cambios en github.

