Hugo


Чернетка! Стаття не завершена...

Init structure

hugo v0.86 linux/amd64

content
    └─ post-01
        ├─ index.md
        ├─ image-1.jpg
        ├─ images
        |   ├─ image-2.jpg
        |   └─ image-3.jpg
        └─ photo
            ├─ image-4.jpg
            └─ image-5.jpg

Зображення не можуть зберігатись у каталозі /static. Щоб мати можливість використовувати обробку зображень, вони мають бути ресурсом.

У Hugo є два типи ресурсів:

Assembly

Параметр draft: true у заголовку сторінки означає, що створювані ресурси за замовчуванням є чернетками і не будуть згенеровані в /public. Ключ -D включає чернетки в зборку:

$ hugo -D -v --debug

Insert image (page bundle)

# ... index.md

![your image 1](image-1.jpg)
![your image 2](./images/image-2.jpg)
![your image 3](/post-01/images/image-3.jpg)

Пакетна вставка працює для наступної структури:

post-01
 ├─ index.md
 ├─ img
 |   ├─ image-2.jpg
 |   └─ image-3.jpg
 ├─ photo
 |   ├─ image-4.jpg
 |   └─ image-5.jpg
 └─ ...

Створюємо в shortcodes скрипт list-images.html, у якому в якості параметра – назва каталога з зображеннями. Якщо параметр не вказано, за умовчанням пошук зображень виконується у каталозі images.

В циклі, за шаблоном $pattern, зображення зменшуютья до розміру 350рх, посилання на які отримуються тегом < img >, а посилання на оригінальний розмір – тегом < a >.

Мініатюри та оригінальні зображення після генерування будуть розміщені в /resources/_gen.

# /layouts/shortcodes/list-images.html

{{ $src := .Get "src" | default "images" }}
{{ $pattern := printf "%s%s" $src "/*" }}

{{ range .Page.Resources.Match $pattern }}
    {{ $original := .RelPermalink }}
    {{ $thumb := .Resize "350x" }}
    {{ with $thumb }}
        <a href="{{ $original }}" data-caption="{{ .ResourceType | title }}">
            <img src="{{ .RelPermalink }}" alt="">
        </a>
    {{ end }}
{{ end }}

Для використання в index.md вставити код:

## Gallery (default folder)
{{< list-images >}}

## Gallery (from "img")
{{< list-images src="img" >}}

## Gallery (from "photo")
{{< list-images src="photo" >}}

Insert map

  1. Завантажити на сайт google mymaps трек у форматі GPX або KML
  2. Отримати HTML-код, щоб вставити його у вихідний код сторінки
  3. Створити shortcodes для втавки raw-html в markdown розмітку
  4. Додати код на сторінку
# /layouts/shortcodes/rawhtml.html

{{.Inner}}
# ... index.md

{{< rawhtml >}}
<div class="map">
    <iframe src="https://www.google.com/maps/.... my link ...."
        width="100%" height="450" style="border:0;"
        allowfullscreen="" loading="lazy">
    </iframe>
</div>
{{< /rawhtml >}}

Insert text-file in post

Для того, щоб вставити текстовий файл в markdown-розмітку (наприклад, конфігураційні файли при описі налаштувань якогось софта), достатньо створити shortcodes:

# /layouts/shortcodes/insert-file.html

{{ $file := .Get "file" }}
{{ (printf "%s%s" .Page.File.Dir $file) | readFile | safeHTML }}

Використання:

# ... index.md

Конфигурационный файл /home/user/.tmux.conf:
{{< insert-file file=".tmux.conf" >}}

RSS

  1. Додати в confog.toml секцію outputs та outputFormats
  2. Створити шаблон /layouts/_default/rss.xml
  3. Додати в секцію head поилання на rss
  4. Додати поилання на сторінку
# confog.toml

...
[outputs]
    page = ["HTML"]
    home = ["HTML", "RSS"]
    section = ["HTML"]
    taxonomyTerm = ["HTML"]
    taxonomy = ["HTML"]

[outputFormats]
  [outputFormats.RSS]
    mediatype = "application/rss"
    baseName = "rss"
...

Access to content

Створити пароль:

$ printf "${username}:`openssl passwd -apr1`\n" >> .htpasswd

Перевіряємо зміст файлу: має бути формат username : hash (імена користувачів зберігаються як є, а паролі шифруються). Більш докладно про формат і можливості – див. Модуль ngx_http_auth_basic_module

Внести зміни в конфігураційний файл web-сервера:

# /etc/nginx/site-enable/my-server.conf

...
server {
    ...
    location /hidden_dir {
        auth_basic "Restricted";
        auth_basic_user_file /path/to/.htpasswd;
        ...
    }
}
...

Перезавантажити сервер

$ sudo /etc/init.d/nginx reload