From 338a6fc456b6b0f704a6f8942187def41a7a0275 Mon Sep 17 00:00:00 2001 From: log101 Date: Thu, 7 Dec 2023 08:44:01 +0000 Subject: [PATCH] feat: add posts layout styles feat: add sample pages --- assets/scss/style.scss | 21 +- config.toml | 12 +- .../{goisforlovers.en.md => goisforlovers.md} | 0 ...{goisforlovers.tr.md => goisforlovers2.md} | 2 +- content/posts/goisforlovers3.md | 339 ++++++++++++++++++ content/posts/goisforlovers4.md | 339 ++++++++++++++++++ content/posts/goisforlovers5.md | 339 ++++++++++++++++++ content/posts/goisforlovers6.md | 339 ++++++++++++++++++ content/posts/goisforlovers7.md | 339 ++++++++++++++++++ content/posts/goisforlovers8.md | 339 ++++++++++++++++++ content/posts/goisforlovers9.md | 339 ++++++++++++++++++ i18n/tr.yaml | 2 + layouts/_default/baseof.html | 1 - layouts/_default/list.html | 1 - layouts/partials/analytics.html | 1 - layouts/partials/header.html | 7 +- ...s_871e1d33253f63f556fbcaa4227752be.content | 2 +- ...scss_871e1d33253f63f556fbcaa4227752be.json | 2 +- 18 files changed, 2406 insertions(+), 18 deletions(-) rename content/posts/{goisforlovers.en.md => goisforlovers.md} (100%) rename content/posts/{goisforlovers.tr.md => goisforlovers2.md} (99%) create mode 100644 content/posts/goisforlovers3.md create mode 100644 content/posts/goisforlovers4.md create mode 100644 content/posts/goisforlovers5.md create mode 100644 content/posts/goisforlovers6.md create mode 100644 content/posts/goisforlovers7.md create mode 100644 content/posts/goisforlovers8.md create mode 100644 content/posts/goisforlovers9.md delete mode 100644 layouts/partials/analytics.html diff --git a/assets/scss/style.scss b/assets/scss/style.scss index 426ee59..ea7f9ec 100644 --- a/assets/scss/style.scss +++ b/assets/scss/style.scss @@ -9,7 +9,7 @@ flex-direction: column; align-items: start; justify-content: space-between; - width: 400px; + max-width: 400px; margin: auto; font-size: 1.5rem; @@ -23,7 +23,7 @@ flex-direction: column; flex-grow: 1; align-items: flex-start; - justify-content: center; + margin-top: 10vh; } #home-title { @@ -110,6 +110,23 @@ width: 400px; } +.back-title { + font-family: Inter; + font-size: 20px; + font-style: normal; + font-weight: 400; + + a { + text-decoration: none; + color: #252525; + + &:hover { + text-decoration: underline; + color: #151515; + } + } +} + .post-item { display: flex; justify-content: space-between; diff --git a/config.toml b/config.toml index deae0c9..36815f3 100644 --- a/config.toml +++ b/config.toml @@ -8,7 +8,7 @@ pygmentsCodefences = true pygmentsUseClasses = true rssLimit = 10 # Maximum number of items in the RSS feed. -enableEmoji = true # Shorthand emojis in content files - https://gohugo.io/functions/emojify/ +enableEmoji = true [languages] [languages.tr] @@ -27,9 +27,6 @@ enableEmoji = true # Shorthand emojis in content files - https://gohugo.io/func title = 'Log101' weight = 20 -[author] - name = "Furkan Erdem" - [taxonomies] tag = "tags" @@ -40,10 +37,10 @@ enableEmoji = true # Shorthand emojis in content files - https://gohugo.io/func dateformNumTime = "2006-01-02 15:04 -0700" # Metadata mostly used in document's head - description = "log101's blog" + description = "log101'in sayfası" themeColor = "#494f5c" - homeSubtitle = "\"Orada, soğuk ve mütemadiyen dönen yaşlı başlı yıldızlar, önce gasp edilmiş sonra pislik içinde bırakılmış gezegenler, Kadimler mirası kuyruklu gök cisimleri vardı; birbirlerinden bağımız görünseler de modellenmesi neredeyse imkansız bir örgü içerisinde…\"" + homeSubtitle = "" # Toggling this option needs to rebuild SCSS, requires Hugo extended version justifyContent = false # Set "text-align: justify" to `.content`. @@ -55,6 +52,9 @@ enableEmoji = true # Shorthand emojis in content files - https://gohugo.io/func # Add custom css # customCSS = ["css/foo.css", "css/bar.css"] + [[params.author]] + name = "Furkan Erdem" + # Social Icons # Check https://github.com/Track3/hermit#social-icons for more info. [[params.social]] diff --git a/content/posts/goisforlovers.en.md b/content/posts/goisforlovers.md similarity index 100% rename from content/posts/goisforlovers.en.md rename to content/posts/goisforlovers.md diff --git a/content/posts/goisforlovers.tr.md b/content/posts/goisforlovers2.md similarity index 99% rename from content/posts/goisforlovers.tr.md rename to content/posts/goisforlovers2.md index 76668cd..6f7a507 100644 --- a/content/posts/goisforlovers.tr.md +++ b/content/posts/goisforlovers2.md @@ -1,5 +1,5 @@ +++ -title = "Yazmak Güzeldir" +title = "Lorem Ipsum" tags = [ "go", "golang", diff --git a/content/posts/goisforlovers3.md b/content/posts/goisforlovers3.md new file mode 100644 index 0000000..b410100 --- /dev/null +++ b/content/posts/goisforlovers3.md @@ -0,0 +1,339 @@ ++++ +title = "With The Help of God" +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 }} + +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" }}

{{ index .Params "title" }}

{{ 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 }}

{{ . }}

{{ 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 }} +
  • {{ . }} - {{ $title }}
  • + {{ 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 }} +
    + {{ .TableOfContents }} +
    + {{ 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 `