https://github.com/olegfedak/eleventy-plugin-relate-collections
Establish and maintain connections between Eleventy collections, simplifying content relationships for developers.
https://github.com/olegfedak/eleventy-plugin-relate-collections
11ty-plugin eleventy-plugin
Last synced: 5 months ago
JSON representation
Establish and maintain connections between Eleventy collections, simplifying content relationships for developers.
- Host: GitHub
- URL: https://github.com/olegfedak/eleventy-plugin-relate-collections
- Owner: olegfedak
- License: mit
- Created: 2023-10-29T17:36:34.000Z (over 2 years ago)
- Default Branch: main
- Last Pushed: 2023-11-02T01:39:08.000Z (over 2 years ago)
- Last Synced: 2025-01-27T22:44:19.735Z (over 1 year ago)
- Topics: 11ty-plugin, eleventy-plugin
- Language: JavaScript
- Homepage:
- Size: 35.2 KB
- Stars: 2
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Eleventy Plugin Relate Collections
Easily establish and maintain content relationships between Eleventy collections. Simplify content organization and create interconnected pages.
## Installation
```sh
npm install eleventy-plugin-relate-collections
```
## Usage
In your Eleventy config file (typically .eleventy.js), add the plugin to your configuration:
```js
const relateCollections = require("eleventy-plugin-relate-collections");
module.exports = function (eleventyConfig) {
eleventyConfig.addPlugin(relateCollections, {
// Configuration options
});
// Other Eleventy configuration settings...
};
```
## Configuration
You can customize the plugin behavior by providing configuration options:
```js
eleventyConfig.addPlugin(relateCollections, {
collectionName: "", // The collection you want to relate
relatedCollectionName: "", // The related collection(s)
relatedCollectionKey: "", // The key(s) to establish the relationship
backRelate: true, // Enable back-relations (optional)
});
```
## Example
Assuming you have a collection of blog posts and a collection of authors, you can easily relate each blog post to its author using this plugin:
```js
eleventyConfig.addPlugin(relateCollections, {
collectionName: "authors",
relatedCollectionName: "posts",
relatedCollectionKey: "author", // Assuming "author" is a key in the "posts" collection
});
```
Now, you can create relationships between the "authors" and "posts" collections. In your "authors" collection data files, an empty related field will be created to store the related content from the "posts" collection:
```json5
related: {
name: 'posts',
items: [] // Related pages from "posts"
}
```
When you render your Eleventy site, for example, to show related posts for each author, you can use the following code:
```html
-
{{ author.data.title }}
Related Posts:
- {{ post.data.title }}
{% for related in author.data.related %}
{% if related.name == 'posts' %}
{% for post in related.items %}
{% endfor %}
{% endif %}
{% endfor %}
{% for author in collections.authors %}
{% endfor %}
```
This example demonstrates how to use Liquid or Nunjucks to display related data in your Eleventy templates.
## About the Developer
This Eleventy Plugin Relate Collections is conceived and designed by Oleg Fedak, who is the brain behind the concept and the designer responsible for its development. The implementation, including code and development, is carried out with the assistance of Chat GPT, an AI language model.
## License
This project is licensed under the [MIT License](LICENSE).