Я использую VuePress и NetlifyCMS в качестве управления контентом.
У меня есть 3 коллекции (дизайн, внешний интерфейс и бэкэнд), которые содержат неопределенное количество страниц. Эти страницы создаются с помощью Панель управления NetlifyCMS и добавляются в определенную папку.
Это нормально работает, но я столкнулся с проблемой. Поскольку мои новые страницы не определены в конфигурации боковой панели, они недоступны из интерфейса боковой панели. Как я мог сделать это, сохранив тот же формат боковой панели, что и ниже?
config.js
[...],
sidebar: {
'/design/': [{
title: 'Design',
children: [
'',
'foo 1',
'foo 2'
]
}],
'/front-end/': [{
title: 'Front-end',
children: [
'',
'bar 1',
'bar 2'
]
}],
'/back-end/': [{
title: 'Back-end',
children: [
'',
'baz 1',
'baz 2'
]
}]
},
[...]
config.yml
[...],
collections:
- name: "design"
label: "Design"
folder: "docs/design"
create: true
slug: "{{slug}}"
fields:
- {label: "Title", name: "title", widget: "string"}
- {label: "Body", name: "body", widget: "markdown"}
- name: "front-end"
label: "Front-end"
folder: "docs/front-end"
create: true
slug: "{{slug}}"
fields:
- {label: "Title", name: "title", widget: "string"}
- {label: "Body", name: "body", widget: "markdown"}
- name: "back-end"
label: "Back-end"
folder: "docs/back-end"
create: true
slug: "{{slug}}"
fields:
- {label: "Title", name: "title", widget: "string"}
- {label: "Body", name: "body", widget: "markdown"}





Один из способов - импортировать ваши имена файлов в конфигурацию при сборке.
Добавьте скрипт в папку docs/.vuepress:
docs/.vuepress/childscript.js
var fs = require('fs');
module.exports = function(path) {
var files = fs.readdirSync(path);
var list = [""];
for (var i in files) {
var filename = files[i].split('.').slice(0, -1).join('.');
if (filename.toLowerCase() != = "readme") list.push(filename);
}
console.info(`${path}: `, list);
return list;
}
Тогда смени свой docs/.vuepress/config.js
var getChildren = require('./childscript');
[...],
sidebar: {
'/design/': [{
title: 'Design',
children: getChildren('./docs/design/')
}],
'/front-end/': [{
title: 'Front-end',
children: getChildren('./docs/front-end/')
}],
'/back-end/': [{
title: 'Back-end',
children: getChildren('./docs/back-end/')
}]
},
[...]
ЗАМЕТКА: Предостережение здесь - порядок сортировки имен файлов во время чтения каталога.
Ответ не сработал? Что касается порядка дат, возможно, смена пули до {{year}} - {{month}} - {{day}} - {{slug}} в коллекции будет работать.
В противном случае вам придется сохранить дату публикации (или значение сортировки) во фронтматоре и выполнить файл чтения для каждого, преобразовать содержимое с помощью инструмента уценки и выполнить сортировку на основе значения.
Да, это сработает, но слизняк будет слишком длинным. Я думал о способе создать number field с именем порядок, а затем вставить его значение перед шаблоном {{slug}}.
Привет @talves, Вы используете только NetlifyCMS или также развертываете на Netlify? Если вы не против, можете ли вы мне помочь с этой проблемой: stackoverflow.com/questions/55564958/…
Спасибо за ваш ответ. Знаете ли вы, есть ли способ установить дату публикации?