{"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":"как-сделать","slug":"how-to"},{"id":820,"name":"руководства-по-темам","slug":"theme-guides"},{"id":819,"name":"код","slug":"code"},{"id":274,"name":"руководства-по-плагинам","slug":"plugin-guides"},{"id":484,"name":"учебник","slug":"tutorial"},{"id":150,"name":"dev-install","slug":"dev-install"},{"id":482,"name":"ссылка","slug":"reference"},{"id":479,"name":"объяснение","slug":"explanation"},{"id":70,"name":"уголёк","slug":"ember"},{"id":58,"name":"тестирование","slug":"testing"},{"id":543,"name":"ии","slug":"ai"},{"id":643,"name":"авто-темная","slug":"auto-dark"},{"id":275,"name":"автоматизация","slug":"automation"},{"id":436,"name":"css","slug":"css"},{"id":814,"name":"настройка","slug":"customization"},{"id":24,"name":"docker","slug":"docker"},{"id":799,"name":"индекс","slug":"index"},{"id":52,"name":"markdown","slug":"markdown"},{"id":328,"name":"плагин-api","slug":"plugin-api"},{"id":566,"name":"создатель-тем","slug":"theme-creator"},{"id":16,"name":"перевод","slug":"translation"},{"id":25,"name":"wiki-посты","slug":"wiki-posts"}],"topics":[{"fancy_title":"Индекс руководств разработчика","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":"Документация о расширении Discourse с помощью плагинов, тем и компонентов тем, работе с основным кодом и использовании API Discourse.\nВведение\n\nВведение: Введение в разработку для Discourse\n\nРазработка…","visible":true,"closed":true,"archived":false,"bookmarked":null,"liked":null,"thumbnails":null,"tags":[{"id":799,"name":"индекс","slug":"index"}],"tags_descriptions":{"индекс":"Разделы индекса категории документации."},"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":"Исходный автор, Последний автор","user_id":115923,"primary_group_id":null,"flair_group_id":null},{"extras":null,"description":"Частый автор","user_id":100484,"primary_group_id":null,"flair_group_id":null}]},{"fancy_title":"Настройка Discourse для разработки на 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":"Данное руководство протестировано на свежих установках Fedora 31 и 33, но может работать и на более старых версиях, которые также используют dnf как инструмент управления пакетами. Это не официальное руководство, но оно может оказаться полезным для других разработчиков...","visible":true,"closed":false,"archived":false,"bookmarked":null,"liked":null,"thumbnails":null,"tags":[{"id":478,"name":"как-сделать","slug":"how-to"},{"id":150,"name":"dev-install","slug":"dev-install"}],"tags_descriptions":{"как-сделать":"Руководства содержат шаги для решения конкретной проблемы","dev-install":"Инструкции и проблемы при установке Discourse для разработки"},"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":"Исходный автор","user_id":115923,"primary_group_id":null,"flair_group_id":null},{"extras":null,"description":"Частый автор","user_id":83775,"primary_group_id":47,"flair_group_id":47},{"extras":null,"description":"Частый автор","user_id":35474,"primary_group_id":null,"flair_group_id":null},{"extras":null,"description":"Частый автор","user_id":166720,"primary_group_id":null,"flair_group_id":null},{"extras":"latest","description":"Последний автор","user_id":135392,"primary_group_id":null,"flair_group_id":73}]},{"fancy_title":"Создайте и поделитесь цветовой схемой","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 теперь поддерживает импорт цветовых схем из удалённого репозитория. Здесь я покажу, как это сделать.\nПерейдите в раздел цветов и добавьте цветовую схему.\nОткройте страницу /admin/customize/colors на вашем сайте…","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":"как-сделать","slug":"how-to"}],"tags_descriptions":{"как-сделать":"Руководства содержат шаги для решения конкретной проблемы"},"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":"Исходный автор","user_id":115923,"primary_group_id":null,"flair_group_id":null},{"extras":"latest","description":"Последний автор","user_id":5859,"primary_group_id":null,"flair_group_id":null}]},{"fancy_title":"Создайте и поделитесь компонентом темы шрифта","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 поддерживает импорт тем, содержащих ресурсы из удалённого репозитория. Это позволяет авторам тем обмениваться шрифтами и изображениями. Создайте новый репозиторий Git со шрифтом:\nmkdir discourse-roboto-theme\ncd discourse-rob&hellip;","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":"как-сделать","slug":"how-to"},{"id":820,"name":"руководства-по-темам","slug":"theme-guides"}],"tags_descriptions":{"как-сделать":"Руководства содержат шаги для решения конкретной проблемы"},"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":"Исходный автор","user_id":115923,"primary_group_id":null,"flair_group_id":null},{"extras":null,"description":"Частый автор","user_id":27773,"primary_group_id":null,"flair_group_id":null},{"extras":null,"description":"Частый автор","user_id":15209,"primary_group_id":null,"flair_group_id":142},{"extras":null,"description":"Частый автор","user_id":117526,"primary_group_id":null,"flair_group_id":null},{"extras":"latest","description":"Последний автор","user_id":179822,"primary_group_id":null,"flair_group_id":null}]},{"fancy_title":"Разработка плагинов для Discourse — Часть 6: Добавление тестов принятия","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":"Предыдущий урок: Разработка плагинов для Discourse — Часть 5 — Добавление административного интерфейса\n\nЗнали ли вы, что в коде Discourse есть два больших набора тестов? На стороне сервера наш Ruby-код имеет набор тестов, который использует 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":"учебник","slug":"tutorial"},{"id":274,"name":"руководства-по-плагинам","slug":"plugin-guides"},{"id":58,"name":"тестирование","slug":"testing"}],"tags_descriptions":{"учебник":""},"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":"Исходный автор","user_id":115923,"primary_group_id":null,"flair_group_id":null},{"extras":null,"description":"Частый автор","user_id":1,"primary_group_id":47,"flair_group_id":47},{"extras":null,"description":"Частый автор","user_id":40486,"primary_group_id":null,"flair_group_id":null},{"extras":null,"description":"Частый автор","user_id":57427,"primary_group_id":null,"flair_group_id":null},{"extras":"latest","description":"Последний автор","user_id":104279,"primary_group_id":47,"flair_group_id":47}]},{"fancy_title":"Разработка плагинов для Discourse — часть 5: добавление административного интерфейса","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":"Предыдущее руководство: Разработка плагинов для Discourse — Часть 4 — Настройка git\n\nИногда настроек сайта недостаточно для того, чтобы ваш плагин работал так, как вы хотите. Например, если вы установите плагин 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":"учебник","slug":"tutorial"},{"id":274,"name":"руководства-по-плагинам","slug":"plugin-guides"}],"tags_descriptions":{"учебник":""},"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":"Исходный автор","user_id":115923,"primary_group_id":null,"flair_group_id":null},{"extras":null,"description":"Частый автор","user_id":19127,"primary_group_id":null,"flair_group_id":null},{"extras":null,"description":"Частый автор","user_id":27611,"primary_group_id":null,"flair_group_id":null},{"extras":null,"description":"Частый автор","user_id":19,"primary_group_id":null,"flair_group_id":null},{"extras":"latest","description":"Последний автор","user_id":135392,"primary_group_id":null,"flair_group_id":73}]},{"fancy_title":"Разработка плагинов для Discourse — Часть 4 — Настройка 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":"Предыдущее руководство: Разработка плагинов для Discourse — Часть 3 — Добавление пользовательских настроек сайта\n\nТеперь, когда ваш плагин становится более сложным, пришло время и для более продвинутого подхода к его разработке.\nМы рекомендуем вам…","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":"учебник","slug":"tutorial"},{"id":274,"name":"руководства-по-плагинам","slug":"plugin-guides"}],"tags_descriptions":{"учебник":""},"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":"Исходный автор","user_id":115923,"primary_group_id":null,"flair_group_id":null},{"extras":null,"description":"Частый автор","user_id":23842,"primary_group_id":null,"flair_group_id":null},{"extras":null,"description":"Частый автор","user_id":13093,"primary_group_id":276,"flair_group_id":276},{"extras":null,"description":"Частый автор","user_id":28866,"primary_group_id":null,"flair_group_id":null},{"extras":"latest","description":"Последний автор","user_id":141900,"primary_group_id":null,"flair_group_id":null}]},{"fancy_title":"Разработка плагинов для Discourse — Часть 1: Создание базового плагина","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":"Создание плагина для Discourse может быть очень простым, как только вы разберётесь с несколькими особенностями. Цель этой статьи — создать шаблон плагина и познакомить вас с основами.\nВаша среда разработки\nУбедитесь, что у вас ha…","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":"учебник","slug":"tutorial"},{"id":274,"name":"руководства-по-плагинам","slug":"plugin-guides"}],"tags_descriptions":{"учебник":""},"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":"Исходный автор","user_id":115923,"primary_group_id":null,"flair_group_id":null},{"extras":null,"description":"Частый автор","user_id":25674,"primary_group_id":null,"flair_group_id":null},{"extras":null,"description":"Частый автор","user_id":13093,"primary_group_id":276,"flair_group_id":276},{"extras":null,"description":"Частый автор","user_id":704,"primary_group_id":null,"flair_group_id":null},{"extras":"latest","description":"Последний автор","user_id":149694,"primary_group_id":null,"flair_group_id":null}]},{"fancy_title":"Использование DModal API для отображения модальных окон (также известных как всплывающие окна/диалоги) в 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 включает в себя совершенно новый компонентный API на основе <DModal>.\n\nℹ️ Он заменяет устаревший старый API на основе контроллеров. Если у вас есть существующие модальные окна, использующие старые API, п...","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":"код","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":"Исходный автор, Последний автор","user_id":115923,"primary_group_id":null,"flair_group_id":null},{"extras":null,"description":"Частый автор","user_id":1,"primary_group_id":47,"flair_group_id":47}]},{"fancy_title":"Вставьте текст или изображения в любое место вашего сайта с помощью псевдоэлементов 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":"Итак, вы хотите вставить текст или изображение на ваш сайт Discourse. \nЧто касается текста, то в большинстве случаев достаточно изменить его через /admin/customize/site_texts. \nОднако иногда возникает желание добавить предложение …","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":"как-сделать","slug":"how-to"},{"id":814,"name":"настройка","slug":"customization"}],"tags_descriptions":{"как-сделать":"Руководства содержат шаги для решения конкретной проблемы"},"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":"Исходный автор, Последний автор","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":"Исходный автор","user_id":-1,"primary_group_id":null,"flair_group_id":null},{"extras":null,"description":"Частый автор","user_id":135392,"primary_group_id":null,"flair_group_id":73},{"extras":null,"description":"Частый автор","user_id":23968,"primary_group_id":47,"flair_group_id":47},{"extras":null,"description":"Частый автор","user_id":127856,"primary_group_id":null,"flair_group_id":null},{"extras":"latest","description":"Последний автор","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":"Исходный автор, Последний автор","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":"Исходный автор","user_id":-1,"primary_group_id":null,"flair_group_id":null},{"extras":"latest","description":"Последний автор","user_id":135392,"primary_group_id":null,"flair_group_id":73}]},{"fancy_title":"Developer&rsquo;s guide to Markdown extensions","fancy_title_localized":false,"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 uses a Markdown engine called Markdown-it. \nHere are some dev notes that will help you either fix bugs in core or create your new plugins. \nThe Basics\nDiscourse only contains a few helpers on top of the engine,&hellip;","visible":true,"closed":false,"archived":false,"bookmarked":null,"liked":null,"thumbnails":null,"tags":[{"id":482,"name":"ссылка","slug":"reference"},{"id":52,"name":"markdown","slug":"markdown"},{"id":819,"name":"код","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":"Исходный автор","user_id":115923,"primary_group_id":null,"flair_group_id":null},{"extras":"latest","description":"Последний автор","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":"Исходный автор, Последний автор","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":"Исходный автор","user_id":-1,"primary_group_id":null,"flair_group_id":null},{"extras":null,"description":"Частый автор","user_id":21029,"primary_group_id":47,"flair_group_id":47},{"extras":"latest","description":"Последний автор","user_id":27384,"primary_group_id":null,"flair_group_id":null}]},{"fancy_title":"Использование «тахометра» Google для измерения изменений производительности JS в 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":"При работе с клиентской частью в ядре Discourse, плагинах или темах важно учитывать влияние на производительность. Проект Google «Tachometer» предоставляет статистически строгий инструмент для бенчмаркинга, который мы можем использовать для …","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":"код","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":"Исходный автор, Последний автор","user_id":115923,"primary_group_id":null,"flair_group_id":null}]},{"fancy_title":"Настройка среды разработки для мультисайта","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":"Запуск Discourse в режиме мультисайта в среде разработки возможен. Мультисайтовый сервер использует отдельную базу данных и имя хоста для каждого обслуживаемого сайта. Это полезно, если вы разрабатываете функцию или плагин, которые должны…","visible":true,"closed":false,"archived":false,"bookmarked":null,"liked":null,"thumbnails":null,"tags":[{"id":478,"name":"как-сделать","slug":"how-to"},{"id":150,"name":"dev-install","slug":"dev-install"}],"tags_descriptions":{"как-сделать":"Руководства содержат шаги для решения конкретной проблемы","dev-install":"Инструкции и проблемы при установке Discourse для разработки"},"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":"Исходный автор, Последний автор","user_id":115923,"primary_group_id":null,"flair_group_id":null}]},{"fancy_title":"Установка плагинов в вашей среде разработки без 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":"(Это руководство охватывает только установку для разработки без Docker. Для установки в среде разработки с Docker :whale: см. Установка Discourse для разработки с использованием Docker)\nЕсли вы следовали инструкциям по настройке локального Discourse, вы можете установить плагин ло...","visible":true,"closed":false,"archived":false,"bookmarked":null,"liked":null,"thumbnails":null,"tags":[{"id":478,"name":"как-сделать","slug":"how-to"},{"id":150,"name":"dev-install","slug":"dev-install"}],"tags_descriptions":{"как-сделать":"Руководства содержат шаги для решения конкретной проблемы","dev-install":"Инструкции и проблемы при установке Discourse для разработки"},"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":"Исходный автор, Последний автор","user_id":115923,"primary_group_id":null,"flair_group_id":null}]},{"fancy_title":"Установка Discourse на Windows для разработки","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: Данный учебник был протестирован в Windows 10 и 11. \nДля настройки среды разработки Discourse в Windows вы можете использовать функцию Подсистемы Windows для Linux (WSL). \nЭта настройка требует …","visible":true,"closed":false,"archived":false,"bookmarked":null,"liked":null,"thumbnails":null,"tags":[{"id":478,"name":"как-сделать","slug":"how-to"},{"id":150,"name":"dev-install","slug":"dev-install"}],"tags_descriptions":{"как-сделать":"Руководства содержат шаги для решения конкретной проблемы","dev-install":"Инструкции и проблемы при установке Discourse для разработки"},"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":"Исходный автор","user_id":115923,"primary_group_id":null,"flair_group_id":null},{"extras":null,"description":"Частый автор","user_id":139654,"primary_group_id":null,"flair_group_id":null},{"extras":null,"description":"Частый автор","user_id":36685,"primary_group_id":null,"flair_group_id":148},{"extras":null,"description":"Частый автор","user_id":135392,"primary_group_id":null,"flair_group_id":73},{"extras":"latest","description":"Последний автор","user_id":27384,"primary_group_id":null,"flair_group_id":null}]},{"fancy_title":"Установка Discourse на Ubuntu или Debian для разработки","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: Данное руководство содержит инструкции по установке в среде разработки. Для ознакомления с руководством по производству см.: Установка Discourse в производственной среде с использованием официально поддерживаемых инструкций\n\n\nИтак, вы хотите настроить Discourse&hellip;","visible":true,"closed":false,"archived":false,"bookmarked":null,"liked":null,"thumbnails":null,"tags":[{"id":478,"name":"как-сделать","slug":"how-to"},{"id":150,"name":"dev-install","slug":"dev-install"}],"tags_descriptions":{"как-сделать":"Руководства содержат шаги для решения конкретной проблемы","dev-install":"Инструкции и проблемы при установке Discourse для разработки"},"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":"Исходный автор","user_id":115923,"primary_group_id":null,"flair_group_id":null},{"extras":null,"description":"Частый автор","user_id":93926,"primary_group_id":null,"flair_group_id":null},{"extras":null,"description":"Частый автор","user_id":114728,"primary_group_id":276,"flair_group_id":276},{"extras":null,"description":"Частый автор","user_id":14353,"primary_group_id":null,"flair_group_id":null},{"extras":"latest","description":"Последний автор","user_id":135392,"primary_group_id":null,"flair_group_id":73}]},{"fancy_title":"Установка Discourse на macOS для разработки","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: Данное руководство содержит инструкции по настройке среды разработки для macOS. Для получения инструкций по развёртыванию в производственной среде см.: Установка Discourse в производственной среде с использованием официальных поддерживаемых инструкций\n\nИтак, вы хотите настроить Disc&hellip;","visible":true,"closed":false,"archived":false,"bookmarked":null,"liked":null,"thumbnails":null,"tags":[{"id":478,"name":"как-сделать","slug":"how-to"},{"id":150,"name":"dev-install","slug":"dev-install"}],"tags_descriptions":{"как-сделать":"Руководства содержат шаги для решения конкретной проблемы","dev-install":"Инструкции и проблемы при установке Discourse для разработки"},"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":"Исходный автор","user_id":115923,"primary_group_id":null,"flair_group_id":null},{"extras":null,"description":"Частый автор","user_id":105081,"primary_group_id":null,"flair_group_id":null},{"extras":null,"description":"Частый автор","user_id":125230,"primary_group_id":null,"flair_group_id":null},{"extras":null,"description":"Частый автор","user_id":14353,"primary_group_id":null,"flair_group_id":null},{"extras":"latest","description":"Последний автор","user_id":15442,"primary_group_id":null,"flair_group_id":118}]},{"fancy_title":"Установка Discourse для разработки с помощью 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":"Разработка с использованием Docker\nПоскольку Discourse работает в Docker, вы можете запустить Discourse напрямую из вашей директории с исходным кодом, используя контейнер для разработки Discourse.\n:white_check_mark: Преимущества: Не требуется установка каких-либо …","visible":true,"closed":false,"archived":false,"bookmarked":null,"liked":null,"thumbnails":null,"tags":[{"id":478,"name":"как-сделать","slug":"how-to"},{"id":24,"name":"docker","slug":"docker"},{"id":150,"name":"dev-install","slug":"dev-install"}],"tags_descriptions":{"как-сделать":"Руководства содержат шаги для решения конкретной проблемы","dev-install":"Инструкции и проблемы при установке Discourse для разработки"},"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":"Исходный автор","user_id":115923,"primary_group_id":null,"flair_group_id":null},{"extras":null,"description":"Частый автор","user_id":36692,"primary_group_id":null,"flair_group_id":null},{"extras":null,"description":"Частый автор","user_id":131037,"primary_group_id":null,"flair_group_id":null},{"extras":null,"description":"Частый автор","user_id":15209,"primary_group_id":null,"flair_group_id":142},{"extras":"latest","description":"Последний автор","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":"Исходный автор","user_id":-1,"primary_group_id":null,"flair_group_id":null},{"extras":null,"description":"Частый автор","user_id":95552,"primary_group_id":null,"flair_group_id":null},{"extras":null,"description":"Частый автор","user_id":155596,"primary_group_id":null,"flair_group_id":null},{"extras":null,"description":"Частый автор","user_id":1,"primary_group_id":47,"flair_group_id":47},{"extras":"latest","description":"Последний автор","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":"Исходный автор","user_id":-1,"primary_group_id":null,"flair_group_id":null},{"extras":null,"description":"Частый автор","user_id":174008,"primary_group_id":null,"flair_group_id":null},{"extras":null,"description":"Частый автор","user_id":127446,"primary_group_id":null,"flair_group_id":73},{"extras":null,"description":"Частый автор","user_id":135392,"primary_group_id":null,"flair_group_id":73},{"extras":"latest","description":"Последний автор","user_id":9858,"primary_group_id":null,"flair_group_id":null}]},{"fancy_title":"Фиксация версий плагинов и тем для старых установок Discourse (ветки 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: Фон\nРазработчики тем и плагинов обычно стремятся ориентироваться на последнюю версию Discourse, не беспокоясь о обратной совместимости. Однако сайты, работающие на более старых версиях Discourse, всё ещё нуждаются в поддержке версий…","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":"Исходный автор","user_id":115923,"primary_group_id":null,"flair_group_id":null},{"extras":null,"description":"Частый автор","user_id":135392,"primary_group_id":null,"flair_group_id":73},{"extras":"latest","description":"Последний автор","user_id":23968,"primary_group_id":47,"flair_group_id":47}]},{"fancy_title":"Автоматическая проверка и форматирование кода перед коммитами","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 использует lefthook для git-хуков, а bin/lint — как основную точку входа CLI для ручного запуска тех же проверок.\nЕсли вы работаете в локальной копии, установите хуки один раз:\npnpm install\npnpm lefthook install\n\nПосле...","visible":true,"closed":false,"archived":false,"bookmarked":null,"liked":null,"thumbnails":null,"tags":[{"id":478,"name":"как-сделать","slug":"how-to"},{"id":819,"name":"код","slug":"code"}],"tags_descriptions":{"как-сделать":"Руководства содержат шаги для решения конкретной проблемы"},"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":"Исходный автор, Последний автор","user_id":115923,"primary_group_id":null,"flair_group_id":null},{"extras":null,"description":"Частый автор","user_id":1,"primary_group_id":47,"flair_group_id":47}]},{"fancy_title":"Get started with Theme Creator and the Theme CLI","fancy_title_localized":false,"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":"This topic will walk you through how to use the Theme CLI with our Theme Creator site to develop a theme and preview your changes on a live Discourse site. \n\n\nSign up for an account here on Meta if you haven’t already \n\n\n&hellip;","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":"как-сделать","slug":"how-to"},{"id":566,"name":"создатель-тем","slug":"theme-creator"},{"id":820,"name":"руководства-по-темам","slug":"theme-guides"}],"tags_descriptions":{"как-сделать":"Руководства содержат шаги для решения конкретной проблемы","создатель-тем":"Темы о создателе тем 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":"Исходный автор","user_id":115923,"primary_group_id":null,"flair_group_id":null},{"extras":null,"description":"Частый автор","user_id":101447,"primary_group_id":null,"flair_group_id":null},{"extras":null,"description":"Частый автор","user_id":128201,"primary_group_id":null,"flair_group_id":null},{"extras":null,"description":"Частый автор","user_id":114728,"primary_group_id":276,"flair_group_id":276},{"extras":"latest","description":"Последний автор","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":"Исходный автор","user_id":-1,"primary_group_id":null,"flair_group_id":null},{"extras":null,"description":"Частый автор","user_id":23163,"primary_group_id":47,"flair_group_id":47},{"extras":null,"description":"Частый автор","user_id":2770,"primary_group_id":47,"flair_group_id":47},{"extras":null,"description":"Частый автор","user_id":23968,"primary_group_id":47,"flair_group_id":47},{"extras":"latest","description":"Последний автор","user_id":27384,"primary_group_id":null,"flair_group_id":null}]},{"fancy_title":"Разработка плагинов для Discourse - Часть 2 - Подключение к outlet плагинов","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":"Предыдущее руководство: Разработка плагинов для Discourse — Часть 1 — Создание базового плагина\n\nНачало работы: Шаблоны\nКлиентское приложение Discourse написано с использованием фреймворка JavaScript Ember.js. Ember использует шаблоны для генерации...","visible":true,"closed":false,"archived":false,"bookmarked":null,"liked":null,"thumbnails":null,"tags":[{"id":484,"name":"учебник","slug":"tutorial"},{"id":274,"name":"руководства-по-плагинам","slug":"plugin-guides"}],"tags_descriptions":{"учебник":""},"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":"Исходный автор","user_id":115923,"primary_group_id":null,"flair_group_id":null},{"extras":null,"description":"Частый автор","user_id":39365,"primary_group_id":null,"flair_group_id":null},{"extras":null,"description":"Частый автор","user_id":19,"primary_group_id":null,"flair_group_id":null},{"extras":null,"description":"Частый автор","user_id":131832,"primary_group_id":null,"flair_group_id":null},{"extras":"latest","description":"Последний автор","user_id":27384,"primary_group_id":null,"flair_group_id":null}]}]}}