Open Sitez Documentation

Documentation main page

 

Open Sitez definition.osz

Routes Configuration

The definition.osz file in Open Sitez contains various sections to configure your website, including the "Routes" section. This section defines how URLs are mapped to specific content or functionality within your site. In this documentation, we'll provide a comprehensive overview of route configurations.

Introduction to Routes

Routes play a critical role in Open Sitez, allowing you to define how your website responds to different URLs. Each route is specified in the configuration with a unique name and a set of attributes that determine its behavior.

Route Types

Open Sitez supports several route types, each serving a specific purpose. With most plugins providing a type of route, I would recommend to checkout the plugins section for individual route types

Here are some common route types and their descriptions:

Page Route

  • Type: page
  • Description: Represents a static page route, typically used for displaying fixed content.

Blog Route

  • Type: blog
  • Description: Configures a dynamic blog route, which can display a collection of posts or articles. Blog routes often have attributes like "limit" and "feature" to control the number of posts displayed and specify the ID of the blog.

Redirect Route

  • Type: redirect
  • Description: Sets up redirection from one URL to another. Useful for forwarding visitors from old URLs to new ones.

Feed Route

  • Type: feed
  • Description: displays an rss or atom feed

Form Route (Work in Progress)

  • Type: form
  • Description: Defines a route for forms and user submissions. While still a work in progress, it allows you to handle user interactions and data submissions.

Route Configuration Examples

Let's explore various examples of route configurations, including examples for a few route type:

Static Page Route

This example defines a static page route named "default" that displays an HTML file named "index.html."

default:
  type: page
  content:
    type: include
    file: index.html

Dynamic Blog Route

This configuration sets up a dynamic blog route named "thoughts" with a limit of 20 posts and specifies the ID of the blog.

thoughts:
  type: blog
  limit: 20
  feature: 10

Redirect Route

This example creates a route named "old-page" that redirects visitors from "/old-page" to "/new-page/."

old-page:
  type: redirect
  redirect: /new-page/

Form Route (Work in Progress)

This section is under development and will be expanded upon in future releases.

Page Route Layouts

Page routes of the "page" type can specify layouts that define the structure of the page. Layouts can be shared among multiple pages. If a layout is not explicitly specified, Open Sitez will look for the default layout. Below is an example of how to specify a layout for a page route:

my-page:
  type: page
  layout: custom-layout
  content:
    type: include
    file: my-page-content.html

In this example, the "my-page" route specifies a custom layout named "custom-layout" for its page content. If "layout" is not provided, Open Sitez will use the default layout.

Additional Route Attributes

In addition to route type-specific attributes, you can use various attributes to customize the behavior of your routes. These attributes include:

  • url: Defines the URL path to which the route responds.
  • auth: Configures authentication settings for protected routes.
  • content: Specifies the content to be displayed for the route.
  • redirect: Defines the target URL for redirection.

These attributes allow you to create a wide range of customized routes tailored to your website's needs.

Authentication Options

Open Sitez provides flexible authentication options for protected routes. You can use either simple authentication or database-driven authentication, depending on your requirements.

Simple Authentication

This configuration defines a password-protected page route named "admin" using simple authentication. It includes two users, "aladdin" and "admin," with specific passwords and group assignments.

admin:
  type: page
  auth:
    type: simple
    users:
      aladdin:
        password: opensesame
      admin:
        password: badpassword
        group: admin

Database-Driven Authentication

You can extend authentication to use a database as the source for user information. This example demonstrates database-driven authentication with the "query" type, allowing you to customize options such as the database table and fields.

route:
   protected-route:
       auth:
            type: query
            table: users

Conclusion

The "Routes" section in the Open Sitez definition.osz configuration file is a powerful tool for defining how URLs are handled on your website. By understanding route types, attributes, and authentication options, you can create dynamic, secure, and user-friendly web experiences for your visitors.