как получить frontmatter любой страницы разметки Гюго (не только _index.md) - PullRequest
0 голосов
/ 10 мая 2019

Я пытаюсь написать шорткод для моего сайта hugo, который выбирает параметр title страницы.

У меня есть такая структура каталогов:

content
├── workshops
│   ├── foo
│   │   └── _index.md
│   ├── bar.md

Это прекрасно работает:

{{ with .Site.GetPage "home" "workshops/foo"}}
{{ .Params.Title }}
{{ end }}

И этот постоянно появляется пустым (хотя в уценке есть заголовок).

{{ with .Site.GetPage "home" "workshops/bar"}}
{{ .Params.Title }}
{{ end }}

Мой вопрос таков: как я могу получить заголовок отдельной страницы?

Я пробовал кучу разных комбинаций вещей, и я просто ошибаюсь. Я пытался читать документы, и они ужасно запутаны в этом вопросе.

Ответы [ 2 ]

0 голосов
/ 26 мая 2019

Два различия:

  • Использовать глобальную переменную сайта
  • Просто передать имя страницы в качестве аргумента
{{ with site.GetPage "workshops/bar" }}
{{ .Title }}
{{ end }}
0 голосов
/ 11 мая 2019

У меня есть решение!Я написал небольшой скрипт на Python3.7 для создания каталогов, перемещения и переименования файлов разметки и просто запустил его по всему моему каталогу содержимого.Это решило мою проблему, но немного взломало ...

import logging
import os
from pathlib import Path

def fixup(path):
    location = Path(path)
    assert location.is_dir(), location
    for child in location.iterdir():
        if child.is_dir():
            fixup(child)
        else:
            fix_file(child)


def fix_file(file_path):
    name = file_path.name
    if not name.endswith(".md"):
        # we only care about markdown files.
        return
    check_metadata(file_path)
    if name.startswith("_index."):
        # looks good
        return
    # make a directory with the same name as the file (without the extension)
    suffix = ''.join(file_path.suffixes)
    prefix = name[: -len(suffix)]

    new_dir = file_path.parent / prefix
    new_dir.mkdir()

    new_path = new_dir / f"_index{suffix}"
    file_path.rename(new_path)



def check_metadata(file_path):
    """ given the path to a markdown file, make sure that the frontmatter includes
    the required metadata
    """
    # TODO
    # required = ['title']
    # allowed  = ['pre', 'weight', 'ready']

if __name__ == '__main__':
    fixup('content')

...