Sonja Broda
![](https://assets.getkirby.com/media/pages/authors/sonja-broda/d7508c21c5-1717846665/sonja.jpg?width=400&height=400&crop=fp%2C0.5%2C0.5)
All recipes
-
Development & deployment
Kirby meets DDEV
Set up a local development environment for Kirby with DDEV in no time.
-
Panel
Basic Panel area
Create your first custom Panel view from scratch
-
Frontend
Including CSS/JS libraries
How to add CSS or JS files to your templates
-
Development & deployment
Coding style standards
Fix coding style violations automatically with easy-to-implement, configurable tools
-
Performance
Responsive images
Boost your site's performance with images that adapt to all screen sizes
-
Performance
Image lazy-loading
Lazy-loading strategies to improve your site's performance
-
Development & deployment
Replacing core classes
Extend core classes like the Kirby or site classes
-
Forms
User registration
Leveraging Kirby's authentication features to create a user registration system
-
Extensions
Preview images for PDFs
Display a nice auto-generated image when linking to PDF flyers, booklets etc.
-
Development & deployment
PHP-based blueprints
Create blueprints programmatically with PHP
-
Panel
Advanced Panel area
Panel area with editable list, complete with dialogs, dropdowns and search
-
Security
Protecting files
Restrict access to a files download section to authorized users
-
Development & deployment
Kirby meets Docker
Get started with Docker as development environment
-
Plugins
Plugins with/without a build process
Build Panel extensions without a build process.
-
Content representations
Load more with Ajax
Add a load more button to your listings and append items via Ajax.
-
PHP
OOP in PHP
Learn the basics of object oriented programming in PHP
-
Performance
Kirby loves CDN
Deliver assets and files through a CDN.
-
PHP
Debugging with Xdebug
Xdebug helps you track down errors in your PHP scripts.
-
Development & deployment
Email testing
MailHog and similar tools make email testing a breeze
-
Security
Extending permissions
Fine-tune and go beyond Kirby's built-in permission system in the Panel
-
Panel
Custom Panel field
Create a custom Panel field from scratch
-
Content & structure
Placeholders
Use placeholders for recurring text snippets and more
-
Panel
Custom Panel section
Building very basic custom Panel section for a link list
-
Navigation
Menu builder
Create custom menus from the Panel using different field types
-
Forms
Forms with attachments
Sending email with attachments from form input.
-
Content & structure
Subpage builder
Auto-generate subpages when you create a new page
-
Forms
Create pages from frontend
Create pages from an event registration form
-
i18n
Fetching field options
Get text labels for your option values from fields
-
Content & structure
Paginating posts
Split long post into separate pages with pagination
-
Collections
Filtering via routes
Learn how to filter using routes instead of parameters
-
Forms
Contact form
Create a basic contact form that sends HTML or plain text emails.
-
Collections
Sorting collections
Use Kirby's API to sort your content by all sorts of criteria.
-
PHP
Basic error hunting & prevention
Debug configuration and understanding error messages
-
Extensions
Kirbytext columns
Add columns to your textarea fields with this KirbyTag plugin.
-
Development & deployment
Content clean-up
Remove unused fields from content files
-
Navigation
Anchors and ToCs
Auto-replace headlines with anchors and generate in-page navigation
-
Collections
Filtering collections
Filter pages, files and users with Kirby's extensive filtering methods.
-
Collections
Filtering with tags
Classify content and make it easy for visitors to find related content.
-
Collections
Grouping collections
Group pages, files, or users by various criteria.
-
Content & structure
Adding authors
Tie pages to a person. Create an author system for your blog posts.
-
Content & structure
Custom post types
Create different templates for different kinds of content.
-
Forms
Uploading files
Learn how to upload files through a frontend form.
-
Navigation
Previous / Next navigation
Create a previous/next navigation for your site.
-
PHP
Fun with loops and collections
Foreach loops are control structures useful in many contexts.
-
PHP
PHP templating
Learn some PHP basics that make creating templates a breeze.
-
Security
Access forbidden
Use Kirby’s authentication system to build login-protected pages.
-
Mixed
Accessing blueprints
Use data from blueprints to control your template logic
All quicktips
-
Remove rounded corners
-
Skip media folder
-
Translate exception messages
-
Sharing templates across blueprints
-
Update file metadata
-
Keep code dry
-
Add blocks to blocks field programmatically
-
Customize Panel
-
Cache fine-tuning
-
Order of KirbyText/KirbyTags hooks
-
Placeholders in language strings
-
Add/prevent trailing slash
-
Reusing KirbyTags
-
Filter by language
-
Language variables
-
Serve page on own domain
-
Share buttons