feat: update to hugo 0.121
feat: add posts template
This commit is contained in:
parent
f9eec007b8
commit
fe4876c747
0
.hugo_build.lock
Normal file
0
.hugo_build.lock
Normal file
|
@ -9,7 +9,7 @@
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
align-items: start;
|
align-items: start;
|
||||||
justify-content: space-between;
|
justify-content: space-between;
|
||||||
max-width: 400px;
|
width: 400px;
|
||||||
margin: auto;
|
margin: auto;
|
||||||
font-size: 1.5rem;
|
font-size: 1.5rem;
|
||||||
|
|
||||||
|
@ -21,7 +21,9 @@
|
||||||
#home-center {
|
#home-center {
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
|
flex-grow: 1;
|
||||||
align-items: flex-start;
|
align-items: flex-start;
|
||||||
|
justify-content: center;
|
||||||
}
|
}
|
||||||
|
|
||||||
#home-title {
|
#home-title {
|
||||||
|
@ -50,7 +52,18 @@
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#home-footer {
|
%link-shared {
|
||||||
|
color: #252525;
|
||||||
|
font-family: Inter;
|
||||||
|
font-size: 40px;
|
||||||
|
font-style: normal;
|
||||||
|
font-weight: 400;
|
||||||
|
line-height: 150%;
|
||||||
|
/* 60px */
|
||||||
|
text-decoration-line: underline;
|
||||||
|
}
|
||||||
|
|
||||||
|
%footer-shared {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
|
|
||||||
p {
|
p {
|
||||||
|
@ -84,3 +97,33 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#home-footer {
|
||||||
|
@extend %footer-shared;
|
||||||
|
}
|
||||||
|
|
||||||
|
#site-footer {
|
||||||
|
@extend %footer-shared;
|
||||||
|
}
|
||||||
|
|
||||||
|
.posts-group {
|
||||||
|
width: 400px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.post-item {
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
align-items: center;
|
||||||
|
width: 100%;
|
||||||
|
a {
|
||||||
|
@extend %link-shared;
|
||||||
|
font-size: 30px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.post-day {
|
||||||
|
@extend %link-shared;
|
||||||
|
font-size: 30px;
|
||||||
|
text-decoration: none;
|
||||||
|
color: #787878;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
339
content/posts/goisforlovers.tr.md
Normal file
339
content/posts/goisforlovers.tr.md
Normal file
|
@ -0,0 +1,339 @@
|
||||||
|
+++
|
||||||
|
title = "Yazmak Güzeldir"
|
||||||
|
tags = [
|
||||||
|
"go",
|
||||||
|
"golang",
|
||||||
|
"templates",
|
||||||
|
"themes",
|
||||||
|
"development",
|
||||||
|
]
|
||||||
|
date = "2014-04-02"
|
||||||
|
toc = true
|
||||||
|
+++
|
||||||
|
|
||||||
|
Hugo uses the excellent [Go][] [html/template][gohtmltemplate] library for
|
||||||
|
its template engine. It is an extremely lightweight engine that provides a very
|
||||||
|
small amount of logic. In our experience that it is just the right amount of
|
||||||
|
logic to be able to create a good static website. If you have used other
|
||||||
|
template systems from different languages or frameworks you will find a lot of
|
||||||
|
similarities in Go templates.
|
||||||
|
|
||||||
|
This document is a brief primer on using Go templates. The [Go docs][gohtmltemplate]
|
||||||
|
provide more details.
|
||||||
|
|
||||||
|
## Introduction to Go Templates
|
||||||
|
|
||||||
|
Go templates provide an extremely simple template language. It adheres to the
|
||||||
|
belief that only the most basic of logic belongs in the template or view layer.
|
||||||
|
One consequence of this simplicity is that Go templates parse very quickly.
|
||||||
|
|
||||||
|
A unique characteristic of Go templates is they are content aware. Variables and
|
||||||
|
content will be sanitized depending on the context of where they are used. More
|
||||||
|
details can be found in the [Go docs][gohtmltemplate].
|
||||||
|
|
||||||
|
## Basic Syntax
|
||||||
|
|
||||||
|
Golang templates are HTML files with the addition of variables and
|
||||||
|
functions.
|
||||||
|
|
||||||
|
**Go variables and functions are accessible within {{ }}**
|
||||||
|
|
||||||
|
Accessing a predefined variable "foo":
|
||||||
|
|
||||||
|
{{ foo }}
|
||||||
|
|
||||||
|
**Parameters are separated using spaces**
|
||||||
|
|
||||||
|
Calling the add function with input of 1, 2:
|
||||||
|
|
||||||
|
{{ add 1 2 }}
|
||||||
|
|
||||||
|
**Methods and fields are accessed via dot notation**
|
||||||
|
|
||||||
|
Accessing the Page Parameter "bar"
|
||||||
|
|
||||||
|
{{ .Params.bar }}
|
||||||
|
|
||||||
|
**Parentheses can be used to group items together**
|
||||||
|
|
||||||
|
{{ if or (isset .Params "alt") (isset .Params "caption") }} Caption {{ end }}
|
||||||
|
|
||||||
|
|
||||||
|
## Variables
|
||||||
|
|
||||||
|
Each Go template has a struct (object) made available to it. In hugo each
|
||||||
|
template is passed either a page or a node struct depending on which type of
|
||||||
|
page you are rendering. More details are available on the
|
||||||
|
[variables](/layout/variables) page.
|
||||||
|
|
||||||
|
A variable is accessed by referencing the variable name.
|
||||||
|
|
||||||
|
<title>{{ .Title }}</title>
|
||||||
|
|
||||||
|
Variables can also be defined and referenced.
|
||||||
|
|
||||||
|
{{ $address := "123 Main St."}}
|
||||||
|
{{ $address }}
|
||||||
|
|
||||||
|
|
||||||
|
## Functions
|
||||||
|
|
||||||
|
Go template ship with a few functions which provide basic functionality. The Go
|
||||||
|
template system also provides a mechanism for applications to extend the
|
||||||
|
available functions with their own. [Hugo template
|
||||||
|
functions](/layout/functions) provide some additional functionality we believe
|
||||||
|
are useful for building websites. Functions are called by using their name
|
||||||
|
followed by the required parameters separated by spaces. Template
|
||||||
|
functions cannot be added without recompiling hugo.
|
||||||
|
|
||||||
|
**Example:**
|
||||||
|
|
||||||
|
{{ add 1 2 }}
|
||||||
|
|
||||||
|
## Includes
|
||||||
|
|
||||||
|
When including another template you will pass to it the data it will be
|
||||||
|
able to access. To pass along the current context please remember to
|
||||||
|
include a trailing dot. The templates location will always be starting at
|
||||||
|
the /layout/ directory within Hugo.
|
||||||
|
|
||||||
|
**Example:**
|
||||||
|
|
||||||
|
{{ template "chrome/header.html" . }}
|
||||||
|
|
||||||
|
|
||||||
|
## Logic
|
||||||
|
|
||||||
|
Go templates provide the most basic iteration and conditional logic.
|
||||||
|
|
||||||
|
### Iteration
|
||||||
|
|
||||||
|
Just like in Go, the Go templates make heavy use of range to iterate over
|
||||||
|
a map, array or slice. The following are different examples of how to use
|
||||||
|
range.
|
||||||
|
|
||||||
|
**Example 1: Using Context**
|
||||||
|
|
||||||
|
{{ range array }}
|
||||||
|
{{ . }}
|
||||||
|
{{ end }}
|
||||||
|
|
||||||
|
**Example 2: Declaring value variable name**
|
||||||
|
|
||||||
|
{{range $element := array}}
|
||||||
|
{{ $element }}
|
||||||
|
{{ end }}
|
||||||
|
|
||||||
|
**Example 2: Declaring key and value variable name**
|
||||||
|
|
||||||
|
{{range $index, $element := array}}
|
||||||
|
{{ $index }}
|
||||||
|
{{ $element }}
|
||||||
|
{{ end }}
|
||||||
|
|
||||||
|
### Conditionals
|
||||||
|
|
||||||
|
If, else, with, or, & and provide the framework for handling conditional
|
||||||
|
logic in Go Templates. Like range, each statement is closed with `end`.
|
||||||
|
|
||||||
|
|
||||||
|
Go Templates treat the following values as false:
|
||||||
|
|
||||||
|
* false
|
||||||
|
* 0
|
||||||
|
* any array, slice, map, or string of length zero
|
||||||
|
|
||||||
|
**Example 1: If**
|
||||||
|
|
||||||
|
{{ if isset .Params "title" }}<h4>{{ index .Params "title" }}</h4>{{ end }}
|
||||||
|
|
||||||
|
**Example 2: If -> Else**
|
||||||
|
|
||||||
|
{{ if isset .Params "alt" }}
|
||||||
|
{{ index .Params "alt" }}
|
||||||
|
{{else}}
|
||||||
|
{{ index .Params "caption" }}
|
||||||
|
{{ end }}
|
||||||
|
|
||||||
|
**Example 3: And & Or**
|
||||||
|
|
||||||
|
{{ if and (or (isset .Params "title") (isset .Params "caption")) (isset .Params "attr")}}
|
||||||
|
|
||||||
|
**Example 4: With**
|
||||||
|
|
||||||
|
An alternative way of writing "if" and then referencing the same value
|
||||||
|
is to use "with" instead. With rebinds the context `.` within its scope,
|
||||||
|
and skips the block if the variable is absent.
|
||||||
|
|
||||||
|
The first example above could be simplified as:
|
||||||
|
|
||||||
|
{{ with .Params.title }}<h4>{{ . }}</h4>{{ end }}
|
||||||
|
|
||||||
|
**Example 5: If -> Else If**
|
||||||
|
|
||||||
|
{{ if isset .Params "alt" }}
|
||||||
|
{{ index .Params "alt" }}
|
||||||
|
{{ else if isset .Params "caption" }}
|
||||||
|
{{ index .Params "caption" }}
|
||||||
|
{{ end }}
|
||||||
|
|
||||||
|
## Pipes
|
||||||
|
|
||||||
|
One of the most powerful components of Go templates is the ability to
|
||||||
|
stack actions one after another. This is done by using pipes. Borrowed
|
||||||
|
from unix pipes, the concept is simple, each pipeline's output becomes the
|
||||||
|
input of the following pipe.
|
||||||
|
|
||||||
|
Because of the very simple syntax of Go templates, the pipe is essential
|
||||||
|
to being able to chain together function calls. One limitation of the
|
||||||
|
pipes is that they only can work with a single value and that value
|
||||||
|
becomes the last parameter of the next pipeline.
|
||||||
|
|
||||||
|
A few simple examples should help convey how to use the pipe.
|
||||||
|
|
||||||
|
**Example 1 :**
|
||||||
|
|
||||||
|
{{ if eq 1 1 }} Same {{ end }}
|
||||||
|
|
||||||
|
is the same as
|
||||||
|
|
||||||
|
{{ eq 1 1 | if }} Same {{ end }}
|
||||||
|
|
||||||
|
It does look odd to place the if at the end, but it does provide a good
|
||||||
|
illustration of how to use the pipes.
|
||||||
|
|
||||||
|
**Example 2 :**
|
||||||
|
|
||||||
|
{{ index .Params "disqus_url" | html }}
|
||||||
|
|
||||||
|
Access the page parameter called "disqus_url" and escape the HTML.
|
||||||
|
|
||||||
|
**Example 3 :**
|
||||||
|
|
||||||
|
{{ if or (or (isset .Params "title") (isset .Params "caption")) (isset .Params "attr")}}
|
||||||
|
Stuff Here
|
||||||
|
{{ end }}
|
||||||
|
|
||||||
|
Could be rewritten as
|
||||||
|
|
||||||
|
{{ isset .Params "caption" | or isset .Params "title" | or isset .Params "attr" | if }}
|
||||||
|
Stuff Here
|
||||||
|
{{ end }}
|
||||||
|
|
||||||
|
|
||||||
|
## Context (aka. the dot)
|
||||||
|
|
||||||
|
The most easily overlooked concept to understand about Go templates is that {{ . }}
|
||||||
|
always refers to the current context. In the top level of your template this
|
||||||
|
will be the data set made available to it. Inside of a iteration it will have
|
||||||
|
the value of the current item. When inside of a loop the context has changed. .
|
||||||
|
will no longer refer to the data available to the entire page. If you need to
|
||||||
|
access this from within the loop you will likely want to set it to a variable
|
||||||
|
instead of depending on the context.
|
||||||
|
|
||||||
|
**Example:**
|
||||||
|
|
||||||
|
{{ $title := .Site.Title }}
|
||||||
|
{{ range .Params.tags }}
|
||||||
|
<li> <a href="{{ $baseurl }}/tags/{{ . | urlize }}">{{ . }}</a> - {{ $title }} </li>
|
||||||
|
{{ end }}
|
||||||
|
|
||||||
|
Notice how once we have entered the loop the value of {{ . }} has changed. We
|
||||||
|
have defined a variable outside of the loop so we have access to it from within
|
||||||
|
the loop.
|
||||||
|
|
||||||
|
# Hugo Parameters
|
||||||
|
|
||||||
|
Hugo provides the option of passing values to the template language
|
||||||
|
through the site configuration (for sitewide values), or through the meta
|
||||||
|
data of each specific piece of content. You can define any values of any
|
||||||
|
type (supported by your front matter/config format) and use them however
|
||||||
|
you want to inside of your templates.
|
||||||
|
|
||||||
|
|
||||||
|
## Using Content (page) Parameters
|
||||||
|
|
||||||
|
In each piece of content you can provide variables to be used by the
|
||||||
|
templates. This happens in the [front matter](/content/front-matter).
|
||||||
|
|
||||||
|
An example of this is used in this documentation site. Most of the pages
|
||||||
|
benefit from having the table of contents provided. Sometimes the TOC just
|
||||||
|
doesn't make a lot of sense. We've defined a variable in our front matter
|
||||||
|
of some pages to turn off the TOC from being displayed.
|
||||||
|
|
||||||
|
Here is the example front matter:
|
||||||
|
|
||||||
|
```
|
||||||
|
---
|
||||||
|
title: "Permalinks"
|
||||||
|
date: "2013-11-18"
|
||||||
|
aliases:
|
||||||
|
- "/doc/permalinks/"
|
||||||
|
groups: ["extras"]
|
||||||
|
groups_weight: 30
|
||||||
|
notoc: true
|
||||||
|
---
|
||||||
|
```
|
||||||
|
|
||||||
|
Here is the corresponding code inside of the template:
|
||||||
|
|
||||||
|
{{ if not .Params.notoc }}
|
||||||
|
<div id="toc" class="well col-md-4 col-sm-6">
|
||||||
|
{{ .TableOfContents }}
|
||||||
|
</div>
|
||||||
|
{{ end }}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
## Using Site (config) Parameters
|
||||||
|
In your top-level configuration file (eg, `config.yaml`) you can define site
|
||||||
|
parameters, which are values which will be available to you in chrome.
|
||||||
|
|
||||||
|
For instance, you might declare:
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
params:
|
||||||
|
CopyrightHTML: "Copyright © 2013 John Doe. All Rights Reserved."
|
||||||
|
TwitterUser: "spf13"
|
||||||
|
SidebarRecentLimit: 5
|
||||||
|
```
|
||||||
|
|
||||||
|
Within a footer layout, you might then declare a `<footer>` which is only
|
||||||
|
provided if the `CopyrightHTML` parameter is provided, and if it is given,
|
||||||
|
you would declare it to be HTML-safe, so that the HTML entity is not escaped
|
||||||
|
again. This would let you easily update just your top-level config file each
|
||||||
|
January 1st, instead of hunting through your templates.
|
||||||
|
|
||||||
|
```
|
||||||
|
{{if .Site.Params.CopyrightHTML}}<footer>
|
||||||
|
<div class="text-center">{{.Site.Params.CopyrightHTML | safeHtml}}</div>
|
||||||
|
</footer>{{end}}
|
||||||
|
```
|
||||||
|
|
||||||
|
An alternative way of writing the "if" and then referencing the same value
|
||||||
|
is to use "with" instead. With rebinds the context `.` within its scope,
|
||||||
|
and skips the block if the variable is absent:
|
||||||
|
|
||||||
|
```
|
||||||
|
{{with .Site.Params.TwitterUser}}<span class="twitter">
|
||||||
|
<a href="https://twitter.com/{{.}}" rel="author">
|
||||||
|
<img src="/images/twitter.png" width="48" height="48" title="Twitter: {{.}}"
|
||||||
|
alt="Twitter"></a>
|
||||||
|
</span>{{end}}
|
||||||
|
```
|
||||||
|
|
||||||
|
Finally, if you want to pull "magic constants" out of your layouts, you can do
|
||||||
|
so, such as in this example:
|
||||||
|
|
||||||
|
```
|
||||||
|
<nav class="recent">
|
||||||
|
<h1>Recent Posts</h1>
|
||||||
|
<ul>{{range first .Site.Params.SidebarRecentLimit .Site.Recent}}
|
||||||
|
<li><a href="{{.RelPermalink}}">{{.Title}}</a></li>
|
||||||
|
{{end}}</ul>
|
||||||
|
</nav>
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
[go]: https://golang.org/
|
||||||
|
[gohtmltemplate]: https://golang.org/pkg/html/template/
|
|
@ -8,3 +8,5 @@
|
||||||
translation: "Stories"
|
translation: "Stories"
|
||||||
- id: running
|
- id: running
|
||||||
translation: "Running"
|
translation: "Running"
|
||||||
|
- id: backTitle
|
||||||
|
translation: "🞀 Back To Home"
|
||||||
|
|
2
i18n/tr.yaml
Normal file
2
i18n/tr.yaml
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
- id: backTitle
|
||||||
|
translation: "🞀 Anasayfaya Dön"
|
|
@ -32,9 +32,13 @@
|
||||||
</head>
|
</head>
|
||||||
|
|
||||||
<body id="page">
|
<body id="page">
|
||||||
|
<div id="spotlight">
|
||||||
|
<div id="home-center">
|
||||||
{{ block "header" . -}}{{ end -}}
|
{{ block "header" . -}}{{ end -}}
|
||||||
{{ block "main" . -}}{{ end -}}
|
{{ block "main" . -}}{{ end -}}
|
||||||
|
</div>
|
||||||
{{ block "footer" . -}}{{ end }}
|
{{ block "footer" . -}}{{ end }}
|
||||||
|
</div>
|
||||||
|
|
||||||
{{ $main := resources.Get "js/main.js" -}}
|
{{ $main := resources.Get "js/main.js" -}}
|
||||||
{{ if .Site.Params.code_copy_button | default true -}}
|
{{ if .Site.Params.code_copy_button | default true -}}
|
||||||
|
|
|
@ -3,8 +3,8 @@
|
||||||
{{ end }}
|
{{ end }}
|
||||||
|
|
||||||
{{ define "main" }}
|
{{ define "main" }}
|
||||||
<main class="site-main section-inner thin animated fadeIn faster">
|
<main class="site-main">
|
||||||
<h1>{{ .Title }}</h1>
|
<h1 id="home-title">{{ .Title }}</h1>
|
||||||
{{- if .Content }}
|
{{- if .Content }}
|
||||||
<div class="content">
|
<div class="content">
|
||||||
{{ .Content }}
|
{{ .Content }}
|
||||||
|
@ -12,22 +12,20 @@
|
||||||
{{- end }}
|
{{- end }}
|
||||||
{{- range .Data.Pages.GroupByDate "2006" }}
|
{{- range .Data.Pages.GroupByDate "2006" }}
|
||||||
<div class="posts-group">
|
<div class="posts-group">
|
||||||
<div class="post-year" id="{{ .Key }}">{{ .Key }}</div>
|
<div class="posts-list">
|
||||||
<ul class="posts-list">
|
|
||||||
{{- range .Pages }}
|
{{- range .Pages }}
|
||||||
<li class="post-item">
|
<p class="post-item">
|
||||||
<a href="{{.Permalink}}">
|
<a href="{{.Permalink}}">
|
||||||
<span class="post-title">{{.Title}}</span>
|
<span class="post-title">{{.Title}}</span>
|
||||||
<span class="post-day">{{ .Date.Format .Site.Params.dateformShort }}</span>
|
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</p>
|
||||||
{{- end }}
|
{{- end }}
|
||||||
</ul>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{{- end }}
|
{{- end }}
|
||||||
</main>
|
</main>
|
||||||
{{ end }}
|
{{ end }}
|
||||||
|
|
||||||
{{ define "footer" }}
|
{{ define "footer" }}
|
||||||
{{ partialCached "footer.html" . }}
|
{{ partial "footer.html" . }}
|
||||||
{{ end }}
|
{{ end }}
|
||||||
|
|
|
@ -13,7 +13,6 @@
|
||||||
<div class="bg-img"></div>
|
<div class="bg-img"></div>
|
||||||
{{- end }}
|
{{- end }}
|
||||||
<div id="spotlight" class="animated fadeIn">
|
<div id="spotlight" class="animated fadeIn">
|
||||||
<div></div>
|
|
||||||
<div id="home-center">
|
<div id="home-center">
|
||||||
<h1 id="home-title">{{ .Site.Title }}</h1>
|
<h1 id="home-title">{{ .Site.Title }}</h1>
|
||||||
<nav id="home-nav" class="site-nav">
|
<nav id="home-nav" class="site-nav">
|
||||||
|
@ -30,7 +29,6 @@
|
||||||
{{ end }}
|
{{ end }}
|
||||||
<p>
|
<p>
|
||||||
© {{ now.Format "2006" }} <a href="{{ .Site.BaseURL }}">{{ .Site.Author.name }}</a>{{ .Site.Params.footerCopyright | safeHTML }}
|
© {{ now.Format "2006" }} <a href="{{ .Site.BaseURL }}">{{ .Site.Author.name }}</a>{{ .Site.Params.footerCopyright | safeHTML }}
|
||||||
{{- with (not (in (.Site.Language.Get "disableKinds") "RSS")) }} · <a href="{{ "posts/index.xml" | absLangURL }}" target="_blank" title="rss"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-rss"><path d="M4 11a9 9 0 0 1 9 9"></path><path d="M4 4a16 16 0 0 1 16 16"></path><circle cx="5" cy="19" r="1"></circle></svg></a>{{ end }}
|
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -1,7 +1,12 @@
|
||||||
<footer id="site-footer" class="section-inner thin animated fadeIn faster">
|
<div id="site-footer">
|
||||||
<p>© {{ now.Format "2006" }} <a href="{{ .Site.BaseURL }}">{{ .Site.Author.name }}</a>{{ .Site.Params.footerCopyright | safeHTML }}</p>
|
{{ if .IsTranslated }}
|
||||||
|
<nav class="LangNav">
|
||||||
|
{{ range .Translations }}
|
||||||
|
<a href="{{ .Permalink }}">{{ .Language.LanguageName }}</a>
|
||||||
|
{{ end}}
|
||||||
|
</nav>
|
||||||
|
{{ end }}
|
||||||
<p>
|
<p>
|
||||||
Made with <a href="https://gohugo.io/" target="_blank" rel="noopener">Hugo</a> · Theme <a href="https://github.com/Track3/hermit" target="_blank" rel="noopener">Hermit</a>
|
© {{ now.Format "2006" }} <a href="{{ .Site.BaseURL }}">{{ .Site.Author.name }}</a>{{ .Site.Params.footerCopyright | safeHTML }}
|
||||||
{{- with (not (in (.Site.Language.Get "disableKinds") "RSS")) }} · <a href="{{ "posts/index.xml" | absLangURL }}" target="_blank" title="rss"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-rss"><path d="M4 11a9 9 0 0 1 9 9"></path><path d="M4 4a16 16 0 0 1 16 16"></path><circle cx="5" cy="19" r="1"></circle></svg></a>{{ end }}
|
|
||||||
</p>
|
</p>
|
||||||
</footer>
|
</div>
|
||||||
|
|
|
@ -2,11 +2,8 @@
|
||||||
<div class="hdr-wrapper section-inner">
|
<div class="hdr-wrapper section-inner">
|
||||||
<div class="hdr-left">
|
<div class="hdr-left">
|
||||||
<div class="site-branding">
|
<div class="site-branding">
|
||||||
<a href="{{.Site.BaseURL}}">{{ .Site.Title }}</a>
|
<a href="{{.Site.BaseURL}}">{{ i18n "backTitle" | safeHTML }}</a>
|
||||||
</div>
|
</div>
|
||||||
<nav class="site-nav hide-in-mobile">
|
|
||||||
{{ partialCached "menu.html" . }}
|
|
||||||
</nav>
|
|
||||||
</div>
|
</div>
|
||||||
<div class="hdr-right hdr-icons">
|
<div class="hdr-right hdr-icons">
|
||||||
{{ if (or .Params.images .Params.featuredImg) -}}
|
{{ if (or .Params.images .Params.featuredImg) -}}
|
||||||
|
@ -15,17 +12,6 @@
|
||||||
{{- with .Params.toc -}}
|
{{- with .Params.toc -}}
|
||||||
<button id="toc-btn" class="hdr-btn desktop-only-ib" title="{{i18n "tableOfContents"}}"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-list"><line x1="8" y1="6" x2="21" y2="6"></line><line x1="8" y1="12" x2="21" y2="12"></line><line x1="8" y1="18" x2="21" y2="18"></line><line x1="3" y1="6" x2="3" y2="6"></line><line x1="3" y1="12" x2="3" y2="12"></line><line x1="3" y1="18" x2="3" y2="18"></line></svg></button>
|
<button id="toc-btn" class="hdr-btn desktop-only-ib" title="{{i18n "tableOfContents"}}"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-list"><line x1="8" y1="6" x2="21" y2="6"></line><line x1="8" y1="12" x2="21" y2="12"></line><line x1="8" y1="18" x2="21" y2="18"></line><line x1="3" y1="6" x2="3" y2="6"></line><line x1="3" y1="12" x2="3" y2="12"></line><line x1="3" y1="18" x2="3" y2="18"></line></svg></button>
|
||||||
{{- end }}
|
{{- end }}
|
||||||
{{- with .Site.Params.social -}}
|
|
||||||
<span class="hdr-social hide-in-mobile">{{ partialCached "social-icons.html" . }}</span>
|
|
||||||
{{- end -}}
|
|
||||||
<button id="menu-btn" class="hdr-btn" title="{{i18n "menu"}}"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-menu"><line x1="3" y1="12" x2="21" y2="12"></line><line x1="3" y1="6" x2="21" y2="6"></line><line x1="3" y1="18" x2="21" y2="18"></line></svg></button>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</header>
|
</header>
|
||||||
<div id="mobile-menu" class="animated fast">
|
|
||||||
<ul>
|
|
||||||
{{- range .Site.Menus.main }}
|
|
||||||
<li><a href="{{ .URL | absLangURL }}">{{ .Name }}</a></li>
|
|
||||||
{{- end }}
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
|
|
9
layouts/partials/language-nav.html
Normal file
9
layouts/partials/language-nav.html
Normal file
|
@ -0,0 +1,9 @@
|
||||||
|
<div id="language-nav">
|
||||||
|
{{ if .IsTranslated }}
|
||||||
|
<nav class="LangNav">
|
||||||
|
{{ range .Translations }}
|
||||||
|
<a href="{{ .Permalink }}">{{ .Language.LanguageName }}</a>
|
||||||
|
{{ end}}
|
||||||
|
</nav>
|
||||||
|
{{ end}}
|
||||||
|
</div>
|
|
@ -0,0 +1 @@
|
||||||
|
#page{height:100vh;margin:0}#spotlight{display:flex;min-height:100vh;flex-direction:column;align-items:start;justify-content:space-between;width:400px;margin:auto;font-size:1.5rem}@media(max-width:448px){#spotlight{margin-left:24px}}#home-center{display:flex;flex-direction:column;flex-grow:1;align-items:flex-start;justify-content:center}#home-title{color:#202020;font-family:Inter;font-size:48px;font-style:normal;font-weight:500;line-height:normal}#home-nav{display:flex;flex-direction:column}#home-nav a{color:#252525;font-family:Inter;font-size:40px;font-style:normal;font-weight:400;line-height:150%;text-decoration-line:underline}.post-item .post-day,.post-item a{color:#252525;font-family:Inter;font-size:40px;font-style:normal;font-weight:400;line-height:150%;text-decoration-line:underline}#site-footer,#home-footer{width:100%}#site-footer p,#home-footer p{color:#5c5c5c;font-family:Inter;font-size:20px;font-style:normal;font-weight:300;line-height:normal;display:flex;gap:8px;justify-content:center}#site-footer a,#home-footer a{color:#5c5c5c;font-family:Inter;font-size:20px;font-style:normal;font-weight:300;line-height:normal;display:flex;gap:8px;justify-content:center;text-decoration:none}#site-footer a:hover,#home-footer a:hover{text-decoration:underline}.posts-group{width:400px}.post-item{display:flex;justify-content:space-between;align-items:center;width:100%}.post-item a{font-size:30px}.post-item .post-day{font-size:30px;text-decoration:none;color:#787878}
|
|
@ -0,0 +1 @@
|
||||||
|
{"Target":"css/style.min.874b34949ea9c71723a116e0ec84bc0574d93ea8b368b26ebfc1979fcfc931b2.css","MediaType":"text/css","Data":{"Integrity":"sha256-h0s0lJ6pxxcjoRbg7IS8BXTZPqizaLJuv8GXn8/JMbI="}}
|
|
@ -1 +1 @@
|
||||||
#page{height:100vh;margin:0}#spotlight{display:flex;min-height:100vh;flex-direction:column;align-items:start;justify-content:space-between;max-width:400px;margin:auto;font-size:1.5rem}@media(max-width:448px){#spotlight{margin-left:24px}}#home-center{display:flex;flex-direction:column;align-items:flex-start}#home-title{color:#202020;font-family:Inter;font-size:48px;font-style:normal;font-weight:500;line-height:normal}#home-nav{display:flex;flex-direction:column}#home-nav a{color:#252525;font-family:Inter;font-size:40px;font-style:normal;font-weight:400;line-height:150%;text-decoration-line:underline}#home-footer{width:100%}#home-footer p{color:#5c5c5c;font-family:Inter;font-size:20px;font-style:normal;font-weight:300;line-height:normal;display:flex;gap:8px;justify-content:center}#home-footer a{color:#5c5c5c;font-family:Inter;font-size:20px;font-style:normal;font-weight:300;line-height:normal;display:flex;gap:8px;justify-content:center;text-decoration:none}#home-footer a:hover{text-decoration:underline}
|
#page{height:100vh;margin:0}#spotlight{display:flex;min-height:100vh;flex-direction:column;align-items:start;justify-content:space-between;width:400px;margin:auto;font-size:1.5rem}@media(max-width:448px){#spotlight{margin-left:24px}}#home-center{display:flex;flex-direction:column;flex-grow:1;align-items:flex-start;justify-content:center}#home-title{color:#202020;font-family:Inter;font-size:48px;font-style:normal;font-weight:500;line-height:normal}#home-nav{display:flex;flex-direction:column}#home-nav a{color:#252525;font-family:Inter;font-size:40px;font-style:normal;font-weight:400;line-height:150%;text-decoration-line:underline}.post-item .post-day,.post-item a{color:#252525;font-family:Inter;font-size:40px;font-style:normal;font-weight:400;line-height:150%;text-decoration-line:underline}#site-footer,#home-footer{width:100%}#site-footer p,#home-footer p{color:#5c5c5c;font-family:Inter;font-size:20px;font-style:normal;font-weight:300;line-height:normal;display:flex;gap:8px;justify-content:center}#site-footer a,#home-footer a{color:#5c5c5c;font-family:Inter;font-size:20px;font-style:normal;font-weight:300;line-height:normal;display:flex;gap:8px;justify-content:center;text-decoration:none}#site-footer a:hover,#home-footer a:hover{text-decoration:underline}.posts-group{width:400px}.post-item{display:flex;justify-content:space-between;align-items:center;width:100%}.post-item a{font-size:30px}.post-item .post-day{font-size:30px;text-decoration:none;color:#787878}
|
|
@ -1 +1 @@
|
||||||
{"Target":"css/style.min.f4ea5985f9188d16b9ac508538abf66f97df7294853954e9df0daca2feb13c68.css","MediaType":"text/css","Data":{"Integrity":"sha256-9OpZhfkYjRa5rFCFOKv2b5ffcpSFOVTp3w2sov6xPGg="}}
|
{"Target":"css/style.min.874b34949ea9c71723a116e0ec84bc0574d93ea8b368b26ebfc1979fcfc931b2.css","MediaType":"text/css","Data":{"Integrity":"sha256-h0s0lJ6pxxcjoRbg7IS8BXTZPqizaLJuv8GXn8/JMbI="}}
|
Loading…
Reference in New Issue
Block a user