{"users":[{"id":115923,"username":"Discourse","name":null,"avatar_template":"/user_avatar/meta-redesign-2026.discourse.group/discourse/{size}/148734_2.png","admin":true,"trust_level":4},{"id":100484,"username":"JammyDodger","name":"","avatar_template":"/user_avatar/meta-redesign-2026.discourse.group/jammydodger/{size}/254611_2.png","trust_level":3},{"id":83775,"username":"fitzy","name":"Michael Fitz-Payne","avatar_template":"/user_avatar/meta-redesign-2026.discourse.group/fitzy/{size}/192549_2.png","primary_group_name":"team","flair_name":"team","flair_url":"//cdck-file-uploads-global.s3.dualstack.us-west-2.amazonaws.com/meta/original/3X/e/b/ebee30bd98aef20357e4a177a5a1e45b877ce088.svg","flair_color":"111","flair_group_id":47,"trust_level":4},{"id":35474,"username":"Canapin","name":"Coin-coin le Canapin","avatar_template":"/user_avatar/meta-redesign-2026.discourse.group/canapin/{size}/119591_2.png","trust_level":3},{"id":166720,"username":"opcourdis","name":null,"avatar_template":"https://avatars.discourse-cdn.com/v4/letter/o/45deac/{size}.png","trust_level":2},{"id":135392,"username":"NateDhaliwal","name":"Nate Dhaliwal","avatar_template":"/user_avatar/meta-redesign-2026.discourse.group/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":5859,"username":"j127","name":"","avatar_template":"/user_avatar/meta-redesign-2026.discourse.group/j127/{size}/79093_2.png","trust_level":2},{"id":27773,"username":"bletch","name":"Danny Goodall","avatar_template":"/user_avatar/meta-redesign-2026.discourse.group/bletch/{size}/69088_2.png","trust_level":2},{"id":15209,"username":"pfaffman","name":"Jay Pfaffman","avatar_template":"/user_avatar/meta-redesign-2026.discourse.group/pfaffman/{size}/120154_2.png","flair_name":"support-experts","flair_url":"//cdck-file-uploads-global.s3.dualstack.us-west-2.amazonaws.com/meta/original/3X/e/2/e250ec403580530d19e6a9ed42d0d525a51a9dbe.svg","flair_bg_color":"FFFFFF","flair_group_id":142,"trust_level":4},{"id":117526,"username":"Dave_Driesmans","name":"Dave Driesmans","avatar_template":"/user_avatar/meta-redesign-2026.discourse.group/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":1,"username":"sam","name":"Sam Saffron","avatar_template":"/user_avatar/meta-redesign-2026.discourse.group/sam/{size}/102149_2.png","primary_group_name":"team","flair_name":"team","flair_url":"//cdck-file-uploads-global.s3.dualstack.us-west-2.amazonaws.com/meta/original/3X/e/b/ebee30bd98aef20357e4a177a5a1e45b877ce088.svg","flair_color":"111","flair_group_id":47,"admin":true,"trust_level":3},{"id":40486,"username":"TheBestPessimist","name":"","avatar_template":"/user_avatar/meta-redesign-2026.discourse.group/thebestpessimist/{size}/247704_2.png","trust_level":2},{"id":57427,"username":"Machigatta","name":"","avatar_template":"/user_avatar/meta-redesign-2026.discourse.group/machigatta/{size}/125064_2.png","trust_level":1},{"id":104279,"username":"nat","name":"Natalie T","avatar_template":"/user_avatar/meta-redesign-2026.discourse.group/nat/{size}/235063_2.png","primary_group_name":"team","flair_name":"team","flair_url":"//cdck-file-uploads-global.s3.dualstack.us-west-2.amazonaws.com/meta/original/3X/e/b/ebee30bd98aef20357e4a177a5a1e45b877ce088.svg","flair_color":"111","flair_group_id":47,"admin":true,"trust_level":3},{"id":19127,"username":"webeindustry","name":"","avatar_template":"/user_avatar/meta-redesign-2026.discourse.group/webeindustry/{size}/53973_2.png","trust_level":2},{"id":27611,"username":"Jen_Lijo","name":"Jen","avatar_template":"/user_avatar/meta-redesign-2026.discourse.group/jen_lijo/{size}/77057_2.png","trust_level":2},{"id":19,"username":"eviltrout","name":"Robin Ward","avatar_template":"/user_avatar/meta-redesign-2026.discourse.group/eviltrout/{size}/5275_2.png","trust_level":4},{"id":23842,"username":"AhmadF.Cheema","name":"","avatar_template":"/user_avatar/meta-redesign-2026.discourse.group/ahmadf.cheema/{size}/87109_2.png","trust_level":2},{"id":13093,"username":"pacharanero","name":"Marcus Baw","avatar_template":"/user_avatar/meta-redesign-2026.discourse.group/pacharanero/{size}/500583_2.png","primary_group_name":"VolunteerMods","flair_name":"VolunteerMods","flair_url":"//cdck-file-uploads-global.s3.dualstack.us-west-2.amazonaws.com/meta/original/4X/2/7/d/27de051915b8a604d176484cd260d10cfc956d42.svg","flair_group_id":276,"trust_level":4},{"id":28866,"username":"schungx","name":"Stephen Chung","avatar_template":"/user_avatar/meta-redesign-2026.discourse.group/schungx/{size}/70989_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-redesign-2026.discourse.group/jithin_krishnan/{size}/121329_2.png","trust_level":1},{"id":704,"username":"AstonJ","name":"AstonJ","avatar_template":"/user_avatar/meta-redesign-2026.discourse.group/astonj/{size}/215041_2.png","trust_level":2},{"id":149694,"username":"Ambient.Impact","name":"","avatar_template":"/user_avatar/meta-redesign-2026.discourse.group/ambient.impact/{size}/387027_2.png","trust_level":1},{"id":-1,"username":"system","name":"system","avatar_template":"/user_avatar/meta-redesign-2026.discourse.group/system/{size}/443519_2.png","admin":true,"moderator":true,"trust_level":4},{"id":23968,"username":"david","name":"David Taylor","avatar_template":"/user_avatar/meta-redesign-2026.discourse.group/david/{size}/157490_2.png","primary_group_name":"team","flair_name":"team","flair_url":"//cdck-file-uploads-global.s3.dualstack.us-west-2.amazonaws.com/meta/original/3X/e/b/ebee30bd98aef20357e4a177a5a1e45b877ce088.svg","flair_color":"111","flair_group_id":47,"admin":true,"trust_level":3},{"id":127856,"username":"Lilly","name":"Lillian ","avatar_template":"/user_avatar/meta-redesign-2026.discourse.group/lilly/{size}/555832_2.png","trust_level":3},{"id":27384,"username":"merefield","name":"Robert","avatar_template":"/user_avatar/meta-redesign-2026.discourse.group/merefield/{size}/176214_2.png","trust_level":3},{"id":21029,"username":"pmusaraj","name":"Penar Musaraj","avatar_template":"/user_avatar/meta-redesign-2026.discourse.group/pmusaraj/{size}/119489_2.png","primary_group_name":"team","flair_name":"team","flair_url":"//cdck-file-uploads-global.s3.dualstack.us-west-2.amazonaws.com/meta/original/3X/e/b/ebee30bd98aef20357e4a177a5a1e45b877ce088.svg","flair_color":"111","flair_group_id":47,"admin":true,"trust_level":3},{"id":139654,"username":"AliBenBongo","name":null,"avatar_template":"https://avatars.discourse-cdn.com/v4/letter/a/da6949/{size}.png","trust_level":1},{"id":36685,"username":"Arkshine","name":"","avatar_template":"/user_avatar/meta-redesign-2026.discourse.group/arkshine/{size}/298682_2.png","flair_name":"support-advocates","flair_url":"//cdck-file-uploads-global.s3.dualstack.us-west-2.amazonaws.com/meta/original/3X/e/4/e4038d4d9848de2eabab38e17b8bdb69da154024.svg","flair_bg_color":"FFFFFF","flair_group_id":148,"trust_level":3},{"id":93926,"username":"taravasya","name":"Вася Тарарин","avatar_template":"/user_avatar/meta-redesign-2026.discourse.group/taravasya/{size}/214539_2.png","trust_level":2},{"id":114728,"username":"darkpixlz","name":"Pyx ","avatar_template":"/user_avatar/meta-redesign-2026.discourse.group/darkpixlz/{size}/549896_2.png","primary_group_name":"VolunteerMods","flair_name":"VolunteerMods","flair_url":"//cdck-file-uploads-global.s3.dualstack.us-west-2.amazonaws.com/meta/original/4X/2/7/d/27de051915b8a604d176484cd260d10cfc956d42.svg","flair_group_id":276,"trust_level":4},{"id":14353,"username":"simon","name":"","avatar_template":"/user_avatar/meta-redesign-2026.discourse.group/simon/{size}/339122_2.png","trust_level":2},{"id":105081,"username":"Decorbuz","name":"","avatar_template":"/user_avatar/meta-redesign-2026.discourse.group/decorbuz/{size}/235124_2.png","trust_level":2},{"id":125230,"username":"Pieces","name":"","avatar_template":"https://avatars.discourse-cdn.com/v4/letter/p/958977/{size}.png","trust_level":2},{"id":15442,"username":"jericson","name":"Jon Ericson","avatar_template":"/user_avatar/meta-redesign-2026.discourse.group/jericson/{size}/116215_2.png","flair_name":"support-explorers","flair_url":"//cdck-file-uploads-global.s3.dualstack.us-west-2.amazonaws.com/meta/original/4X/d/1/b/d1ba0acf09b9d01f87f9e05bbee1dc5b0e316d5f.png","flair_bg_color":"dddddd","flair_color":"111111","flair_group_id":118,"trust_level":2},{"id":36692,"username":"seanblue","name":"","avatar_template":"https://avatars.discourse-cdn.com/v4/letter/s/dc4da7/{size}.png","trust_level":2},{"id":131037,"username":"GregorSondermeier","name":"Gregor Sondermeier","avatar_template":"/user_avatar/meta-redesign-2026.discourse.group/gregorsondermeier/{size}/299039_2.png","trust_level":2},{"id":119723,"username":"dubwoc","name":"","avatar_template":"https://avatars.discourse-cdn.com/v4/letter/d/b4bc9f/{size}.png","trust_level":2},{"id":95552,"username":"Moin","name":"","avatar_template":"/user_avatar/meta-redesign-2026.discourse.group/moin/{size}/554653_2.png","trust_level":3},{"id":155596,"username":"Daimonds_and_netherite","name":"USCHESSID: 32121789","avatar_template":"https://avatars.discourse-cdn.com/v4/letter/d/e0b2c6/{size}.png","trust_level":1},{"id":174008,"username":"Dimava","name":"Dimava","avatar_template":"/user_avatar/meta-redesign-2026.discourse.group/dimava/{size}/498540_2.png","trust_level":2},{"id":127446,"username":"gormus","name":"Osman Görmüş","avatar_template":"/user_avatar/meta-redesign-2026.discourse.group/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":9858,"username":"dfabulich","name":"Dan Fabulich","avatar_template":"/user_avatar/meta-redesign-2026.discourse.group/dfabulich/{size}/108716_2.png","trust_level":2},{"id":101447,"username":"leonardo","name":"Leonardo Mosquera","avatar_template":"/user_avatar/meta-redesign-2026.discourse.group/leonardo/{size}/228634_2.png","trust_level":2},{"id":128201,"username":"kjs-fgx","name":null,"avatar_template":"https://avatars.discourse-cdn.com/v4/letter/k/a9adbd/{size}.png","trust_level":1},{"id":192487,"username":"micke","name":"Micke","avatar_template":"/user_avatar/meta-redesign-2026.discourse.group/micke/{size}/553682_2.png","trust_level":1},{"id":23163,"username":"j.jaffeux","name":"Joffrey Jaffeux","avatar_template":"/user_avatar/meta-redesign-2026.discourse.group/j.jaffeux/{size}/60297_2.png","primary_group_name":"team","flair_name":"team","flair_url":"//cdck-file-uploads-global.s3.dualstack.us-west-2.amazonaws.com/meta/original/3X/e/b/ebee30bd98aef20357e4a177a5a1e45b877ce088.svg","flair_color":"111","flair_group_id":47,"admin":true,"trust_level":2},{"id":2770,"username":"awesomerobot","name":"Kris","avatar_template":"/user_avatar/meta-redesign-2026.discourse.group/awesomerobot/{size}/142900_2.png","primary_group_name":"team","flair_name":"team","flair_url":"//cdck-file-uploads-global.s3.dualstack.us-west-2.amazonaws.com/meta/original/3X/e/b/ebee30bd98aef20357e4a177a5a1e45b877ce088.svg","flair_color":"111","flair_group_id":47,"admin":true,"trust_level":3},{"id":39365,"username":"sarahann","name":"Sarah","avatar_template":"/user_avatar/meta-redesign-2026.discourse.group/sarahann/{size}/96703_2.png","trust_level":2},{"id":131832,"username":"hocine","name":"Hocine Mahmoudi","avatar_template":"/user_avatar/meta-redesign-2026.discourse.group/hocine/{size}/301751_2.png","trust_level":1}],"primary_groups":[{"id":47,"name":"team"},{"id":276,"name":"VolunteerMods"}],"flair_groups":[{"id":47,"name":"team","flair_url":"//cdck-file-uploads-global.s3.dualstack.us-west-2.amazonaws.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":142,"name":"support-experts","flair_url":"//cdck-file-uploads-global.s3.dualstack.us-west-2.amazonaws.com/meta/original/3X/e/2/e250ec403580530d19e6a9ed42d0d525a51a9dbe.svg","flair_bg_color":"FFFFFF","flair_color":""},{"id":276,"name":"VolunteerMods","flair_url":"//cdck-file-uploads-global.s3.dualstack.us-west-2.amazonaws.com/meta/original/4X/2/7/d/27de051915b8a604d176484cd260d10cfc956d42.svg","flair_bg_color":"","flair_color":""},{"id":148,"name":"support-advocates","flair_url":"//cdck-file-uploads-global.s3.dualstack.us-west-2.amazonaws.com/meta/original/3X/e/4/e4038d4d9848de2eabab38e17b8bdb69da154024.svg","flair_bg_color":"FFFFFF","flair_color":""},{"id":118,"name":"support-explorers","flair_url":"//cdck-file-uploads-global.s3.dualstack.us-west-2.amazonaws.com/meta/original/4X/d/1/b/d1ba0acf09b9d01f87f9e05bbee1dc5b0e316d5f.png","flair_bg_color":"dddddd","flair_color":"111111"}],"topic_list":{"can_create_topic":false,"more_topics_url":"/c/documentation/developer-guides/56?page=1","per_page":30,"top_tags":[{"id":478,"name":"cómo-hacerlo","slug":"how-to"},{"id":820,"name":"guías-temáticas","slug":"theme-guides"},{"id":819,"name":"código","slug":"code"},{"id":274,"name":"guías-de-complementos","slug":"plugin-guides"},{"id":484,"name":"tutorial","slug":"tutorial"},{"id":150,"name":"instalar-dev","slug":"dev-install"},{"id":482,"name":"referencia","slug":"reference"},{"id":479,"name":"explicación","slug":"explanation"},{"id":70,"name":"brasa","slug":"ember"},{"id":58,"name":"prueba","slug":"testing"},{"id":543,"name":"ia","slug":"ai"},{"id":643,"name":"auto-oscuro","slug":"auto-dark"},{"id":275,"name":"automatización","slug":"automation"},{"id":436,"name":"css","slug":"css"},{"id":814,"name":"personalización","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-complemento","slug":"plugin-api"},{"id":566,"name":"creador-de-temas","slug":"theme-creator"},{"id":16,"name":"traducción","slug":"translation"},{"id":25,"name":"publicaciones-wiki","slug":"wiki-posts"}],"topics":[{"fancy_title":"Índice de guías para desarrolladores","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":"Documentación sobre la extensión de Discourse con complementos, temas y componentes de temas, trabajando con el código principal y utilizando la API de Discourse.\nIntroducción\n\nIntroducción: Introducción al desarrollo de Discourse\n\nDesarrollo&hellip;","visible":true,"closed":true,"archived":false,"bookmarked":null,"liked":null,"thumbnails":null,"tags":[{"id":799,"name":"índice","slug":"index"}],"tags_descriptions":{"índice":"Índice de temas de la categoría de documentación."},"views":1986,"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":"Discussion about creating a plugin skeleton, with the original link now found at https://meta.discourse.org/t/automating-discourse-plugin-setup-with-create-discourse-plugin-gem/315013, which provides a rake task for automating Discourse plugin setup.","has_accepted_answer":false,"can_vote":false,"posters":[{"extras":"latest","description":"Autor original, Autor más reciente","user_id":115923,"primary_group_id":null,"flair_group_id":null},{"extras":null,"description":"Autor frecuente","user_id":100484,"primary_group_id":null,"flair_group_id":null}]},{"fancy_title":"Configurar Discourse para desarrollo en 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":13,"reply_count":12,"highest_post_number":25,"image_url":null,"created_at":"2020-09-08T11:00:32.308Z","last_posted_at":"2026-06-05T08:25:11.120Z","bumped":true,"bumped_at":"2026-06-05T08:25:11.120Z","archetype":"regular","unseen":false,"pinned":false,"unpinned":null,"excerpt":"Esta guía se ha probado con una instalación nueva de Fedora 31 y 33, pero puede funcionar en versiones anteriores que también utilicen dnf como herramienta de gestión de paquetes. No es una guía oficial, pero puede ser útil para otros desarrolladores...","visible":true,"closed":false,"archived":false,"bookmarked":null,"liked":null,"thumbnails":null,"tags":[{"id":478,"name":"cómo-hacerlo","slug":"how-to"},{"id":150,"name":"instalar-dev","slug":"dev-install"}],"tags_descriptions":{"cómo-hacerlo":"Las guías de \"Cómo hacer\" contienen pasos a seguir para resolver un problema ...","instalar-dev":"Instrucciones y problemas con la instalación de Discourse para desarrollo"},"views":4491,"like_count":43,"has_summary":false,"last_poster_username":"NateDhaliwal","category_id":56,"op_like_count":27,"pinned_globally":false,"featured_link":null,"ai_topic_gist":"Users question the guide's official status and the use of an outdated Ruby version (2.7.1) in the Fedora Discourse development setup instructions.","has_accepted_answer":false,"can_vote":false,"posters":[{"extras":null,"description":"Autor original","user_id":115923,"primary_group_id":null,"flair_group_id":null},{"extras":null,"description":"Autor frecuente","user_id":83775,"primary_group_id":47,"flair_group_id":47},{"extras":null,"description":"Autor frecuente","user_id":35474,"primary_group_id":null,"flair_group_id":null},{"extras":null,"description":"Autor frecuente","user_id":166720,"primary_group_id":null,"flair_group_id":null},{"extras":"latest","description":"Autor más reciente","user_id":135392,"primary_group_id":null,"flair_group_id":73}]},{"fancy_title":"Crea y comparte una paleta de colores","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":"//cdck-file-uploads-global.s3.dualstack.us-west-2.amazonaws.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-06-02T14:54:24.218Z","archetype":"regular","unseen":false,"pinned":false,"unpinned":null,"excerpt":"Discourse ahora admite la importación de esquemas de color desde un repositorio remoto. Aquí demostraré cómo hacerlo.\nNavega a Colores y agrega un esquema de color.\nDirígete a /admin/customize/colors en tu sitio…","visible":true,"closed":false,"archived":false,"bookmarked":null,"liked":null,"thumbnails":[{"max_width":null,"max_height":null,"width":1950,"height":1276,"url":"//cdck-file-uploads-global.s3.dualstack.us-west-2.amazonaws.com/meta/original/3X/b/7/b7fced237ee399d52c634a3ab6fcc9416db65605.png"},{"max_width":1024,"max_height":1024,"width":1024,"height":670,"url":"//cdck-file-uploads-global.s3.dualstack.us-west-2.amazonaws.com/meta/optimized/3X/b/7/b7fced237ee399d52c634a3ab6fcc9416db65605_2_1024x670.png"},{"max_width":800,"max_height":800,"width":800,"height":523,"url":"//cdck-file-uploads-global.s3.dualstack.us-west-2.amazonaws.com/meta/optimized/3X/b/7/b7fced237ee399d52c634a3ab6fcc9416db65605_2_800x523.png"},{"max_width":600,"max_height":600,"width":600,"height":392,"url":"//cdck-file-uploads-global.s3.dualstack.us-west-2.amazonaws.com/meta/optimized/3X/b/7/b7fced237ee399d52c634a3ab6fcc9416db65605_2_600x392.png"},{"max_width":400,"max_height":400,"width":400,"height":261,"url":"//cdck-file-uploads-global.s3.dualstack.us-west-2.amazonaws.com/meta/optimized/3X/b/7/b7fced237ee399d52c634a3ab6fcc9416db65605_2_400x261.png"},{"max_width":300,"max_height":300,"width":300,"height":196,"url":"//cdck-file-uploads-global.s3.dualstack.us-west-2.amazonaws.com/meta/optimized/3X/b/7/b7fced237ee399d52c634a3ab6fcc9416db65605_2_300x196.png"},{"max_width":200,"max_height":200,"width":200,"height":130,"url":"//cdck-file-uploads-global.s3.dualstack.us-west-2.amazonaws.com/meta/optimized/3X/b/7/b7fced237ee399d52c634a3ab6fcc9416db65605_2_200x130.png"}],"tags":[{"id":478,"name":"cómo-hacerlo","slug":"how-to"}],"tags_descriptions":{"cómo-hacerlo":"Las guías de \"Cómo hacer\" contienen pasos a seguir para resolver un problema ..."},"views":6291,"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":"User suggests adding 'hover' and 'selected' fields to the color scheme configuration for enhanced customization.","has_accepted_answer":false,"can_vote":false,"posters":[{"extras":null,"description":"Autor original","user_id":115923,"primary_group_id":null,"flair_group_id":null},{"extras":"latest","description":"Autor más reciente","user_id":5859,"primary_group_id":null,"flair_group_id":null}]},{"fancy_title":"Crear y compartir un componente de tema de fuente","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":"//cdck-file-uploads-global.s3.dualstack.us-west-2.amazonaws.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-06-02T14:54:22.736Z","archetype":"regular","unseen":false,"pinned":false,"unpinned":null,"excerpt":"Discourse admite la importación de temas que incluyen recursos desde un repositorio remoto. \nEsto permite a los autores de temas compartir fuentes e imágenes. \nCrea un nuevo repositorio git con la fuente:\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":"//cdck-file-uploads-global.s3.dualstack.us-west-2.amazonaws.com/meta/original/4X/c/1/d/c1de6b52ae98df03f557c91f1ae02251f08cda18.png"},{"max_width":1024,"max_height":1024,"width":1024,"height":412,"url":"//cdck-file-uploads-global.s3.dualstack.us-west-2.amazonaws.com/meta/optimized/4X/c/1/d/c1de6b52ae98df03f557c91f1ae02251f08cda18_2_1024x412.png"},{"max_width":800,"max_height":800,"width":800,"height":322,"url":"//cdck-file-uploads-global.s3.dualstack.us-west-2.amazonaws.com/meta/optimized/4X/c/1/d/c1de6b52ae98df03f557c91f1ae02251f08cda18_2_800x322.png"},{"max_width":600,"max_height":600,"width":600,"height":241,"url":"//cdck-file-uploads-global.s3.dualstack.us-west-2.amazonaws.com/meta/optimized/4X/c/1/d/c1de6b52ae98df03f557c91f1ae02251f08cda18_2_600x241.png"},{"max_width":400,"max_height":400,"width":400,"height":161,"url":"//cdck-file-uploads-global.s3.dualstack.us-west-2.amazonaws.com/meta/optimized/4X/c/1/d/c1de6b52ae98df03f557c91f1ae02251f08cda18_2_400x161.png"},{"max_width":300,"max_height":300,"width":300,"height":120,"url":"//cdck-file-uploads-global.s3.dualstack.us-west-2.amazonaws.com/meta/optimized/4X/c/1/d/c1de6b52ae98df03f557c91f1ae02251f08cda18_2_300x120.png"},{"max_width":200,"max_height":200,"width":200,"height":80,"url":"//cdck-file-uploads-global.s3.dualstack.us-west-2.amazonaws.com/meta/optimized/4X/c/1/d/c1de6b52ae98df03f557c91f1ae02251f08cda18_2_200x80.png"}],"tags":[{"id":478,"name":"cómo-hacerlo","slug":"how-to"},{"id":820,"name":"guías-temáticas","slug":"theme-guides"}],"tags_descriptions":{"cómo-hacerlo":"Las guías de \"Cómo hacer\" contienen pasos a seguir para resolver un problema ..."},"views":5991,"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":"Users report errors with undefined variables and missing assets when following the font theme component guide, questioning if the instructions need updating.","has_accepted_answer":false,"can_vote":false,"posters":[{"extras":null,"description":"Autor original","user_id":115923,"primary_group_id":null,"flair_group_id":null},{"extras":null,"description":"Autor frecuente","user_id":27773,"primary_group_id":null,"flair_group_id":null},{"extras":null,"description":"Autor frecuente","user_id":15209,"primary_group_id":null,"flair_group_id":142},{"extras":null,"description":"Autor frecuente","user_id":117526,"primary_group_id":null,"flair_group_id":null},{"extras":"latest","description":"Autor más reciente","user_id":179822,"primary_group_id":null,"flair_group_id":null}]},{"fancy_title":"Desarrollando plugins de Discourse - Parte 6: Añadir pruebas de aceptación","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":"//cdck-file-uploads-global.s3.dualstack.us-west-2.amazonaws.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-06-02T14:54:21.418Z","archetype":"regular","unseen":false,"pinned":false,"unpinned":null,"excerpt":"Tutorial anterior: Desarrollando plugins de Discourse - Parte 5 - Agregar una interfaz de administración\n\n¿Sabías que Discourse cuenta con dos grandes suites de pruebas para su base de código? En el lado del servidor, nuestro código Ruby tiene una suite de pruebas que utiliza rs…","visible":true,"closed":false,"archived":false,"bookmarked":null,"liked":null,"thumbnails":[{"max_width":null,"max_height":null,"width":1058,"height":739,"url":"//cdck-file-uploads-global.s3.dualstack.us-west-2.amazonaws.com/meta/original/4X/6/0/2/602e6bb3fe340f0569c1bfd60bb74f6d83d92893.png"},{"max_width":1024,"max_height":1024,"width":1024,"height":715,"url":"//cdck-file-uploads-global.s3.dualstack.us-west-2.amazonaws.com/meta/optimized/4X/6/0/2/602e6bb3fe340f0569c1bfd60bb74f6d83d92893_2_1024x715.png"},{"max_width":800,"max_height":800,"width":800,"height":558,"url":"//cdck-file-uploads-global.s3.dualstack.us-west-2.amazonaws.com/meta/optimized/4X/6/0/2/602e6bb3fe340f0569c1bfd60bb74f6d83d92893_2_800x558.png"},{"max_width":600,"max_height":600,"width":600,"height":419,"url":"//cdck-file-uploads-global.s3.dualstack.us-west-2.amazonaws.com/meta/optimized/4X/6/0/2/602e6bb3fe340f0569c1bfd60bb74f6d83d92893_2_600x419.png"},{"max_width":400,"max_height":400,"width":400,"height":279,"url":"//cdck-file-uploads-global.s3.dualstack.us-west-2.amazonaws.com/meta/optimized/4X/6/0/2/602e6bb3fe340f0569c1bfd60bb74f6d83d92893_2_400x279.png"},{"max_width":300,"max_height":300,"width":300,"height":209,"url":"//cdck-file-uploads-global.s3.dualstack.us-west-2.amazonaws.com/meta/optimized/4X/6/0/2/602e6bb3fe340f0569c1bfd60bb74f6d83d92893_2_300x209.png"},{"max_width":200,"max_height":200,"width":200,"height":139,"url":"//cdck-file-uploads-global.s3.dualstack.us-west-2.amazonaws.com/meta/optimized/4X/6/0/2/602e6bb3fe340f0569c1bfd60bb74f6d83d92893_2_200x139.png"}],"tags":[{"id":484,"name":"tutorial","slug":"tutorial"},{"id":274,"name":"guías-de-complementos","slug":"plugin-guides"},{"id":58,"name":"prueba","slug":"testing"}],"tags_descriptions":{"tutorial":""},"views":17409,"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":"Users are troubleshooting issues with running acceptance tests for Discourse plugins, resolving errors related to test suites, plugin registration, and EmberCLI, with solutions involving test setup, plugin configuration, and code updates.","has_accepted_answer":false,"can_vote":false,"posters":[{"extras":null,"description":"Autor original","user_id":115923,"primary_group_id":null,"flair_group_id":null},{"extras":null,"description":"Autor frecuente","user_id":1,"primary_group_id":47,"flair_group_id":47},{"extras":null,"description":"Autor frecuente","user_id":40486,"primary_group_id":null,"flair_group_id":null},{"extras":null,"description":"Autor frecuente","user_id":57427,"primary_group_id":null,"flair_group_id":null},{"extras":"latest","description":"Autor más reciente","user_id":104279,"primary_group_id":47,"flair_group_id":47}]},{"fancy_title":"Desarrollando plugins para Discourse - Parte 5: Añadir una interfaz de administración","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":"//cdck-file-uploads-global.s3.dualstack.us-west-2.amazonaws.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-06-02T14:54:20.026Z","archetype":"regular","unseen":false,"pinned":false,"unpinned":null,"excerpt":"Tutorial anterior: Desarrollo de plugins de Discourse - Parte 4 - Configuración de git\n\nA veces, la configuración del sitio no es suficiente como interfaz de administración para que tu plugin funcione como deseas. Por ejemplo, si instalas el discourse-akism…","visible":true,"closed":false,"archived":false,"bookmarked":null,"liked":null,"thumbnails":[{"max_width":null,"max_height":null,"width":995,"height":244,"url":"//cdck-file-uploads-global.s3.dualstack.us-west-2.amazonaws.com/meta/original/4X/c/8/f/c8f5548016153a30a3ace7679111c95847f293c3.png"},{"max_width":800,"max_height":800,"width":800,"height":196,"url":"//cdck-file-uploads-global.s3.dualstack.us-west-2.amazonaws.com/meta/optimized/4X/c/8/f/c8f5548016153a30a3ace7679111c95847f293c3_2_800x196.png"},{"max_width":600,"max_height":600,"width":600,"height":147,"url":"//cdck-file-uploads-global.s3.dualstack.us-west-2.amazonaws.com/meta/optimized/4X/c/8/f/c8f5548016153a30a3ace7679111c95847f293c3_2_600x147.png"},{"max_width":400,"max_height":400,"width":400,"height":98,"url":"//cdck-file-uploads-global.s3.dualstack.us-west-2.amazonaws.com/meta/optimized/4X/c/8/f/c8f5548016153a30a3ace7679111c95847f293c3_2_400x98.png"},{"max_width":300,"max_height":300,"width":300,"height":73,"url":"//cdck-file-uploads-global.s3.dualstack.us-west-2.amazonaws.com/meta/optimized/4X/c/8/f/c8f5548016153a30a3ace7679111c95847f293c3_2_300x73.png"},{"max_width":200,"max_height":200,"width":200,"height":49,"url":"//cdck-file-uploads-global.s3.dualstack.us-west-2.amazonaws.com/meta/optimized/4X/c/8/f/c8f5548016153a30a3ace7679111c95847f293c3_2_200x49.png"}],"tags":[{"id":484,"name":"tutorial","slug":"tutorial"},{"id":274,"name":"guías-de-complementos","slug":"plugin-guides"}],"tags_descriptions":{"tutorial":""},"views":26495,"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":"Users discuss and resolve issues with adding admin interfaces for their Discourse plugins, sharing code fixes and troubleshooting advice on Ember routing, file naming conventions, and testing errors.","has_accepted_answer":false,"can_vote":false,"posters":[{"extras":null,"description":"Autor original","user_id":115923,"primary_group_id":null,"flair_group_id":null},{"extras":null,"description":"Autor frecuente","user_id":19127,"primary_group_id":null,"flair_group_id":null},{"extras":null,"description":"Autor frecuente","user_id":27611,"primary_group_id":null,"flair_group_id":null},{"extras":null,"description":"Autor frecuente","user_id":19,"primary_group_id":null,"flair_group_id":null},{"extras":"latest","description":"Autor más reciente","user_id":135392,"primary_group_id":null,"flair_group_id":73}]},{"fancy_title":"Desarrollo de plugins para Discourse - Parte 4 - Configuración de 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":"//cdck-file-uploads-global.s3.dualstack.us-west-2.amazonaws.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-06-02T14:54:17.764Z","archetype":"regular","unseen":false,"pinned":false,"unpinned":null,"excerpt":"Tutorial anterior: Desarrollo de complementos para Discourse - Parte 3 - Agregar configuraciones de sitio personalizadas\n\nAhora que tu complemento se está volviendo más sofisticado, es momento de mejorar también tu forma de desarrollarlo.\nTe sugerimos que...","visible":true,"closed":false,"archived":false,"bookmarked":null,"liked":null,"thumbnails":[{"max_width":null,"max_height":null,"width":730,"height":413,"url":"//cdck-file-uploads-global.s3.dualstack.us-west-2.amazonaws.com/meta/original/4X/b/d/4/bd4e72b31887f4016cfe86b0d0617f1799f1d007.png"},{"max_width":600,"max_height":600,"width":600,"height":339,"url":"//cdck-file-uploads-global.s3.dualstack.us-west-2.amazonaws.com/meta/optimized/4X/b/d/4/bd4e72b31887f4016cfe86b0d0617f1799f1d007_2_600x339.png"},{"max_width":400,"max_height":400,"width":400,"height":226,"url":"//cdck-file-uploads-global.s3.dualstack.us-west-2.amazonaws.com/meta/optimized/4X/b/d/4/bd4e72b31887f4016cfe86b0d0617f1799f1d007_2_400x226.png"},{"max_width":300,"max_height":300,"width":300,"height":169,"url":"//cdck-file-uploads-global.s3.dualstack.us-west-2.amazonaws.com/meta/optimized/4X/b/d/4/bd4e72b31887f4016cfe86b0d0617f1799f1d007_2_300x169.png"},{"max_width":200,"max_height":200,"width":200,"height":113,"url":"//cdck-file-uploads-global.s3.dualstack.us-west-2.amazonaws.com/meta/optimized/4X/b/d/4/bd4e72b31887f4016cfe86b0d0617f1799f1d007_2_200x113.png"}],"tags":[{"id":484,"name":"tutorial","slug":"tutorial"},{"id":274,"name":"guías-de-complementos","slug":"plugin-guides"}],"tags_descriptions":{"tutorial":""},"views":13108,"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":"Windows and macOS users face challenges with symbolic links in Discourse plugin development; solutions include using junctions in Windows, aliases in macOS, or a synced folder in Vagrant to create working symlinks within the development environment.","has_accepted_answer":false,"can_vote":false,"posters":[{"extras":null,"description":"Autor original","user_id":115923,"primary_group_id":null,"flair_group_id":null},{"extras":null,"description":"Autor frecuente","user_id":23842,"primary_group_id":null,"flair_group_id":null},{"extras":null,"description":"Autor frecuente","user_id":13093,"primary_group_id":276,"flair_group_id":276},{"extras":null,"description":"Autor frecuente","user_id":28866,"primary_group_id":null,"flair_group_id":null},{"extras":"latest","description":"Autor más reciente","user_id":141900,"primary_group_id":null,"flair_group_id":null}]},{"fancy_title":"Desarrollando plugins de Discourse - Parte 1 - Crear un 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":"//cdck-file-uploads-global.s3.dualstack.us-west-2.amazonaws.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-06-02T14:54:16.316Z","archetype":"regular","unseen":false,"pinned":false,"unpinned":null,"excerpt":"Crear un plugin en Discourse puede ser muy sencillo, una vez que aprendas algunos detalles particulares. El objetivo de este post es crear un esqueleto de plugin y presentarte los conceptos básicos.\nTu entorno de desarrollo\nAsegúrate de tener...","visible":true,"closed":false,"archived":false,"bookmarked":null,"liked":null,"thumbnails":[{"max_width":null,"max_height":null,"width":845,"height":128,"url":"//cdck-file-uploads-global.s3.dualstack.us-west-2.amazonaws.com/meta/original/4X/9/7/b/97b7e2daac4cae0c6b3642a17d5b87dcec4b5c73.png"},{"max_width":800,"max_height":800,"width":800,"height":121,"url":"//cdck-file-uploads-global.s3.dualstack.us-west-2.amazonaws.com/meta/optimized/4X/9/7/b/97b7e2daac4cae0c6b3642a17d5b87dcec4b5c73_2_800x121.png"},{"max_width":600,"max_height":600,"width":600,"height":90,"url":"//cdck-file-uploads-global.s3.dualstack.us-west-2.amazonaws.com/meta/optimized/4X/9/7/b/97b7e2daac4cae0c6b3642a17d5b87dcec4b5c73_2_600x90.png"},{"max_width":400,"max_height":400,"width":400,"height":60,"url":"//cdck-file-uploads-global.s3.dualstack.us-west-2.amazonaws.com/meta/optimized/4X/9/7/b/97b7e2daac4cae0c6b3642a17d5b87dcec4b5c73_2_400x60.png"},{"max_width":300,"max_height":300,"width":300,"height":45,"url":"//cdck-file-uploads-global.s3.dualstack.us-west-2.amazonaws.com/meta/optimized/4X/9/7/b/97b7e2daac4cae0c6b3642a17d5b87dcec4b5c73_2_300x45.png"},{"max_width":200,"max_height":200,"width":200,"height":30,"url":"//cdck-file-uploads-global.s3.dualstack.us-west-2.amazonaws.com/meta/optimized/4X/9/7/b/97b7e2daac4cae0c6b3642a17d5b87dcec4b5c73_2_200x30.png"}],"tags":[{"id":484,"name":"tutorial","slug":"tutorial"},{"id":274,"name":"guías-de-complementos","slug":"plugin-guides"}],"tags_descriptions":{"tutorial":""},"views":82768,"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":"The discussion details an issue encountered when creating plugins with the Docker setup, requiring users to configure Git's user email and name within the container before running `rake plugin:create`.","has_accepted_answer":false,"can_vote":false,"posters":[{"extras":null,"description":"Autor original","user_id":115923,"primary_group_id":null,"flair_group_id":null},{"extras":null,"description":"Autor frecuente","user_id":25674,"primary_group_id":null,"flair_group_id":null},{"extras":null,"description":"Autor frecuente","user_id":13093,"primary_group_id":276,"flair_group_id":276},{"extras":null,"description":"Autor frecuente","user_id":704,"primary_group_id":null,"flair_group_id":null},{"extras":"latest","description":"Autor más reciente","user_id":149694,"primary_group_id":null,"flair_group_id":null}]},{"fancy_title":"Usando la API DModal para renderizar ventanas modales (también llamadas popups/dialogos) en 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":"//cdck-file-uploads-global.s3.dualstack.us-west-2.amazonaws.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":"Discourse 3.1.0.beta6 incluye una nueva API basada en componentes para el elemento <DModal>.\n\nℹ️ Esto reemplaza a la antigua API basada en controladores, que ahora está obsoleta. Si tienes modales existentes que utilizan las antiguas APIs, che…","visible":true,"closed":false,"archived":false,"bookmarked":null,"liked":null,"thumbnails":[{"max_width":null,"max_height":null,"width":696,"height":258,"url":"//cdck-file-uploads-global.s3.dualstack.us-west-2.amazonaws.com/meta/original/4X/4/0/b/40be9a7c253202136882269ba77d47ad86bd6d35.png"},{"max_width":600,"max_height":600,"width":600,"height":222,"url":"//cdck-file-uploads-global.s3.dualstack.us-west-2.amazonaws.com/meta/optimized/4X/4/0/b/40be9a7c253202136882269ba77d47ad86bd6d35_2_600x222.png"},{"max_width":400,"max_height":400,"width":400,"height":148,"url":"//cdck-file-uploads-global.s3.dualstack.us-west-2.amazonaws.com/meta/optimized/4X/4/0/b/40be9a7c253202136882269ba77d47ad86bd6d35_2_400x148.png"},{"max_width":300,"max_height":300,"width":300,"height":111,"url":"//cdck-file-uploads-global.s3.dualstack.us-west-2.amazonaws.com/meta/optimized/4X/4/0/b/40be9a7c253202136882269ba77d47ad86bd6d35_2_300x111.png"},{"max_width":200,"max_height":200,"width":200,"height":74,"url":"//cdck-file-uploads-global.s3.dualstack.us-west-2.amazonaws.com/meta/optimized/4X/4/0/b/40be9a7c253202136882269ba77d47ad86bd6d35_2_200x74.png"}],"tags":[{"id":819,"name":"código","slug":"code"}],"tags_descriptions":{},"views":2083,"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":"Discourse 3.1.0.beta6 introduces the <DModal> component API for rendering modals, replacing the deprecated controller-based method, with examples for template use, component wrapping, and service-based triggering.","has_accepted_answer":false,"can_vote":false,"posters":[{"extras":"latest","description":"Autor original, Autor más reciente","user_id":115923,"primary_group_id":null,"flair_group_id":null},{"extras":null,"description":"Autor frecuente","user_id":1,"primary_group_id":47,"flair_group_id":47}]},{"fancy_title":"Inserta texto o imágenes en cualquier lugar de tu sitio usando pseudo-elementos de 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":"//cdck-file-uploads-global.s3.dualstack.us-west-2.amazonaws.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":"Así que, quieres insertar algún texto o imagen en tu sitio de Discourse. \nEn cuanto al texto, en la mayoría de los casos es suficiente modificarlo desde /admin/customize/site_texts. \nSin embargo, a veces, nuestro deseo es agregar una frase …","visible":true,"closed":false,"archived":false,"bookmarked":null,"liked":null,"thumbnails":[{"max_width":null,"max_height":null,"width":1911,"height":879,"url":"//cdck-file-uploads-global.s3.dualstack.us-west-2.amazonaws.com/meta/original/4X/7/3/8/7382dd2cbcd102675e74e8a1853a79d2e32a0021.png"},{"max_width":1024,"max_height":1024,"width":1024,"height":471,"url":"//cdck-file-uploads-global.s3.dualstack.us-west-2.amazonaws.com/meta/optimized/4X/7/3/8/7382dd2cbcd102675e74e8a1853a79d2e32a0021_2_1024x471.png"},{"max_width":800,"max_height":800,"width":800,"height":367,"url":"//cdck-file-uploads-global.s3.dualstack.us-west-2.amazonaws.com/meta/optimized/4X/7/3/8/7382dd2cbcd102675e74e8a1853a79d2e32a0021_2_800x367.png"},{"max_width":600,"max_height":600,"width":600,"height":275,"url":"//cdck-file-uploads-global.s3.dualstack.us-west-2.amazonaws.com/meta/optimized/4X/7/3/8/7382dd2cbcd102675e74e8a1853a79d2e32a0021_2_600x275.png"},{"max_width":400,"max_height":400,"width":400,"height":183,"url":"//cdck-file-uploads-global.s3.dualstack.us-west-2.amazonaws.com/meta/optimized/4X/7/3/8/7382dd2cbcd102675e74e8a1853a79d2e32a0021_2_400x183.png"},{"max_width":300,"max_height":300,"width":300,"height":137,"url":"//cdck-file-uploads-global.s3.dualstack.us-west-2.amazonaws.com/meta/optimized/4X/7/3/8/7382dd2cbcd102675e74e8a1853a79d2e32a0021_2_300x137.png"},{"max_width":200,"max_height":200,"width":200,"height":91,"url":"//cdck-file-uploads-global.s3.dualstack.us-west-2.amazonaws.com/meta/optimized/4X/7/3/8/7382dd2cbcd102675e74e8a1853a79d2e32a0021_2_200x91.png"}],"tags":[{"id":478,"name":"cómo-hacerlo","slug":"how-to"},{"id":814,"name":"personalización","slug":"customization"}],"tags_descriptions":{"cómo-hacerlo":"Las guías de \"Cómo hacer\" contienen pasos a seguir para resolver un problema ..."},"views":17984,"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":"To insert text or images on a site, use CSS pseudo-elements `:before` and `:after` to add content to elements without modifying existing HTML, by editing the site's stylesheet in the browser's developer console.","has_accepted_answer":false,"can_vote":false,"posters":[{"extras":"latest single","description":"Autor original, Autor más reciente","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":701,"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":"Autor original","user_id":-1,"primary_group_id":null,"flair_group_id":null},{"extras":null,"description":"Autor frecuente","user_id":135392,"primary_group_id":null,"flair_group_id":73},{"extras":null,"description":"Autor frecuente","user_id":23968,"primary_group_id":47,"flair_group_id":47},{"extras":null,"description":"Autor frecuente","user_id":127856,"primary_group_id":null,"flair_group_id":null},{"extras":"latest","description":"Autor más reciente","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":294,"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":"Autor original, Autor más reciente","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":605,"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":"Autor original","user_id":-1,"primary_group_id":null,"flair_group_id":null},{"extras":"latest","description":"Autor más reciente","user_id":135392,"primary_group_id":null,"flair_group_id":73}]},{"fancy_title":"Guía del desarrollador para extensiones de 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":"Discourse utiliza un motor de Markdown llamado Markdown-it.\nAquí hay algunas notas de desarrollo que te ayudarán a corregir errores en el núcleo o a crear tus nuevos complementos (plugins).\nLo Básico\nDiscourse solo contiene algunas ayudas adicionales sobre el motor, …","visible":true,"closed":false,"archived":false,"bookmarked":null,"liked":null,"thumbnails":null,"tags":[{"id":482,"name":"referencia","slug":"reference"},{"id":52,"name":"markdown","slug":"markdown"},{"id":819,"name":"código","slug":"code"}],"tags_descriptions":{},"views":13554,"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":"While the guide details creating Markdown extensions for Discourse, a user inquires whether these customizations can be implemented within Theme Components or are restricted to plugins.","has_accepted_answer":false,"can_vote":false,"posters":[{"extras":null,"description":"Autor original","user_id":115923,"primary_group_id":null,"flair_group_id":null},{"extras":"latest","description":"Autor más reciente","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":724,"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":"Autor original, Autor más reciente","user_id":-1,"primary_group_id":null,"flair_group_id":null}]},{"fancy_title":"Write end-to-end system specs for the Discourse user interface","fancy_title_localized":false,"locale":null,"id":325937,"title":"Write end-to-end system specs for the Discourse user interface","slug":"write-end-to-end-system-specs-for-the-discourse-user-interface","posts_count":4,"reply_count":2,"highest_post_number":5,"image_url":"//cdck-file-uploads-global.s3.dualstack.us-west-2.amazonaws.com/meta/original/4X/5/5/5/55573c386666cc876d212e64995fd6a7a8bccc64.png","created_at":"2024-09-11T04:07:31.148Z","last_posted_at":"2025-08-28T14:51:13.004Z","bumped":true,"bumped_at":"2026-05-29T10:12:45.063Z","archetype":"regular","unseen":false,"pinned":false,"unpinned":null,"excerpt":"Background\nRails system specs are used to simulate the actions of a real user using the app in a browser. We use the Playwright ruby driver which is becoming an industry standard. The tests run locally and in CI out of t&hellip;","visible":true,"closed":false,"archived":false,"bookmarked":null,"liked":null,"thumbnails":[{"max_width":null,"max_height":null,"width":990,"height":602,"url":"//cdck-file-uploads-global.s3.dualstack.us-west-2.amazonaws.com/meta/original/4X/5/5/5/55573c386666cc876d212e64995fd6a7a8bccc64.png"},{"max_width":800,"max_height":800,"width":800,"height":486,"url":"//cdck-file-uploads-global.s3.dualstack.us-west-2.amazonaws.com/meta/optimized/4X/5/5/5/55573c386666cc876d212e64995fd6a7a8bccc64_2_800x486.png"},{"max_width":600,"max_height":600,"width":600,"height":364,"url":"//cdck-file-uploads-global.s3.dualstack.us-west-2.amazonaws.com/meta/optimized/4X/5/5/5/55573c386666cc876d212e64995fd6a7a8bccc64_2_600x364.png"},{"max_width":400,"max_height":400,"width":400,"height":243,"url":"//cdck-file-uploads-global.s3.dualstack.us-west-2.amazonaws.com/meta/optimized/4X/5/5/5/55573c386666cc876d212e64995fd6a7a8bccc64_2_400x243.png"},{"max_width":300,"max_height":300,"width":300,"height":182,"url":"//cdck-file-uploads-global.s3.dualstack.us-west-2.amazonaws.com/meta/optimized/4X/5/5/5/55573c386666cc876d212e64995fd6a7a8bccc64_2_300x182.png"},{"max_width":200,"max_height":200,"width":200,"height":121,"url":"//cdck-file-uploads-global.s3.dualstack.us-west-2.amazonaws.com/meta/optimized/4X/5/5/5/55573c386666cc876d212e64995fd6a7a8bccc64_2_200x121.png"}],"tags":[],"tags_descriptions":{},"views":619,"like_count":12,"has_summary":false,"last_poster_username":"merefield","category_id":56,"op_like_count":9,"pinned_globally":false,"featured_link":null,"ai_topic_gist":"A user encountered test failures due to missing color schemes in the test database, which was resolved by resetting the test database using migration commands after confirming the issue was with the local Discourse instance setup.","has_accepted_answer":false,"can_vote":false,"posters":[{"extras":null,"description":"Autor original","user_id":-1,"primary_group_id":null,"flair_group_id":null},{"extras":null,"description":"Autor frecuente","user_id":21029,"primary_group_id":47,"flair_group_id":47},{"extras":"latest","description":"Autor más reciente","user_id":27384,"primary_group_id":null,"flair_group_id":null}]},{"fancy_title":"Usando el &lsquo;tacómetro&rsquo; de Google para medir cambios en el rendimiento de JS en Discourse","fancy_title_localized":true,"locale":"en","id":281158,"title":"Using Google's 'tachometer' to measure JS performance changes in Discourse","slug":"using-googles-tachometer-to-measure-js-performance-changes-in-discourse","posts_count":1,"reply_count":0,"highest_post_number":1,"image_url":"//cdck-file-uploads-global.s3.dualstack.us-west-2.amazonaws.com/meta/optimized/4X/c/8/c/c8c2c8280eb16bf88a2041b68bf45af1ef81b6d8_2_1024x146.png","created_at":"2023-10-05T13:57:29.422Z","last_posted_at":"2023-10-05T13:57:29.614Z","bumped":true,"bumped_at":"2026-05-29T10:12:43.709Z","archetype":"regular","unseen":false,"pinned":false,"unpinned":null,"excerpt":"Al trabajar en el lado del cliente en el núcleo, complementos y temas de Discourse, es importante considerar el impacto en el rendimiento. El proyecto «Tachometer» de Google proporciona una herramienta de referencia estadísticamente rigurosa que podemos utilizar para …","visible":true,"closed":false,"archived":false,"bookmarked":null,"liked":null,"thumbnails":[{"max_width":null,"max_height":null,"width":1234,"height":176,"url":"//cdck-file-uploads-global.s3.dualstack.us-west-2.amazonaws.com/meta/original/4X/c/8/c/c8c2c8280eb16bf88a2041b68bf45af1ef81b6d8.png"},{"max_width":1024,"max_height":1024,"width":1024,"height":146,"url":"//cdck-file-uploads-global.s3.dualstack.us-west-2.amazonaws.com/meta/optimized/4X/c/8/c/c8c2c8280eb16bf88a2041b68bf45af1ef81b6d8_2_1024x146.png"},{"max_width":800,"max_height":800,"width":800,"height":114,"url":"//cdck-file-uploads-global.s3.dualstack.us-west-2.amazonaws.com/meta/optimized/4X/c/8/c/c8c2c8280eb16bf88a2041b68bf45af1ef81b6d8_2_800x114.png"},{"max_width":600,"max_height":600,"width":600,"height":85,"url":"//cdck-file-uploads-global.s3.dualstack.us-west-2.amazonaws.com/meta/optimized/4X/c/8/c/c8c2c8280eb16bf88a2041b68bf45af1ef81b6d8_2_600x85.png"},{"max_width":400,"max_height":400,"width":400,"height":57,"url":"//cdck-file-uploads-global.s3.dualstack.us-west-2.amazonaws.com/meta/optimized/4X/c/8/c/c8c2c8280eb16bf88a2041b68bf45af1ef81b6d8_2_400x57.png"},{"max_width":300,"max_height":300,"width":300,"height":42,"url":"//cdck-file-uploads-global.s3.dualstack.us-west-2.amazonaws.com/meta/optimized/4X/c/8/c/c8c2c8280eb16bf88a2041b68bf45af1ef81b6d8_2_300x42.png"},{"max_width":200,"max_height":200,"width":200,"height":28,"url":"//cdck-file-uploads-global.s3.dualstack.us-west-2.amazonaws.com/meta/optimized/4X/c/8/c/c8c2c8280eb16bf88a2041b68bf45af1ef81b6d8_2_200x28.png"}],"tags":[{"id":819,"name":"código","slug":"code"}],"tags_descriptions":{},"views":986,"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":"Google's 'Tachometer' project is used to measure JS performance changes in Discourse by statistically benchmarking changes through a 'round-robin' approach, reducing external factor impact and producing a comparison table after hundreds/thousands of iterations.","has_accepted_answer":false,"can_vote":false,"posters":[{"extras":"latest single","description":"Autor original, Autor más reciente","user_id":115923,"primary_group_id":null,"flair_group_id":null}]},{"fancy_title":"Configurar un entorno de desarrollo multisitio","fancy_title_localized":true,"locale":"en","id":229310,"title":"Set up a multisite development environment","slug":"set-up-a-multisite-development-environment","posts_count":1,"reply_count":0,"highest_post_number":1,"image_url":null,"created_at":"2022-06-07T16:01:37.089Z","last_posted_at":"2022-06-07T16:01:37.228Z","bumped":true,"bumped_at":"2026-05-29T10:12:41.903Z","archetype":"regular","unseen":false,"pinned":false,"unpinned":null,"excerpt":"Es posible ejecutar Discourse en modo multisitio en desarrollo. Un servidor multisitio utiliza una base de datos y un nombre de host diferentes para cada sitio que atiende. Esto es útil si estás desarrollando una característica o un complemento que debería…","visible":true,"closed":false,"archived":false,"bookmarked":null,"liked":null,"thumbnails":null,"tags":[{"id":478,"name":"cómo-hacerlo","slug":"how-to"},{"id":150,"name":"instalar-dev","slug":"dev-install"}],"tags_descriptions":{"cómo-hacerlo":"Las guías de \"Cómo hacer\" contienen pasos a seguir para resolver un problema ...","instalar-dev":"Instrucciones y problemas con la instalación de Discourse para desarrollo"},"views":2013,"like_count":12,"has_summary":false,"last_poster_username":"Discourse","category_id":56,"op_like_count":12,"pinned_globally":false,"featured_link":null,"ai_topic_gist":"Set up multisite development by adding a `config/multisite.yml` file, specifying a separate DB and hostname for each site, and using the `RAILS_DB` environment variable to run rake tasks against targeted sites.","has_accepted_answer":false,"can_vote":false,"posters":[{"extras":"latest single","description":"Autor original, Autor más reciente","user_id":115923,"primary_group_id":null,"flair_group_id":null}]},{"fancy_title":"Instala plugins en tu entorno de desarrollo sin Docker","fancy_title_localized":true,"locale":"en","id":205337,"title":"Install plugins in your non-Docker development environment","slug":"install-plugins-in-your-non-docker-development-environment","posts_count":1,"reply_count":2,"highest_post_number":1,"image_url":null,"created_at":"2021-10-06T09:47:24.341Z","last_posted_at":"2021-10-06T09:47:24.632Z","bumped":true,"bumped_at":"2026-05-29T10:12:40.846Z","archetype":"regular","unseen":false,"pinned":false,"unpinned":null,"excerpt":"(Esta guía solo cubre la instalación de desarrollo sin Docker. Para desarrollo con Docker :whale: consulte Instalar Discourse para desarrollo usando Docker)\nSi ha seguido las instrucciones para configurar su Discourse local, puede instalar un plugin loc…","visible":true,"closed":false,"archived":false,"bookmarked":null,"liked":null,"thumbnails":null,"tags":[{"id":478,"name":"cómo-hacerlo","slug":"how-to"},{"id":150,"name":"instalar-dev","slug":"dev-install"}],"tags_descriptions":{"cómo-hacerlo":"Las guías de \"Cómo hacer\" contienen pasos a seguir para resolver un problema ...","instalar-dev":"Instrucciones y problemas con la instalación de Discourse para desarrollo"},"views":3406,"like_count":16,"has_summary":false,"last_poster_username":"Discourse","category_id":56,"op_like_count":16,"pinned_globally":false,"featured_link":null,"ai_topic_gist":"To install a plugin locally in a non-Docker development environment, download the plugin, run migrations if necessary, restart the server, and edit settings at localhost:4200/admin/plugins.","has_accepted_answer":false,"can_vote":false,"posters":[{"extras":"latest single","description":"Autor original, Autor más reciente","user_id":115923,"primary_group_id":null,"flair_group_id":null}]},{"fancy_title":"Instalar Discourse en Windows para desarrollo","fancy_title_localized":true,"locale":"en","id":75149,"title":"Install Discourse on Windows for development","slug":"install-discourse-on-windows-for-development","posts_count":17,"reply_count":57,"highest_post_number":120,"image_url":null,"created_at":"2017-12-01T06:36:51.406Z","last_posted_at":"2026-04-22T10:18:42.190Z","bumped":true,"bumped_at":"2026-05-29T10:12:39.158Z","archetype":"regular","unseen":false,"pinned":false,"unpinned":null,"excerpt":":information_source: Este tutorial ha sido probado en Windows 10 y 11.\nPara configurar un entorno de desarrollo para Discourse en Windows, puedes hacerlo utilizando la característica de Subsistema de Windows para Linux.\nEsta configuración requiere el …","visible":true,"closed":false,"archived":false,"bookmarked":null,"liked":null,"thumbnails":null,"tags":[{"id":478,"name":"cómo-hacerlo","slug":"how-to"},{"id":150,"name":"instalar-dev","slug":"dev-install"}],"tags_descriptions":{"cómo-hacerlo":"Las guías de \"Cómo hacer\" contienen pasos a seguir para resolver un problema ...","instalar-dev":"Instrucciones y problemas con la instalación de Discourse para desarrollo"},"views":73728,"like_count":68,"has_summary":false,"last_poster_username":"merefield","category_id":56,"op_like_count":52,"pinned_globally":false,"featured_link":null,"ai_topic_gist":"Users report installation failures on Ubuntu 24.04 within WSL preventing host access to port 3000, while a workaround involving replacing 127.0.0.1 with localhost resolves specific image loading issues.","has_accepted_answer":false,"can_vote":false,"posters":[{"extras":null,"description":"Autor original","user_id":115923,"primary_group_id":null,"flair_group_id":null},{"extras":null,"description":"Autor frecuente","user_id":139654,"primary_group_id":null,"flair_group_id":null},{"extras":null,"description":"Autor frecuente","user_id":36685,"primary_group_id":null,"flair_group_id":148},{"extras":null,"description":"Autor frecuente","user_id":135392,"primary_group_id":null,"flair_group_id":73},{"extras":"latest","description":"Autor más reciente","user_id":27384,"primary_group_id":null,"flair_group_id":null}]},{"fancy_title":"Instalar Discourse en Ubuntu o Debian para desarrollo","fancy_title_localized":true,"locale":"en","id":14727,"title":"Install Discourse on Ubuntu or Debian for Development","slug":"install-discourse-on-ubuntu-or-debian-for-development","posts_count":84,"reply_count":490,"highest_post_number":756,"image_url":null,"created_at":"2014-04-12T22:22:07.751Z","last_posted_at":"2025-06-22T00:31:14.326Z","bumped":true,"bumped_at":"2026-05-29T10:12:37.854Z","archetype":"regular","unseen":false,"pinned":false,"unpinned":null,"excerpt":":warning: Esta guía cubre las instrucciones de instalación en un entorno de desarrollo. Para una guía de producción, consulta: Instalar Discourse en producción con las instrucciones oficiales compatibles\n\n\n¿Quieres configurar Discourse...","visible":true,"closed":false,"archived":false,"bookmarked":null,"liked":null,"thumbnails":null,"tags":[{"id":478,"name":"cómo-hacerlo","slug":"how-to"},{"id":150,"name":"instalar-dev","slug":"dev-install"}],"tags_descriptions":{"cómo-hacerlo":"Las guías de \"Cómo hacer\" contienen pasos a seguir para resolver un problema ...","instalar-dev":"Instrucciones y problemas con la instalación de Discourse para desarrollo"},"views":198396,"like_count":133,"has_summary":true,"last_poster_username":"NateDhaliwal","category_id":56,"op_like_count":66,"pinned_globally":false,"featured_link":null,"ai_topic_gist":"User struggles to configure Discourse to run externally on a remote server, encountering issues with binding to the specified IP address.","has_accepted_answer":false,"can_vote":false,"posters":[{"extras":null,"description":"Autor original","user_id":115923,"primary_group_id":null,"flair_group_id":null},{"extras":null,"description":"Autor frecuente","user_id":93926,"primary_group_id":null,"flair_group_id":null},{"extras":null,"description":"Autor frecuente","user_id":114728,"primary_group_id":276,"flair_group_id":276},{"extras":null,"description":"Autor frecuente","user_id":14353,"primary_group_id":null,"flair_group_id":null},{"extras":"latest","description":"Autor más reciente","user_id":135392,"primary_group_id":null,"flair_group_id":73}]},{"fancy_title":"Instalar Discourse en macOS para desarrollo","fancy_title_localized":true,"locale":"en","id":15772,"title":"Install Discourse on macOS for development","slug":"install-discourse-on-macos-for-development","posts_count":103,"reply_count":236,"highest_post_number":402,"image_url":null,"created_at":"2014-05-19T16:59:50.976Z","last_posted_at":"2026-04-24T18:38:20.659Z","bumped":true,"bumped_at":"2026-05-29T10:12:36.599Z","archetype":"regular","unseen":false,"pinned":false,"unpinned":null,"excerpt":":warning: Esta guía cubre las instrucciones de instalación para un entorno de desarrollo en macOS; para guías de producción, consulte: Instalar Discourse en producción con las instrucciones oficiales soportadas\n\nAsí que quieres configurar Disc&hellip;","visible":true,"closed":false,"archived":false,"bookmarked":null,"liked":null,"thumbnails":null,"tags":[{"id":478,"name":"cómo-hacerlo","slug":"how-to"},{"id":150,"name":"instalar-dev","slug":"dev-install"}],"tags_descriptions":{"cómo-hacerlo":"Las guías de \"Cómo hacer\" contienen pasos a seguir para resolver un problema ...","instalar-dev":"Instrucciones y problemas con la instalación de Discourse para desarrollo"},"views":114694,"like_count":283,"has_summary":true,"last_poster_username":"jericson","category_id":56,"op_like_count":78,"pinned_globally":false,"featured_link":null,"ai_topic_gist":"A user suggests editing the newly posted macOS Discourse development installation guide into the first post of the topic for better visibility.","has_accepted_answer":false,"can_vote":false,"posters":[{"extras":null,"description":"Autor original","user_id":115923,"primary_group_id":null,"flair_group_id":null},{"extras":null,"description":"Autor frecuente","user_id":105081,"primary_group_id":null,"flair_group_id":null},{"extras":null,"description":"Autor frecuente","user_id":125230,"primary_group_id":null,"flair_group_id":null},{"extras":null,"description":"Autor frecuente","user_id":14353,"primary_group_id":null,"flair_group_id":null},{"extras":"latest","description":"Autor más reciente","user_id":15442,"primary_group_id":null,"flair_group_id":118}]},{"fancy_title":"Instalar Discourse para desarrollo usando Docker","fancy_title_localized":true,"locale":"en","id":102009,"title":"Install Discourse for development using Docker","slug":"install-discourse-for-development-using-docker","posts_count":227,"reply_count":189,"highest_post_number":326,"image_url":null,"created_at":"2018-11-16T09:40:04.247Z","last_posted_at":"2026-05-22T05:35:27.938Z","bumped":true,"bumped_at":"2026-05-29T10:12:35.336Z","archetype":"regular","unseen":false,"pinned":false,"unpinned":null,"excerpt":"Desarrollo con Docker\nDado que Discourse se ejecuta en Docker, deberías poder ejecutar Discourse directamente desde tu directorio de origen usando un contenedor de desarrollo de Discourse.\n:white_check_mark: Ventajas: No es necesario instalar ningún …","visible":true,"closed":false,"archived":false,"bookmarked":null,"liked":null,"thumbnails":null,"tags":[{"id":478,"name":"cómo-hacerlo","slug":"how-to"},{"id":24,"name":"docker","slug":"docker"},{"id":150,"name":"instalar-dev","slug":"dev-install"}],"tags_descriptions":{"cómo-hacerlo":"Las guías de \"Cómo hacer\" contienen pasos a seguir para resolver un problema ...","instalar-dev":"Instrucciones y problemas con la instalación de Discourse para desarrollo"},"views":88298,"like_count":366,"has_summary":true,"last_poster_username":"dubwoc","category_id":56,"op_like_count":72,"pinned_globally":false,"featured_link":null,"ai_topic_gist":"A user attempting to initialize the Discourse Docker development container encounters persistent permission errors when writing to the source directory, leading to failed gem installations, symlink creation issues, and eventual database connection failures despite applying broad chmod fixes.","has_accepted_answer":false,"can_vote":false,"posters":[{"extras":null,"description":"Autor original","user_id":115923,"primary_group_id":null,"flair_group_id":null},{"extras":null,"description":"Autor frecuente","user_id":36692,"primary_group_id":null,"flair_group_id":null},{"extras":null,"description":"Autor frecuente","user_id":131037,"primary_group_id":null,"flair_group_id":null},{"extras":null,"description":"Autor frecuente","user_id":15209,"primary_group_id":null,"flair_group_id":142},{"extras":"latest","description":"Autor más reciente","user_id":119723,"primary_group_id":null,"flair_group_id":null}]},{"fancy_title":"Developing Discourse on GitHub Codespaces","fancy_title_localized":false,"locale":null,"id":336131,"title":"Developing Discourse on GitHub Codespaces","slug":"developing-discourse-on-github-codespaces","posts_count":15,"reply_count":10,"highest_post_number":17,"image_url":"//cdck-file-uploads-global.s3.dualstack.us-west-2.amazonaws.com/meta/optimized/4X/e/5/f/e5f24c96d301ed4246d1de639dd5b4b21a0e0d03_2_1024x794.png","created_at":"2024-11-14T12:12:38.860Z","last_posted_at":"2025-09-09T13:50:26.566Z","bumped":true,"bumped_at":"2026-05-29T10:12:34.360Z","archetype":"regular","unseen":false,"pinned":false,"unpinned":null,"excerpt":"GitHub Codespaces is a very fast way to get started with Discourse development. Their free tier is good for 30 hours per month of a 4-core machine. \nGetting Started\n\n\nNavigate to the github repository \n\n\nPress the , (com&hellip;","visible":true,"closed":false,"archived":false,"bookmarked":null,"liked":null,"thumbnails":[{"max_width":null,"max_height":null,"width":1186,"height":920,"url":"//cdck-file-uploads-global.s3.dualstack.us-west-2.amazonaws.com/meta/original/4X/e/5/f/e5f24c96d301ed4246d1de639dd5b4b21a0e0d03.png"},{"max_width":1024,"max_height":1024,"width":1024,"height":794,"url":"//cdck-file-uploads-global.s3.dualstack.us-west-2.amazonaws.com/meta/optimized/4X/e/5/f/e5f24c96d301ed4246d1de639dd5b4b21a0e0d03_2_1024x794.png"},{"max_width":800,"max_height":800,"width":800,"height":620,"url":"//cdck-file-uploads-global.s3.dualstack.us-west-2.amazonaws.com/meta/optimized/4X/e/5/f/e5f24c96d301ed4246d1de639dd5b4b21a0e0d03_2_800x620.png"},{"max_width":600,"max_height":600,"width":600,"height":465,"url":"//cdck-file-uploads-global.s3.dualstack.us-west-2.amazonaws.com/meta/optimized/4X/e/5/f/e5f24c96d301ed4246d1de639dd5b4b21a0e0d03_2_600x465.png"},{"max_width":400,"max_height":400,"width":400,"height":310,"url":"//cdck-file-uploads-global.s3.dualstack.us-west-2.amazonaws.com/meta/optimized/4X/e/5/f/e5f24c96d301ed4246d1de639dd5b4b21a0e0d03_2_400x310.png"},{"max_width":300,"max_height":300,"width":300,"height":232,"url":"//cdck-file-uploads-global.s3.dualstack.us-west-2.amazonaws.com/meta/optimized/4X/e/5/f/e5f24c96d301ed4246d1de639dd5b4b21a0e0d03_2_300x232.png"},{"max_width":200,"max_height":200,"width":200,"height":155,"url":"//cdck-file-uploads-global.s3.dualstack.us-west-2.amazonaws.com/meta/optimized/4X/e/5/f/e5f24c96d301ed4246d1de639dd5b4b21a0e0d03_2_200x155.png"}],"tags":[],"tags_descriptions":{},"views":1718,"like_count":28,"has_summary":false,"last_poster_username":"NateDhaliwal","category_id":56,"op_like_count":13,"pinned_globally":false,"featured_link":null,"ai_topic_gist":"A user reports issues with the ember-cli command terminating unexpectedly when impersonating and switching users in a GitHub Codespaces environment.","has_accepted_answer":false,"can_vote":false,"posters":[{"extras":null,"description":"Autor original","user_id":-1,"primary_group_id":null,"flair_group_id":null},{"extras":null,"description":"Autor frecuente","user_id":95552,"primary_group_id":null,"flair_group_id":null},{"extras":null,"description":"Autor frecuente","user_id":155596,"primary_group_id":null,"flair_group_id":null},{"extras":null,"description":"Autor frecuente","user_id":1,"primary_group_id":47,"flair_group_id":47},{"extras":"latest","description":"Autor más reciente","user_id":135392,"primary_group_id":null,"flair_group_id":73}]},{"fancy_title":"Developing Discourse using a Dev Container","fancy_title_localized":false,"locale":null,"id":336366,"title":"Developing Discourse using a Dev Container","slug":"developing-discourse-using-a-dev-container","posts_count":14,"reply_count":8,"highest_post_number":15,"image_url":null,"created_at":"2024-11-15T16:44:08.898Z","last_posted_at":"2026-05-28T18:59:23.760Z","bumped":true,"bumped_at":"2026-05-29T10:12:32.762Z","archetype":"regular","unseen":false,"pinned":false,"unpinned":null,"excerpt":"Dev Containers is an open standard for configuring a development environment inside a container. This almost entirely eliminates the need to install/configure Discourse-specific tools/dependencies on your local machine, &hellip;","visible":true,"closed":false,"archived":false,"bookmarked":null,"liked":null,"thumbnails":null,"tags":[],"tags_descriptions":{},"views":17951,"like_count":36,"has_summary":false,"last_poster_username":"dfabulich","category_id":56,"op_like_count":13,"pinned_globally":false,"featured_link":null,"ai_topic_gist":"A user reported that accessing the Discourse Dev Container via CLI on macOS failed due to port binding issues, leading them to recommend the legacy boot_dev script for non-VS Code environments.","has_accepted_answer":false,"can_vote":false,"posters":[{"extras":null,"description":"Autor original","user_id":-1,"primary_group_id":null,"flair_group_id":null},{"extras":null,"description":"Autor frecuente","user_id":174008,"primary_group_id":null,"flair_group_id":null},{"extras":null,"description":"Autor frecuente","user_id":127446,"primary_group_id":null,"flair_group_id":73},{"extras":null,"description":"Autor frecuente","user_id":135392,"primary_group_id":null,"flair_group_id":73},{"extras":"latest","description":"Autor más reciente","user_id":9858,"primary_group_id":null,"flair_group_id":null}]},{"fancy_title":"Fijar versiones de plugins y temas para instalaciones antiguas de Discourse (ramas 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":5,"reply_count":3,"highest_post_number":7,"image_url":null,"created_at":"2023-07-26T10:00:42.315Z","last_posted_at":"2026-05-27T09:30:24.129Z","bumped":true,"bumped_at":"2026-05-27T09:30:24.129Z","archetype":"regular","unseen":false,"pinned":false,"unpinned":null,"excerpt":":open_book: Antecedentes\nLos desarrolladores de temas y complementos generalmente desean dirigirse a la última versión de Discourse, sin preocuparse por la compatibilidad hacia atrás. Pero los sitios que ejecutan versiones antiguas de Discourse aún necesitan una versión...","visible":true,"closed":false,"archived":false,"bookmarked":null,"liked":null,"thumbnails":null,"tags":[],"tags_descriptions":{},"views":1334,"like_count":28,"has_summary":false,"last_poster_username":"david","category_id":56,"op_like_count":17,"pinned_globally":false,"featured_link":null,"ai_topic_gist":"The documentation now describes the new d-compat branch strategy for pinning plugin and theme versions to older Discourse releases, which is officially available for use.","has_accepted_answer":false,"can_vote":false,"posters":[{"extras":null,"description":"Autor original","user_id":115923,"primary_group_id":null,"flair_group_id":null},{"extras":null,"description":"Autor frecuente","user_id":135392,"primary_group_id":null,"flair_group_id":73},{"extras":"latest","description":"Autor más reciente","user_id":23968,"primary_group_id":47,"flair_group_id":47}]},{"fancy_title":"Lint y formateo automático de código antes de los commits","fancy_title_localized":true,"locale":"en","id":132947,"title":"Automatically lint and format code before commits","slug":"automatically-lint-and-format-code-before-commits","posts_count":1,"reply_count":2,"highest_post_number":1,"image_url":null,"created_at":"2019-11-08T17:16:11.987Z","last_posted_at":"2019-11-08T17:16:12.188Z","bumped":true,"bumped_at":"2026-05-15T19:55:01.432Z","archetype":"regular","unseen":false,"pinned":false,"unpinned":null,"excerpt":"Discourse utiliza lefthook para los hooks de git, y bin/lint como el punto de entrada principal de la CLI para ejecutar las mismas verificaciones manualmente.\nSi estás trabajando en un clon local, instala los hooks una vez:\npnpm install\npnpm lefthook install\n\nDesp…","visible":true,"closed":false,"archived":false,"bookmarked":null,"liked":null,"thumbnails":null,"tags":[{"id":478,"name":"cómo-hacerlo","slug":"how-to"},{"id":819,"name":"código","slug":"code"}],"tags_descriptions":{"cómo-hacerlo":"Las guías de \"Cómo hacer\" contienen pasos a seguir para resolver un problema ..."},"views":1527,"like_count":11,"has_summary":false,"last_poster_username":"Discourse","category_id":56,"op_like_count":11,"pinned_globally":false,"featured_link":null,"ai_topic_gist":"The Discourse repository now uses lefthook to automatically lint and format code before commits, blocking the process if errors are detected after running installation commands.","has_accepted_answer":false,"can_vote":false,"posters":[{"extras":"latest","description":"Autor original, Autor más reciente","user_id":115923,"primary_group_id":null,"flair_group_id":null},{"extras":null,"description":"Autor frecuente","user_id":1,"primary_group_id":47,"flair_group_id":47}]},{"fancy_title":"Empieza con Theme Creator y la Theme CLI","fancy_title_localized":true,"locale":"en","id":108444,"title":"Get started with Theme Creator and the Theme CLI","slug":"get-started-with-theme-creator-and-the-theme-cli","posts_count":9,"reply_count":13,"highest_post_number":27,"image_url":"//cdck-file-uploads-global.s3.dualstack.us-west-2.amazonaws.com/meta/optimized/4X/7/0/7/707f15c4b072258fb9e33c3a4fe7f30b715b4277_2_777x1024.png","created_at":"2019-02-05T18:40:04.304Z","last_posted_at":"2026-05-07T14:04:22.942Z","bumped":true,"bumped_at":"2026-05-07T14:04:22.942Z","archetype":"regular","unseen":false,"pinned":false,"unpinned":null,"excerpt":"Este tema le guiará sobre cómo usar la CLI de temas con nuestro sitio Theme Creator para desarrollar un tema y previsualizar sus cambios en un sitio activo de Discourse.\n\nRegístrese para obtener una cuenta aquí en Meta si aún no lo ha hecho\n\n...","visible":true,"closed":false,"archived":false,"bookmarked":null,"liked":null,"thumbnails":[{"max_width":null,"max_height":null,"width":1224,"height":1612,"url":"//cdck-file-uploads-global.s3.dualstack.us-west-2.amazonaws.com/meta/original/4X/7/0/7/707f15c4b072258fb9e33c3a4fe7f30b715b4277.png"},{"max_width":1024,"max_height":1024,"width":777,"height":1024,"url":"//cdck-file-uploads-global.s3.dualstack.us-west-2.amazonaws.com/meta/optimized/4X/7/0/7/707f15c4b072258fb9e33c3a4fe7f30b715b4277_2_777x1024.png"},{"max_width":800,"max_height":800,"width":607,"height":800,"url":"//cdck-file-uploads-global.s3.dualstack.us-west-2.amazonaws.com/meta/optimized/4X/7/0/7/707f15c4b072258fb9e33c3a4fe7f30b715b4277_2_607x800.png"},{"max_width":600,"max_height":600,"width":455,"height":600,"url":"//cdck-file-uploads-global.s3.dualstack.us-west-2.amazonaws.com/meta/optimized/4X/7/0/7/707f15c4b072258fb9e33c3a4fe7f30b715b4277_2_455x600.png"},{"max_width":400,"max_height":400,"width":303,"height":400,"url":"//cdck-file-uploads-global.s3.dualstack.us-west-2.amazonaws.com/meta/optimized/4X/7/0/7/707f15c4b072258fb9e33c3a4fe7f30b715b4277_2_303x400.png"},{"max_width":300,"max_height":300,"width":227,"height":300,"url":"//cdck-file-uploads-global.s3.dualstack.us-west-2.amazonaws.com/meta/optimized/4X/7/0/7/707f15c4b072258fb9e33c3a4fe7f30b715b4277_2_227x300.png"},{"max_width":200,"max_height":200,"width":151,"height":200,"url":"//cdck-file-uploads-global.s3.dualstack.us-west-2.amazonaws.com/meta/optimized/4X/7/0/7/707f15c4b072258fb9e33c3a4fe7f30b715b4277_2_151x200.png"}],"tags":[{"id":478,"name":"cómo-hacerlo","slug":"how-to"},{"id":566,"name":"creador-de-temas","slug":"theme-creator"},{"id":820,"name":"guías-temáticas","slug":"theme-guides"}],"tags_descriptions":{"cómo-hacerlo":"Las guías de \"Cómo hacer\" contienen pasos a seguir para resolver un problema ...","creador-de-temas":"Temas sobre el Creador de Temas de Discourse"},"views":12830,"like_count":58,"has_summary":false,"last_poster_username":"micke","category_id":56,"op_like_count":42,"pinned_globally":false,"featured_link":null,"ai_topic_gist":"A user reports that while the Theme CLI syncs changes successfully, custom color schemes defined in about.json do not appear in the theme selection interface or user preferences, leaving only a default scheme visible.","has_accepted_answer":false,"can_vote":false,"posters":[{"extras":null,"description":"Autor original","user_id":115923,"primary_group_id":null,"flair_group_id":null},{"extras":null,"description":"Autor frecuente","user_id":101447,"primary_group_id":null,"flair_group_id":null},{"extras":null,"description":"Autor frecuente","user_id":128201,"primary_group_id":null,"flair_group_id":null},{"extras":null,"description":"Autor frecuente","user_id":114728,"primary_group_id":276,"flair_group_id":276},{"extras":"latest","description":"Autor más reciente","user_id":192487,"primary_group_id":null,"flair_group_id":null}]},{"fancy_title":"Discourse toolkit to render forms","fancy_title_localized":false,"locale":null,"id":326439,"title":"Discourse toolkit to render forms","slug":"discourse-toolkit-to-render-forms","posts_count":29,"reply_count":18,"highest_post_number":33,"image_url":null,"created_at":"2024-09-13T21:20:27.941Z","last_posted_at":"2025-12-23T17:55:56.356Z","bumped":true,"bumped_at":"2026-05-06T20:13:17.223Z","archetype":"regular","unseen":false,"pinned":false,"unpinned":null,"excerpt":"Basic Usage\nFormKit exposes a single component as its public API: &lt;Form /&gt;. All other elements are yielded as contextual components, modifiers, or plain data. \nEvery form is composed of one or multiple fields, represen&hellip;","visible":true,"closed":false,"archived":false,"bookmarked":null,"liked":null,"thumbnails":null,"tags":[],"tags_descriptions":{},"views":1493,"like_count":55,"has_summary":false,"last_poster_username":"merefield","category_id":56,"op_like_count":6,"pinned_globally":false,"featured_link":null,"ai_topic_gist":"A discussion about correcting the parameter structure for the validateUsername function in FormKit, clarifying that it should accept { data, addError } instead of (name, value, data, { addError }) to avoid destructuring errors.","has_accepted_answer":false,"can_vote":false,"posters":[{"extras":null,"description":"Autor original","user_id":-1,"primary_group_id":null,"flair_group_id":null},{"extras":null,"description":"Autor frecuente","user_id":23163,"primary_group_id":47,"flair_group_id":47},{"extras":null,"description":"Autor frecuente","user_id":2770,"primary_group_id":47,"flair_group_id":47},{"extras":null,"description":"Autor frecuente","user_id":23968,"primary_group_id":47,"flair_group_id":47},{"extras":"latest","description":"Autor más reciente","user_id":27384,"primary_group_id":null,"flair_group_id":null}]},{"fancy_title":"Desarrollando plugins de Discourse - Parte 2 - Conectar a una salida de plugin","fancy_title_localized":true,"locale":"en","id":31001,"title":"Developing Discourse Plugins - Part 2 - Connect to a plugin outlet","slug":"developing-discourse-plugins-part-2-connect-to-a-plugin-outlet","posts_count":39,"reply_count":21,"highest_post_number":42,"image_url":null,"created_at":"2015-07-12T17:48:27.322Z","last_posted_at":"2025-11-23T09:35:13.414Z","bumped":true,"bumped_at":"2026-05-05T17:38:29.859Z","archetype":"regular","unseen":false,"pinned":false,"unpinned":null,"excerpt":"Tutorial anterior: Desarrollo de complementos para Discourse - Parte 1 - Crear un complemento básico\n\nPrimeros pasos: Plantillas\nLa aplicación cliente de Discourse está escrita utilizando el framework de JavaScript Ember.js. Ember utiliza plantillas para gen…","visible":true,"closed":false,"archived":false,"bookmarked":null,"liked":null,"thumbnails":null,"tags":[{"id":484,"name":"tutorial","slug":"tutorial"},{"id":274,"name":"guías-de-complementos","slug":"plugin-guides"}],"tags_descriptions":{"tutorial":""},"views":30155,"like_count":102,"has_summary":false,"last_poster_username":"merefield","category_id":56,"op_like_count":38,"pinned_globally":false,"featured_link":null,"ai_topic_gist":"Users discuss updating a command to find plugin outlets in Discourse, noting a deprecated link and suggesting a replacement resource for current documentation.","has_accepted_answer":false,"can_vote":false,"posters":[{"extras":null,"description":"Autor original","user_id":115923,"primary_group_id":null,"flair_group_id":null},{"extras":null,"description":"Autor frecuente","user_id":39365,"primary_group_id":null,"flair_group_id":null},{"extras":null,"description":"Autor frecuente","user_id":19,"primary_group_id":null,"flair_group_id":null},{"extras":null,"description":"Autor frecuente","user_id":131832,"primary_group_id":null,"flair_group_id":null},{"extras":"latest","description":"Autor más reciente","user_id":27384,"primary_group_id":null,"flair_group_id":null}]}]}}