media/loader: article slug from folder; _index.md loads as article; _ dirs ignored; slugs lowercased
This commit is contained in:
@@ -186,17 +186,20 @@ func (c *Content) loadFilesUnder(dir string, out *[]*Article) error {
|
|||||||
}
|
}
|
||||||
for _, e := range entries {
|
for _, e := range entries {
|
||||||
name := e.Name()
|
name := e.Name()
|
||||||
if strings.HasPrefix(name, "_") {
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
if e.IsDir() {
|
if e.IsDir() {
|
||||||
// recurse one level (article folder) — skip hidden
|
// recurse one level (article folder) — skip hidden/_ folders (e.g. _attachments)
|
||||||
c.loadFilesUnder(path.Join(dir, name), out)
|
if !strings.HasPrefix(name, "_") {
|
||||||
|
c.loadFilesUnder(path.Join(dir, name), out)
|
||||||
|
}
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
if !strings.HasSuffix(name, ".md") {
|
if !strings.HasSuffix(name, ".md") {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
// skip _ files (config, templates) BUT _index.md is the real article in a folder
|
||||||
|
if strings.HasPrefix(name, "_") && name != "_index.md" {
|
||||||
|
continue
|
||||||
|
}
|
||||||
if a, err := c.loadFile(path.Join(dir, name)); err == nil {
|
if a, err := c.loadFile(path.Join(dir, name)); err == nil {
|
||||||
// unpublished articles are drafts — load, then hide from all listings
|
// unpublished articles are drafts — load, then hide from all listings
|
||||||
*out = append(*out, a)
|
*out = append(*out, a)
|
||||||
@@ -338,7 +341,13 @@ func parseFrontMatter(text string) (FrontMatter, string, bool) {
|
|||||||
func slugOf(full string) string {
|
func slugOf(full string) string {
|
||||||
base := path.Base(full)
|
base := path.Base(full)
|
||||||
base = strings.TrimSuffix(base, ".md")
|
base = strings.TrimSuffix(base, ".md")
|
||||||
return base
|
// article files are now <folder>/_index.md — the slug is the folder name.
|
||||||
|
if base == "_index" {
|
||||||
|
dir := path.Dir(full)
|
||||||
|
base = path.Base(dir)
|
||||||
|
}
|
||||||
|
// lowercase for URL-friendly slugs
|
||||||
|
return strings.ToLower(base)
|
||||||
}
|
}
|
||||||
|
|
||||||
// resolveShortcodes replaces {{media:name}} with base/name and
|
// resolveShortcodes replaces {{media:name}} with base/name and
|
||||||
|
|||||||
Reference in New Issue
Block a user