This Statamic addon provides a powerful and flexible way to add structured data (JSON-LD) to your Statamic website. It allows you to define structured data templates and automatically inject them into your pages, improving your site's SEO and making your content more understandable for search engines.
- 🔄 Dynamic JSON-LD generation based on entry and term data
- 📝 Template-based structured data configuration
- 📦 Built-in schema presets (WebSite, WebPage, Organization, Article, LocalBusiness)
- 🎯 Support for multiple schemas per page
- 🛠 Antlers template parsing support
- 🧩 Support for replicator-to-JSON-LD field mapping
- 💪 Flexible and extensible architecture
- PHP ^8.4 or ^8.5
- Laravel ^12.0
- Statamic ^6.0
You can install this addon via Composer:
composer require justbetter/statamic-structured-dataAfter installing make sure to load the Structured Data tag in your head.
Blade:
{!! Statamic::tag('structured-data:head')->fetch() !!}Antlers
{{ structured-data:head }}Make sure to publish the config by running:
php artisan vendor:publish --tag=justbetter-structured-dataYou can now find the config file at config/justbetter/structured-data.php.
After publishing the config, you can configure:
- which collections support structured data templates
- which taxonomies support structured data objects
- whether presets are enabled
- which default presets are available
- custom preset paths
Create templates in your Statamic control panel that define your structured data schemas. Each template can contain multiple schema definitions with:
- Special properties (@context, @type, @id)
- Custom fields with various data types (strings, numeric, arrays, objects)
- Dynamic values using Antlers templating syntax
In your entry or term's content, you can assign one or more structured data templates using the structured_data_templates field. The addon will automatically process these templates and generate the appropriate JSON-LD scripts.
Render the generated JSON-LD where you need it in your layout:
Blade:
{!! Statamic::tag('structured-data:head')->fetch() !!}Antlers:
{{ structured-data:head }}Here's an example of how you might structure a basic Organization schema:
{
"specialProps": {
"context": "https://schema.org",
"type": "Organization",
"id": "https://example.com"
},
"fields": [
{
"key": "name",
"type": "string",
"value": "{{ company_name }}"
},
{
"key": "url",
"type": "string",
"value": "{{ config:app:url }}"
}
]
}Please see CONTRIBUTING for details.
Please review our security policy on how to report security vulnerabilities.
The MIT License (MIT). Please see License File for more information.