# Blueprints

- Read more: <https://getkirby.com/docs/guide/blueprints/introduction>

****

Blueprints are registered with the `blueprints` extension.

## File definition

The `blueprints` extension accepts  an array of key/value pairs, where the key is the name of the blueprint and the value the path to the file in your plugin folder.

```php "/site/plugins/your-plugin/index.php"
Kirby::plugin('your/plugin', [
	'blueprints' => [
		'pages/blog' => __DIR__ . '/blueprints/blog.yml'
	]
]);
```

<info>The blueprint key must start with 'pages/...', 'users/...', etc. to activate the designated locations.</info>

## Array definition

Alternatively, you can also pass the blueprint definition as an array instead of a file:

```php
Kirby::plugin('your/plugin', [
	'blueprints' => [
		'pages/blog' => [
			'title'    => 'Blog',
			'sections' => [
				// ...
			]
		]
	]
]);
```

## Callback definition

Plugins can now define dynamic blueprints based on config settings, content and other factors.

```php
<?php

Kirby::plugin('my/blueprint', [
    'blueprints' => [
        'pages/blog' => function ($kirby) {
            return [
                'title' => 'Blog',
                'sections' => [
                    'articles' => [
                        'type'     => 'pages',
                        'template' => 'article',
                        'limit'    => $kirby->option('blog.article.limit')
                    ]
                ]
            ];
        }
    ]
]);
```