├── .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 |
8 |
--------------------------------------------------------------------------------
/src/_includes/layouts/writing.njk:
--------------------------------------------------------------------------------
1 | ---
2 | layout: base
3 | ---
4 |
5 | WRITING LAYOUT
6 |
7 |
8 |
--------------------------------------------------------------------------------
/src/_includes/layouts/readings.njk:
--------------------------------------------------------------------------------
1 | ---
2 | layout: base
3 | ---
4 |
5 | READING LAYOUT
6 |
7 |
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 |
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 |
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 |
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 |
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 |
--------------------------------------------------------------------------------