Table of Contents

Oqtane Themes Developer Guide

Oqtane Themes are extensions to customize the look and feel of your Oqtane website. This guide will help you get started with creating and using themes in Oqtane.

What is a Theme?

A theme is a collection of files that define the look and feel of your website. Themes can include CSS, JavaScript, images, and other assets that are used to style your website.

Since Oqtane is based on .net and Blazor, themes are built using Blazor components and these are compiled into a DLL that is loaded by the Oqtane framework. Here's an example:

In this example, the theme controls:

  1. Placement, size and styling of the logo - as well as how it changes in responsive scenarios.
  2. The layout of the main menu, including the dropdowns.
  3. The layout of the footer, including the social media links.
  4. Font sizes and colors for various headings and normal text.

Next Steps

Tip

Before diving too deep into themes, make sure you understand the basics of Extensions.

Read about:

  1. Learn to generate a new theme
  2. Parts of an Oqtane Theme
  3. Theme Build, Distribute and Install
  4. Theme Code Explained
  5. Theme Solution Explained

Tasks to complete these guides

The following topics should be covered as soon as possible (help wanted!)

  1. How to customize an existing theme
  2. How to uninstall a theme
  3. How to update a theme
  4. How to create a theme from scratch
  5. How to publish a theme in the Marketplace
  6. Guidance for assets / resources
  7. Guidance for render modes and edge cases / SSR .net 8.0
  8. Guidance for responsive design
  9. Guidance for accessibility
  10. Guidance for performance & SEO
  11. Best Practices for assets - especially JS/CSS
  12. Some guidance on CSS variables / Bootstrap 5.3 conventions


Main Author

Daniel Mettler, @iJungleboy [MS MVP, Oqtane Core Team]

Content Management Expert, Chief Architect of 2sxc and cre8magic.
Forged in the jungles of Indonesia, lives in Switzerland , loves Oqtane 🩸 & 2sxc 💜.

LinkedIn | Discord: @iJungleboy | Twitter: @iJungleboy | Github: @iJungleboy