--- title: Layout Slots icon: ph:layout-duotone createTime: 2025/10/08 16:19:43 permalink: /en/guide/layout-slots/ --- ## Overview The theme provides extensive layout slots through `` and `` components, allowing content injection at different positions of the page. This enables users to personalize the theme according to their needs. ## Usage Taking `` as an example, first create a client configuration file: `.vuepress/client.ts`: ```ts title=".vuepress/client.ts" import { defineClientConfig } from 'vuepress/client' import Layout from './layouts/Layout.vue' export default defineClientConfig({ layouts: { Layout, }, }) ``` ::: info The `Layout` name in `layouts` is fixed. This uses JavaScript shorthand syntax, essentially equivalent to `Layout: Layout`, which is crucial for implementing layout slots. The same rule applies to `NotFound`. Other components passed that are not `Layout`/`NotFound` are considered custom layout components. ::: Then, create `.vuepress/layouts/Layout.vue` as the default component for layout slots, and import the current theme's `` component in this file. ```vue {7-11} title=".vuepress/layouts/Layout.vue" ``` Content injection can also be implemented using render functions in `.vuepress/client.ts`: ::: code-tabs @tab .vuepress/client.ts ```ts import { h } from 'vue' import { Layout } from 'vuepress-theme-plume/client' import { defineClientConfig } from 'vuepress/client' import CustomContent from './components/CustomContent.vue' export default defineClientConfig({ layouts: { Layout: () => h(Layout, null, { 'page-bottom': () => h(CustomContent), }), }, }) ``` @tab .vuepress/components/CustomContent.vue ```vue ``` ::: ## Slots ::: info You can preview to see the positions of all available slots in the site. ::: ### `` Slots - When `pageLayout: doc`: - `doc-top` - `doc-bottom` - `doc-content-before` - `doc-footer-before` - `doc-before` - `doc-after` - `doc-title-before` - `doc-title-after` - `doc-meta-top` - `doc-meta-bottom` - `doc-meta-before` - `doc-meta-after` - `sidebar-nav-before` - `sidebar-nav-after` - `aside-top` - `aside-bottom` - `aside-outline-before` - `aside-outline-after` - When `pageLayout: page`: - `page-top` - `page-bottom` - In post collection related pages (applicable to post list pages, tags pages, and archives pages): - `posts-top` - `posts-bottom` - `posts-aside-top` - `posts-aside-bottom` - `posts-extract-before` - `posts-extract-after` - In post list pages: - `posts-post-list-before` - `posts-post-list-after` - `posts-post-list-pagination-after` - In tags pages: - `posts-tags-before` - `posts-tags-title-after` - `posts-tags-content-before` - `posts-tags-after` - In archives pages: - `posts-archives-before` - `posts-archives-after` - In categories pages: - `posts-categories-before` - `posts-categories-content-before` - `posts-categories-after` ### `` Slots - `not-found` ### Common Slots The following slots are supported in both `` and ``: - `layout-top` - `layout-bottom` - `nav-bar-title-before` - `nav-bar-title-after` - `nav-bar-content-before` - `nav-bar-content-after` - `nav-bar-menu-before` - `nav-bar-menu-after` - `nav-screen-content-before` - `nav-screen-content-after` - `nav-screen-menu-before` - `nav-screen-menu-after` - `footer-content` - `bulletin-content`