├── .gitignore ├── src ├── content │ ├── studio │ │ ├── readings │ │ │ ├── books.njk │ │ │ └── index.njk │ │ ├── writing │ │ │ └── index.njk │ │ └── about │ │ │ └── index.njk │ ├── index.njk │ └── content.11tydata.js └── _includes │ └── layouts │ ├── about.njk │ ├── writing.njk │ ├── readings.njk │ └── base.njk ├── www └── content │ ├── studio │ ├── readings │ │ ├── books │ │ │ └── index.php │ │ └── index │ │ │ └── index.php │ ├── writing │ │ └── index │ │ │ └── index.php │ └── about │ │ └── index │ │ └── index.php │ └── index │ └── index.php ├── eleventy.config.js └── package.json /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules/ 2 | -------------------------------------------------------------------------------- /src/content/studio/readings/books.njk: -------------------------------------------------------------------------------- 1 | --- 2 | title: Books 3 | --- 4 | 5 |

{{ title }}

6 | -------------------------------------------------------------------------------- /src/content/studio/readings/index.njk: -------------------------------------------------------------------------------- 1 | --- 2 | title: Readings 3 | --- 4 | 5 |

{{ title }}

6 | -------------------------------------------------------------------------------- /src/content/studio/writing/index.njk: -------------------------------------------------------------------------------- 1 | --- 2 | title: Writing 3 | --- 4 | 5 |

{{ title }}

6 | -------------------------------------------------------------------------------- /src/content/studio/about/index.njk: -------------------------------------------------------------------------------- 1 | --- 2 | title: About Studio 3 | --- 4 | 5 |

{{ title }}

6 | -------------------------------------------------------------------------------- /src/_includes/layouts/about.njk: -------------------------------------------------------------------------------- 1 | --- 2 | layout: base 3 | --- 4 | 5 |

ABOUT LAYOUT

6 | 7 |
{{ content | safe }}
8 | -------------------------------------------------------------------------------- /src/_includes/layouts/writing.njk: -------------------------------------------------------------------------------- 1 | --- 2 | layout: base 3 | --- 4 | 5 |

WRITING LAYOUT

6 | 7 |
{{ content | safe }}
8 | -------------------------------------------------------------------------------- /src/_includes/layouts/readings.njk: -------------------------------------------------------------------------------- 1 | --- 2 | layout: base 3 | --- 4 | 5 |

READING LAYOUT

6 | 7 |
{{ content | safe }}
8 | -------------------------------------------------------------------------------- /src/_includes/layouts/base.njk: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | {{ title }} 6 | 7 | 8 | 9 |
{{ content | safe }}
10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /src/content/index.njk: -------------------------------------------------------------------------------- 1 | --- 2 | title: Studio 3 | layout: base 4 | --- 5 | 6 |

{{ title }}

7 | 8 |

Readings!

9 | 10 | 15 | -------------------------------------------------------------------------------- /www/content/studio/readings/books/index.php: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Books 6 | 7 | 8 |
9 |

READING LAYOUT

10 | 11 |
12 |

Books

13 |
14 |
15 | 16 | 17 | -------------------------------------------------------------------------------- /www/content/studio/writing/index/index.php: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Writing 6 | 7 | 8 |
9 |

WRITING LAYOUT

10 | 11 |
12 |

Writing

13 |
14 |
15 | 16 | 17 | -------------------------------------------------------------------------------- /www/content/studio/about/index/index.php: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | About Studio 6 | 7 | 8 |
9 |

ABOUT LAYOUT

10 | 11 |
12 |

About Studio

13 |
14 |
15 | 16 | 17 | -------------------------------------------------------------------------------- /www/content/studio/readings/index/index.php: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Readings 6 | 7 | 8 |
9 |

READING LAYOUT

10 | 11 |
12 |

Readings

13 |
14 |
15 | 16 | 17 | -------------------------------------------------------------------------------- /www/content/index/index.php: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Studio 6 | 7 | 8 |
9 |

Studio

10 | 11 |

Readings!

12 | 13 | 17 |
18 | 19 | 20 | -------------------------------------------------------------------------------- /eleventy.config.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @param {import("@11ty/eleventy/src/UserConfig")} eleventyConfig 3 | * @returns {ReturnType} 4 | */ 5 | module.exports = function (eleventyConfig) { 6 | eleventyConfig.addLayoutAlias("base", "layouts/base.njk"); 7 | 8 | ["about", "readings", "writing"].forEach(dir => { 9 | eleventyConfig.addLayoutAlias(dir, `layouts/${dir}.njk`); 10 | eleventyConfig.addCollection(dir, collectionApi => collectionApi.getFilteredByTags("content", dir)); 11 | }); 12 | 13 | return { 14 | dir: { 15 | input: "src", 16 | output: "www", 17 | } 18 | }; 19 | }; 20 | -------------------------------------------------------------------------------- /src/content/content.11tydata.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | eleventyComputed: { 3 | tags(data) { 4 | return baseDirFromFilePathStem(data.page.filePathStem); 5 | }, 6 | 7 | layout(data) { 8 | if (data.layout) { 9 | return data.layout; 10 | } 11 | const _layout = baseDirFromFilePathStem(data.page.filePathStem).at(-1); 12 | switch (_layout) { 13 | case "about": 14 | case "readings": 15 | case "writing": 16 | return _layout; 17 | } 18 | return "base"; 19 | }, 20 | 21 | permalink(data) { 22 | return `${data.page.filePathStem}/index.php`; 23 | } 24 | }, 25 | }; 26 | 27 | function baseDirFromFilePathStem(filePathStem = "") { 28 | return filePathStem.split("/", 4).filter(Boolean); 29 | } 30 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "11ty-2997", 3 | "description": "", 4 | "version": "1.0.0", 5 | "author": "Peter deHaan ", 6 | "bugs": { 7 | "url": "https://github.com/pdehaan/11ty-2997/issues" 8 | }, 9 | "dependencies": { 10 | "@11ty/eleventy": "^2.0.1" 11 | }, 12 | "devDependencies": {}, 13 | "homepage": "https://github.com/pdehaan/11ty-2997#readme", 14 | "keywords": [], 15 | "license": "MPL-2.0", 16 | "main": "eleventy.config.js", 17 | "repository": { 18 | "type": "git", 19 | "url": "git+https://github.com/pdehaan/11ty-2997.git" 20 | }, 21 | "scripts": { 22 | "build": "eleventy", 23 | "format-www": "npx prettier www/**/*.php --parser=html --write --loglevel=silent", 24 | "prebuild": "rm -rf www", 25 | "test": "echo \"Error: no test specified\" && exit 1" 26 | } 27 | } 28 | --------------------------------------------------------------------------------