mirror of
https://github.com/tcsenpai/obsidiangarden_netlify.git
synced 2025-06-04 12:00:02 +00:00
Add support for permalinks
This commit is contained in:
parent
7113398174
commit
4cf09880b0
27
.eleventy.js
27
.eleventy.js
@ -1,6 +1,8 @@
|
||||
const slugify = require("@sindresorhus/slugify");
|
||||
const markdownIt = require("markdown-it");
|
||||
const fs = require('fs');
|
||||
const fm = require('front-matter')
|
||||
module.exports = function(eleventyConfig) {
|
||||
const slugify = require("@sindresorhus/slugify");
|
||||
const markdownIt = require("markdown-it");
|
||||
|
||||
let markdownLib = markdownIt({
|
||||
breaks: true,
|
||||
@ -56,10 +58,25 @@ module.exports = function(eleventyConfig) {
|
||||
|
||||
eleventyConfig.setLibrary("md", markdownLib);
|
||||
|
||||
|
||||
eleventyConfig.addFilter('link', function(str) {
|
||||
eleventyConfig.addTransform('link', function(str) {
|
||||
return str && str.replace(/\[\[(.*?)\]\]/g, function(match, p1) {
|
||||
return `<a class="internal-link" href="/notes/${slugify(p1)}">${p1}</a>`;
|
||||
const linksplit = p1.split("|");
|
||||
const fileName = linksplit[0];
|
||||
|
||||
let permalink = linksplit.length > 1 ? linksplit[0] : `/notes/${slugify(linksplit[0])}`;
|
||||
const title = linksplit.length > 1 ? p1.split("|")[1] : p1;
|
||||
|
||||
try {
|
||||
const file = fs.readFileSync(`./src/site/notes/${fileName}.md`, 'utf8');
|
||||
const fmdata = fm(file);
|
||||
if (fmdata.attributes.permalink) {
|
||||
permalink = fmdata.attributes.permalink;
|
||||
}
|
||||
} catch {
|
||||
//Ignore if file doesn't exist
|
||||
}
|
||||
|
||||
return `<a class="internal-link" href="${permalink}">${title}</a>`;
|
||||
});
|
||||
})
|
||||
|
||||
|
31
package-lock.json
generated
31
package-lock.json
generated
@ -13,6 +13,7 @@
|
||||
"@octokit/core": "^3.5.1",
|
||||
"@sindresorhus/slugify": "^1.1.0",
|
||||
"dotenv": "^10.0.0",
|
||||
"front-matter": "^4.0.2",
|
||||
"markdown-it": "^12.3.2"
|
||||
},
|
||||
"devDependencies": {
|
||||
@ -520,7 +521,6 @@
|
||||
"version": "1.0.10",
|
||||
"resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
|
||||
"integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"sprintf-js": "~1.0.2"
|
||||
}
|
||||
@ -1370,7 +1370,6 @@
|
||||
"version": "4.0.1",
|
||||
"resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz",
|
||||
"integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==",
|
||||
"dev": true,
|
||||
"bin": {
|
||||
"esparse": "bin/esparse.js",
|
||||
"esvalidate": "bin/esvalidate.js"
|
||||
@ -1548,6 +1547,14 @@
|
||||
"node": ">= 0.6"
|
||||
}
|
||||
},
|
||||
"node_modules/front-matter": {
|
||||
"version": "4.0.2",
|
||||
"resolved": "https://registry.npmjs.org/front-matter/-/front-matter-4.0.2.tgz",
|
||||
"integrity": "sha512-I8ZuJ/qG92NWX8i5x1Y8qyj3vizhXS31OxjKDu3LKP+7/qBgfIKValiZIEwoVoJKUHlhWtYrktkxV1XsX+pPlg==",
|
||||
"dependencies": {
|
||||
"js-yaml": "^3.13.1"
|
||||
}
|
||||
},
|
||||
"node_modules/fs-extra": {
|
||||
"version": "3.0.1",
|
||||
"resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-3.0.1.tgz",
|
||||
@ -2065,7 +2072,6 @@
|
||||
"version": "3.14.1",
|
||||
"resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz",
|
||||
"integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"argparse": "^1.0.7",
|
||||
"esprima": "^4.0.0"
|
||||
@ -3625,8 +3631,7 @@
|
||||
"node_modules/sprintf-js": {
|
||||
"version": "1.0.3",
|
||||
"resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz",
|
||||
"integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=",
|
||||
"dev": true
|
||||
"integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw="
|
||||
},
|
||||
"node_modules/statuses": {
|
||||
"version": "1.3.1",
|
||||
@ -4579,7 +4584,6 @@
|
||||
"version": "1.0.10",
|
||||
"resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
|
||||
"integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"sprintf-js": "~1.0.2"
|
||||
}
|
||||
@ -5276,8 +5280,7 @@
|
||||
"esprima": {
|
||||
"version": "4.0.1",
|
||||
"resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz",
|
||||
"integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==",
|
||||
"dev": true
|
||||
"integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A=="
|
||||
},
|
||||
"etag": {
|
||||
"version": "1.8.1",
|
||||
@ -5409,6 +5412,14 @@
|
||||
"integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=",
|
||||
"dev": true
|
||||
},
|
||||
"front-matter": {
|
||||
"version": "4.0.2",
|
||||
"resolved": "https://registry.npmjs.org/front-matter/-/front-matter-4.0.2.tgz",
|
||||
"integrity": "sha512-I8ZuJ/qG92NWX8i5x1Y8qyj3vizhXS31OxjKDu3LKP+7/qBgfIKValiZIEwoVoJKUHlhWtYrktkxV1XsX+pPlg==",
|
||||
"requires": {
|
||||
"js-yaml": "^3.13.1"
|
||||
}
|
||||
},
|
||||
"fs-extra": {
|
||||
"version": "3.0.1",
|
||||
"resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-3.0.1.tgz",
|
||||
@ -5808,7 +5819,6 @@
|
||||
"version": "3.14.1",
|
||||
"resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz",
|
||||
"integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"argparse": "^1.0.7",
|
||||
"esprima": "^4.0.0"
|
||||
@ -7065,8 +7075,7 @@
|
||||
"sprintf-js": {
|
||||
"version": "1.0.3",
|
||||
"resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz",
|
||||
"integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=",
|
||||
"dev": true
|
||||
"integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw="
|
||||
},
|
||||
"statuses": {
|
||||
"version": "1.3.1",
|
||||
|
@ -20,6 +20,7 @@
|
||||
"@octokit/core": "^3.5.1",
|
||||
"@sindresorhus/slugify": "^1.1.0",
|
||||
"dotenv": "^10.0.0",
|
||||
"front-matter": "^4.0.2",
|
||||
"markdown-it": "^12.3.2"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -14,7 +14,7 @@ permalink: "notes/{{ page.fileSlug | slugify }}/"
|
||||
|
||||
<div class="content">
|
||||
<a href="/">← Back to garden entry</a>
|
||||
{{ content | link | safe}}
|
||||
{{ content | safe}}
|
||||
</div>
|
||||
|
||||
</body>
|
||||
|
@ -9,7 +9,7 @@
|
||||
{%- if item.tags !== 'Garden' -%}
|
||||
<a href="/">← Back to Garden Entry</a>
|
||||
{%endif%}
|
||||
{{ item.content | link | safe}}
|
||||
{{ item.content | safe}}
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
@ -8,7 +8,7 @@
|
||||
{%include "components/notegrowthhistory.njk"%}
|
||||
<div class="content">
|
||||
{%- for garden in collections.gardenEntry -%}
|
||||
{{garden.templateContent | link | safe }}
|
||||
{{garden.templateContent | safe }}
|
||||
{%- endfor -%}
|
||||
</div>
|
||||
</body>
|
||||
|
Loading…
x
Reference in New Issue
Block a user