Hugo-on-Steroids

Матеріал з Wiki.Zina
Версія від 09:53, 9 лютого 2020, створена Romych (обговорення | внесок)
(різн.) ← Попередня версія | Поточна версія (різн.) | Новіша версія → (різн.)
Перейти до навігації Перейти до пошуку

←Hugo

Особенности и дополнительные возможности нашего форка https://github.com/zinadesign/hugo

Инструкция по установке: https://bitbucket.org/zinadz/zina.design/wiki/Home

Что еще сделать

[ред. | ред. код]

Убирать лишние тэги <p> вокруг .Summary: Summaries generated with explicit <!--more--> tag are wrapped in extra <p> tag · Issue #1217 · spf13/hugo

Установка zina-hugo

[ред. | ред. код]

Сначала установить последнюю версию golang из исходников:

cd /opt && \
sudo wget https://storage.googleapis.com/golang/go1.7.4.linux-amd64.tar.gz && \
sudo tar -xf go1.7.4.linux-amd64.tar.gz && \
sudo rm go1.7.4.linux-amd64.tar.gz && \
cd go && \
sudo mkdir /opt/go_work && \
sudo chmod -R 777 /opt/go_work && \
sudo sh -c 'printf "export GOROOT=/opt/go\nexport GOPATH=/opt/go_work\nexport PATH=\$PATH:/opt/go/bin:/opt/go_work/bin" > /etc/profile.d/go.sh' && \
source /etc/profile

Установка форка zina-hugo:

go get -v github.com/zinadesign/hugo && \
go get -u -v github.com/kardianos/govendor && \
cd $GOPATH/src/github.com/zinadesign/hugo && \
govendor sync && \
go install

Обновление установленного z-hugo:

go get -u -v github.com/zinadesign/hugo

Для деплоя в облако Google:

sudo apt-get install gcc python-dev python-setuptools python-virtualenv 
virtualenv venv
venv/bin/pip install -r deploy_requirements.txt
sudo apt-get install gcc python-dev python-setuptools
sudo easy_install -U pip
sudo pip uninstall crcmod
sudo pip install -U crcmod

Таксономия с иерархией

[ред. | ред. код]

#14

Иерархия задается в config.yaml:

Params:
  terms_hierarchy:
    site:
      shop:
      corporate-site:
      promo-site:
      small-site:
      personal-site:
    identity:
      logo:
      brand-book:

Вывод в шаблоне layouts/taxonomy/category.terms.html:

{{ .TaxonomyTerms .Data.Plural  "weight" }}

или в шаблонах layouts/partials/:

{{ .TaxonomyTerms "types" "weight" }}

Сортировка терминов таксономии:

{{ .TaxonomyTerms "types" "weight" }}
{{ .TaxonomyTerms "types" "title" }}
{{ .TaxonomyTerms "types" "date" }}

По умолчанию никак не сортирует. Способ сортировки передается вторым параметром.

  • weight — если не задан, то 0
  • title — если не задан, то название термина

Предыдущий код:

{{ $category_pages := dict }}
{{ range $.Site.AllPages }}
  {{ add_to_map $category_pages .URL .Title }}
{{ end }}
<ul>
  {{ range $cat, $tax := .Site.Taxonomies.categories }}
    {{ $page_url := print "/categories/" ($cat | urlize) "/" }}
    {{ $page_title := index $category_pages $page_url | default (replace $cat "-" " " | title) }}
    <li><a class="cat-line title" href="{{ $page_url }}">{{ $page_title }}</a></li>
  {{ end }}
</ul>
[ред. | ред. код]

#10

Шаблон: layouts/partials/breadcrumbs.html

<div class="breadcrumbs">
  {{ $breadcrumbs := .Breadcrumbs }}
  {{ range $breadcrumb := $breadcrumbs  }}
    <span class="breadcrumbs__el">
      <a href="{{ $breadcrumb.URL }}">{{ $breadcrumb.Title }}</a>
      <span class="breadcrumbs__terminator">→</span>
    </span>
  {{ end }}
</div>

add_to_map — функция для добавления элементов в словарь

[ред. | ред. код]

Добавлена функция add_to_map — позволяет добавлять новые элементы в словарь.

Пример использования. Сохраняем все страницы в словарь затем достаем оттуда title по url:

{{ $category_pages := dict }}
{{ range $.Site.AllPages }}
      {{ add_to_map $category_pages .URL .Title }}
{{ end }}
{{ range $key, $value := .Data.Terms.ByCount }}
      {{ $page_url := print "/" $data.Plural "/" ($value.Name | urlize) "/" }}
      {{ $page_title := index $category_pages $page_url | default (replace $value.Name "-" " " | title) }}
      <li><a href="{{ $page_url }}">{{ $page_title }}</a> <span class="silver">({{ $value.Count }})</span></li>
{{ end }}

findPageByUrl — функция для получения страницы по url

[ред. | ред. код]

Добавлена функция для получения страницы по url:

{{ $page := .Site.Pages.findPageByUrl "/test/" }}

titlePage — перебор переменных и вывод с ограничением длины

[ред. | ред. код]
{{ titlePage 60 .Params.title_title .Params.title_h1 .Title .Site.Title }}

Функция titlePage по очереди проверит перечисленные переменные (.Params.title_title, .Params.title_h1, .Title, .Site.Title), возьмет первую, имеющую значение, обрежет до длины 60 символов и добавит в конце троеточие.

truncatechars — обрезка строки

[ред. | ред. код]
{{ truncatechars 60 .Title }}

Функция truncatechars в этом примере примет значение переменной .Title, обрежет до 60 символов и выведет ее.

Баг с сортировкой при weight=0

[ред. | ред. код]

Исправлен: #15