There are a number of ways to customize how Discourse functions; Plugins, Components, and direct theme editing are a few examples. The SCRF Discourse server is a managed host environment and comes with a standard set of Officially Supported Plugins. Because this forum is running within a managed environment the plugins available are limited. For example, there are many third party plugins on GitHub. This restriction is part of the security features of the walled garden approach to managed servers.
This does not mean that our customization options while using a managed environment is limited to those plugins. Discourse also offers another path in the form of what are known as Theme Components.
Theme components are customizations that change surface elements of your forum design, or add extra front-end features. Smaller and more targeted than full themes, they can generally (though not always) be combined with other theme components to create a bespoke forum design tailored for your community.
You can find more info on how to use, create, and share your own theme components in:
Only @theme_authors can create topics in this category, but if you’ve already developed a theme component that you’d like to share, click on @theme_authors and request to join. Then we can add you to the group and you’ll be able to post your theme component here.
Using Theme Components SCRF has some ongoing development efforts here at this forum.
- Topic Author Flair
- Advanced Search Functionality
- Platform Integrations (Discord, Github)
One big advantage of rolling out these smaller, bite-sized, forms of change is that SCRF is able to implement branding in bespoke / novel ways. There are lots of great small changes that can be made to improve this forum according to the needs of the community using it. This goes a long way to distinguish the SCRF forum from other vanilla turn-key forums that, on the surface, have little to no effort behind its implementation.
A staging Discourse server has been set up where testing of these components is underway. If anyone would like to contribute, learn more, or share ideas please feel free to discuss in this thread.
The currently available source code for the components is on the IT GitHub Repo.
A big Thank You to Matt and Maria from Discovery, Paul from Engagement, and Twan for Content for all the ideas and help so far.
Banner being loaded on homepage of Smart Contract Research Forum
The Banner is a persistent addition to the forum which is displayed at the top of the page. Its goal is to help provide a targeted set of navigation links that are deemed important to SCRF and the community. The primary focus is to assist Onboarding, present high level content curation, and make navigation of the site easier.
When the Banner is loaded on the homepage of this forum (Smart Contract Research Forum) it takes a taller, more prominent visual form. The Banner serves as the primary ‘Above the Fold’ section of content which is oriented to catch the users attention and initial click.
When the Banner is loaded on any other page, it vertically shrinks down taking much less design space away from the flow of the page.
Banner being loaded on sub-page of Smart Contract Research Forum
The Banner component is mobile ready, responsive, and does not load any additional frameworks or libraries.
Banner being loaded on a mobile device
A new feature is being worked on that will introduce a togglable notification bubble that will be placed above the three call to action buttons. The purpose of the Notification Bubble is to provide a flexible marketing space for relevant time sensitive announcements. The content for this notification will be data driven and supplied by the Discourse forum itself by way of a new Notification Category. This will allow a designated SCRF member to control the notification content without having to update or change the component.
Topic Author Flair
When scrolling through a Topic and its comments, the Author will have an extra badge displayed next to their name. The goal is to help readers visually identify who the author of the topic is while reading the comments.
Topic Author Flair
Advanced Search Functionality
Discourse has a built-in Search Page that is publicly available for anyone to use. There are also more advanced search views and plugins that enable more robust searching options. The best way to achieve a really specific search is to programmatically do it via the Discourse REST API. Every single page that is rendered by the Discourse software (The Theme) uses this REST API in order to get information out of the database and display it on the screen - including those search pages.
One specific question we wanted to ask the Discourse Database was to display a list of all topics sorted by authors that belong to a specific group. There didn’t seem to be a built-in way to ask the database this question. So I’ve built a custom Search page that does!
Currently it is only on the staging site as I am still working out a security issue before deploying the component to the live site. This is really just scratching the surface on what is possible by directly leveraging the Discourse REST API.
Platform Integrations (Discord, Github)
At this point in our journey we have arrived at a purely theoretical step.
Other services such as Discord and GitHub also have REST APIs and we can get them talking to each other.
For example, when a certain kind of Issue is created (perhaps after an issue Forum has been submitted) - GitHub could reach out to Discourse and create a post, in a specific way & location, perhaps as a template, and populate it with some initial content.
Ultimately we are talking about automating processes across different platforms.