À medida que os temas se tornam mais ambiciosos, temos procurado maneiras de permitir que eles manipulem o comportamento central do lado do servidor. Embora nunca lhes seja concedido o mesmo nível de controle que os plugins, podemos fornecer alguns hooks predefinidos para os temas manipularem.
Apresentando: modificadores de tema ![]()
Eles são especificados usando a chave modifiers no arquivo about.json do seu tema.
Para uma lista 100% atualizada de modificadores, consulte o esquema do banco de dados na parte inferior de theme_modifier_set.rb, mas aqui está um resumo rápido do que temos até agora:
-
serialize_topic_excerptsbooleano (padrão falso) - sempre incluir excertos ao serializar listas de tópicos -
csp_extensionsarray de strings - adiciona diretivas ao CSP. Funciona da mesma forma que o método antigo de configuração de tema “extend_content_security_policy”. Mas lembre-se, tags simples de\u003cscript src=\"\"\u003esão permitidas automaticamente. -
svg_iconsarray de strings - uma lista de ícones que devem ser incluídos no subconjunto de ícones -
topic thumbnailsarray de dimensões - solicita resoluções adicionais no conjunto de miniaturas de tópicos. Observe que elas são geradas assincronamente, portanto, você deve usar a imagem original como fallback se o tamanho solicitado não for fornecido. Mais informações disponíveis na mensagem de commit -
serialize_post_user_badgesarray de strings - uma lista de nomes de badges (que correspondem a entradas na tabela de badges) para serializar junto com os dados da postagem. Quando configurado, o sistema inclui os badges de usuário especificados com cada postagem para renderização no lado do cliente.
Um tema que faz uso intenso desses novos hooks é Topic List Thumbnails - confira o código para ver como funciona.
Modificadores dependentes de configuração
Modificadores de tema também podem ser configurados para buscar seu valor a partir de uma configuração de tema, permitindo que os operadores do site substituam o comportamento do modificador sem editar o código do tema. Para fazer um modificador depender de uma configuração, use esta sintaxe em seu about.json:
{
"modifiers": {
"modifier_name": {
"type": "setting",
"value": "setting_name"
}
}
}
Por exemplo, se você tiver uma configuração de tema chamada show_excerpts e quiser que ela controle o modificador serialize_topic_excerpts:
Em settings.yml:
show_excerpts:
default: false
Em about.json:
{
"modifiers": {
"serialize_topic_excerpts": {
"type": "setting",
"value": "show_excerpts"
}
}
}
Quando a configuração show_excerpts for alterada, o valor do modificador será atualizado automaticamente para corresponder. Isso fornece flexibilidade para que os operadores do site personalizem o comportamento do tema por meio da interface de administração.
Este documento é controlado por versão - sugira alterações no github.

