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 {
|
||||
name := e.Name()
|
||||
if strings.HasPrefix(name, "_") {
|
||||
continue
|
||||
}
|
||||
if e.IsDir() {
|
||||
// recurse one level (article folder) — skip hidden
|
||||
// recurse one level (article folder) — skip hidden/_ folders (e.g. _attachments)
|
||||
if !strings.HasPrefix(name, "_") {
|
||||
c.loadFilesUnder(path.Join(dir, name), out)
|
||||
}
|
||||
continue
|
||||
}
|
||||
if !strings.HasSuffix(name, ".md") {
|
||||
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 {
|
||||
// unpublished articles are drafts — load, then hide from all listings
|
||||
*out = append(*out, a)
|
||||
@@ -338,7 +341,13 @@ func parseFrontMatter(text string) (FrontMatter, string, bool) {
|
||||
func slugOf(full string) string {
|
||||
base := path.Base(full)
|
||||
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
|
||||
|
||||
Reference in New Issue
Block a user