Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/pjbakker/flexible-seo-hugo.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Bakker <paul@brainspark.nl>2019-11-10 00:26:28 +0300
committerPaul Bakker <paul@brainspark.nl>2019-11-10 00:26:28 +0300
commit2cc6eff3314e4770ff2b6b03635ad65d262aa8ad (patch)
tree14f7bfcc315ac0fa68ee9b410738866dd04733b5
First upload of flexible SEO Hugo theme
-rw-r--r--LICENSE20
-rw-r--r--README.md39
-rw-r--r--archetypes/default.md2
-rw-r--r--layouts/404.html0
-rw-r--r--layouts/_default/baseof.html14
-rw-r--r--layouts/_default/single.html11
-rw-r--r--layouts/_default/term.html0
-rw-r--r--layouts/index.html11
-rw-r--r--layouts/partials/footer.html9
-rw-r--r--layouts/partials/footer_custom.html4
-rw-r--r--layouts/partials/footers/simple.html21
-rw-r--r--layouts/partials/head.html38
-rw-r--r--layouts/partials/head_custom.html4
-rw-r--r--layouts/partials/header.html3
-rw-r--r--layouts/partials/headers/simple.html6
-rw-r--r--layouts/partials/nav.html3
-rw-r--r--layouts/partials/navs/simple.html13
-rw-r--r--layouts/partials/seo/main.html1
-rw-r--r--layouts/partials/seo/schema.html6
-rw-r--r--layouts/partials/seo/structured/article.html28
-rw-r--r--layouts/partials/seo/structured/breadcrumb.html21
-rw-r--r--layouts/partials/seo/structured/organization.html12
-rw-r--r--layouts/partials/seo/structured/post.html47
-rw-r--r--layouts/partials/seo/structured/website.html9
-rw-r--r--layouts/partials/social/main.html2
-rw-r--r--layouts/partials/social/opengraph.html15
-rw-r--r--layouts/partials/social/twitter.html14
-rw-r--r--theme.toml11
28 files changed, 364 insertions, 0 deletions
diff --git a/LICENSE b/LICENSE
new file mode 100644
index 0000000..46fe619
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,20 @@
+The MIT License (MIT)
+
+Copyright (c) 2019 YOUR_NAME_HERE
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of
+this software and associated documentation files (the "Software"), to deal in
+the Software without restriction, including without limitation the rights to
+use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
+the Software, and to permit persons to whom the Software is furnished to do so,
+subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
+FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
+COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
+IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..eb1ad25
--- /dev/null
+++ b/README.md
@@ -0,0 +1,39 @@
+# Flexible SEO Hugo - A flexible configurable SEO-minded theme
+
+![Flexible SEO Hugo Theme Screenshot](https://github.com/pjbakker/flexible-seo-hugo/blob/master/images/screenshot.png)
+
+## Installation
+
+ $ mkdir themes
+ $ git submodule add https://github.com/pjbakker/flexible-seo-hugo.git themes/flexible-seo-hugo
+
+## About
+
+This theme has been built upon Bootstrap 4. It allows you to easily switch between different Navigation bars, Page Headers and Footers using configuration. And of course you can add your own as well.
+
+All core pages have been optimized for SEO-friendliness.
+
+Of course there is also support for:
+
+* Google Analytics
+
+## Switching navigation, header or footer
+
+Within your `config.toml` add the according parameter you want the theme to use. By default, the theme uses 'simples' for navigation, header and footer.
+
+~~~
+[Params]
+ nav = "simple"
+ header = "simple"
+ footer = "simple"
+~~~
+
+The theme will look for the theme parts in *layouts/partials/navs/*, *layouts/partials/headers/*, and *layouts/partials/footers/* accordingly. For instance, with `nav = "simple"`, it will look for *layouts/partials/navs/simple.html*.
+
+## Enabling Analytics
+
+Assuming you already signed up for [Google Analytics](https://www.google.com/analytics/), you can add your Google Tracking ID to the `googleAnalytics` parameter in `config.toml`. It will then automatically include Google Analytics code in your site.
+
+## License
+
+MIT Licensed, see [LICENSE](https://github.com/pjbakker/flexible-seo-hugo/blob/master/LICENSE).
diff --git a/archetypes/default.md b/archetypes/default.md
new file mode 100644
index 0000000..ac36e06
--- /dev/null
+++ b/archetypes/default.md
@@ -0,0 +1,2 @@
++++
++++
diff --git a/layouts/404.html b/layouts/404.html
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/layouts/404.html
diff --git a/layouts/_default/baseof.html b/layouts/_default/baseof.html
new file mode 100644
index 0000000..ecc5280
--- /dev/null
+++ b/layouts/_default/baseof.html
@@ -0,0 +1,14 @@
+<!DOCTYPE html>
+<html lang="{{ .Lang }}" itemscope itemtype="http://schema.org/WebPage">
+ <head>
+ {{- partial "head.html" . -}}
+ </head>
+ <body>
+ {{- partial "nav.html" . -}}
+ {{- block "header" . }}{{- partial "header.html" . -}}{{ end }}
+ <div id="content">
+ {{- block "main" . }}{{- end }}
+ </div>
+ {{- partial "footer.html" . -}}
+ </body>
+</html>
diff --git a/layouts/_default/single.html b/layouts/_default/single.html
new file mode 100644
index 0000000..de17d92
--- /dev/null
+++ b/layouts/_default/single.html
@@ -0,0 +1,11 @@
+{{ define "main" }}
+<div class="container" role="main">
+ <div class="row">
+ <div class="py-5 text-center">
+ <article>
+ {{ .Content }}
+ </article>
+ </div>
+ </div>
+</div>
+{{ end }}
diff --git a/layouts/_default/term.html b/layouts/_default/term.html
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/layouts/_default/term.html
diff --git a/layouts/index.html b/layouts/index.html
new file mode 100644
index 0000000..ccb8f7e
--- /dev/null
+++ b/layouts/index.html
@@ -0,0 +1,11 @@
+{{ define "main" }}
+ <div role="main" class="container">
+ <div class="row">
+ <div class="py-5 text-center">
+ {{ with .Content }}
+ {{.}}
+ {{ end }}
+ </div>
+ </div>
+ </div>
+{{ end }}
diff --git a/layouts/partials/footer.html b/layouts/partials/footer.html
new file mode 100644
index 0000000..442aa08
--- /dev/null
+++ b/layouts/partials/footer.html
@@ -0,0 +1,9 @@
+{{- $footer_type := .Site.Params.Footer | default "simple" }}
+{{- $footer_file := printf "footers/%s.html" $footer_type }}
+{{- partial $footer_file . }}
+
+<script src="https://code.jquery.com/jquery-3.3.1.slim.min.js" integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo" crossorigin="anonymous"></script>
+<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js" integrity="sha384-UO2eT0CpHqdSJQ6hJty5KVphtPhzWj9WO1clHTMGa3JDZwrnQq4sF86dIHNDz0W1" crossorigin="anonymous"></script>
+<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js" integrity="sha384-JjSmVgyd0p3pXB1rRibZUAYoIIy6OrQ6VrjIEaFf/nJGzIxFDsf4x0xIM+B07jRM" crossorigin="anonymous"></script>
+
+{{- partial "footer_custom.html" . }}
diff --git a/layouts/partials/footer_custom.html b/layouts/partials/footer_custom.html
new file mode 100644
index 0000000..e123130
--- /dev/null
+++ b/layouts/partials/footer_custom.html
@@ -0,0 +1,4 @@
+<!--
+If you want to include any custom html just before </body>, put it in /layouts/partials/footer_custom.html
+Do not put anything in this file - it's only here so that hugo won't throw an error if /layouts/partials/footer_custom.html doesn't exist.
+-->
diff --git a/layouts/partials/footers/simple.html b/layouts/partials/footers/simple.html
new file mode 100644
index 0000000..ddd92f9
--- /dev/null
+++ b/layouts/partials/footers/simple.html
@@ -0,0 +1,21 @@
+ <footer class="my-5 pt-5 text-muted text-center text-small">
+ <p class="mb-1">&copy;
+ {{- if .Site.Params.since }}
+ {{ .Site.Params.since }} -
+ {{- end }}
+ {{ .Site.LastChange.Format "2006" }}
+
+ {{- if .Site.Author.name }}
+ {{- if .Site.Author.website }}
+ <a href="{{ .Site.Author.website }}">{{ .Site.Author.name }}</a>
+ {{- else }}
+ {{ .Site.Author.name }}
+ {{- end }}
+ {{- end }}
+ </p>
+ <ul class="list-inline">
+ {{- range $link, $name := .Site.Params.footerLinks }}
+ <li class="list-inline-item"><a href="{{ $link }}">{{ $name }}</a></li>
+ {{- end }}
+ </ul>
+ </footer>
diff --git a/layouts/partials/head.html b/layouts/partials/head.html
new file mode 100644
index 0000000..545afdd
--- /dev/null
+++ b/layouts/partials/head.html
@@ -0,0 +1,38 @@
+{{- if eq .Kind "home" }}
+ {{- $.Scratch.Set "Description" ( .Site.Params.description | default "The main page" ) }}
+ {{- $.Scratch.Set "Title" .Site.Title }}
+{{- else }}
+ {{- $.Scratch.Set "Description" ( .Description | default .Params.subtitle | default .Summary | default .Kind ) }}
+ {{- $.Scratch.Set "Title" ( .Title | default .Site.Title ) }}
+{{- end }}
+
+ <meta charset="utf-8" />
+ <meta http-equiv="X-UA-Compatible" content="IE=edge">
+ <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0">
+
+<!-- Site Title, Description, Author, and Favicon -->
+{{- with ($.Scratch.Get "Title") }}
+ <title>{{ print . }} - {{ $.Site.Title }}</title>
+{{- end }}
+{{- with ($.Scratch.Get "Description") }}
+ <meta name="description" content="{{ . }}">
+{{- end }}
+{{- with .Site.Author.name }}
+ <meta name="author" content="{{ . }}"/>
+{{- end }}
+{{- with .Site.Params.favicon }}
+ <link href='{{ . | absURL }}' rel='icon' type='image/x-icon'/>
+{{- end -}}
+
+<!-- SEO -->
+{{- partial "seo/main.html" . }}
+
+<!-- Social Media Tags -->
+{{- partial "social/main.html" . }}
+
+<!-- Links and stylesheets -->
+ <link href="https://stackpath.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet" integrity="sha384-wvfXpqpZZVQGK6TAh5PVlGOfQNHSoD2xbE+QkPxCAFlNEevoEH3Sl0sibVcOQVnN" crossorigin="anonymous">
+ <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T" crossorigin="anonymous">
+
+{{- partial "head_custom.html" . }}
+{{ template "_internal/google_analytics_async.html" . }}
diff --git a/layouts/partials/head_custom.html b/layouts/partials/head_custom.html
new file mode 100644
index 0000000..554494a
--- /dev/null
+++ b/layouts/partials/head_custom.html
@@ -0,0 +1,4 @@
+<!--
+If you want to include any custom html just before </head>, put it in /layouts/partials/head_custom.html
+Do not put anything in this file - it's only here so that hugo won't throw an error if /layouts/partials/head_custom.html doesn't exist.
+-->
diff --git a/layouts/partials/header.html b/layouts/partials/header.html
new file mode 100644
index 0000000..5913ae2
--- /dev/null
+++ b/layouts/partials/header.html
@@ -0,0 +1,3 @@
+{{- $header_type := .Site.Params.Header | default "simple" }}
+{{- $header_file := printf "headers/%s.html" $header_type }}
+{{- partial $header_file . }}
diff --git a/layouts/partials/headers/simple.html b/layouts/partials/headers/simple.html
new file mode 100644
index 0000000..cf5c400
--- /dev/null
+++ b/layouts/partials/headers/simple.html
@@ -0,0 +1,6 @@
+ <div class="py-5 text-center">
+ <h2>{{ .Title }}</h2>
+ {{- with .Params.subtitle }}
+ <p class="lead">{{ . }}</p>
+ {{- end }}
+ </div>
diff --git a/layouts/partials/nav.html b/layouts/partials/nav.html
new file mode 100644
index 0000000..b76b3cc
--- /dev/null
+++ b/layouts/partials/nav.html
@@ -0,0 +1,3 @@
+{{- $nav_type := .Site.Params.Nav | default "simple" }}
+{{- $nav_file := printf "navs/%s.html" $nav_type }}
+{{- partial $nav_file . }}
diff --git a/layouts/partials/navs/simple.html b/layouts/partials/navs/simple.html
new file mode 100644
index 0000000..36ffd66
--- /dev/null
+++ b/layouts/partials/navs/simple.html
@@ -0,0 +1,13 @@
+<div class="d-flex flex-column flex-md-row align-items-center p-3 px-md-4 mb-3 bg-white border-bottom shadow-sm">
+ <h5 class="my-0 mr-md-auto font-weight-normal">
+ <a class="text-decoration-none" href="{{ "" | absLangURL }}">{{ .Site.Title }}</a></h5>
+ <nav class="my-2 my-md-0 mr-md-3">
+{{ range .Site.Menus.main.ByWeight }}
+ {{ if .HasChildren }}
+ NO HANDLING FOR CHILDREN
+ {{ else }}
+ <a class="p-2 text-dark" title="{{ .Name }}" href="{{ .URL | relLangURL }}">{{ .Name }}</a>
+ {{ end }}
+{{ end }}
+ </nav>
+</div>
diff --git a/layouts/partials/seo/main.html b/layouts/partials/seo/main.html
new file mode 100644
index 0000000..bbf7e6d
--- /dev/null
+++ b/layouts/partials/seo/main.html
@@ -0,0 +1 @@
+{{- partial "seo/schema" . }}
diff --git a/layouts/partials/seo/schema.html b/layouts/partials/seo/schema.html
new file mode 100644
index 0000000..a44260d
--- /dev/null
+++ b/layouts/partials/seo/schema.html
@@ -0,0 +1,6 @@
+{{- partial "seo/structured/website" . }}
+{{- partial "seo/structured/organization" . }}
+{{- if .IsPage }}
+{{- partial "seo/structured/breadcrumb" . }}
+{{- partial "seo/structured/article" . }}
+{{- end }}
diff --git a/layouts/partials/seo/structured/article.html b/layouts/partials/seo/structured/article.html
new file mode 100644
index 0000000..b828456
--- /dev/null
+++ b/layouts/partials/seo/structured/article.html
@@ -0,0 +1,28 @@
+<script type="application/ld+json">
+{
+ "@context": "http://schema.org",
+ "@type": "Article",
+ "author": {
+ "name" : "{{ if .Params.author -}}{{ .Params.author }}{{- else if .Site.Author.name -}}{{ .Site.Author.name }}{{- end }}"
+ },
+ "headline": "{{ .Title }}",
+ "description" : "{{ if .Description }}{{ .Description | plainify }}{{ else }}{{if .IsPage}}{{ .Summary | plainify }}{{ end }}{{ end }}",
+ "inLanguage" : "{{ .Lang }}",
+ "wordCount": {{ .WordCount }},
+ "datePublished" : "{{ .PublishDate.Format "2006-01-02T15:04:05" }}",
+ "dateModified" : "{{ .Date.Format "2006-01-02T15:04:05" }}",
+ "image" : "{{ .Site.Params.logo | absURL }}",
+ "keywords" : [ "{{ range $i, $e := .Params.tags }}{{ if $i }}, {{ end }}{{ $e }}{{ end }}" ],
+ "mainEntityOfPage" : "{{ .Permalink }}",
+ "publisher" : {
+ "@type": "Organization",
+ "name" : "{{ .Site.BaseURL }}",
+ "logo" : {
+ "@type" : "ImageObject",
+ "url" : "{{ .Site.Params.logo | absURL }}",
+ "height" : 60 ,
+ "width" : 60
+ }
+ }
+}
+</script> \ No newline at end of file
diff --git a/layouts/partials/seo/structured/breadcrumb.html b/layouts/partials/seo/structured/breadcrumb.html
new file mode 100644
index 0000000..81ac41b
--- /dev/null
+++ b/layouts/partials/seo/structured/breadcrumb.html
@@ -0,0 +1,21 @@
+<script type="application/ld+json">
+{
+ "@context": "http://schema.org",
+ "@type": "BreadcrumbList",
+ "itemListElement": [{
+ "@type": "ListItem",
+ "position": 1,
+ "item": {
+ "@id": "{{ .Site.BaseURL }}",
+ "name": "home"
+ }
+ },{
+ "@type": "ListItem",
+ "position": 3,
+ "item": {
+ "@id": "{{ .Permalink }}",
+ "name": "{{ .Title | humanize }}"
+ }
+ }]
+}
+</script> \ No newline at end of file
diff --git a/layouts/partials/seo/structured/organization.html b/layouts/partials/seo/structured/organization.html
new file mode 100644
index 0000000..c397e9c
--- /dev/null
+++ b/layouts/partials/seo/structured/organization.html
@@ -0,0 +1,12 @@
+<script type="application/ld+json">
+{
+ "@context": "http://schema.org",
+ "@type": "Organization",
+ "name": "{{ .Site.Params.organizationName }}",
+ "url": "{{ .Site.BaseURL }}"
+ {{- with .Site.Params.socialProfiles }}, "sameAs": {{ . }}{{- end }}
+ {{- with .Site.Params.organizationLogo }}, "logo": "{{ . }}"{{- end }}
+ {{- with .Site.Params.organizationAddress }}, "address": "{{ . }}"{{- end }}
+ {{- with .Site.Data.organization.contacts.contactPoint }}, "contactPoint": {{ . }}{{- end }}
+}
+</script>
diff --git a/layouts/partials/seo/structured/post.html b/layouts/partials/seo/structured/post.html
new file mode 100644
index 0000000..f1a10da
--- /dev/null
+++ b/layouts/partials/seo/structured/post.html
@@ -0,0 +1,47 @@
+<script type="application/ld+json"> {
+ "@context" : "http://schema.org",
+ "@type" : "BlogPosting",
+ {{ if .Params.categories }}{{ range .Params.categories }}"articleSection" : "{{ . }}",{{ end }}{{ end }}
+ "name" : "{{ .Title | safeJS }}",
+ "headline" : "{{ .Title | safeJS }}",
+ "mainEntityOfPage": {
+ "@type": "WebPage",
+ "@id": "{{ .Permalink }}"
+ },
+ "description" : "{{ if .Description }}{{ .Description | plainify }}{{ else }}{{if .IsPage}}{{ .Summary | plainify }}{{ end }}{{ end }}",
+ "inLanguage" : "{{ .Lang }}",
+ {{ if .Params.author -}}
+ "author": {
+ "@type": "Person",
+ "name": "{{ .Params.author }}"
+ },
+ {{- else if .Site.Author.name -}}
+ "author": {
+ "@type": "Person",
+ "name": "{{ .Site.Author.name }}"
+ },
+ {{- end }}
+ "copyrightYear" : "{{ .Site.Params.since }} - {{ .Site.LastChange.Format "2006" }}",
+ {{ if not .PublishDate.IsZero -}}
+ "datePublished": "{{ .PublishDate.Format "2006-01-02T15:04:05-07:00" | safeHTML }}",
+ {{- else if not .Date.IsZero -}}
+ "datePublished": "{{ .Date.Format "2006-01-02T15:04:05-07:00" | safeHTML }}",
+ {{- end }}
+ {{ with .Lastmod -}}
+ "dateModified": "{{ .Format "2006-01-02T15:04:05-07:00" | safeHTML }}",
+ {{- end }}
+ "url" : "{{ .Permalink }}",
+ "wordCount" : "{{ .WordCount }}",
+ "image" : "{{ .Site.Params.logo | absURL }}",
+ "keywords" : [ "{{ range $i, $e := .Params.tags }}{{ if $i }}, {{ end }}{{ $e }}{{ end }}" ],
+ "publisher" : {
+ "@type": "Organization",
+ "name" : "{{ .Site.BaseURL }}",
+ "logo" : {
+ "@type" : "ImageObject",
+ "url" : "{{ .Site.Params.logo | absURL }}",
+ "height" : 60 ,
+ "width" : 60
+ }
+ }
+} </script> \ No newline at end of file
diff --git a/layouts/partials/seo/structured/website.html b/layouts/partials/seo/structured/website.html
new file mode 100644
index 0000000..3f3b4ff
--- /dev/null
+++ b/layouts/partials/seo/structured/website.html
@@ -0,0 +1,9 @@
+<script type="application/ld+json">
+{
+ "@context": "http://schema.org",
+ "@type": "WebSite",
+ "name": "{{ .Site.Title }}",
+ {{- with .Site.Params.alternatePageName }}"alternateName": "{{ . }}",{{- end }}
+ "url": "{{ .Site.BaseURL }}"
+}
+</script>
diff --git a/layouts/partials/social/main.html b/layouts/partials/social/main.html
new file mode 100644
index 0000000..2d26caa
--- /dev/null
+++ b/layouts/partials/social/main.html
@@ -0,0 +1,2 @@
+{{- partial "social/opengraph" . }}
+{{- partial "social/twitter" . }}
diff --git a/layouts/partials/social/opengraph.html b/layouts/partials/social/opengraph.html
new file mode 100644
index 0000000..9a14a07
--- /dev/null
+++ b/layouts/partials/social/opengraph.html
@@ -0,0 +1,15 @@
+{{- with .Title | default .Site.Title }}
+<meta property="og:title" content="{{ . }}" />
+{{- end }}
+{{- with .Description | default .Params.subtitle | default .Summary }}
+<meta property="og:description" content="{{ . }}">
+{{- end }}
+{{- with .Params.share_img | default .Params.image | default .Site.Params.logo }}
+<meta property="og:image" content="{{ . | absURL }}" />
+{{- end }}
+{{- with .Site.Params.fb_app_id }}
+<meta property="fb:app_id" content="{{ . }}" />
+{{- end }}
+<meta property="og:url" content="{{ .Permalink | absLangURL }}" />
+<meta property="og:type" content="website" />
+<meta property="og:site_name" content="{{ .Site.Title }}" />
diff --git a/layouts/partials/social/twitter.html b/layouts/partials/social/twitter.html
new file mode 100644
index 0000000..0eb1e9b
--- /dev/null
+++ b/layouts/partials/social/twitter.html
@@ -0,0 +1,14 @@
+{{- with .Title | default .Site.Title }}
+ <meta name="twitter:title" content="{{ . | truncate 70 }}" />
+{{- end }}
+{{- with .Description | default .Params.subtitle | default .Summary }}
+ <meta name="twitter:description" content="{{ . | truncate 200 }}">
+{{- end }}
+{{- with .Params.share_img | default .Params.image | default .Site.Params.logo }}
+ <meta name="twitter:image" content="{{ . | absURL }}" />
+{{- end }}
+ <meta name="twitter:card" content="summary" />
+{{- with .Site.Author.twitter }}
+ <meta name="twitter:site" content="@{{ . }}" />
+ <meta name="twitter:creator" content="@{{ . }}" />
+{{- end }} \ No newline at end of file
diff --git a/theme.toml b/theme.toml
new file mode 100644
index 0000000..54b5403
--- /dev/null
+++ b/theme.toml
@@ -0,0 +1,11 @@
+name = "Flexible-SEO-Hugo"
+license = "MIT"
+licenselink = "https://github.com/pjbakker/flexible-seo-hugo/blob/master/LICENSE"
+description = ""
+homepage = "http://github.com/pjbakker/flexible-seo-hugo/"
+tags = [ "bootstrap", "customizable", "responsive" ]
+min_version = "0.41"
+
+[author]
+ name = "Paul Bakker"
+ homepage = "https://brain-dump.space"