{"users":[{"id":115923,"username":"Discourse","name":null,"avatar_template":"/user_avatar/meta.discourse.org/discourse/{size}/148734_2.png","admin":true,"trust_level":4},{"id":100484,"username":"JammyDodger","name":"","avatar_template":"/user_avatar/meta.discourse.org/jammydodger/{size}/254611_2.png","trust_level":3},{"id":23968,"username":"david","name":"David Taylor","avatar_template":"/user_avatar/meta.discourse.org/david/{size}/157490_2.png","primary_group_name":"team","flair_name":"team","flair_url":"https://global.discourse-cdn.com/meta/original/3X/e/b/ebee30bd98aef20357e4a177a5a1e45b877ce088.svg","flair_color":"111","flair_group_id":47,"admin":true,"trust_level":3},{"id":13455,"username":"tgxworld","name":"Alan Tan","avatar_template":"/user_avatar/meta.discourse.org/tgxworld/{size}/106117_2.png","primary_group_name":"team","flair_name":"team","flair_url":"https://global.discourse-cdn.com/meta/original/3X/e/b/ebee30bd98aef20357e4a177a5a1e45b877ce088.svg","flair_color":"111","flair_group_id":47,"admin":true,"trust_level":2},{"id":27384,"username":"merefield","name":"Robert","avatar_template":"/user_avatar/meta.discourse.org/merefield/{size}/176214_2.png","trust_level":3},{"id":190268,"username":"sk-or-v1-contents","name":"","avatar_template":"/user_avatar/meta.discourse.org/sk-or-v1-contents/{size}/547175_2.png","trust_level":2},{"id":-1,"username":"system","name":"system","avatar_template":"/user_avatar/meta.discourse.org/system/{size}/443519_2.png","admin":true,"moderator":true,"trust_level":4},{"id":135392,"username":"NateDhaliwal","name":"Nate Dhaliwal","avatar_template":"/user_avatar/meta.discourse.org/natedhaliwal/{size}/313494_2.png","flair_name":"theme_authors","flair_url":"paintbrush","flair_bg_color":"ddd","flair_color":"111","flair_group_id":73,"trust_level":3},{"id":119375,"username":"elmuerte","name":"","avatar_template":"/user_avatar/meta.discourse.org/elmuerte/{size}/456517_2.png","trust_level":2},{"id":36685,"username":"Arkshine","name":"","avatar_template":"/user_avatar/meta.discourse.org/arkshine/{size}/298682_2.png","flair_name":"support-advocates","flair_url":"https://global.discourse-cdn.com/meta/original/3X/e/4/e4038d4d9848de2eabab38e17b8bdb69da154024.svg","flair_bg_color":"FFFFFF","flair_group_id":148,"trust_level":3},{"id":186126,"username":"singi2016cn","name":"Singi2016cn","avatar_template":"/user_avatar/meta.discourse.org/singi2016cn/{size}/532755_2.png","trust_level":2},{"id":16539,"username":"Osama","name":"","avatar_template":"/user_avatar/meta.discourse.org/osama/{size}/98013_2.png","primary_group_name":"team","flair_name":"team","flair_url":"https://global.discourse-cdn.com/meta/original/3X/e/b/ebee30bd98aef20357e4a177a5a1e45b877ce088.svg","flair_color":"111","flair_group_id":47,"admin":true,"trust_level":2},{"id":15209,"username":"pfaffman","name":"Jay Pfaffman","avatar_template":"/user_avatar/meta.discourse.org/pfaffman/{size}/120154_2.png","flair_name":"support-experts","flair_url":"https://global.discourse-cdn.com/meta/original/3X/e/2/e250ec403580530d19e6a9ed42d0d525a51a9dbe.svg","flair_bg_color":"FFFFFF","flair_group_id":142,"trust_level":4},{"id":95552,"username":"Moin","name":"","avatar_template":"/user_avatar/meta.discourse.org/moin/{size}/554653_2.png","trust_level":3},{"id":127446,"username":"gormus","name":"Osman Görmüş","avatar_template":"/user_avatar/meta.discourse.org/gormus/{size}/428592_2.png","flair_name":"theme_authors","flair_url":"paintbrush","flair_bg_color":"ddd","flair_color":"111","flair_group_id":73,"trust_level":2},{"id":5859,"username":"j127","name":"","avatar_template":"/user_avatar/meta.discourse.org/j127/{size}/79093_2.png","trust_level":2},{"id":27773,"username":"bletch","name":"Danny Goodall","avatar_template":"/user_avatar/meta.discourse.org/bletch/{size}/69088_2.png","trust_level":2},{"id":117526,"username":"Dave_Driesmans","name":"Dave Driesmans","avatar_template":"/user_avatar/meta.discourse.org/dave_driesmans/{size}/253276_2.png","trust_level":0},{"id":179822,"username":"kcahtoor","name":"","avatar_template":"https://avatars.discourse-cdn.com/v4/letter/k/9de0a6/{size}.png","trust_level":1},{"id":57427,"username":"Machigatta","name":"","avatar_template":"/user_avatar/meta.discourse.org/machigatta/{size}/125064_2.png","trust_level":1},{"id":40486,"username":"TheBestPessimist","name":"","avatar_template":"/user_avatar/meta.discourse.org/thebestpessimist/{size}/247704_2.png","trust_level":2},{"id":112297,"username":"jlc","name":"John L. Clark","avatar_template":"/user_avatar/meta.discourse.org/jlc/{size}/251717_2.png","trust_level":2},{"id":104279,"username":"nat","name":"Natalie T","avatar_template":"/user_avatar/meta.discourse.org/nat/{size}/235063_2.png","primary_group_name":"team","flair_name":"team","flair_url":"https://global.discourse-cdn.com/meta/original/3X/e/b/ebee30bd98aef20357e4a177a5a1e45b877ce088.svg","flair_color":"111","flair_group_id":47,"admin":true,"trust_level":3},{"id":19,"username":"eviltrout","name":"Robin Ward","avatar_template":"/user_avatar/meta.discourse.org/eviltrout/{size}/5275_2.png","trust_level":4},{"id":8617,"username":"Mittineague","name":"Mittineague","avatar_template":"/user_avatar/meta.discourse.org/mittineague/{size}/114259_2.png","trust_level":1},{"id":35474,"username":"Canapin","name":"Coin-coin le Canapin","avatar_template":"/user_avatar/meta.discourse.org/canapin/{size}/119591_2.png","trust_level":3},{"id":28866,"username":"schungx","name":"Stephen Chung","avatar_template":"/user_avatar/meta.discourse.org/schungx/{size}/70989_2.png","trust_level":2},{"id":13093,"username":"pacharanero","name":"Marcus Baw","avatar_template":"/user_avatar/meta.discourse.org/pacharanero/{size}/500583_2.png","primary_group_name":"VolunteerMods","flair_name":"VolunteerMods","flair_url":"https://global.discourse-cdn.com/meta/original/4X/2/7/d/27de051915b8a604d176484cd260d10cfc956d42.svg","flair_group_id":276,"trust_level":4},{"id":33266,"username":"1c7","name":"Cheng Zheng","avatar_template":"/user_avatar/meta.discourse.org/1c7/{size}/94822_2.png","trust_level":2},{"id":141900,"username":"maaatt","name":"","avatar_template":"https://avatars.discourse-cdn.com/v4/letter/m/ecb155/{size}.png","trust_level":2},{"id":25674,"username":"Jithin_Krishnan","name":"Jithin Krishnan","avatar_template":"/user_avatar/meta.discourse.org/jithin_krishnan/{size}/121329_2.png","trust_level":1},{"id":149694,"username":"Ambient.Impact","name":"","avatar_template":"/user_avatar/meta.discourse.org/ambient.impact/{size}/387027_2.png","trust_level":1},{"id":133750,"username":"Firepup650","name":"Firepup Sixfifty","avatar_template":"/user_avatar/meta.discourse.org/firepup650/{size}/465200_2.png","flair_name":"theme_authors","flair_url":"paintbrush","flair_bg_color":"ddd","flair_color":"111","flair_group_id":73,"trust_level":2},{"id":21029,"username":"pmusaraj","name":"Penar Musaraj","avatar_template":"/user_avatar/meta.discourse.org/pmusaraj/{size}/119489_2.png","primary_group_name":"team","flair_name":"team","flair_url":"https://global.discourse-cdn.com/meta/original/3X/e/b/ebee30bd98aef20357e4a177a5a1e45b877ce088.svg","flair_color":"111","flair_group_id":47,"admin":true,"trust_level":3},{"id":17969,"username":"Pad_Pors","name":"Pad Pors","avatar_template":"/user_avatar/meta.discourse.org/pad_pors/{size}/52016_2.png","trust_level":2},{"id":60726,"username":"jrgong","name":"jrgong","avatar_template":"https://avatars.discourse-cdn.com/v4/letter/j/c57346/{size}.png","trust_level":2},{"id":78445,"username":"Don","name":"","avatar_template":"/user_avatar/meta.discourse.org/don/{size}/228726_2.png","primary_group_name":"VolunteerMods","flair_name":"VolunteerMods","flair_url":"https://global.discourse-cdn.com/meta/original/4X/2/7/d/27de051915b8a604d176484cd260d10cfc956d42.svg","flair_group_id":276,"trust_level":4},{"id":98247,"username":"vinyll","name":"Vincent Agnano","avatar_template":"/user_avatar/meta.discourse.org/vinyll/{size}/222495_2.png","trust_level":2},{"id":100407,"username":"sharewoodsDavid","name":null,"avatar_template":"https://avatars.discourse-cdn.com/v4/letter/s/5e9695/{size}.png","trust_level":2},{"id":704,"username":"AstonJ","name":"AstonJ","avatar_template":"/user_avatar/meta.discourse.org/astonj/{size}/215041_2.png","trust_level":2},{"id":166720,"username":"opcourdis","name":null,"avatar_template":"https://avatars.discourse-cdn.com/v4/letter/o/45deac/{size}.png","trust_level":2},{"id":83775,"username":"fitzy","name":"Michael Fitz-Payne","avatar_template":"/user_avatar/meta.discourse.org/fitzy/{size}/192549_2.png","primary_group_name":"team","flair_name":"team","flair_url":"https://global.discourse-cdn.com/meta/original/3X/e/b/ebee30bd98aef20357e4a177a5a1e45b877ce088.svg","flair_color":"111","flair_group_id":47,"trust_level":4},{"id":82960,"username":"manuel","name":"Manuel Kostka","avatar_template":"/user_avatar/meta.discourse.org/manuel/{size}/468169_2.png","primary_group_name":"team","flair_name":"team","flair_url":"https://global.discourse-cdn.com/meta/original/3X/e/b/ebee30bd98aef20357e4a177a5a1e45b877ce088.svg","flair_color":"111","flair_group_id":47,"admin":true,"trust_level":2},{"id":1,"username":"sam","name":"Sam Saffron","avatar_template":"/user_avatar/meta.discourse.org/sam/{size}/102149_2.png","primary_group_name":"team","flair_name":"team","flair_url":"https://global.discourse-cdn.com/meta/original/3X/e/b/ebee30bd98aef20357e4a177a5a1e45b877ce088.svg","flair_color":"111","flair_group_id":47,"admin":true,"trust_level":3},{"id":406,"username":"RGJ","name":"Richard - Communiteq","avatar_template":"/user_avatar/meta.discourse.org/rgj/{size}/523185_2.png","flair_name":"support-experts","flair_url":"https://global.discourse-cdn.com/meta/original/3X/e/2/e250ec403580530d19e6a9ed42d0d525a51a9dbe.svg","flair_bg_color":"FFFFFF","flair_group_id":142,"trust_level":4}],"primary_groups":[{"id":47,"name":"team"},{"id":276,"name":"VolunteerMods"}],"flair_groups":[{"id":47,"name":"team","flair_url":"https://global.discourse-cdn.com/meta/original/3X/e/b/ebee30bd98aef20357e4a177a5a1e45b877ce088.svg","flair_bg_color":"","flair_color":"111"},{"id":73,"name":"theme_authors","flair_url":"paintbrush","flair_bg_color":"ddd","flair_color":"111"},{"id":148,"name":"support-advocates","flair_url":"https://global.discourse-cdn.com/meta/original/3X/e/4/e4038d4d9848de2eabab38e17b8bdb69da154024.svg","flair_bg_color":"FFFFFF","flair_color":""},{"id":142,"name":"support-experts","flair_url":"https://global.discourse-cdn.com/meta/original/3X/e/2/e250ec403580530d19e6a9ed42d0d525a51a9dbe.svg","flair_bg_color":"FFFFFF","flair_color":""},{"id":276,"name":"VolunteerMods","flair_url":"https://global.discourse-cdn.com/meta/original/4X/2/7/d/27de051915b8a604d176484cd260d10cfc956d42.svg","flair_bg_color":"","flair_color":""}],"topic_list":{"can_create_topic":false,"more_topics_url":"/c/documentation/developer-guides/56?page=1","per_page":30,"top_tags":[{"id":478,"name":"como-fazer","slug":"how-to"},{"id":820,"name":"guias-de-temas","slug":"theme-guides"},{"id":819,"name":"código","slug":"code"},{"id":274,"name":"guias-de-plugin","slug":"plugin-guides"},{"id":484,"name":"tutorial","slug":"tutorial"},{"id":150,"name":"instalação-dev","slug":"dev-install"},{"id":482,"name":"referência","slug":"reference"},{"id":479,"name":"explicação","slug":"explanation"},{"id":70,"name":"brasas","slug":"ember"},{"id":58,"name":"teste","slug":"testing"},{"id":543,"name":"ia","slug":"ai"},{"id":643,"name":"automático-escuro","slug":"auto-dark"},{"id":275,"name":"automação","slug":"automation"},{"id":436,"name":"css","slug":"css"},{"id":814,"name":"personalização","slug":"customization"},{"id":24,"name":"docker","slug":"docker"},{"id":799,"name":"índice","slug":"index"},{"id":52,"name":"markdown","slug":"markdown"},{"id":328,"name":"api-de-plugin","slug":"plugin-api"},{"id":566,"name":"criador-de-temas","slug":"theme-creator"},{"id":16,"name":"tradução","slug":"translation"},{"id":25,"name":"posts-da-wiki","slug":"wiki-posts"}],"topics":[{"fancy_title":"Índice de Guias para Desenvolvedores","fancy_title_localized":true,"locale":"en","id":308036,"title":"Developer Guides Index","slug":"developer-guides-index","posts_count":1,"reply_count":1,"highest_post_number":1,"image_url":null,"created_at":"2024-05-15T06:05:51.350Z","last_posted_at":"2024-05-15T06:05:51.457Z","bumped":true,"bumped_at":"2026-06-01T15:09:46.938Z","archetype":"regular","unseen":false,"pinned":true,"unpinned":null,"excerpt":"Documentação sobre a extensão do Discourse com plugins, temas e componentes de tema, trabalhando com o código principal e usando a API do Discourse.\nIntrodução\n\nIntrodução: Introdução ao Desenvolvimento do Discourse\n\nDesenvolvimento&hellip;","visible":true,"closed":true,"archived":false,"bookmarked":null,"liked":null,"thumbnails":null,"tags":[{"id":799,"name":"índice","slug":"index"}],"tags_descriptions":{"índice":"Tópicos do índice da categoria de documentação."},"views":2085,"like_count":13,"has_summary":false,"last_poster_username":"Discourse","category_id":56,"op_like_count":13,"pinned_globally":false,"featured_link":null,"ai_topic_gist":null,"has_accepted_answer":false,"can_vote":false,"posters":[{"extras":"latest","description":"Participante Original, Participante Mais Recente","user_id":115923,"primary_group_id":null,"flair_group_id":null},{"extras":null,"description":"Recent Poster","user_id":100484,"primary_group_id":null,"flair_group_id":null}]},{"fancy_title":"Instale o aplicativo de console Discourse Theme CLI para ajudar você a construir temas","fancy_title_localized":true,"locale":"en","id":82950,"title":"Install the Discourse Theme CLI console app to help you build themes","slug":"install-the-discourse-theme-cli-console-app-to-help-you-build-themes","posts_count":17,"reply_count":129,"highest_post_number":208,"image_url":"https://global.discourse-cdn.com/meta/original/4X/2/1/3/21366b58dab3ee1ef263a8e74c09dd323ee348de.png","created_at":"2018-03-14T05:24:33.921Z","last_posted_at":"2026-07-30T08:47:18.478Z","bumped":true,"bumped_at":"2026-07-30T08:47:18.478Z","archetype":"regular","unseen":false,"pinned":false,"unpinned":null,"excerpt":"O Discourse Theme CLI é um gem ruby que permite que você use seu editor de preferência ao desenvolver temas e componentes de tema do Discourse. À medida que você salva arquivos, o CLI atualizará o tema ou componente remoto e as alterações t...","visible":true,"closed":false,"archived":false,"bookmarked":null,"liked":null,"thumbnails":[{"max_width":null,"max_height":null,"width":180,"height":180,"url":"https://global.discourse-cdn.com/meta/original/4X/2/1/3/21366b58dab3ee1ef263a8e74c09dd323ee348de.png"}],"tags":[{"id":478,"name":"como-fazer","slug":"how-to"},{"id":820,"name":"guias-de-temas","slug":"theme-guides"}],"tags_descriptions":{"como-fazer":"Guias de como fazer contêm passos a seguir para resolver um problema específico"},"views":32057,"like_count":127,"has_summary":false,"last_poster_username":"sk-or-v1-contents","category_id":56,"op_like_count":79,"pinned_globally":false,"featured_link":null,"ai_topic_gist":"Um usuário esclarece que a seção de aplicativos para revogar chaves de API do Discourse Theme CLI está localizada em Segurança nas preferências do usuário.","has_accepted_answer":false,"can_vote":false,"posters":[{"extras":null,"description":"Participante Original","user_id":115923,"primary_group_id":null,"flair_group_id":null},{"extras":null,"description":"Participante Frequente","user_id":23968,"primary_group_id":47,"flair_group_id":47},{"extras":null,"description":"Participante Frequente","user_id":13455,"primary_group_id":47,"flair_group_id":47},{"extras":null,"description":"Recent Poster","user_id":27384,"primary_group_id":null,"flair_group_id":null},{"extras":"latest","description":"Participante Mais Recente","user_id":190268,"primary_group_id":null,"flair_group_id":null}]},{"fancy_title":"Using service objects in Discourse","fancy_title_localized":false,"locale":null,"id":333641,"title":"Using service objects in Discourse","slug":"using-service-objects-in-discourse","posts_count":1,"reply_count":0,"highest_post_number":1,"image_url":null,"created_at":"2024-10-30T15:56:38.400Z","last_posted_at":"2024-10-30T15:56:38.536Z","bumped":true,"bumped_at":"2026-07-23T07:16:10.780Z","archetype":"regular","unseen":false,"pinned":false,"unpinned":null,"excerpt":"Overview\nA service is a small object that encompasses business logic for a given action. \nFrom outside, it should be seen as a sort of black box. You provide it with parameters, it runs (including all the side effects it&hellip;","visible":true,"closed":false,"archived":false,"bookmarked":null,"liked":null,"thumbnails":null,"tags":[],"tags_descriptions":{},"views":862,"like_count":17,"has_summary":false,"last_poster_username":"system","category_id":56,"op_like_count":17,"pinned_globally":false,"featured_link":null,"ai_topic_gist":"Service objects in Discourse encapsulate business logic as stateless, step-driven processes that handle input validation, error handling, and outcome matching, inspired by Trailblazer and dry-transaction.","has_accepted_answer":false,"can_vote":false,"posters":[{"extras":"latest single","description":"Participante Original, Participante Mais Recente","user_id":-1,"primary_group_id":null,"flair_group_id":null}]},{"fancy_title":"Como executar os conjuntos de testes QUnit do núcleo, plug-ins e temas do Discourse","fancy_title_localized":true,"locale":"en","id":66857,"title":"How to run Discourse core, plugin and theme QUnit test suites","slug":"how-to-run-discourse-core-plugin-and-theme-qunit-test-suites","posts_count":1,"reply_count":2,"highest_post_number":1,"image_url":null,"created_at":"2017-07-26T14:09:58.032Z","last_posted_at":"2017-07-26T14:09:58.126Z","bumped":true,"bumped_at":"2026-07-22T14:51:17.135Z","archetype":"regular","unseen":false,"pinned":false,"unpinned":null,"excerpt":"O Discourse possui testes de frontend extensivos para o núcleo, plugins e temas. Assim que você tiver um ambiente de desenvolvimento local funcional, esses testes podem ser executados localmente de várias maneiras diferentes.\nExecutando testes no navegador\nC&hellip;","visible":true,"closed":false,"archived":false,"bookmarked":null,"liked":null,"thumbnails":null,"tags":[{"id":478,"name":"como-fazer","slug":"how-to"},{"id":819,"name":"código","slug":"code"}],"tags_descriptions":{"como-fazer":"Guias de como fazer contêm passos a seguir para resolver um problema específico"},"views":2788,"like_count":19,"has_summary":false,"last_poster_username":"Discourse","category_id":56,"op_like_count":19,"pinned_globally":false,"featured_link":null,"ai_topic_gist":"Guia explicando como executar os testes QUnit do Discourse (core, plugins e temas) tanto no navegador quanto via linha de comando, com opções de paralelização e filtros.","has_accepted_answer":false,"can_vote":false,"posters":[{"extras":"latest single","description":"Participante Original, Participante Mais Recente","user_id":115923,"primary_group_id":null,"flair_group_id":null}]},{"fancy_title":"Fixando versões de plugins e temas para instalações mais antigas do Discourse (ramificações d-compat)","fancy_title_localized":true,"locale":"en","id":272665,"title":"Pinning plugin and theme versions for older Discourse installs (d-compat branches)","slug":"pinning-plugin-and-theme-versions-for-older-discourse-installs-d-compat-branches","posts_count":7,"reply_count":5,"highest_post_number":9,"image_url":null,"created_at":"2023-07-26T10:00:42.315Z","last_posted_at":"2026-07-17T10:56:56.339Z","bumped":true,"bumped_at":"2026-07-17T10:56:56.339Z","archetype":"regular","unseen":false,"pinned":false,"unpinned":null,"excerpt":":open_book: Contexto\nDesenvolvedores de temas e plugins geralmente desejam mirar na versão mais recente do Discourse, sem se preocupar com compatibilidade retroativa. Mas sites que executam versões mais antigas do Discourse ainda precisam de uma versão...","visible":true,"closed":false,"archived":false,"bookmarked":null,"liked":null,"thumbnails":null,"tags":[],"tags_descriptions":{},"views":1463,"like_count":31,"has_summary":false,"last_poster_username":"david","category_id":56,"op_like_count":17,"pinned_globally":false,"featured_link":null,"ai_topic_gist":"O sistema de branches d-compat exige uma branch por versão do Discourse; se não houver branch exata para a versão, o Discourse usa o branch principal (main), sem fallback para branches de versões próximas.","has_accepted_answer":false,"can_vote":false,"posters":[{"extras":null,"description":"Participante Original","user_id":115923,"primary_group_id":null,"flair_group_id":null},{"extras":null,"description":"Participante Frequente","user_id":135392,"primary_group_id":null,"flair_group_id":73},{"extras":null,"description":"Recent Poster","user_id":119375,"primary_group_id":null,"flair_group_id":null},{"extras":"latest","description":"Participante Mais Recente","user_id":23968,"primary_group_id":47,"flair_group_id":47}]},{"fancy_title":"Tipo de objeto para configuração do tema","fancy_title_localized":true,"locale":"en","id":305009,"title":"Objects type for theme setting","slug":"objects-type-for-theme-setting","posts_count":33,"reply_count":18,"highest_post_number":37,"image_url":null,"created_at":"2024-04-23T06:24:06.493Z","last_posted_at":"2026-04-13T01:45:38.793Z","bumped":true,"bumped_at":"2026-07-17T00:20:29.131Z","archetype":"regular","unseen":false,"pinned":false,"unpinned":null,"excerpt":"Estamos introduzindo um novo tipo: objects aos tipos suportados para configurações de tema, que podem ser usados para substituir o tipo json_schema existente, que pretendemos deprecionar em breve.\nDefinindo uma configuração de tema do tipo objects\nPara cr&hellip;","visible":true,"closed":false,"archived":false,"bookmarked":null,"liked":null,"thumbnails":null,"tags":[{"id":478,"name":"como-fazer","slug":"how-to"},{"id":820,"name":"guias-de-temas","slug":"theme-guides"}],"tags_descriptions":{"como-fazer":"Guias de como fazer contêm passos a seguir para resolver um problema específico"},"views":2283,"like_count":97,"has_summary":false,"last_poster_username":"singi2016cn","category_id":56,"op_like_count":16,"pinned_globally":false,"featured_link":null,"ai_topic_gist":"O tipo de configuração de objetos do Discourse agora inclui reordenação, suporte a uploads e correções de documentação, enquanto um usuário demonstra uma extensão personalizada para limitar o tamanho do array.","has_accepted_answer":false,"can_vote":false,"posters":[{"extras":null,"description":"Participante Original","user_id":115923,"primary_group_id":null,"flair_group_id":null},{"extras":null,"description":"Participante Frequente","user_id":36685,"primary_group_id":null,"flair_group_id":148},{"extras":null,"description":"Participante Frequente","user_id":13455,"primary_group_id":47,"flair_group_id":47},{"extras":null,"description":"Recent Poster","user_id":27384,"primary_group_id":null,"flair_group_id":null},{"extras":"latest","description":"Participante Mais Recente","user_id":186126,"primary_group_id":null,"flair_group_id":null}]},{"fancy_title":"Adicione configurações ao seu tema do Discourse","fancy_title_localized":true,"locale":"en","id":82557,"title":"Add settings to your Discourse theme","slug":"add-settings-to-your-discourse-theme","posts_count":7,"reply_count":52,"highest_post_number":91,"image_url":"https://global.discourse-cdn.com/meta/original/4X/f/1/8/f184f8f16a50a7e3c15efc462e1f07b6dbada223.jpeg","created_at":"2018-03-08T22:28:58.820Z","last_posted_at":"2025-07-08T19:43:17.589Z","bumped":true,"bumped_at":"2026-07-17T00:20:27.896Z","archetype":"regular","unseen":false,"pinned":false,"unpinned":null,"excerpt":"O Discourse permite que temas tenham “configurações” que podem ser adicionadas por desenvolvedores de temas, permitindo que os proprietários dos sites personalizem os temas por meio da interface do usuário, sem precisar alterar nenhuma linha de código ou se preocupar em perder suas altera&hellip;","visible":true,"closed":false,"archived":false,"bookmarked":null,"liked":null,"thumbnails":[{"max_width":null,"max_height":null,"width":735,"height":339,"url":"https://global.discourse-cdn.com/meta/original/4X/f/1/8/f184f8f16a50a7e3c15efc462e1f07b6dbada223.jpeg"},{"max_width":600,"max_height":600,"width":600,"height":276,"url":"https://global.discourse-cdn.com/meta/optimized/4X/f/1/8/f184f8f16a50a7e3c15efc462e1f07b6dbada223_2_600x276.jpeg"},{"max_width":400,"max_height":400,"width":400,"height":184,"url":"https://global.discourse-cdn.com/meta/optimized/4X/f/1/8/f184f8f16a50a7e3c15efc462e1f07b6dbada223_2_400x184.jpeg"},{"max_width":300,"max_height":300,"width":300,"height":138,"url":"https://global.discourse-cdn.com/meta/optimized/4X/f/1/8/f184f8f16a50a7e3c15efc462e1f07b6dbada223_2_300x138.jpeg"},{"max_width":200,"max_height":200,"width":200,"height":92,"url":"https://global.discourse-cdn.com/meta/optimized/4X/f/1/8/f184f8f16a50a7e3c15efc462e1f07b6dbada223_2_200x92.jpeg"}],"tags":[{"id":478,"name":"como-fazer","slug":"how-to"},{"id":820,"name":"guias-de-temas","slug":"theme-guides"}],"tags_descriptions":{"como-fazer":"Guias de como fazer contêm passos a seguir para resolver um problema específico"},"views":17324,"like_count":69,"has_summary":false,"last_poster_username":"gormus","category_id":56,"op_like_count":54,"pinned_globally":false,"featured_link":null,"ai_topic_gist":null,"has_accepted_answer":false,"can_vote":false,"posters":[{"extras":null,"description":"Participante Original","user_id":115923,"primary_group_id":null,"flair_group_id":null},{"extras":null,"description":"Participante Frequente","user_id":16539,"primary_group_id":47,"flair_group_id":47},{"extras":null,"description":"Participante Frequente","user_id":15209,"primary_group_id":null,"flair_group_id":142},{"extras":null,"description":"Recent Poster","user_id":95552,"primary_group_id":null,"flair_group_id":null},{"extras":"latest","description":"Participante Mais Recente","user_id":127446,"primary_group_id":null,"flair_group_id":73}]},{"fancy_title":"Crie e compartilhe uma paleta de cores","fancy_title_localized":true,"locale":"en","id":61196,"title":"Create and share a color scheme","slug":"create-and-share-a-color-scheme","posts_count":2,"reply_count":0,"highest_post_number":3,"image_url":"https://global.discourse-cdn.com/meta/optimized/3X/b/7/b7fced237ee399d52c634a3ab6fcc9416db65605_2_1024x670.png","created_at":"2017-04-18T14:44:23.540Z","last_posted_at":"2025-08-01T18:49:05.210Z","bumped":true,"bumped_at":"2026-07-13T22:28:38.579Z","archetype":"regular","unseen":false,"pinned":false,"unpinned":null,"excerpt":"O Discourse agora suporta a importação de esquemas de cores de repositórios remotos. Aqui, demonstrarei como fazer isso.\nNavegue até as cores e adicione um esquema de cores.\nAcesse /admin/customize/colors no seu site…","visible":true,"closed":false,"archived":false,"bookmarked":null,"liked":null,"thumbnails":[{"max_width":null,"max_height":null,"width":1950,"height":1276,"url":"https://global.discourse-cdn.com/meta/original/3X/b/7/b7fced237ee399d52c634a3ab6fcc9416db65605.png"},{"max_width":1024,"max_height":1024,"width":1024,"height":670,"url":"https://global.discourse-cdn.com/meta/optimized/3X/b/7/b7fced237ee399d52c634a3ab6fcc9416db65605_2_1024x670.png"},{"max_width":800,"max_height":800,"width":800,"height":523,"url":"https://global.discourse-cdn.com/meta/optimized/3X/b/7/b7fced237ee399d52c634a3ab6fcc9416db65605_2_800x523.png"},{"max_width":600,"max_height":600,"width":600,"height":392,"url":"https://global.discourse-cdn.com/meta/optimized/3X/b/7/b7fced237ee399d52c634a3ab6fcc9416db65605_2_600x392.png"},{"max_width":400,"max_height":400,"width":400,"height":261,"url":"https://global.discourse-cdn.com/meta/optimized/3X/b/7/b7fced237ee399d52c634a3ab6fcc9416db65605_2_400x261.png"},{"max_width":300,"max_height":300,"width":300,"height":196,"url":"https://global.discourse-cdn.com/meta/optimized/3X/b/7/b7fced237ee399d52c634a3ab6fcc9416db65605_2_300x196.png"},{"max_width":200,"max_height":200,"width":200,"height":130,"url":"https://global.discourse-cdn.com/meta/optimized/3X/b/7/b7fced237ee399d52c634a3ab6fcc9416db65605_2_200x130.png"}],"tags":[{"id":478,"name":"como-fazer","slug":"how-to"}],"tags_descriptions":{"como-fazer":"Guias de como fazer contêm passos a seguir para resolver um problema específico"},"views":6423,"like_count":23,"has_summary":false,"last_poster_username":"j127","category_id":56,"op_like_count":23,"pinned_globally":false,"featured_link":null,"ai_topic_gist":null,"has_accepted_answer":false,"can_vote":false,"posters":[{"extras":null,"description":"Participante Original","user_id":115923,"primary_group_id":null,"flair_group_id":null},{"extras":"latest","description":"Participante Mais Recente","user_id":5859,"primary_group_id":null,"flair_group_id":null}]},{"fancy_title":"Crie e compartilhe um componente de tema de fonte","fancy_title_localized":true,"locale":"en","id":62462,"title":"Create and share a font theme component","slug":"create-and-share-a-font-theme-component","posts_count":5,"reply_count":0,"highest_post_number":7,"image_url":"https://global.discourse-cdn.com/meta/optimized/4X/c/1/d/c1de6b52ae98df03f557c91f1ae02251f08cda18_2_1024x412.png","created_at":"2017-05-10T20:48:47.477Z","last_posted_at":"2025-08-19T22:34:35.578Z","bumped":true,"bumped_at":"2026-07-13T22:28:34.636Z","archetype":"regular","unseen":false,"pinned":false,"unpinned":null,"excerpt":"O Discourse suporta a importação de temas que contêm ativos de um repositório remoto. \nIsso permite que os autores de temas compartilhem fontes e imagens. \nCrie um novo repositório git com a fonte\nmkdir discourse-roboto-theme\ncd discourse-r…","visible":true,"closed":false,"archived":false,"bookmarked":null,"liked":null,"thumbnails":[{"max_width":null,"max_height":null,"width":1508,"height":608,"url":"https://global.discourse-cdn.com/meta/original/4X/c/1/d/c1de6b52ae98df03f557c91f1ae02251f08cda18.png"},{"max_width":1024,"max_height":1024,"width":1024,"height":412,"url":"https://global.discourse-cdn.com/meta/optimized/4X/c/1/d/c1de6b52ae98df03f557c91f1ae02251f08cda18_2_1024x412.png"},{"max_width":800,"max_height":800,"width":800,"height":322,"url":"https://global.discourse-cdn.com/meta/optimized/4X/c/1/d/c1de6b52ae98df03f557c91f1ae02251f08cda18_2_800x322.png"},{"max_width":600,"max_height":600,"width":600,"height":241,"url":"https://global.discourse-cdn.com/meta/optimized/4X/c/1/d/c1de6b52ae98df03f557c91f1ae02251f08cda18_2_600x241.png"},{"max_width":400,"max_height":400,"width":400,"height":161,"url":"https://global.discourse-cdn.com/meta/optimized/4X/c/1/d/c1de6b52ae98df03f557c91f1ae02251f08cda18_2_400x161.png"},{"max_width":300,"max_height":300,"width":300,"height":120,"url":"https://global.discourse-cdn.com/meta/optimized/4X/c/1/d/c1de6b52ae98df03f557c91f1ae02251f08cda18_2_300x120.png"},{"max_width":200,"max_height":200,"width":200,"height":80,"url":"https://global.discourse-cdn.com/meta/optimized/4X/c/1/d/c1de6b52ae98df03f557c91f1ae02251f08cda18_2_200x80.png"}],"tags":[{"id":478,"name":"como-fazer","slug":"how-to"},{"id":820,"name":"guias-de-temas","slug":"theme-guides"}],"tags_descriptions":{"como-fazer":"Guias de como fazer contêm passos a seguir para resolver um problema específico"},"views":6075,"like_count":23,"has_summary":false,"last_poster_username":"kcahtoor","category_id":56,"op_like_count":19,"pinned_globally":false,"featured_link":null,"ai_topic_gist":null,"has_accepted_answer":false,"can_vote":false,"posters":[{"extras":null,"description":"Participante Original","user_id":115923,"primary_group_id":null,"flair_group_id":null},{"extras":null,"description":"Participante Frequente","user_id":15209,"primary_group_id":null,"flair_group_id":142},{"extras":null,"description":"Participante Frequente","user_id":27773,"primary_group_id":null,"flair_group_id":null},{"extras":null,"description":"Recent Poster","user_id":117526,"primary_group_id":null,"flair_group_id":null},{"extras":"latest","description":"Participante Mais Recente","user_id":179822,"primary_group_id":null,"flair_group_id":null}]},{"fancy_title":"Desenvolvendo Plugins para Discourse - Parte 6 - Adicionar testes de aceitação","fancy_title_localized":true,"locale":"en","id":32619,"title":"Developing Discourse Plugins - Part 6 - Add acceptance tests","slug":"developing-discourse-plugins-part-6-add-acceptance-tests","posts_count":33,"reply_count":26,"highest_post_number":38,"image_url":"https://global.discourse-cdn.com/meta/optimized/4X/6/0/2/602e6bb3fe340f0569c1bfd60bb74f6d83d92893_2_1024x715.png","created_at":"2015-08-27T21:32:26.323Z","last_posted_at":"2022-06-02T11:06:38.274Z","bumped":true,"bumped_at":"2026-07-13T22:28:29.996Z","archetype":"regular","unseen":false,"pinned":false,"unpinned":null,"excerpt":"Tutorial anterior: Desenvolvendo Plugins Discourse - Parte 5 - Adicionar uma interface de administrador\n\nVocê sabia que o Discourse possui dois grandes conjuntos de testes para sua base de código? No lado do servidor, nosso código Ruby possui um conjunto de testes que usa rs&hellip;","visible":true,"closed":false,"archived":false,"bookmarked":null,"liked":null,"thumbnails":[{"max_width":null,"max_height":null,"width":1058,"height":739,"url":"https://global.discourse-cdn.com/meta/original/4X/6/0/2/602e6bb3fe340f0569c1bfd60bb74f6d83d92893.png"},{"max_width":1024,"max_height":1024,"width":1024,"height":715,"url":"https://global.discourse-cdn.com/meta/optimized/4X/6/0/2/602e6bb3fe340f0569c1bfd60bb74f6d83d92893_2_1024x715.png"},{"max_width":800,"max_height":800,"width":800,"height":558,"url":"https://global.discourse-cdn.com/meta/optimized/4X/6/0/2/602e6bb3fe340f0569c1bfd60bb74f6d83d92893_2_800x558.png"},{"max_width":600,"max_height":600,"width":600,"height":419,"url":"https://global.discourse-cdn.com/meta/optimized/4X/6/0/2/602e6bb3fe340f0569c1bfd60bb74f6d83d92893_2_600x419.png"},{"max_width":400,"max_height":400,"width":400,"height":279,"url":"https://global.discourse-cdn.com/meta/optimized/4X/6/0/2/602e6bb3fe340f0569c1bfd60bb74f6d83d92893_2_400x279.png"},{"max_width":300,"max_height":300,"width":300,"height":209,"url":"https://global.discourse-cdn.com/meta/optimized/4X/6/0/2/602e6bb3fe340f0569c1bfd60bb74f6d83d92893_2_300x209.png"},{"max_width":200,"max_height":200,"width":200,"height":139,"url":"https://global.discourse-cdn.com/meta/optimized/4X/6/0/2/602e6bb3fe340f0569c1bfd60bb74f6d83d92893_2_200x139.png"}],"tags":[{"id":484,"name":"tutorial","slug":"tutorial"},{"id":274,"name":"guias-de-plugin","slug":"plugin-guides"},{"id":58,"name":"teste","slug":"testing"}],"tags_descriptions":{"tutorial":""},"views":17627,"like_count":82,"has_summary":false,"last_poster_username":"nat","category_id":56,"op_like_count":30,"pinned_globally":false,"featured_link":null,"ai_topic_gist":null,"has_accepted_answer":false,"can_vote":false,"posters":[{"extras":null,"description":"Participante Original","user_id":115923,"primary_group_id":null,"flair_group_id":null},{"extras":null,"description":"Participante Frequente","user_id":57427,"primary_group_id":null,"flair_group_id":null},{"extras":null,"description":"Participante Frequente","user_id":40486,"primary_group_id":null,"flair_group_id":null},{"extras":null,"description":"Recent Poster","user_id":112297,"primary_group_id":null,"flair_group_id":null},{"extras":"latest","description":"Participante Mais Recente","user_id":104279,"primary_group_id":47,"flair_group_id":47}]},{"fancy_title":"Desenvolvendo plugins para Discourse - Parte 5 - Adicionar uma interface de administração","fancy_title_localized":true,"locale":"en","id":31761,"title":"Developing Discourse Plugins - Part 5 - Add an admin interface","slug":"developing-discourse-plugins-part-5-add-an-admin-interface","posts_count":47,"reply_count":40,"highest_post_number":51,"image_url":"https://global.discourse-cdn.com/meta/original/4X/c/8/f/c8f5548016153a30a3ace7679111c95847f293c3.png","created_at":"2015-08-04T20:34:32.128Z","last_posted_at":"2024-09-24T11:10:58.173Z","bumped":true,"bumped_at":"2026-07-13T22:28:27.429Z","archetype":"regular","unseen":false,"pinned":false,"unpinned":null,"excerpt":"Tutorial anterior: Desenvolvendo Plugins do Discourse - Parte 4 - Configurando o git \n\nÀs vezes, as configurações do site não são suficientes como interface de administrador para que seu plugin funcione da maneira que você deseja. Por exemplo, se você instalar o discourse-akism…","visible":true,"closed":false,"archived":false,"bookmarked":null,"liked":null,"thumbnails":[{"max_width":null,"max_height":null,"width":995,"height":244,"url":"https://global.discourse-cdn.com/meta/original/4X/c/8/f/c8f5548016153a30a3ace7679111c95847f293c3.png"},{"max_width":800,"max_height":800,"width":800,"height":196,"url":"https://global.discourse-cdn.com/meta/optimized/4X/c/8/f/c8f5548016153a30a3ace7679111c95847f293c3_2_800x196.png"},{"max_width":600,"max_height":600,"width":600,"height":147,"url":"https://global.discourse-cdn.com/meta/optimized/4X/c/8/f/c8f5548016153a30a3ace7679111c95847f293c3_2_600x147.png"},{"max_width":400,"max_height":400,"width":400,"height":98,"url":"https://global.discourse-cdn.com/meta/optimized/4X/c/8/f/c8f5548016153a30a3ace7679111c95847f293c3_2_400x98.png"},{"max_width":300,"max_height":300,"width":300,"height":73,"url":"https://global.discourse-cdn.com/meta/optimized/4X/c/8/f/c8f5548016153a30a3ace7679111c95847f293c3_2_300x73.png"},{"max_width":200,"max_height":200,"width":200,"height":49,"url":"https://global.discourse-cdn.com/meta/optimized/4X/c/8/f/c8f5548016153a30a3ace7679111c95847f293c3_2_200x49.png"}],"tags":[{"id":484,"name":"tutorial","slug":"tutorial"},{"id":274,"name":"guias-de-plugin","slug":"plugin-guides"}],"tags_descriptions":{"tutorial":""},"views":26808,"like_count":85,"has_summary":false,"last_poster_username":"NateDhaliwal","category_id":56,"op_like_count":28,"pinned_globally":false,"featured_link":null,"ai_topic_gist":null,"has_accepted_answer":false,"can_vote":false,"posters":[{"extras":null,"description":"Participante Original","user_id":115923,"primary_group_id":null,"flair_group_id":null},{"extras":null,"description":"Participante Frequente","user_id":19,"primary_group_id":null,"flair_group_id":null},{"extras":null,"description":"Participante Frequente","user_id":8617,"primary_group_id":null,"flair_group_id":null},{"extras":null,"description":"Recent Poster","user_id":35474,"primary_group_id":null,"flair_group_id":null},{"extras":"latest","description":"Participante Mais Recente","user_id":135392,"primary_group_id":null,"flair_group_id":73}]},{"fancy_title":"Desenvolvendo Plugins Discourse - Parte 4 - Configurando o git","fancy_title_localized":true,"locale":"en","id":31272,"title":"Developing Discourse Plugins - Part 4 - Setup git","slug":"developing-discourse-plugins-part-4-setup-git","posts_count":11,"reply_count":5,"highest_post_number":11,"image_url":"https://global.discourse-cdn.com/meta/original/4X/b/d/4/bd4e72b31887f4016cfe86b0d0617f1799f1d007.png","created_at":"2015-07-21T20:54:59.409Z","last_posted_at":"2024-01-30T11:12:28.312Z","bumped":true,"bumped_at":"2026-07-13T22:28:22.678Z","archetype":"regular","unseen":false,"pinned":false,"unpinned":null,"excerpt":"Tutorial anterior: Desenvolvendo Plugins Discourse - Parte 3 - Adicionar configurações de site personalizadas \n\nAgora que seu plugin está ficando mais sofisticado, é hora de se tornar mais sofisticado em como você o desenvolve. \nSugerimos que você&hellip;","visible":true,"closed":false,"archived":false,"bookmarked":null,"liked":null,"thumbnails":[{"max_width":null,"max_height":null,"width":730,"height":413,"url":"https://global.discourse-cdn.com/meta/original/4X/b/d/4/bd4e72b31887f4016cfe86b0d0617f1799f1d007.png"},{"max_width":600,"max_height":600,"width":600,"height":339,"url":"https://global.discourse-cdn.com/meta/optimized/4X/b/d/4/bd4e72b31887f4016cfe86b0d0617f1799f1d007_2_600x339.png"},{"max_width":400,"max_height":400,"width":400,"height":226,"url":"https://global.discourse-cdn.com/meta/optimized/4X/b/d/4/bd4e72b31887f4016cfe86b0d0617f1799f1d007_2_400x226.png"},{"max_width":300,"max_height":300,"width":300,"height":169,"url":"https://global.discourse-cdn.com/meta/optimized/4X/b/d/4/bd4e72b31887f4016cfe86b0d0617f1799f1d007_2_300x169.png"},{"max_width":200,"max_height":200,"width":200,"height":113,"url":"https://global.discourse-cdn.com/meta/optimized/4X/b/d/4/bd4e72b31887f4016cfe86b0d0617f1799f1d007_2_200x113.png"}],"tags":[{"id":484,"name":"tutorial","slug":"tutorial"},{"id":274,"name":"guias-de-plugin","slug":"plugin-guides"}],"tags_descriptions":{"tutorial":""},"views":13205,"like_count":37,"has_summary":false,"last_poster_username":"maaatt","category_id":56,"op_like_count":23,"pinned_globally":false,"featured_link":null,"ai_topic_gist":null,"has_accepted_answer":false,"can_vote":false,"posters":[{"extras":null,"description":"Participante Original","user_id":115923,"primary_group_id":null,"flair_group_id":null},{"extras":null,"description":"Participante Frequente","user_id":28866,"primary_group_id":null,"flair_group_id":null},{"extras":null,"description":"Participante Frequente","user_id":13093,"primary_group_id":276,"flair_group_id":276},{"extras":null,"description":"Recent Poster","user_id":33266,"primary_group_id":null,"flair_group_id":null},{"extras":"latest","description":"Participante Mais Recente","user_id":141900,"primary_group_id":null,"flair_group_id":null}]},{"fancy_title":"Desenvolvendo Plugins para Discourse - Parte 1 - Criar um plugin básico","fancy_title_localized":true,"locale":"en","id":30515,"title":"Developing Discourse Plugins - Part 1 - Create a basic plugin","slug":"developing-discourse-plugins-part-1-create-a-basic-plugin","posts_count":33,"reply_count":87,"highest_post_number":141,"image_url":"https://global.discourse-cdn.com/meta/original/4X/9/7/b/97b7e2daac4cae0c6b3642a17d5b87dcec4b5c73.png","created_at":"2015-06-26T21:01:08.310Z","last_posted_at":"2025-07-08T20:52:10.855Z","bumped":true,"bumped_at":"2026-07-13T22:28:20.350Z","archetype":"regular","unseen":false,"pinned":false,"unpinned":null,"excerpt":"Criar um plugin no Discourse pode ser realmente simples, uma vez que você aprenda algumas peculiaridades. O objetivo desta postagem é criar um plugin básico e apresentá-lo aos fundamentos. \nSeu ambiente de desenvolvimento\nCertifique-se de que você te&hellip;","visible":true,"closed":false,"archived":false,"bookmarked":null,"liked":null,"thumbnails":[{"max_width":null,"max_height":null,"width":845,"height":128,"url":"https://global.discourse-cdn.com/meta/original/4X/9/7/b/97b7e2daac4cae0c6b3642a17d5b87dcec4b5c73.png"},{"max_width":800,"max_height":800,"width":800,"height":121,"url":"https://global.discourse-cdn.com/meta/optimized/4X/9/7/b/97b7e2daac4cae0c6b3642a17d5b87dcec4b5c73_2_800x121.png"},{"max_width":600,"max_height":600,"width":600,"height":90,"url":"https://global.discourse-cdn.com/meta/optimized/4X/9/7/b/97b7e2daac4cae0c6b3642a17d5b87dcec4b5c73_2_600x90.png"},{"max_width":400,"max_height":400,"width":400,"height":60,"url":"https://global.discourse-cdn.com/meta/optimized/4X/9/7/b/97b7e2daac4cae0c6b3642a17d5b87dcec4b5c73_2_400x60.png"},{"max_width":300,"max_height":300,"width":300,"height":45,"url":"https://global.discourse-cdn.com/meta/optimized/4X/9/7/b/97b7e2daac4cae0c6b3642a17d5b87dcec4b5c73_2_300x45.png"},{"max_width":200,"max_height":200,"width":200,"height":30,"url":"https://global.discourse-cdn.com/meta/optimized/4X/9/7/b/97b7e2daac4cae0c6b3642a17d5b87dcec4b5c73_2_200x30.png"}],"tags":[{"id":484,"name":"tutorial","slug":"tutorial"},{"id":274,"name":"guias-de-plugin","slug":"plugin-guides"}],"tags_descriptions":{"tutorial":""},"views":83529,"like_count":210,"has_summary":false,"last_poster_username":"Ambient.Impact","category_id":56,"op_like_count":110,"pinned_globally":false,"featured_link":null,"ai_topic_gist":null,"has_accepted_answer":false,"can_vote":false,"posters":[{"extras":null,"description":"Participante Original","user_id":115923,"primary_group_id":null,"flair_group_id":null},{"extras":null,"description":"Participante Frequente","user_id":19,"primary_group_id":null,"flair_group_id":null},{"extras":null,"description":"Participante Frequente","user_id":25674,"primary_group_id":null,"flair_group_id":null},{"extras":null,"description":"Recent Poster","user_id":15209,"primary_group_id":null,"flair_group_id":142},{"extras":"latest","description":"Participante Mais Recente","user_id":149694,"primary_group_id":null,"flair_group_id":null}]},{"fancy_title":"JavaScript type hinting &amp; validation (typescript)","fancy_title_localized":false,"locale":null,"id":395136,"title":"JavaScript type hinting & validation (typescript)","slug":"javascript-type-hinting-validation-typescript","posts_count":1,"reply_count":0,"highest_post_number":1,"image_url":null,"created_at":"2026-02-04T10:38:25.830Z","last_posted_at":"2026-02-04T10:38:25.913Z","bumped":true,"bumped_at":"2026-07-13T16:07:08.908Z","archetype":"regular","unseen":false,"pinned":false,"unpinned":null,"excerpt":"Discourse ships type information for its JavaScript code. This can provide inline documentation, autocomplete, and other useful IDE features. It can also be used for some basic type validation, using the @ts-check direct&hellip;","visible":true,"closed":false,"archived":false,"bookmarked":null,"liked":null,"thumbnails":null,"tags":[],"tags_descriptions":{},"views":175,"like_count":8,"has_summary":false,"last_poster_username":"system","category_id":56,"op_like_count":8,"pinned_globally":false,"featured_link":null,"ai_topic_gist":"Discourse provides JavaScript type information for IDE features and basic validation via @ts-check, requiring specific setup for .gjs files and plugins, with known limitations and workarounds.","has_accepted_answer":false,"can_vote":false,"posters":[{"extras":"latest single","description":"Participante Original, Participante Mais Recente","user_id":-1,"primary_group_id":null,"flair_group_id":null}]},{"fancy_title":"Theme Developer Tutorial: 6. Using the JS API","fancy_title_localized":false,"locale":null,"id":357801,"title":"Theme Developer Tutorial: 6. Using the JS API","slug":"theme-developer-tutorial-6-using-the-js-api","posts_count":4,"reply_count":2,"highest_post_number":4,"image_url":null,"created_at":"2025-03-18T15:59:11.630Z","last_posted_at":"2025-04-14T23:16:42.528Z","bumped":true,"bumped_at":"2026-07-08T07:03:38.001Z","archetype":"regular","unseen":false,"pinned":false,"unpinned":null,"excerpt":"In the last couple of chapters, we’ve explored how to use the JavaScript API to render content into outlets. renderInOutlet is the most commonly-used API, but there are a ton more! In this chapter we’ll try out a few of &hellip;","visible":true,"closed":false,"archived":false,"bookmarked":null,"liked":null,"thumbnails":null,"tags":[],"tags_descriptions":{},"views":1044,"like_count":9,"has_summary":false,"last_poster_username":"pfaffman","category_id":56,"op_like_count":3,"pinned_globally":false,"featured_link":null,"ai_topic_gist":"Users can target specific categories in posts using helper.getModel().topic.category_id within decorateCookedElement, avoiding inefficient text searches.","has_accepted_answer":false,"can_vote":false,"posters":[{"extras":null,"description":"Participante Original","user_id":-1,"primary_group_id":null,"flair_group_id":null},{"extras":null,"description":"Recent Poster","user_id":23968,"primary_group_id":47,"flair_group_id":47},{"extras":"latest","description":"Participante Mais Recente","user_id":15209,"primary_group_id":null,"flair_group_id":142}]},{"fancy_title":"Usando Conectores de Plugin Outlet de um Tema ou Plugin","fancy_title_localized":true,"locale":"en","id":32727,"title":"Using Plugin Outlet Connectors from a Theme or Plugin","slug":"using-plugin-outlet-connectors-from-a-theme-or-plugin","posts_count":13,"reply_count":29,"highest_post_number":46,"image_url":null,"created_at":"2015-08-31T07:35:05.423Z","last_posted_at":"2024-10-14T10:37:16.924Z","bumped":true,"bumped_at":"2026-07-08T07:03:23.555Z","archetype":"regular","unseen":false,"pinned":false,"unpinned":null,"excerpt":"O Discourse inclui centenas de Plugin Outlets que podem ser usados para injetar novo conteúdo ou substituir conteúdo existente na interface do Discourse. Os 'argumentos de saída' estão disponíveis para que o conteúdo possa ser personalizado com base no &hellip;","visible":true,"closed":false,"archived":false,"bookmarked":null,"liked":null,"thumbnails":null,"tags":[{"id":478,"name":"como-fazer","slug":"how-to"},{"id":819,"name":"código","slug":"code"}],"tags_descriptions":{"como-fazer":"Guias de como fazer contêm passos a seguir para resolver um problema específico"},"views":18866,"like_count":48,"has_summary":false,"last_poster_username":"david","category_id":56,"op_like_count":39,"pinned_globally":false,"featured_link":null,"ai_topic_gist":null,"has_accepted_answer":false,"can_vote":false,"posters":[{"extras":null,"description":"Participante Original","user_id":115923,"primary_group_id":null,"flair_group_id":null},{"extras":null,"description":"Participante Frequente","user_id":36685,"primary_group_id":null,"flair_group_id":148},{"extras":null,"description":"Participante Frequente","user_id":133750,"primary_group_id":null,"flair_group_id":73},{"extras":null,"description":"Recent Poster","user_id":135392,"primary_group_id":null,"flair_group_id":73},{"extras":"latest","description":"Participante Mais Recente","user_id":23968,"primary_group_id":47,"flair_group_id":47}]},{"fancy_title":"Theme Developer Tutorial: 7. Wrapping up","fancy_title_localized":false,"locale":null,"id":357802,"title":"Theme Developer Tutorial: 7. Wrapping up","slug":"theme-developer-tutorial-7-wrapping-up","posts_count":1,"reply_count":0,"highest_post_number":1,"image_url":null,"created_at":"2025-03-18T15:59:12.182Z","last_posted_at":"2025-03-18T15:59:12.273Z","bumped":true,"bumped_at":"2026-06-29T15:35:07.587Z","archetype":"regular","unseen":false,"pinned":false,"unpinned":null,"excerpt":"This tutorial has been a whistle-stop tour through the process of creating a Discourse theme and experimenting with a few of the most common APIs. Of course, there’s plenty more to learn, so let’s map out some more place&hellip;","visible":true,"closed":false,"archived":false,"bookmarked":null,"liked":null,"thumbnails":null,"tags":[],"tags_descriptions":{},"views":313,"like_count":2,"has_summary":false,"last_poster_username":"system","category_id":56,"op_like_count":2,"pinned_globally":false,"featured_link":null,"ai_topic_gist":"This tutorial covered creating a Discourse theme, experimenting with APIs, and provided resources for further learning and exploration of theme development.","has_accepted_answer":false,"can_vote":false,"posters":[{"extras":"latest single","description":"Participante Original, Participante Mais Recente","user_id":-1,"primary_group_id":null,"flair_group_id":null}]},{"fancy_title":"Theme Developer Tutorial: 1. Introduction","fancy_title_localized":false,"locale":null,"id":357796,"title":"Theme Developer Tutorial: 1. Introduction","slug":"theme-developer-tutorial-1-introduction","posts_count":1,"reply_count":0,"highest_post_number":1,"image_url":"https://global.discourse-cdn.com/meta/optimized/3X/4/1/41ed947e67ff3411dc18391b4b646462bb4e8feb_2_1023x603.PNG","created_at":"2025-03-18T15:59:08.764Z","last_posted_at":"2025-03-18T15:59:08.833Z","bumped":true,"bumped_at":"2026-06-29T15:35:05.091Z","archetype":"regular","unseen":false,"pinned":false,"unpinned":null,"excerpt":"This tutorial will teach you how to create a Discourse Theme or Theme Component from the ground up. While this topic assumes no previous experience working on Discourse themes, it does assume some prior experience using H&hellip;","visible":true,"closed":false,"archived":false,"bookmarked":null,"liked":null,"thumbnails":[{"max_width":null,"max_height":null,"width":1997,"height":1176,"url":"https://global.discourse-cdn.com/meta/original/3X/4/1/41ed947e67ff3411dc18391b4b646462bb4e8feb.PNG"},{"max_width":1024,"max_height":1024,"width":1023,"height":603,"url":"https://global.discourse-cdn.com/meta/optimized/3X/4/1/41ed947e67ff3411dc18391b4b646462bb4e8feb_2_1023x603.PNG"},{"max_width":800,"max_height":800,"width":800,"height":471,"url":"https://global.discourse-cdn.com/meta/optimized/3X/4/1/41ed947e67ff3411dc18391b4b646462bb4e8feb_2_800x471.PNG"},{"max_width":600,"max_height":600,"width":600,"height":353,"url":"https://global.discourse-cdn.com/meta/optimized/3X/4/1/41ed947e67ff3411dc18391b4b646462bb4e8feb_2_600x353.PNG"},{"max_width":400,"max_height":400,"width":400,"height":235,"url":"https://global.discourse-cdn.com/meta/optimized/3X/4/1/41ed947e67ff3411dc18391b4b646462bb4e8feb_2_400x235.PNG"},{"max_width":300,"max_height":300,"width":300,"height":176,"url":"https://global.discourse-cdn.com/meta/optimized/3X/4/1/41ed947e67ff3411dc18391b4b646462bb4e8feb_2_300x176.PNG"},{"max_width":200,"max_height":200,"width":200,"height":117,"url":"https://global.discourse-cdn.com/meta/optimized/3X/4/1/41ed947e67ff3411dc18391b4b646462bb4e8feb_2_200x117.PNG"}],"tags":[],"tags_descriptions":{},"views":1485,"like_count":5,"has_summary":false,"last_poster_username":"system","category_id":56,"op_like_count":5,"pinned_globally":false,"featured_link":null,"ai_topic_gist":"Creating a Discourse theme or component from scratch requires HTML, CSS, and JavaScript experience, with tutorials covering both local and remote themes, and their technical differences and uses.","has_accepted_answer":false,"can_vote":false,"posters":[{"extras":"latest single","description":"Participante Original, Participante Mais Recente","user_id":-1,"primary_group_id":null,"flair_group_id":null}]},{"fancy_title":"Alterar ícones globalmente","fancy_title_localized":true,"locale":"en","id":87751,"title":"Change icons globally","slug":"change-icons-globally","posts_count":27,"reply_count":17,"highest_post_number":28,"image_url":"https://global.discourse-cdn.com/meta/optimized/4X/b/3/8/b38791f68132a7acf59907ec5862bbe9a6b9c947_2_1024x313.png","created_at":"2018-05-17T15:45:00.000Z","last_posted_at":"2025-10-05T13:10:20.278Z","bumped":true,"bumped_at":"2026-06-29T15:35:01.896Z","archetype":"regular","unseen":false,"pinned":false,"unpinned":null,"excerpt":"Esta é uma maneira fácil de alterar um ícone do Discourse globalmente.\n\n\nClique com o botão direito do mouse no ícone que deseja alterar e selecione “Inspecionar elemento” ou “Inspecionar” (depende do navegador)\n\n\nEncontre o nome do ícone\n  \n\n\nProcure um novo ícone aqui&hellip;","visible":true,"closed":false,"archived":false,"bookmarked":null,"liked":null,"thumbnails":[{"max_width":null,"max_height":null,"width":1039,"height":318,"url":"https://global.discourse-cdn.com/meta/original/4X/b/3/8/b38791f68132a7acf59907ec5862bbe9a6b9c947.png"},{"max_width":1024,"max_height":1024,"width":1024,"height":313,"url":"https://global.discourse-cdn.com/meta/optimized/4X/b/3/8/b38791f68132a7acf59907ec5862bbe9a6b9c947_2_1024x313.png"},{"max_width":800,"max_height":800,"width":800,"height":244,"url":"https://global.discourse-cdn.com/meta/optimized/4X/b/3/8/b38791f68132a7acf59907ec5862bbe9a6b9c947_2_800x244.png"},{"max_width":600,"max_height":600,"width":600,"height":183,"url":"https://global.discourse-cdn.com/meta/optimized/4X/b/3/8/b38791f68132a7acf59907ec5862bbe9a6b9c947_2_600x183.png"},{"max_width":400,"max_height":400,"width":400,"height":122,"url":"https://global.discourse-cdn.com/meta/optimized/4X/b/3/8/b38791f68132a7acf59907ec5862bbe9a6b9c947_2_400x122.png"},{"max_width":300,"max_height":300,"width":300,"height":91,"url":"https://global.discourse-cdn.com/meta/optimized/4X/b/3/8/b38791f68132a7acf59907ec5862bbe9a6b9c947_2_300x91.png"},{"max_width":200,"max_height":200,"width":200,"height":61,"url":"https://global.discourse-cdn.com/meta/optimized/4X/b/3/8/b38791f68132a7acf59907ec5862bbe9a6b9c947_2_200x61.png"}],"tags":[{"id":478,"name":"como-fazer","slug":"how-to"}],"tags_descriptions":{"como-fazer":"Guias de como fazer contêm passos a seguir para resolver um problema específico"},"views":9938,"like_count":68,"has_summary":false,"last_poster_username":"Don","category_id":56,"op_like_count":38,"pinned_globally":false,"featured_link":null,"ai_topic_gist":null,"has_accepted_answer":false,"can_vote":false,"posters":[{"extras":null,"description":"Participante Original","user_id":115923,"primary_group_id":null,"flair_group_id":null},{"extras":null,"description":"Participante Frequente","user_id":21029,"primary_group_id":47,"flair_group_id":47},{"extras":null,"description":"Participante Frequente","user_id":17969,"primary_group_id":null,"flair_group_id":null},{"extras":null,"description":"Recent Poster","user_id":60726,"primary_group_id":null,"flair_group_id":null},{"extras":"latest","description":"Participante Mais Recente","user_id":78445,"primary_group_id":276,"flair_group_id":276}]},{"fancy_title":"Minimizando a manutenção em personalizações de temas","fancy_title_localized":true,"locale":"en","id":261388,"title":"Minimizing Maintenance on Theme Customizations","slug":"minimizing-maintenance-on-theme-customizations","posts_count":1,"reply_count":0,"highest_post_number":1,"image_url":null,"created_at":"2023-04-11T23:58:35.862Z","last_posted_at":"2023-04-11T23:58:36.038Z","bumped":true,"bumped_at":"2026-06-29T15:34:58.574Z","archetype":"regular","unseen":false,"pinned":false,"unpinned":null,"excerpt":"O Discourse é altamente personalizável, permitindo que você modifique quase qualquer aspecto de sua aparência por meio de temas. Para manter a compatibilidade com as atualizações contínuas do Discourse e novos recursos, todos os temas exigem manutenção ocasional…","visible":true,"closed":false,"archived":false,"bookmarked":null,"liked":null,"thumbnails":null,"tags":[{"id":479,"name":"explicação","slug":"explanation"},{"id":820,"name":"guias-de-temas","slug":"theme-guides"}],"tags_descriptions":{},"views":913,"like_count":13,"has_summary":false,"last_poster_username":"Discourse","category_id":56,"op_like_count":13,"pinned_globally":false,"featured_link":null,"ai_topic_gist":null,"has_accepted_answer":false,"can_vote":false,"posters":[{"extras":"latest single","description":"Participante Original, Participante Mais Recente","user_id":115923,"primary_group_id":null,"flair_group_id":null}]},{"fancy_title":"Guia de Referência Rápida para Desenvolvedores de Temas","fancy_title_localized":true,"locale":"en","id":110448,"title":"Theme Developer Quick Reference Guide","slug":"theme-developer-quick-reference-guide","posts_count":3,"reply_count":2,"highest_post_number":4,"image_url":null,"created_at":"2019-03-01T16:22:45.321Z","last_posted_at":"2021-06-28T17:13:16.090Z","bumped":true,"bumped_at":"2026-06-29T15:34:56.670Z","archetype":"regular","unseen":false,"pinned":false,"unpinned":null,"excerpt":"À medida que os temas se tornam mais poderosos, há mais coisas a lembrar sobre como eles funcionam. Temos muita documentação detalhada em #theme-guides, mas se você só precisa de algo para refrescar a memória, este guia pode ajudar.\nGeral Re&hellip;","visible":true,"closed":false,"archived":false,"bookmarked":null,"liked":null,"thumbnails":null,"tags":[{"id":482,"name":"referência","slug":"reference"},{"id":820,"name":"guias-de-temas","slug":"theme-guides"}],"tags_descriptions":{},"views":9888,"like_count":58,"has_summary":false,"last_poster_username":"vinyll","category_id":56,"op_like_count":40,"pinned_globally":false,"featured_link":null,"ai_topic_gist":null,"has_accepted_answer":false,"can_vote":false,"posters":[{"extras":null,"description":"Participante Original","user_id":115923,"primary_group_id":null,"flair_group_id":null},{"extras":null,"description":"Recent Poster","user_id":13093,"primary_group_id":276,"flair_group_id":276},{"extras":"latest","description":"Participante Mais Recente","user_id":98247,"primary_group_id":null,"flair_group_id":null}]},{"fancy_title":"Desenvolvendo Plugins de Discourse - Parte 7 - Publique seu plugin","fancy_title_localized":true,"locale":"en","id":101636,"title":"Developing Discourse Plugins - Part 7 - Publish your plugin","slug":"developing-discourse-plugins-part-7-publish-your-plugin","posts_count":5,"reply_count":2,"highest_post_number":5,"image_url":null,"created_at":"2018-11-08T21:38:50.740Z","last_posted_at":"2021-07-29T14:01:04.441Z","bumped":true,"bumped_at":"2026-06-29T15:34:55.551Z","archetype":"regular","unseen":false,"pinned":false,"unpinned":null,"excerpt":"Tutorial anterior: Desenvolvendo Plugins Discourse - Parte 6 - Adicionar testes de aceitação\n\nVocê criou seu plugin, o enviou para o GitHub e adicionou testes. Ótimo! O problema é que ninguém mais sabe sobre ele.\nDocumentação...","visible":true,"closed":false,"archived":false,"bookmarked":null,"liked":null,"thumbnails":null,"tags":[{"id":484,"name":"tutorial","slug":"tutorial"},{"id":274,"name":"guias-de-plugin","slug":"plugin-guides"}],"tags_descriptions":{"tutorial":""},"views":5856,"like_count":34,"has_summary":false,"last_poster_username":"pfaffman","category_id":56,"op_like_count":24,"pinned_globally":false,"featured_link":null,"ai_topic_gist":null,"has_accepted_answer":false,"can_vote":false,"posters":[{"extras":null,"description":"Participante Original","user_id":115923,"primary_group_id":null,"flair_group_id":null},{"extras":null,"description":"Participante Frequente","user_id":100407,"primary_group_id":null,"flair_group_id":null},{"extras":null,"description":"Participante Frequente","user_id":704,"primary_group_id":null,"flair_group_id":null},{"extras":null,"description":"Recent Poster","user_id":19,"primary_group_id":null,"flair_group_id":null},{"extras":"latest","description":"Participante Mais Recente","user_id":15209,"primary_group_id":null,"flair_group_id":142}]},{"fancy_title":"Configurar o Discourse para desenvolvimento no Fedora Linux","fancy_title_localized":true,"locale":"en","id":163348,"title":"Set up Discourse for development on Fedora Linux","slug":"set-up-discourse-for-development-on-fedora-linux","posts_count":14,"reply_count":12,"highest_post_number":26,"image_url":null,"created_at":"2020-09-08T11:00:32.308Z","last_posted_at":"2026-06-19T05:20:22.329Z","bumped":true,"bumped_at":"2026-06-19T05:20:22.329Z","archetype":"regular","unseen":false,"pinned":false,"unpinned":null,"excerpt":"Este guia foi testado contra uma instalação nova do Fedora 31 e 33, mas pode funcionar em versões mais antigas que também usam o dnf como ferramenta de gerenciamento de pacotes. Este não é um guia oficial, mas pode ser útil para outros desenvolvedores...","visible":true,"closed":false,"archived":false,"bookmarked":null,"liked":null,"thumbnails":null,"tags":[{"id":478,"name":"como-fazer","slug":"how-to"},{"id":150,"name":"instalação-dev","slug":"dev-install"}],"tags_descriptions":{"como-fazer":"Guias de como fazer contêm passos a seguir para resolver um problema específico","instalação-dev":"Instruções e problemas com a instalação do Discourse para desenvolvimento"},"views":4619,"like_count":44,"has_summary":false,"last_poster_username":"NateDhaliwal","category_id":56,"op_like_count":27,"pinned_globally":false,"featured_link":null,"ai_topic_gist":"Guia de instalação do Discourse para desenvolvimento no Fedora, com atualizações sobre versões do Ruby, dependências (oxipng, pgvector) e solução de problemas por usuários no Fedora 38 a 42.","has_accepted_answer":false,"can_vote":false,"posters":[{"extras":null,"description":"Participante Original","user_id":115923,"primary_group_id":null,"flair_group_id":null},{"extras":null,"description":"Participante Frequente","user_id":166720,"primary_group_id":null,"flair_group_id":null},{"extras":null,"description":"Participante Frequente","user_id":83775,"primary_group_id":47,"flair_group_id":47},{"extras":null,"description":"Recent Poster","user_id":82960,"primary_group_id":47,"flair_group_id":47},{"extras":"latest","description":"Participante Mais Recente","user_id":135392,"primary_group_id":null,"flair_group_id":73}]},{"fancy_title":"Usando a API DModal para renderizar janelas modais (aka popups/dialogos) no Discourse","fancy_title_localized":true,"locale":"en","id":268304,"title":"Using the DModal API to render Modal windows (aka popups/dialogs) in Discourse","slug":"using-the-dmodal-api-to-render-modal-windows-aka-popups-dialogs-in-discourse","posts_count":1,"reply_count":1,"highest_post_number":1,"image_url":"https://global.discourse-cdn.com/meta/original/4X/4/0/b/40be9a7c253202136882269ba77d47ad86bd6d35.png","created_at":"2023-07-03T09:52:06.275Z","last_posted_at":"2023-07-03T09:52:06.275Z","bumped":true,"bumped_at":"2026-06-02T14:54:11.378Z","archetype":"regular","unseen":false,"pinned":false,"unpinned":null,"excerpt":"O Discourse 3.1.0.beta6 vem com uma nova API baseada em componentes <DModal>.\n\n:information_source: Isso substitui a antiga API baseada em controladores, que agora está obsoleta. Se você possui modais existentes usando as APIs antigas, verifique...","visible":true,"closed":false,"archived":false,"bookmarked":null,"liked":null,"thumbnails":[{"max_width":null,"max_height":null,"width":696,"height":258,"url":"https://global.discourse-cdn.com/meta/original/4X/4/0/b/40be9a7c253202136882269ba77d47ad86bd6d35.png"},{"max_width":600,"max_height":600,"width":600,"height":222,"url":"https://global.discourse-cdn.com/meta/optimized/4X/4/0/b/40be9a7c253202136882269ba77d47ad86bd6d35_2_600x222.png"},{"max_width":400,"max_height":400,"width":400,"height":148,"url":"https://global.discourse-cdn.com/meta/optimized/4X/4/0/b/40be9a7c253202136882269ba77d47ad86bd6d35_2_400x148.png"},{"max_width":300,"max_height":300,"width":300,"height":111,"url":"https://global.discourse-cdn.com/meta/optimized/4X/4/0/b/40be9a7c253202136882269ba77d47ad86bd6d35_2_300x111.png"},{"max_width":200,"max_height":200,"width":200,"height":74,"url":"https://global.discourse-cdn.com/meta/optimized/4X/4/0/b/40be9a7c253202136882269ba77d47ad86bd6d35_2_200x74.png"}],"tags":[{"id":819,"name":"código","slug":"code"}],"tags_descriptions":{},"views":2134,"like_count":17,"has_summary":false,"last_poster_username":"Discourse","category_id":56,"op_like_count":17,"pinned_globally":false,"featured_link":null,"ai_topic_gist":null,"has_accepted_answer":false,"can_vote":false,"posters":[{"extras":"latest","description":"Participante Original, Participante Mais Recente","user_id":115923,"primary_group_id":null,"flair_group_id":null},{"extras":null,"description":"Recent Poster","user_id":1,"primary_group_id":47,"flair_group_id":47}]},{"fancy_title":"Insera texto ou imagens em qualquer lugar do seu site usando pseudo-elementos CSS","fancy_title_localized":true,"locale":"en","id":99200,"title":"Insert text or images anywhere on your site using CSS pseudo-elements","slug":"insert-text-or-images-anywhere-on-your-site-using-css-pseudo-elements","posts_count":1,"reply_count":6,"highest_post_number":1,"image_url":"https://global.discourse-cdn.com/meta/optimized/4X/7/3/8/7382dd2cbcd102675e74e8a1853a79d2e32a0021_2_1024x471.png","created_at":"2018-10-11T11:12:34.130Z","last_posted_at":"2018-10-11T11:12:34.130Z","bumped":true,"bumped_at":"2026-06-01T15:09:42.855Z","archetype":"regular","unseen":false,"pinned":false,"unpinned":null,"excerpt":"Então, você quer inserir algum texto ou imagem no seu site Discourse. \nEm relação ao texto, na maioria dos casos, basta modificá-lo em /admin/customize/site_texts. \nNo entanto, às vezes, nosso desejo é adicionar uma frase …","visible":true,"closed":false,"archived":false,"bookmarked":null,"liked":null,"thumbnails":[{"max_width":null,"max_height":null,"width":1911,"height":879,"url":"https://global.discourse-cdn.com/meta/original/4X/7/3/8/7382dd2cbcd102675e74e8a1853a79d2e32a0021.png"},{"max_width":1024,"max_height":1024,"width":1024,"height":471,"url":"https://global.discourse-cdn.com/meta/optimized/4X/7/3/8/7382dd2cbcd102675e74e8a1853a79d2e32a0021_2_1024x471.png"},{"max_width":800,"max_height":800,"width":800,"height":367,"url":"https://global.discourse-cdn.com/meta/optimized/4X/7/3/8/7382dd2cbcd102675e74e8a1853a79d2e32a0021_2_800x367.png"},{"max_width":600,"max_height":600,"width":600,"height":275,"url":"https://global.discourse-cdn.com/meta/optimized/4X/7/3/8/7382dd2cbcd102675e74e8a1853a79d2e32a0021_2_600x275.png"},{"max_width":400,"max_height":400,"width":400,"height":183,"url":"https://global.discourse-cdn.com/meta/optimized/4X/7/3/8/7382dd2cbcd102675e74e8a1853a79d2e32a0021_2_400x183.png"},{"max_width":300,"max_height":300,"width":300,"height":137,"url":"https://global.discourse-cdn.com/meta/optimized/4X/7/3/8/7382dd2cbcd102675e74e8a1853a79d2e32a0021_2_300x137.png"},{"max_width":200,"max_height":200,"width":200,"height":91,"url":"https://global.discourse-cdn.com/meta/optimized/4X/7/3/8/7382dd2cbcd102675e74e8a1853a79d2e32a0021_2_200x91.png"}],"tags":[{"id":478,"name":"como-fazer","slug":"how-to"},{"id":814,"name":"personalização","slug":"customization"}],"tags_descriptions":{"como-fazer":"Guias de como fazer contêm passos a seguir para resolver um problema específico"},"views":18038,"like_count":33,"has_summary":false,"last_poster_username":"Discourse","category_id":56,"op_like_count":33,"pinned_globally":false,"featured_link":null,"ai_topic_gist":null,"has_accepted_answer":false,"can_vote":false,"posters":[{"extras":"latest single","description":"Participante Original, Participante Mais Recente","user_id":115923,"primary_group_id":null,"flair_group_id":null}]},{"fancy_title":"Designing for Different Devices (Viewport Size, Touch/Hover, etc.)","fancy_title_localized":false,"locale":null,"id":367810,"title":"Designing for Different Devices (Viewport Size, Touch/Hover, etc.)","slug":"designing-for-different-devices-viewport-size-touch-hover-etc","posts_count":15,"reply_count":11,"highest_post_number":15,"image_url":null,"created_at":"2025-05-27T18:17:05.719Z","last_posted_at":"2026-01-25T21:34:26.908Z","bumped":true,"bumped_at":"2026-06-01T15:09:36.242Z","archetype":"regular","unseen":false,"pinned":false,"unpinned":null,"excerpt":"This document outlines the APIs used to adapt Discourse’s user interface for different devices. \nViewport Size\nThe most important characteristic to consider is the viewport size. We design “mobile first” and then add cus&hellip;","visible":true,"closed":false,"archived":false,"bookmarked":null,"liked":null,"thumbnails":null,"tags":[],"tags_descriptions":{},"views":910,"like_count":24,"has_summary":false,"last_poster_username":"merefield","category_id":56,"op_like_count":12,"pinned_globally":false,"featured_link":null,"ai_topic_gist":"Discourse is phasing out legacy mobile/desktop modes in favor of viewport and touch detection; users discuss deprecating outdated classes like pull-left and adapting core components for responsive layouts across devices.","has_accepted_answer":false,"can_vote":false,"posters":[{"extras":null,"description":"Participante Original","user_id":-1,"primary_group_id":null,"flair_group_id":null},{"extras":null,"description":"Participante Frequente","user_id":23968,"primary_group_id":47,"flair_group_id":47},{"extras":null,"description":"Participante Frequente","user_id":135392,"primary_group_id":null,"flair_group_id":73},{"extras":null,"description":"Recent Poster","user_id":406,"primary_group_id":null,"flair_group_id":142},{"extras":"latest","description":"Participante Mais Recente","user_id":27384,"primary_group_id":null,"flair_group_id":null}]},{"fancy_title":"Guidelines for CSS classes using BEM","fancy_title_localized":false,"locale":null,"id":361851,"title":"Guidelines for CSS classes using BEM","slug":"guidelines-for-css-classes-using-bem","posts_count":1,"reply_count":0,"highest_post_number":1,"image_url":null,"created_at":"2025-04-15T05:48:23.418Z","last_posted_at":"2025-04-15T05:48:23.483Z","bumped":true,"bumped_at":"2026-06-01T15:09:34.864Z","archetype":"regular","unseen":false,"pinned":false,"unpinned":null,"excerpt":"Background\nWhen writing CSS classes for Discourse components, themes, or plugins, we follow a modified variant of Block Element Modifier (BEM). Following these guidelines will make it much less likely for CSS conflicts t&hellip;","visible":true,"closed":false,"archived":false,"bookmarked":null,"liked":null,"thumbnails":null,"tags":[],"tags_descriptions":{},"views":318,"like_count":8,"has_summary":false,"last_poster_username":"system","category_id":56,"op_like_count":8,"pinned_globally":false,"featured_link":null,"ai_topic_gist":"Discourse uses a modified BEM variant for CSS classes, following specific syntax and guidelines to minimize conflicts and improve specificity.","has_accepted_answer":false,"can_vote":false,"posters":[{"extras":"latest single","description":"Participante Original, Participante Mais Recente","user_id":-1,"primary_group_id":null,"flair_group_id":null}]},{"fancy_title":"Using Transformers to customize client-side values and behavior","fancy_title_localized":false,"locale":null,"id":349954,"title":"Using Transformers to customize client-side values and behavior","slug":"using-transformers-to-customize-client-side-values-and-behavior","posts_count":2,"reply_count":0,"highest_post_number":2,"image_url":null,"created_at":"2025-01-31T20:19:51.229Z","last_posted_at":"2025-11-03T03:00:09.908Z","bumped":true,"bumped_at":"2026-06-01T15:09:33.590Z","archetype":"regular","unseen":false,"pinned":false,"unpinned":null,"excerpt":"Discourse core includes a number of “transformer” hooks which can be used to customize client behavior. These fall into two categories: \n\n\nValue Transformers take an output from Discourse core, and optionally modify it, &hellip;","visible":true,"closed":false,"archived":false,"bookmarked":null,"liked":null,"thumbnails":null,"tags":[],"tags_descriptions":{},"views":660,"like_count":11,"has_summary":false,"last_poster_username":"NateDhaliwal","category_id":56,"op_like_count":10,"pinned_globally":false,"featured_link":null,"ai_topic_gist":"A discussion on using Discourse's transformer hooks to customize client-side values and behavior, with recent updates including a PR to modify the Transformers registry link to the frontend directory.","has_accepted_answer":false,"can_vote":false,"posters":[{"extras":null,"description":"Participante Original","user_id":-1,"primary_group_id":null,"flair_group_id":null},{"extras":"latest","description":"Participante Mais Recente","user_id":135392,"primary_group_id":null,"flair_group_id":73}]},{"fancy_title":"Guia do desenvolvedor para extensões Markdown","fancy_title_localized":true,"locale":"en","id":66023,"title":"Developer's guide to Markdown extensions","slug":"developers-guide-to-markdown-extensions","posts_count":2,"reply_count":13,"highest_post_number":24,"image_url":null,"created_at":"2017-07-11T21:23:25.941Z","last_posted_at":"2026-06-01T08:45:53.539Z","bumped":true,"bumped_at":"2026-06-01T08:45:53.539Z","archetype":"regular","unseen":false,"pinned":false,"unpinned":null,"excerpt":"O Discourse usa um motor Markdown chamado Markdown-it.\nAqui estão algumas notas de desenvolvimento que ajudarão você a corrigir bugs no núcleo ou a criar seus novos plugins.\nO Básico\nO Discourse contém apenas alguns auxiliares acima do motor, &hellip;","visible":true,"closed":false,"archived":false,"bookmarked":null,"liked":null,"thumbnails":null,"tags":[{"id":482,"name":"referência","slug":"reference"},{"id":52,"name":"markdown","slug":"markdown"},{"id":819,"name":"código","slug":"code"}],"tags_descriptions":{},"views":13618,"like_count":35,"has_summary":false,"last_poster_username":"NateDhaliwal","category_id":56,"op_like_count":35,"pinned_globally":false,"featured_link":null,"ai_topic_gist":"Guia para desenvolvedores sobre o Markdown-it do Discourse. NateDhaliwal pergunta se pode ser usado em Theme Component ou apenas em plugin.","has_accepted_answer":false,"can_vote":false,"posters":[{"extras":null,"description":"Participante Original","user_id":115923,"primary_group_id":null,"flair_group_id":null},{"extras":"latest","description":"Participante Mais Recente","user_id":135392,"primary_group_id":null,"flair_group_id":73}]},{"fancy_title":"Theme Developer Tutorial: 2. Creating a remote theme","fancy_title_localized":false,"locale":null,"id":357797,"title":"Theme Developer Tutorial: 2. Creating a remote theme","slug":"theme-developer-tutorial-2-creating-a-remote-theme","posts_count":1,"reply_count":0,"highest_post_number":1,"image_url":null,"created_at":"2025-03-18T15:59:09.382Z","last_posted_at":"2025-03-18T15:59:09.454Z","bumped":true,"bumped_at":"2026-05-29T10:12:51.441Z","archetype":"regular","unseen":false,"pinned":false,"unpinned":null,"excerpt":"In the last chapter, we created a basic theme via the Discourse admin interface. This works well enough for very simple themes. But as soon as you want to do something more complex, or share a theme more widely, you’ll n&hellip;","visible":true,"closed":false,"archived":false,"bookmarked":null,"liked":null,"thumbnails":null,"tags":[],"tags_descriptions":{},"views":798,"like_count":2,"has_summary":false,"last_poster_username":"system","category_id":56,"op_like_count":2,"pinned_globally":false,"featured_link":null,"ai_topic_gist":"The tutorial guides users through creating a remote Discourse theme using the discourse_theme CLI, syncing it to a Discourse instance, adding custom code, and preparing it for GitHub hosting.","has_accepted_answer":false,"can_vote":false,"posters":[{"extras":"latest single","description":"Participante Original, Participante Mais Recente","user_id":-1,"primary_group_id":null,"flair_group_id":null}]}]}}