À medida que os temas se tornam mais ambiciosos, temos procurado maneiras de permitir que eles manipulem o comportamento central do servidor. Embora eles nunca recebam o mesmo nível de controle que os plugins, podemos fornecer alguns ganchos 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, verifique o esquema do banco de dados na parte inferior de theme_modifier_set.rb, mas aqui está um breve resumo do que temos até agora:
-
serialize_topic_excerptsbooleano (padrão falso) - sempre inclua trechos ao serializar listas de tópicos -
csp_extensionsarray de strings - adicione diretivas ao CSP. Funciona da mesma forma que o antigo método de tema-configuração “extend_content_security_policy”. Mas lembre-se, tags\u003cscript src=\"\"\u003esimples sã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 - solicite 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 do commit -
serialize_post_user_badgesarray de strings - uma lista de nomes de emblemas (correspondentes às entradas na tabela de emblemas) para serializar junto com os dados da postagem. Quando configurado, o sistema inclui os emblemas de usuário especificados com cada postagem para renderização no lado do cliente.
Um tema que faz uso intensivo desses novos ganchos é Topic List Thumbnails - confira o código para ver como funciona.
Modificadores dependentes de configuração
Os modificadores de tema também podem ser configurados para buscar seu valor 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 os operadores do site personalizarem o comportamento do tema por meio da interface de administração.
Este documento é controlado por versão - sugira alterações no github.

