Customizing page
Rspress provides several ways for you to customize the content of your pages, including:
- Adding custom global components.
- Adding custom global styles.
- Customizing page layout structure.
Custom global components
In some scenarios, you may need to add some custom global components to the page. Rspress provides a config item globalUIComponents to achieve this function.
How to use
Add the following config in rspress.config.ts:
Each item of globalUIComponents can be a string, representing the file path of the component; or it can be an array, the first item is the file path of the component, and the second item is the props object of the component, such as:
When you register global components, Rspress will automatically render these React components in the theme without manually importing and using them.
Through global components, you can complete many custom functions, such as:
In this way, the content of the component will be rendered in the theme page, such as adding BackToTop button.
In the meanwhile, you can also use the global component to register some side effects, such as:
This way, side effects of components are executed in the theme page. For example, some of the following scenarios require side effects:
- Redirect for certain page routes.
- Bind click event on the img tag of the page to implement the image zoom function.
- When the route changes, the PV data of different pages are reported.
- ......
Tailwind CSS
To use Tailwind CSS in Rspress, you can follow these steps:
- Install Tailwind CSS:
- Create a
postcss.config.jsfile containingtailwindcssplugin:
- Create a
tailwind.config.jsfile and make sure all the content files are included viacontent:
- Include the Tailwind directives in your CSS styles file, refer to globalStyles:
For most up to date configuration, please refer to the official Tailwind CSS documentation.
Custom layout structure
Rspress provides a pageType configuration for you to customize the layout structure of the page.
Using pageType
Rspress's convention-based routing supports two types of routes, one is document routing, that is, pages written with md(x) files, and the other is component routing, that is, pages written with .jsx/.tsx files.
For the former, you can add the pageType field in the frontmatter to specify the layout structure of the page, such as:
For the latter, you can add the following export to specify pageType:
pageType can be configured as the following values:
home: Home page, including the layout content of the top navigation bar and home page.doc: Doc page, including top navigation bar, left sidebar, body content, and outline bar on the right.doc-wide: Wide doc page, when using theoutline: falseandsidebar: falsesettings together, the main content will automatically occupy a wider screen space.custom: Custom page, including top navigation bar and custom content.blank: Also belongs to custom page, but does not includeTop Navigation Bar.404: Not found page.
Using fine-grained switches
In addition to the pageType page layout level configuration, Rspress also provides more fine-grained switches. You can configure other fields in the frontmatter. These fields and their meanings are as follows:
navbar: Whether to display the top navigation bar. When you want to hide the top navigation bar, you can set it tofalse.sidebar: Whether to display the sidebar. When you want to hide the sidebar, you can set it tofalse.outline: Whether to display the outline column. When you want to hide the outline column, you can set it tofalse.footer: Whether to display the footer. When you want to hide the footer, you can set it tofalse.globalComponents: Whether to display global components. When you want to hide global components, you can set it tofalse.
Example: