Hugo-on-Steroids
←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
Сначала установить последнюю версию 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
Иерархия задается в 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>
Шаблон: 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 — позволяет добавлять новые элементы в словарь.
Пример использования. Сохраняем все страницы в словарь затем достаем оттуда 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 }}
Добавлена функция для получения страницы по url:
{{ $page := .Site.Pages.findPageByUrl "/test/" }}
{{ titlePage 60 .Params.title_title .Params.title_h1 .Title .Site.Title }}
Функция titlePage по очереди проверит перечисленные переменные (.Params.title_title, .Params.title_h1, .Title, .Site.Title), возьмет первую, имеющую значение, обрежет до длины 60 символов и добавит в конце троеточие.
{{ truncatechars 60 .Title }}
Функция truncatechars в этом примере примет значение переменной .Title, обрежет до 60 символов и выведет ее.
Исправлен: #15