mirror of
https://github.com/gohugoio/hugo.git
synced 2026-08-30 02:02:38 +00:00
Add all weights to template section and updated go template primer
This commit is contained in:
+1
-1
@@ -1,3 +1,3 @@
|
||||
themes/hugodocs/pipeline/node_modules
|
||||
my-notes.md
|
||||
ryans-notes.md
|
||||
notes-for-reviewers.md
|
||||
+4
-1
@@ -1,4 +1,4 @@
|
||||
# Content Reorganization
|
||||
# Annotated Content Reorganization
|
||||
|
||||
- [Changes to Existing Content Sections](#changes-to-existing-sections)
|
||||
- [Extras](#extras)
|
||||
@@ -27,6 +27,9 @@ The following is an *abbreviated* listing and only includes the *larger* changes
|
||||
* All content moved from `/tutorials` edited to reflect a less tutorial-ish style of language (e.g., remove of lines starting with "In this tutorial...")
|
||||
* Aliases added to new pages and in-page links updated throughout
|
||||
|
||||
|
||||
|
||||
|
||||
## Content Organization: Site Navigation
|
||||
|
||||
The following is a list of weights for the newly restructure site architecture
|
||||
|
||||
@@ -5,11 +5,10 @@ description: Hugo's features, roadmap, and license, as well as the motivation be
|
||||
date: 2017-02-01
|
||||
publishdate: 2017-02-01
|
||||
lastmod: 2017-02-01
|
||||
tags: []
|
||||
categories: []
|
||||
tags: []
|
||||
weight: 01
|
||||
draft: false
|
||||
aliases: []
|
||||
toc: false
|
||||
notesforauthors:
|
||||
---
|
||||
@@ -6,12 +6,10 @@ date: 2017-02-01
|
||||
publishdate: 2017-02-01
|
||||
lastmod: 2017-02-01
|
||||
tags: [ssg,static,performance, security]
|
||||
weight: 20
|
||||
weight: 30
|
||||
draft: false
|
||||
slug:
|
||||
aliases: []
|
||||
toc: false
|
||||
notesforauthors:
|
||||
---
|
||||
|
||||
Website generators render content into HTML files. Most are "dynamic site generators." That means the HTTP server (i.e., the program that communicates with your end user's browser) runs the generator to create a new HTML file every time an end user requests a page.
|
||||
|
||||
@@ -5,9 +5,8 @@ description: In addition to blistering speed, Hugo also includes a powerful temp
|
||||
date: 2017-02-01
|
||||
publishdate: 2017-02-01
|
||||
lastmod: 2017-02-01
|
||||
weight: 10
|
||||
weight: 20
|
||||
draft: false
|
||||
slug:
|
||||
aliases: [/about-hugo/features]
|
||||
toc: true
|
||||
notesforauthors:
|
||||
|
||||
@@ -1,16 +1,16 @@
|
||||
---
|
||||
title: Apache License
|
||||
linktitle:
|
||||
linktitle: License
|
||||
description: Hugo v0.15 and later are released under the Apache 2.0 license. Earlier versions of Hugo were released under the Simple Public License.
|
||||
date: 2016-02-01
|
||||
publishdate: 2016-02-01
|
||||
lastmod: 2016-02-01
|
||||
weight: 50
|
||||
categories: ["about hugo"]
|
||||
tags: ["license","apache"]
|
||||
weight: 60
|
||||
draft: false
|
||||
slug:
|
||||
aliases: [/meta/license]
|
||||
toc: true
|
||||
notesforauthors:
|
||||
---
|
||||
|
||||
{{% note %}}
|
||||
|
||||
@@ -6,7 +6,7 @@ date: 2017-02-01
|
||||
publishdate: 2017-02-01
|
||||
lastmod: 2017-02-01
|
||||
tags: []
|
||||
weight: 40
|
||||
weight: 50
|
||||
draft: false
|
||||
slug:
|
||||
aliases: [/meta/roadmap]
|
||||
|
||||
@@ -6,11 +6,10 @@ date: 2017-02-01
|
||||
publishdate: 2017-02-01
|
||||
lastmod: 2017-02-01
|
||||
layout: single
|
||||
weight: 05
|
||||
weight: 10
|
||||
draft: false
|
||||
aliases: [/overview/introduction/]
|
||||
toc: true
|
||||
notesforauthors:
|
||||
---
|
||||
|
||||
## What is Hugo?
|
||||
|
||||
@@ -5,12 +5,10 @@ description: Learn why Steve Francia (@spf13) decided to ditch his previous cont
|
||||
date: 2017-02-01
|
||||
publishdate: 2017-02-01
|
||||
lastmod: 2017-02-01
|
||||
weight: 30
|
||||
weight: 40
|
||||
draft: false
|
||||
slug:
|
||||
aliases: []
|
||||
toc: false
|
||||
notesforauthors:
|
||||
---
|
||||
|
||||
I wrote Hugo ultimately for a few reasons. First, I was disappointed with WordPress, my then website solution. With it, I couldn't create content as efficiently as I wanted to.
|
||||
|
||||
@@ -5,7 +5,7 @@ description: Comprehensive list of Hugo templating functions, including basic an
|
||||
date: 2017-02-01
|
||||
publishdate: 2017-02-01
|
||||
lastmod: 2017-02-01
|
||||
categories: [command line reference]
|
||||
categories: [commands]
|
||||
tags: [cli,command line]
|
||||
weight: 01
|
||||
draft: false
|
||||
@@ -16,7 +16,4 @@ needsreview: true
|
||||
The following list contains auto-generated and up-to-date (thanks to [Cobra][]) documentation for all the CLI commands in Hugo.
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
[Cobra]: https://github.com/spf13/cobra
|
||||
[Cobra]: https://github.com/spf13/cobra
|
||||
|
||||
@@ -11,5 +11,4 @@ weight: 01
|
||||
draft: false
|
||||
aliases: [/content/]
|
||||
toc: false
|
||||
notesforauthors:
|
||||
---
|
||||
|
||||
@@ -7,7 +7,7 @@ publishdate: 2017-02-01
|
||||
lastmod: 2017-02-01
|
||||
tags: [archetypes,generators,metadata,front matter]
|
||||
categories: ["content management"]
|
||||
weight: 50
|
||||
weight: 70
|
||||
draft: false
|
||||
aliases: [/content/archetypes/,/content-management/content-archetypes/]
|
||||
toc: true
|
||||
@@ -182,7 +182,7 @@ The following is the `musicians` archetype from the [example site][]:
|
||||
[archetypes directory]: /project-organization/directory-structure/
|
||||
[`now()`]: http://golang.org/pkg/time/#Now
|
||||
[configuration file]: /project-organization/configuration/
|
||||
[content sections]: /content-sections/
|
||||
[content sections]: /sections/
|
||||
[content types]: /content-management/content-types/
|
||||
[example site]: /getting-started/using-the-hugo-docs/#example-site
|
||||
[front matter]: /content-management/front-matter/
|
||||
|
||||
@@ -0,0 +1,113 @@
|
||||
---
|
||||
title: Comments
|
||||
linktitle: Comments
|
||||
description: Hugo ships with an internal Disqus template that requires negligible effort to implement, but Disqus isn't the only commenting system that will work with your new Hugo website.
|
||||
date: 2017-02-01
|
||||
publishdate: 2017-02-01
|
||||
lastmod: 2017-02-01
|
||||
tags: [sections,content,organization, fundamentals]
|
||||
categories: [project organization]
|
||||
weight: 140
|
||||
draft: false
|
||||
aliases: [/extras/comments/]
|
||||
toc: true
|
||||
needsreview: true
|
||||
---
|
||||
|
||||
<!-- pulled from extras/comments -->
|
||||
|
||||
As Hugo is a static site generator, the content produced is static and doesn’t interact with the users. The most common interaction people ask for is comment capability.
|
||||
|
||||
Hugo ships with support for [Disqus](https://disqus.com/), a third-party service that provides comment and community capabilities to website via JavaScript.
|
||||
|
||||
Your theme may already support Disqus, but even it if doesn’t, it is easy to add.
|
||||
|
||||
### Disqus
|
||||
|
||||
#### Adding Disqus to a Template
|
||||
|
||||
Hugo comes with all the code you would need to include load Disqus. Simply include the following line where you want your comments to appear:
|
||||
|
||||
```golang
|
||||
{{ template "_internal/disqus.html" . }}
|
||||
```
|
||||
|
||||
#### Configuring Disqus
|
||||
|
||||
That template requires you to set a single value in your site `config`:
|
||||
|
||||
```toml
|
||||
disqusShortname = "yourdiscussshortname"
|
||||
```
|
||||
|
||||
Or with a `config.yml`:
|
||||
|
||||
```yaml
|
||||
disqusShortname: "yourdiscussshortname"
|
||||
```
|
||||
|
||||
You also have the option to set the following in the front matter for a given piece of content:
|
||||
|
||||
* `disqus_identifier`
|
||||
* `disqus_title`
|
||||
* `disqus_url`
|
||||
|
||||
#### Conditional Loading of Disqus Comments
|
||||
|
||||
Users have noticed that enabling Disqus comments when running the Hugo web server on `localhost` (i.e. via `hugo server`) causes the creation of unwanted discussions on the associated Disqus account. In order to prevent this, a slightly tweaked partial template is required. So, rather than using the built-in `"_internal/disqus.html"` template referenced above, create a template in `layouts/partials` that looks like the following:
|
||||
|
||||
{{% input "layouts/partials/disqus.html" %}}
|
||||
```html
|
||||
<div id="disqus_thread"></div>
|
||||
<script type="text/javascript">
|
||||
|
||||
(function() {
|
||||
// Don't ever inject Disqus on localhost--it creates unwanted
|
||||
// discussions from 'localhost:1313' on your Disqus account...
|
||||
if (window.location.hostname == "localhost")
|
||||
return;
|
||||
|
||||
var dsq = document.createElement('script'); dsq.type = 'text/javascript'; dsq.async = true;
|
||||
var disqus_shortname = '{{ .Site.DisqusShortname }}';
|
||||
dsq.src = '//' + disqus_shortname + '.disqus.com/embed.js';
|
||||
(document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq);
|
||||
})();
|
||||
</script>
|
||||
<noscript>Please enable JavaScript to view the <a href="http://disqus.com/?ref_noscript">comments powered by Disqus.</a></noscript>
|
||||
<a href="http://disqus.com/" class="dsq-brlink">comments powered by <span class="logo-disqus">Disqus</span></a>
|
||||
```
|
||||
{{% /input %}}
|
||||
|
||||
The `if` statement skips the initialization of the Disqus comment injection when you are running on `localhost`.
|
||||
|
||||
You can then reference the partial template:
|
||||
|
||||
{{% input "disqus-reference.html" %}}
|
||||
```golang
|
||||
{{ partial "disqus.html" . }}
|
||||
```
|
||||
{{% /input %}}
|
||||
|
||||
## Alternatives
|
||||
|
||||
A few alternatives exist to [Disqus](https://disqus.com/):
|
||||
|
||||
* [Discourse](http://www.discourse.org)
|
||||
* [IntenseDebate](http://intensedebate.com/)
|
||||
* [Livefyre](http://livefyre.com/)
|
||||
* [Muut](http://muut.com/)
|
||||
* [多说](http://duoshuo.com/) ([Duoshuo](http://duoshuo.com/), popular in China)
|
||||
* [isso](http://posativ.org/isso/) (Self-hosted, Python)
|
||||
* [Kaiju](https://github.com/spf13/kaiju)
|
||||
|
||||
## Kaiju
|
||||
|
||||
[Kaiju](https://github.com/spf13/kaiju) is an open-source project started by [spf13](http://spf13.com/) (Hugo’s author) to bring easy and fast real time discussions to the web.
|
||||
|
||||
Written using Go, Socket.io and MongoDB, it is very fast and easy to deploy.
|
||||
|
||||
It is in early development but shows promise. If you have interest, please help by contributing whether via a pull request, an issue or even just a tweet. Everything helps.
|
||||
|
||||
## Discourse
|
||||
|
||||
Additionally, you may recognize [Discourse](http://www.discourse.org) as the system that powers the [Hugo Discussion Forum](http://discuss.gohugo.io).
|
||||
@@ -5,11 +5,10 @@ description: Hugo assumes that the same structure that works to organize your so
|
||||
date: 2017-02-01
|
||||
publishdate: 2017-02-01
|
||||
lastmod: 2017-02-01
|
||||
tags: [sections,content,organization, fundamentals]
|
||||
categories: [project organization]
|
||||
weight: 05
|
||||
tags: [sections,content,organization, fundamentals]
|
||||
weight: 10
|
||||
draft: false
|
||||
slug:
|
||||
aliases: [/content-management/sections,/content/sections/]
|
||||
toc: true
|
||||
needsreview: true
|
||||
@@ -19,7 +18,7 @@ Hugo uses files (see [supported content formats][]) with headers called [front m
|
||||
|
||||
## Organizing Source Content
|
||||
|
||||
In Hugo, the content should be organized in a manner that reflects the rendered website. Without any additional configuration, the following will just work. Hugo supports content nested at any level, but the top level is special in Hugo and is used as the [section](/content-management/content-sections/).
|
||||
In Hugo, the content should be organized in a manner that reflects the rendered website. Without any additional configuration, the following will just work. Hugo supports content nested at any level, but the top level is special in Hugo and is used as the [section](/content-management/sections/).
|
||||
|
||||
```bash
|
||||
.
|
||||
|
||||
@@ -5,14 +5,12 @@ description:
|
||||
date: 2017-01-10
|
||||
publishdate: 2017-01-10
|
||||
lastmod: 2017-01-10
|
||||
tags: [summaries,abstracts,read more]
|
||||
categories: [content management]
|
||||
weight: 70
|
||||
tags: [summaries,abstracts,read more]
|
||||
weight: 90
|
||||
draft: false
|
||||
slug:
|
||||
aliases: [/content/summaries/]
|
||||
toc: true
|
||||
notesforauthors:
|
||||
---
|
||||
|
||||
With the use of the `.Summary` [page variable][pagevariables], Hugo can generate summaries of content to show snippets in summary views. The summary view snippets are automatically generated by Hugo.
|
||||
@@ -26,23 +24,23 @@ You have two options for where the content is split:
|
||||
|
||||
Content summaries may also provide links to the original content. A common design pattern is to see this link in the form of a "Read More..." button. To make this easier, you can leverage the `.RelPermalink`, `.Permalink`, and `.Truncated` [page variables][pagevariables].
|
||||
|
||||
### Hugo-defined: Automatic Splitting
|
||||
### Hugo-defined: Automatic Summary Splitting
|
||||
|
||||
By default, Hugo automatically takes the first 70 words of your content as its summary and stores it into the `.Summary` page variable for use in your templates. Taking the Hugo-defined approach to summaries may save time, but it has pros and cons:
|
||||
|
||||
* **Pros:** Automatic, no additional work on your part.
|
||||
* **Cons:** All HTML tags are stripped from the summary, and the first 70 words, whether they belong to a heading or to different paragraphs, are all lumped into one paragraph.
|
||||
|
||||
### User-defined: Manual Splitting
|
||||
### User-defined: Manual Summary Splitting
|
||||
|
||||
Alternatively, you may add the <code><!--more--></code> summary divider where you want to split the article. Content that comes before the summary divider will be used as that content's summary and stored in the `.Summary` page variable with all HTML formatting intact.
|
||||
Alternatively, you may add the <code><!--more--></code> summary divider where you want to split the article. For [org content][org], use <code># more</code>) where you want to split the article. Content that comes before the summary divider will be used as that content's summary and stored in the `.Summary` page variable with all HTML formatting intact.
|
||||
|
||||
{{% note "Summary Divider"%}}
|
||||
The concept of a *summary divider* is not unique to Hugo. It is also called the "more tag" or "excerpt separator" in other literature.
|
||||
{{% /note %}}
|
||||
|
||||
* Pros: Freedom, precision, and improved rendering. All HTML tags and formatting are preserved.
|
||||
* Cons: Extra work for content authors, since they need to remember to type <code><!--more--></code> in each content file.
|
||||
* Cons: Extra work for content authors, since they need to remember to type <code><!--more--></code> (or `# more` for [org content][org]) in each content file.
|
||||
|
||||
{{% warning "Be Precise with the Summary Divider" %}}
|
||||
Be careful to enter <code><!--more--></code> exactly; i.e., all lowercase and with no whitespace. Any mistakes in the divider will tell Hugo to treat the divider as a regular comment and will fail to store your desired content in the `.Summary` variable.
|
||||
@@ -72,5 +70,6 @@ You can show content summaries with the following code. You could use the follow
|
||||
|
||||
Note how the `.Truncated` boolean valuable may be used to hide the "Read More..." link when the content is not truncated; i.e., when the summary contains the entire article.
|
||||
|
||||
[org]: /content-management/supported-content-formats/
|
||||
[pagevariables]: /variables-and-params/page-variables/
|
||||
[section's list page template]: /templates/list-and-section-templates/
|
||||
@@ -5,11 +5,10 @@ description:
|
||||
date: 2017-02-01
|
||||
publishdate: 2017-02-01
|
||||
lastmod: 2017-02-01
|
||||
tags: [lists,sections,content types,types,organization]
|
||||
categories: [content management]
|
||||
weight: 40
|
||||
tags: [lists,sections,content types,types,organization]
|
||||
weight: 60
|
||||
draft: false
|
||||
slug:
|
||||
aliases: [/content/types]
|
||||
toc: true
|
||||
needsreview: true
|
||||
@@ -34,7 +33,7 @@ You can manually add files to your content directories, but Hugo has the ability
|
||||
Creating a new content type is easy in Hugo. You simply provide the templates and archetype that the new type will use. You only need to define the templates, archetypes and/or views unique to that content type. Hugo will fall back to using the general templates and default archetype whenever a specific file is not present.
|
||||
|
||||
{{% note "Declaring Content Types" %}}
|
||||
Remember, all of the following are *optional*. If you do not specifically declare content types in your front matter or develop specific layouts for content types, Hugo is smart enough to infer the content type from the file path and content section (see [content sections](/content-management/content-sections/)).
|
||||
Remember, all of the following are *optional*. If you do not specifically declare content types in your front matter or develop specific layouts for content types, Hugo is smart enough to infer the content type from the file path and content section (see [content sections](/content-management/sections/)).
|
||||
{{% /note %}}
|
||||
|
||||
### Create Type Layout Directory
|
||||
@@ -61,7 +60,7 @@ More details about archetypes can be found in the [archetypes documentation][].
|
||||
|
||||
[archetypes]: /content-management/archetypes/
|
||||
[archetypes documentation]: /content-management/archetypes/
|
||||
[sections]: /content-sections/
|
||||
[sections]: /content-management/sections/
|
||||
[front matter]: /content-management/front-matter/
|
||||
[list of contents on a single page]: /templates/list-and-section-templates/
|
||||
[template]: /templates/
|
||||
|
||||
@@ -7,12 +7,11 @@ publishdate: 2017-02-01
|
||||
lastmod: 2017-01-09
|
||||
categories: [content management]
|
||||
tags: ["cross references","references", "anchors", "urls"]
|
||||
weight: 80
|
||||
weight: 100
|
||||
draft: false
|
||||
aliases: []
|
||||
toc:
|
||||
toc: true
|
||||
needsreview: true
|
||||
notesforauthors:
|
||||
---
|
||||
|
||||
Hugo makes it easy to link documents together with `ref` and `relref`, both of which are [built-in Hugo shortcodes][]. These shortcodes are also used to safely provide links to headings inside of your content, whether across documents or within a document. The only difference between `ref` and `relref` is whether the resulting URL is absolute (`http://1.com/about/`) or relative (`/about/`).
|
||||
|
||||
@@ -7,9 +7,8 @@ publishdate: 2017-01-09
|
||||
lastmod: 2017-01-09
|
||||
categories: [content management]
|
||||
tags: ["front matter", "yaml", "toml", "json", "metadata", "archetypes"]
|
||||
weight: 20
|
||||
weight: 30
|
||||
draft: false
|
||||
slug:
|
||||
aliases: [/content/front-matter/]
|
||||
needsreview: true
|
||||
toc:
|
||||
@@ -104,11 +103,11 @@ There are a few predefined variables that Hugo is aware of and utilizes. The use
|
||||
If neither `slug` nor `url` is present, and [permalinks are not configured otherwise](/content-management/url-management/#permalinks), the filename will be used to create the URL for a page.
|
||||
{{% /note %}}
|
||||
|
||||
## Configure Blackfriday Rendering
|
||||
## Override Global Blackfriday Configuration
|
||||
|
||||
It's possible to set some options for Markdown rendering in the page's front matter as an override to the site-wide configuration.
|
||||
|
||||
See [site configuration][] for more information.
|
||||
See [site configuration][] for more information on setting up global Blackfriday options.
|
||||
|
||||
## Parameters
|
||||
|
||||
|
||||
@@ -5,10 +5,10 @@ description:
|
||||
date: 2017-02-01
|
||||
publishdate: 2017-02-01
|
||||
lastmod: 2017-02-01
|
||||
weight:
|
||||
categories: [templating]
|
||||
tags: [lists,sections,menus]
|
||||
draft: false
|
||||
weight: 120
|
||||
aliases: [/extras/menus/]
|
||||
toc: true
|
||||
needsreview: true
|
||||
|
||||
@@ -7,10 +7,9 @@ publishdate: 2017-01-10
|
||||
lastmod: 2017-01-10
|
||||
categories: [content management]
|
||||
tags: [multilingual,i18n]
|
||||
weight: 120
|
||||
weight: 150
|
||||
draft: false
|
||||
slug:
|
||||
aliases: [/content/multilingual/]
|
||||
aliases: [/content/multilingual/,/content-management/multilingual/]
|
||||
toc: true
|
||||
needsreview: true
|
||||
notesforauthors:
|
||||
@@ -46,20 +45,20 @@ help = "Aide"
|
||||
```
|
||||
|
||||
Anything not defined in a `[Languages]` block will fall back to the global
|
||||
value for that key (like `copyright` for the English (`en`) language in this example).
|
||||
value for that key (e.g., `copyright` for the English [`en`] language).
|
||||
|
||||
With the config above, all content, sitemap, RSS feeds, paginations
|
||||
With the config above, all content, sitemap, RSS feeds, paginations,
|
||||
and taxonomy pages will be rendered below `/` in English (your default content language), and below `/fr` in French.
|
||||
|
||||
When working with params in frontmatter pages, omit the `params` in the key for the translation.
|
||||
When working with params in front matter pages, omit the `params` in the key for the translation.
|
||||
|
||||
If you want all of the languages to be put below their respective language code, enable `defaultContentLanguageInSubdir: true` in your configuration.
|
||||
|
||||
Only the obvious non-global options can be overridden per language. Examples of global options are `BaseURL`, `BuildDrafts`, etc.
|
||||
|
||||
Taxonomies and Blackfriday configuration can also be set per language, example:
|
||||
Taxonomies and [Blackfriday configuration][hugoconfig] can also be set per language:
|
||||
|
||||
```
|
||||
```toml
|
||||
[Taxonomies]
|
||||
tag = "tags"
|
||||
|
||||
@@ -81,12 +80,11 @@ title = "Français"
|
||||
plaque = "plaques"
|
||||
```
|
||||
|
||||
|
||||
### Translating your content
|
||||
## Translating Your Content
|
||||
|
||||
Translated articles are identified by the name of the content file.
|
||||
|
||||
Example of translated articles:
|
||||
### Examples of Translated Articles
|
||||
|
||||
1. `/content/about.en.md`
|
||||
2. `/content/about.fr.md`
|
||||
@@ -103,11 +101,12 @@ If left unspecified, the value for `defaultContentLanguage` defaults to `en`.
|
||||
|
||||
By having the same _base file name_, the content pieces are linked together as translated pieces.
|
||||
|
||||
### Link to translated content
|
||||
## Link to Translated Content
|
||||
|
||||
To create a list of links to translated content, use a template similar to this:
|
||||
|
||||
```
|
||||
{{% input "layouts/partials/i18nlist.html" %}}
|
||||
```html
|
||||
{{ if .IsTranslated }}
|
||||
<h4>{{ i18n "translations" }}</h4>
|
||||
<ul>
|
||||
@@ -119,13 +118,15 @@ To create a list of links to translated content, use a template similar to this:
|
||||
</ul>
|
||||
{{ end }}
|
||||
```
|
||||
The above can be put in a `partial` and included in any template, be it for a content page or the home page. It will not print anything if there are no translations for a given page, or if it is -- in the case of the home page, section listing etc. -- a site with only one language.
|
||||
{{% /input %}}
|
||||
|
||||
The above also uses the `i18n` func, see [Translation of strings](#translation-of-strings).
|
||||
The above can be put in a `partial` (`./layouts/partials/`) and included in any template, be it for a [content page][contenttemplate] or the [home page][homepagetemplte]. It will not print anything if there are no translations for a given page, or if it is---in the case of the home page, section listing, etc.---a site with only one language.
|
||||
|
||||
### Translation of strings
|
||||
The above also uses the `i18n` func described in the next section.
|
||||
|
||||
Hugo uses [go-i18n](https://github.com/nicksnyder/go-i18n) to support string translations. Follow the link to find tools to manage your translation workflows.
|
||||
## Translation of Strings
|
||||
|
||||
Hugo uses [go-i18n](https://github.com/nicksnyder/go-i18n) to support string translations. [See the project's source repository](https://github.com/nicksnyder/go-i18n) to find tools that will help you manage your translation workflows.
|
||||
|
||||
Translations are collected from the `themes/[name]/i18n/` folder (built into the theme), as well as translations present in `i18n/` at the root of your project. In the `i18n`, the translations will be merged and take precedence over what is in the theme folder. Language files should be named according to RFC 5646 with names such as `en-US.yaml`, `fr.yaml`, etc.
|
||||
|
||||
@@ -174,7 +175,7 @@ To track down missing translation strings, run Hugo with the `--i18n-warnings` f
|
||||
i18n|MISSING_TRANSLATION|en|wordCount
|
||||
```
|
||||
|
||||
### Menus
|
||||
## Menus
|
||||
|
||||
You can define your menus for each language independently. The [creation of a menu](/content-management/menus/) works analogous to earlier versions of Hugo, except that they have to be defined in their language-specific block in the configuration file:
|
||||
|
||||
@@ -215,16 +216,25 @@ The rendering of the main navigation works as usual. `.Site.Menus` will just con
|
||||
|
||||
```
|
||||
|
||||
### Missing translations
|
||||
## Missing translations
|
||||
|
||||
If a string does not have a translation for the current language, Hugo will use the value from the default language. If no default value is set, an empty string will be shown.
|
||||
|
||||
While translating a Hugo site, it can be handy to have a visual indicator of missing translations. The `EnableMissingTranslationPlaceholders` config option will flag all untranslated strings with the placeholder `[i18n] identifier`, where `identifier` is the id of the missing translation.
|
||||
While translating a Hugo website, it can be handy to have a visual indicator of missing translations. The [`EnableMissingTranslationPlaceholders` configuration option][hugoconfig] will flag all untranslated strings with the placeholder `[i18n] identifier`, where `identifier` is the id of the missing translation.
|
||||
|
||||
**Remember: Hugo will generate your website with these placeholders. It might not be suited for production environments.**
|
||||
{{% note %}}
|
||||
Hugo will generate your website with these placeholders. It might not be suited for production environments.
|
||||
{{% /note %}}
|
||||
|
||||
### Multilingual Themes support
|
||||
## Multilingual Themes support
|
||||
|
||||
To support Multilingual mode in your themes, some considerations must be taken for the URLs in the templates. If there are more than one language, URLs must either come from the built-in `.Permalink` or `.URL`, be constructed with `relLangURL` or `absLangURL` template funcs -- or prefixed with `{{.LanguagePrefix }}`.
|
||||
To support Multilingual mode in your themes, some considerations must be taken for the URLs in the templates. If there is more than one language, URLs must
|
||||
|
||||
If there are more than one language defined, the`LanguagePrefix` variable will equal `"/en"` (or whatever your `CurrentLanguage` is). If not enabled, it will be an empty string, so it is harmless for single-language sites.
|
||||
* come from the built-in `.Permalink` or `.URL`
|
||||
* be constructed with `relLangURL` or `absLangURL` template funcs **or** prefixed with `{{.LanguagePrefix }}`
|
||||
|
||||
If there is more than one language defined, the`LanguagePrefix` variable will equal `/en` (or whatever your `CurrentLanguage` is). If not enabled, it will be an empty string and is therefore harmless for single-language Hugo websites.
|
||||
|
||||
[contenttemplate]: /templates/single-page-template/
|
||||
[homepagetemplate]: /templates/homepage-template/
|
||||
[hugoconfig]: /getting-started/configuration/
|
||||
+4
-6
@@ -1,25 +1,23 @@
|
||||
---
|
||||
title: Sections
|
||||
title: Content Sections
|
||||
linktitle: Sections
|
||||
description: Hugo provides full support for content sections, which according to Hugo's default behavior, should reflect the architecture of the output website sections as well.
|
||||
date: 2017-02-01
|
||||
publishdate: 2017-02-01
|
||||
lastmod: 2017-02-01
|
||||
tags: [lists,sections,content types,organization]
|
||||
categories: [content management]
|
||||
weight: 30
|
||||
tags: [lists,sections,content types,organization]
|
||||
weight: 50
|
||||
draft: false
|
||||
slug:
|
||||
aliases: [/content-management/sections/,/content/sections/]
|
||||
toc: true
|
||||
notesforauthors:
|
||||
---
|
||||
|
||||
## What are Sections in Hugo
|
||||
|
||||
Hugo believes that you organize your content with a purpose. The same structure that works to organize your source content is used to organize the rendered site (see [directory structure][]).
|
||||
|
||||
Following this pattern, Hugo uses the top level of your content organization as the **content section**.
|
||||
Following this pattern, Hugo uses the top level of your content organization as the content **section**.
|
||||
|
||||
The [example site][] used throughout the Hugo docs includes three sections: "authors," "events," and "posts". The following illustrates both the source organization and the default URL structure for the rendered files:
|
||||
|
||||
@@ -1,31 +1,30 @@
|
||||
---
|
||||
title: Supported Content Formats
|
||||
linktitle:
|
||||
linktitle: Content Formats
|
||||
description: Hugo uses the Blackfriday markdown parser for content files but also provides support for additional syntaxes (eg, Asciidoc) via external helpers.
|
||||
date: 2017-01-10
|
||||
publishdate: 2017-01-10
|
||||
lastmod: 2017-01-10
|
||||
categories: [content management]
|
||||
tags: [markdown,asciidoc,mmark,content format]
|
||||
weight: 10
|
||||
weight: 20
|
||||
draft: false
|
||||
slug:
|
||||
aliases: [/content/markdown-extras/,/content/supported-formats/,/content/markdown/]
|
||||
aliases: [/content/markdown-extras/,/content/supported-formats/,/doc/supported-formats/]
|
||||
toc: true
|
||||
notesforauthors:
|
||||
---
|
||||
|
||||
## Markdown
|
||||
|
||||
Markdown is the natively supported content format for Hugo and is rendered using the excellent [Blackfriday project][], a markdown parser written in Golang.
|
||||
Markdown is the native content format for Hugo and is rendered using the excellent [Blackfriday project][], a blazingly fast parser written in Golang.
|
||||
|
||||
{{% note "Deeply Nested Lists" %}}
|
||||
Blackfriday has a known issue [(#329)](https://github.com/russross/blackfriday/issues/329) with handling deeply nested lists, but there is a workaround. If you write lists in markdown, use 4 spaces (i.e., <kbd>tab</kbd>) rather than 2 to delimit nesting of lists.
|
||||
Blackfriday has a known issue [(#329)](https://github.com/russross/blackfriday/issues/329) with handling deeply nested lists. Luckily, there is a workaround. Use 4-spaces (i.e., <kbd>tab</kbd>) rather than 2-space indentations to delimit nesting of lists.
|
||||
{{% /note %}}
|
||||
|
||||
## Additional Content Formats
|
||||
|
||||
Since 0.14, Hugo has defined a new concept called _external helpers_. This means you can write your content using [Asciidoc][] or [reStructuredText][]. If you have files with associated extensions, Hugo will call external commands to generate the content ([see Hugo source code][]).
|
||||
Since 0.14, Hugo has defined a new concept called _external helpers_. This means you can write your content using [Asciidoc][], [reStructuredText][], or [Org-mode][]. If you have files with associated extensions, Hugo will call external commands to generate the content ([see Hugo source code][]). The exception is Org-mode, which is parsed natively.
|
||||
|
||||
For example, for Asciidoc files, Hugo will try to call the **asciidoctor** or **asciidoc** command. This means that you will have to install the associated tool on your machine to be able to use these formats.
|
||||
|
||||
@@ -89,6 +88,7 @@ Hugo supports GitHub-flavored markdown's use of triple back ticks, as well as pr
|
||||
[Daring Fireball: Markdown, John Gruber]: https://daringfireball.net/projects/markdown/
|
||||
[developer tools]: /developer-tools/
|
||||
[Markdown Tutorial]: http://www.markdowntutorial.com/
|
||||
[Org-mode]: http://orgmode.org/
|
||||
[Pygments]: http://pygments.org/
|
||||
[reStructuredText]: http://docutils.sourceforge.net/rst.html
|
||||
[see Hugo source code]: https://github.com/spf13/hugo/blob/77c60a3440806067109347d04eb5368b65ea0fe8/helpers/general.go#L65
|
||||
|
||||
@@ -5,9 +5,9 @@ description:
|
||||
date: 2017-02-01
|
||||
publishdate: 2017-02-01
|
||||
lastmod: 2017-02-01
|
||||
tags: [table of contents, toc]
|
||||
categories: [content management]
|
||||
weight: 100
|
||||
tags: [table of contents, toc]
|
||||
weight: 130
|
||||
draft: false
|
||||
aliases: [/extras/toc/]
|
||||
toc: false
|
||||
|
||||
@@ -7,9 +7,8 @@ publishdate: 2017-02-01
|
||||
lastmod: 2017-02-01
|
||||
tags: [taxonomies,metadata,front matter,terms]
|
||||
categories: [content management]
|
||||
weight: 60
|
||||
weight: 80
|
||||
draft: false
|
||||
slug:
|
||||
aliases: [/taxonomies/overview/,/taxonomies/usage/,/indexes/overview/,/doc/indexes/,/extras/indexes]
|
||||
toc: true
|
||||
notesforauthors:
|
||||
|
||||
@@ -7,17 +7,13 @@ publishdate: 2017-02-01
|
||||
lastmod: 2017-02-01
|
||||
tags: [aliases,redirects,permalinks,urls]
|
||||
categories: [content management]
|
||||
weight: 90
|
||||
weight: 110
|
||||
draft: false
|
||||
aliases: [/extras/permalinks/,/extras/aliases/,/content-management/permalinks-and-redirects/,/extras/urls/]
|
||||
aliases: [/extras/permalinks/,/extras/aliases/,/content-management/permalinks-and-redirects/,/extras/urls/,/doc/redirects/,/doc/alias/,/doc/aliases/]
|
||||
toc: true
|
||||
needsreview: true
|
||||
---
|
||||
|
||||
## Base URL
|
||||
|
||||
## URLs
|
||||
|
||||
## Permalinks
|
||||
|
||||
By default, content is laid out into the target `publishdir` (public)
|
||||
@@ -59,6 +55,95 @@ The following is a list of values that can be used in a `permalink` definition i
|
||||
|
||||
## Aliases
|
||||
|
||||
For people migrating existing published content to Hugo, there's a good chance you need a mechanism to handle redirecting old URLs.
|
||||
|
||||
Luckily, redirects can be handled easily with _aliases_ in Hugo.
|
||||
|
||||
## Example
|
||||
|
||||
Given a post on your current Hugo site, with a path of:
|
||||
|
||||
``content/posts/my-awesome-blog-post.md``
|
||||
|
||||
... you create an "aliases" section in the frontmatter of your post, and add previous paths to that.
|
||||
|
||||
### TOML frontmatter
|
||||
|
||||
```toml
|
||||
+++
|
||||
...
|
||||
aliases = [
|
||||
"/posts/my-original-url/",
|
||||
"/2010/01/01/even-earlier-url.html"
|
||||
]
|
||||
...
|
||||
+++
|
||||
```
|
||||
|
||||
### YAML frontmatter
|
||||
|
||||
```yaml
|
||||
---
|
||||
...
|
||||
aliases:
|
||||
- /posts/my-original-url/
|
||||
- /2010/01/01/even-earlier-url.html
|
||||
...
|
||||
---
|
||||
```
|
||||
|
||||
Now when you visit any of the locations specified in aliases, _assuming the same site domain_, you'll be redirected to the page they are specified on.
|
||||
|
||||
## Important Behaviors
|
||||
|
||||
1. *Hugo makes no assumptions about aliases. They also don't change based
|
||||
on your UglyURLs setting. You need to provide absolute path to your webroot
|
||||
and the complete filename or directory.*
|
||||
|
||||
2. *Aliases are rendered prior to any content and will be overwritten by
|
||||
any content with the same location.*
|
||||
|
||||
## Multilingual example
|
||||
|
||||
On [multilingual sites](/content-management/multilingual/), each translation of a post can have unique aliases. To use the same alias across multiple languages, prefix it with the language code.
|
||||
|
||||
In `/posts/my-new-post.es.md`:
|
||||
|
||||
```yaml
|
||||
---
|
||||
aliases:
|
||||
- /es/posts/my-original-post/
|
||||
---
|
||||
```
|
||||
|
||||
## How Hugo Aliases Work
|
||||
|
||||
When aliases are specified, Hugo creates a physical folder structure to match the alias entry, and, an html file specifying the canonical URL for the page, and a redirect target.
|
||||
|
||||
Assuming a baseURL of `mysite.tld`, the contents of the html file will look something like:
|
||||
|
||||
```html
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>http://mysite.tld/posts/my-original-url</title>
|
||||
<link rel="canonical" href="http://mysite.tld/posts/my-original-url"/>
|
||||
<meta http-equiv="content-type" content="text/html; charset=utf-8"/>
|
||||
<meta http-equiv="refresh" content="0; url=http://mysite.tld/posts/my-original-url"/>
|
||||
</head>
|
||||
</html>
|
||||
```
|
||||
|
||||
The `http-equiv="refresh"` line is what performs the redirect, in 0 seconds in this case.
|
||||
|
||||
## Customizing
|
||||
|
||||
You may customize this alias page by creating an alias.html template in the
|
||||
layouts folder of your site. In this case, the data passed to the template is
|
||||
|
||||
* Permalink - the link to the page being aliased
|
||||
* Page - the Page data for the page being aliased
|
||||
|
||||
## Pretty URLs
|
||||
|
||||
By default, Hugo renders your content with "pretty" URLs. For example,
|
||||
@@ -108,5 +193,5 @@ For example, if the `/post/first/` page contained a link with a relative URL of
|
||||
|
||||
[Content Organization]: /content-management/content-organization/
|
||||
[flag from the command line]: /getting-started/basic-usage/
|
||||
[sections]: /content-management/content-sections/
|
||||
[sections]: /content-management/sections/
|
||||
[site configuration]: /project-organization/configuration/
|
||||
@@ -374,11 +374,11 @@ If you have questions leave a comment in the pull request. We are willing to ass
|
||||
|
||||
Thank you for reading this tutorial. Hopefully, we see you again on GitHub. There are plenty of [open issues](https://github.com/spf13/hugo/issues) on GitHub. Feel free to open an issue if you think you found a bug or you have a new idea to improve Hugo. We are happy to hear from you.
|
||||
|
||||
## Learning Git References
|
||||
## Additional References for Learning Git
|
||||
|
||||
* [Codecademy's Free "Learn Git" Course][codecademy]
|
||||
* [Code School and GitHub's Free "Try Git" Tutorial][trygit]
|
||||
* [The Git Book][gitbook]
|
||||
* [Codecademy's Free "Learn Git" Course][codecademy] (Free)
|
||||
* [Code School and GitHub's "Try Git" Tutorial][trygit] (Free)
|
||||
* [The Git Book][gitbook] (Free)
|
||||
|
||||
|
||||
[codecademy]: https://www.codecademy.com/learn/learn-git
|
||||
|
||||
@@ -45,7 +45,7 @@ Documentation is an integral part of any open source project. The Hugo docs were
|
||||
|
||||
## Admonition Short Codes
|
||||
|
||||
**Admonitions** are a common in technical documentation. The most popular is that seen in [reStructuredTex Directives][sourceforge]. From the SourceForge documentation:
|
||||
**Admonitions** are common directives in technical documentation. The most popular is that seen in [reStructuredTex Directives][sourceforge]. From the SourceForge documentation:
|
||||
|
||||
> Admonitions are specially marked "topics" that can appear anywhere an ordinary body element can. They contain arbitrary body elements. Typically, an admonition is rendered as an offset block in a document, sometimes outlined or shaded, with a title matching the admonition type. - [SourceForge][sourceforge]
|
||||
|
||||
|
||||
@@ -16,14 +16,13 @@ notesforauthors:
|
||||
|
||||
The [directory structure][] of a Hugo website—or more precisely, the source organization of files containing the website's content and templates—provides most of the configuration information that Hugo needs in order to statically generate a finished website.
|
||||
|
||||
Therefore, many websites may not need a configuration file. Hugo is designed to recognize certain typical usage patterns (and expects them, by default).
|
||||
Because of Hugo's preference for sane defaults, many websites may not need a configuration file. Hugo is designed to recognize certain typical usage patterns (and even expects them by default).
|
||||
|
||||
## Configuration Lookup Order
|
||||
|
||||
Nevertheless, Hugo searches for a configuration file in the root of your website's source directory as a default behavior. First, it looks for a `./config.toml` file. If that's not present, it will seek a `./config.yaml` file,
|
||||
followed by a `./config.json` file.
|
||||
Hugo searches for a configuration file in the root of your website's source directory as a default behavior. First, it looks for a `./config.toml` file. If that's not present, it will seek a `./config.yaml` file, followed by a `./config.json` file.
|
||||
|
||||
In this `config` file, you can include precise directions to Hugo regarding how it should render your website, control your website's menus, and arbitrarily define site-wide parameters specific to your project.
|
||||
In this `config` file, you can direct to Hugo as to how it should render your website, control your website's menus, and arbitrarily define site-wide parameters specific to your project.
|
||||
|
||||
## YAML Configuration
|
||||
|
||||
@@ -325,7 +324,45 @@ ignoreFiles = [ "\\.foo$", "\\.boo$" ]
|
||||
```
|
||||
The above is a list of regular expressions. Note that the backslash (`\`) character is escaped in this example to keep TOML happy.
|
||||
|
||||
## Configuration Format Specs
|
||||
## Configure Blackfriday Rendering
|
||||
|
||||
[Blackfriday](https://github.com/russross/blackfriday) is Hugo's built-in
|
||||
[Markdown](http://daringfireball.net/projects/markdown/) rendering engine.
|
||||
|
||||
Hugo typically configures Blackfriday with sane default values. These defaults should fit most use cases reasonably well.
|
||||
|
||||
However, if you have specific needs with respect to Markdown, Hugo exposes some of its Blackfriday behavior options for you to alter. The following table lists these Hugo options, paired with the corresponding flags from Blackfriday's source code ( [html.go](https://github.com/russross/blackfriday/blob/master/html.go) and [markdown.go](https://github.com/russross/blackfriday/blob/master/markdown.go)).
|
||||
|
||||
{{< bfconfig >}}
|
||||
|
||||
{{% note %}}
|
||||
1. Blackfriday flags are **case sensitive** as of Hugo v0.15.
|
||||
2. Blackfriday flags must be grouped under the `blackfriday` key and can be set on both the site level *and* the page level. Any setting on a page will override the site setting there. See [site configuration for more information](/content-management/front-matter/#override-global-blackfriday-configuration).
|
||||
{{% /note %}}
|
||||
|
||||
{{% input "bf-config.toml" %}}
|
||||
```toml
|
||||
[blackfriday]
|
||||
angledQuotes = true
|
||||
fractions = false
|
||||
plainIDAnchors = true
|
||||
extensions = ["hardLineBreak"]
|
||||
```
|
||||
{{% /input %}}
|
||||
|
||||
{{% input "bf-config.yml" %}}
|
||||
```yaml
|
||||
blackfriday:
|
||||
angledQuotes: true
|
||||
fractions: false
|
||||
plainIDAnchors: true
|
||||
extensions:
|
||||
- hardLineBreak
|
||||
```
|
||||
{{% /input %}}
|
||||
|
||||
|
||||
## Specs for Configuration Formats
|
||||
|
||||
* [TOML Spec][]
|
||||
* [YAML Spec][]
|
||||
|
||||
@@ -599,7 +599,7 @@ git push
|
||||
[quickinstall]: /getting-started/install-hugo/#quick-install
|
||||
[releases]: https://github.com/spf13/hugo/releases
|
||||
[robusttheme]: https://github.com/dim0627/hugo_theme_robust
|
||||
[section]: /content-management/content-sections/
|
||||
[section]: /content-management/sections/
|
||||
[shortcodetemplates]: /templates/shortcode-templates/
|
||||
[sitemenu]: /content-management/menus/
|
||||
[templating]: /templates/
|
||||
|
||||
@@ -5,11 +5,10 @@ description: Site builds, automated deployments, and popular hosting solutions.
|
||||
date: 2016-11-01
|
||||
publishdate: 2016-11-01
|
||||
lastmod: 2016-11-01
|
||||
tags: []
|
||||
categories: [hosting and deployment]
|
||||
tags: []
|
||||
weight: 01
|
||||
draft: false
|
||||
aliases:
|
||||
aliases: []
|
||||
toc: false
|
||||
notesforauthors:
|
||||
---
|
||||
@@ -1,6 +1,6 @@
|
||||
---
|
||||
title: Deployment with Rysnc
|
||||
linktitle:
|
||||
linktitle: Deployment with Rysnc
|
||||
description:
|
||||
date: 2017-02-01
|
||||
publishdate: 2017-02-01
|
||||
@@ -8,7 +8,7 @@ lastmod: 2017-02-01
|
||||
categories: [hosting and deployment]
|
||||
tags: [rysnc,deployment]
|
||||
authors: [Adrien Poupin]
|
||||
weight:
|
||||
weight: 10
|
||||
draft: false
|
||||
aliases: [/tutorials/deployment-with-rsync/]
|
||||
toc: true
|
||||
|
||||
@@ -8,7 +8,7 @@ lastmod: 2017-02-01
|
||||
categories: [hosting and deployment]
|
||||
tags: [wercker,deployment,github,git]
|
||||
authors: [Arjen Schwarz, Samuel Debruyn]
|
||||
toc: false
|
||||
weight: 20
|
||||
draft: false
|
||||
aliases: [/tutorials/automated-deployments/]
|
||||
toc: true
|
||||
@@ -16,6 +16,8 @@ needsreview: false
|
||||
notesforauthors:
|
||||
---
|
||||
|
||||
## Goals
|
||||
|
||||
By the end of this guide, you will have completed the following:
|
||||
|
||||
* Creating a basic Hugo project and website
|
||||
@@ -88,7 +90,7 @@ Once the website is build, t's a good idea to run the following command to start
|
||||
hugo server --theme=herring-cove
|
||||
```
|
||||
|
||||
If everything is fine, you should see something similar to the image below when you go to <localhost:1313> in your browser.
|
||||
If everything is fine, you should see something similar to the image below when you go to <http://localhost:1313> in your browser.
|
||||
|
||||
![][1]
|
||||
|
||||
|
||||
@@ -8,16 +8,13 @@ lastmod: 2017-02-04
|
||||
categories: [hosting and deployment]
|
||||
tags: [hosting,bitbucket,deployment,aerobatic]
|
||||
authors: [Jason Gowans]
|
||||
weight:
|
||||
weight: 30
|
||||
draft: false
|
||||
toc: true
|
||||
aliases: [/tutorials/hosting-on-bitbucket/]
|
||||
needsreview: true
|
||||
notesforauthors:
|
||||
---
|
||||
|
||||
## Introduction
|
||||
|
||||
You can use [Bitbucket](https://bitbucket.org/) and [Aerobatic](https://www.aerobatic.com) to build, deploy, and host a Hugo website. Aerobatic is a static hosting service that integrates with Bitbucket and provides a free hosting tier.
|
||||
|
||||
## Assumptions
|
||||
|
||||
@@ -8,46 +8,36 @@ lastmod: 2017-02-01
|
||||
categories: [hosting and deployment]
|
||||
tags: [github,git,deployment,hosting]
|
||||
authors: [Spencer Lyon, Gunnar Morling]
|
||||
weight:
|
||||
weight: 40
|
||||
draft: false
|
||||
toc: true
|
||||
aliases: [/tutorials/github-pages-blog/]
|
||||
needsreview: true
|
||||
notesforauthors:
|
||||
---
|
||||
|
||||
{{% note %}}
|
||||
This hosting and deployment guide was originally contributed as a tutorial by [Spencer Lyon](http://spencerlyon.com/) and [Gunnar Morling](https://github.com/gunnarmorling/).
|
||||
{{% /note %}}
|
||||
|
||||
## Introduction
|
||||
## Assumptions
|
||||
|
||||
This tutorial describes how to deploy your Hugo based website to [GitHub pages](https://pages.github.com/).
|
||||
The following sections are based on the assumption that you are working with a "Project Pages Site". This means that you'll have your Hugo sources and the generated HTML output within a single repository (in contrast, with a "User/Organization Pages Site", you'd have one repo for the sources and another repo for the published HTML files; refer to the [GitHub Pages docs](https://help.github.com/articles/user-organization-and-project-pages/) to learn more).
|
||||
|
||||
The following sections are based on the assumption that you are working with a "Project Pages Site".
|
||||
This means that you'll have your Hugo sources and the generated HTML output within a single repository
|
||||
(in contrast, with a "User/Organization Pages Site", you'd have one repo for the sources and another repo for the published HTML files;
|
||||
refer to the [GitHub Pages docs](https://help.github.com/articles/user-organization-and-project-pages/) to learn more).
|
||||
## Deployment via `/docs` Folder on Master Branch
|
||||
|
||||
## Deployment via _/docs_ folder on master branch
|
||||
[As described](https://help.github.com/articles/configuring-a-publishing-source-for-github-pages/#publishing-your-github-pages-site-from-a-docs-folder-on-your-master-branch) in the GitHub Pages docs, you can deploy from a folder called _docs_ on your master branch. This requires to change the Hugo publish directory in the site config (e.g. _config.toml_):
|
||||
|
||||
[As described](https://help.github.com/articles/configuring-a-publishing-source-for-github-pages/#publishing-your-github-pages-site-from-a-docs-folder-on-your-master-branch) in the GitHub Pages docs, you can deploy from a folder called _docs_ on your master branch.
|
||||
This requires to change the Hugo publish directory in the site config (e.g. _config.toml_):
|
||||
```sh
|
||||
publishDir: "docs"
|
||||
```
|
||||
|
||||
publishDir: "docs"
|
||||
After running `hugo`, push your master branch to the remote repo and choose the _docs_ folder as the website source of your repo (in your GitHub project, go to "Settings " -> "GitHub Pages" -> "Source" -> Select "master branch /docs folder"). If that option isn't enabled, you likely haven't pushed your _docs_ folder yet.
|
||||
|
||||
After running `hugo`, push your master branch to the remote repo and choose the _docs_ folder as the website source of your repo
|
||||
(in your GitHub project, go to "Settings " -> "GitHub Pages" -> "Source" -> Select "master branch /docs folder").
|
||||
If that option isn't enabled, you likely haven't pushed your _docs_ folder yet.
|
||||
This is the simplest approach but requires the usage of a non-standard publish directory (GitHub Pages cannot be configured to use another directory than _docs_ currently). Also the presence of generated files on the master branch may not be to eveyone's taste.
|
||||
|
||||
This is the simplest approach but requires the usage of a non-standard publish directory
|
||||
(GitHub Pages cannot be configured to use another directory than _docs_ currently).
|
||||
Also the presence of generated files on the master branch may not be to eveyone's taste.
|
||||
## Deployment via `gh-pages` Branch
|
||||
|
||||
## Deployment via gh-pages branch
|
||||
|
||||
Alternatively, you can deploy site through a separate branch called "gh_pages".
|
||||
That approach is a bit more complex but has some advantages:
|
||||
Alternatively, you can deploy site through a separate branch called "gh_pages". That approach is a bit more complex but has some advantages:
|
||||
|
||||
* It keeps sources and generated HTML in two different branches
|
||||
* It uses the default _public_ folder
|
||||
@@ -55,18 +45,27 @@ That approach is a bit more complex but has some advantages:
|
||||
|
||||
### Preparations
|
||||
|
||||
These steps only need to be done once (replace "upstream" with the name of your remote, e.g. "origin"):
|
||||
These steps only need to be done once (replace "upstream" with the name of your remote; e.g., `origin`):
|
||||
|
||||
#### Add the Public Folder
|
||||
|
||||
First, add the _public_ folder to _.gitignore_ so it's ignored on the master branch:
|
||||
|
||||
echo "public" >> .gitignore
|
||||
```bash
|
||||
echo "public" >> .gitignore
|
||||
```
|
||||
|
||||
#### Initialize Your `gh-pages` Branch
|
||||
|
||||
Then initialize the gh-pages branch as an empty [orphan branch](https://git-scm.com/docs/git-checkout/#git-checkout---orphanltnewbranchgt):
|
||||
|
||||
git checkout --orphan gh-pages
|
||||
git reset --hard
|
||||
git commit --allow-empty -m "Initializing gh-pages branch"
|
||||
git push upstream gh-pages
|
||||
git checkout master
|
||||
```bash
|
||||
git checkout --orphan gh-pages
|
||||
git reset --hard
|
||||
git commit --allow-empty -m "Initializing gh-pages branch"
|
||||
git push upstream gh-pages
|
||||
git checkout master
|
||||
```
|
||||
|
||||
### Building and Deployment
|
||||
|
||||
@@ -78,12 +77,16 @@ Now check out the gh-pages branch into your _public_ folder, using git's [worktr
|
||||
|
||||
Regenerate the site using Hugo and commit the generated files on the gh-pages branch:
|
||||
|
||||
hugo
|
||||
cd public && git add --all && git commit -m "Publishing to gh-pages" & cd ..
|
||||
```bash
|
||||
hugo
|
||||
cd public && git add --all && git commit -m "Publishing to gh-pages" & cd ..
|
||||
```
|
||||
|
||||
If the changes in your local gh-pages branch look alright, push them to the remote repo:
|
||||
|
||||
git push upstream gh-pages
|
||||
```bash
|
||||
git push upstream gh-pages
|
||||
```
|
||||
|
||||
After a short while you'll see the updated contents on your GitHub Pages site.
|
||||
|
||||
@@ -91,7 +94,7 @@ After a short while you'll see the updated contents on your GitHub Pages site.
|
||||
|
||||
To automate these steps, you can create a script _scripts/publish_to_ghpages.sh_ with the following contents:
|
||||
|
||||
```
|
||||
```sh
|
||||
#!/bin/sh
|
||||
|
||||
DIR=$(dirname "$0")
|
||||
@@ -126,16 +129,19 @@ cd public && git add --all && git commit -m "Publishing to gh-pages (publish.sh)
|
||||
This will abort if there are pending changes in the working directory and also makes sure that all previously existing output files are removed.
|
||||
Adjust the script to taste, e.g. to include the final push to the remote repository if you don't need to take a look at the gh-pages branch before pushing. Or adding `echo yourdomainname.com >> CNAME` if you set up for your gh-pages to use customize domain.
|
||||
|
||||
## Deployment with Git 2.4 and earlier
|
||||
## Deployment with Git 2.4 and Earlier
|
||||
|
||||
The `worktree` command was only introduced in Git 2.5.
|
||||
If you are still on an earlier version and cannot update, you can simply clone your local repo into the _public_ directory, only keeping the gh-pages branch:
|
||||
The `worktree` command was only introduced in Git 2.5. If you are still on an earlier version and cannot update, you can simply clone your local repo into the _public_ directory, only keeping the gh-pages branch:
|
||||
|
||||
git clone .git --branch gh-pages public
|
||||
```sh
|
||||
git clone .git --branch gh-pages public
|
||||
```
|
||||
|
||||
Having re-generated the site, you'd push back the gh-pages branch to your primary local repo:
|
||||
|
||||
cd public && git add --all && git commit -m "Publishing to gh-pages" && git push origin gh-pages
|
||||
```sh
|
||||
cd public && git add --all && git commit -m "Publishing to gh-pages" && git push origin gh-pages
|
||||
```
|
||||
|
||||
The other steps are the same as with the worktree approach.
|
||||
|
||||
@@ -143,8 +149,8 @@ The other steps are the same as with the worktree approach.
|
||||
|
||||
As mentioned [in this GitHub's article](https://help.github.com/articles/user-organization-and-project-pages/), besides project pages, you may also want to host a user/organization page. Here are the key differences:
|
||||
|
||||
> - You must use the `username.github.io` naming scheme.
|
||||
> - Content from the `master` branch will be used to build and publish your GitHub Pages site.
|
||||
1. You must use the `username.github.io` naming scheme.
|
||||
2. Content from the `master` branch will be used to build and publish your GitHub Pages site.
|
||||
|
||||
It becomes much simpler in that case: we'll create two separate repos, one for Hugo's content, and a git submodule with the `public` folder's content in it.
|
||||
|
||||
@@ -158,7 +164,7 @@ It becomes much simpler in that case: we'll create two separate repos, one for H
|
||||
6. `git submodule add -b master git@github.com:<username>/<username>.github.io.git public`
|
||||
7. Almost done: add a `deploy.sh` script to help you (and make it executable: `chmod +x deploy.sh`):
|
||||
|
||||
```
|
||||
```sh
|
||||
#!/bin/bash
|
||||
|
||||
echo -e "\033[0;32mDeploying updates to GitHub...\033[0m"
|
||||
@@ -186,11 +192,10 @@ cd ..
|
||||
```
|
||||
7. `./deploy.sh "Your optional commit message"` to send changes to `<username>.github.io` (careful, you may also want to commit changes on the `<your-project>-hugo` repo).
|
||||
|
||||
That's it! Your personal page is running at [http://username.github.io/](http://username.github.io/) (after up to 10 minutes delay).
|
||||
That's it! Your personal page is running at [http://username.github.io/](http://username.github.io/)(after up to 10 minutes delay).
|
||||
|
||||
## Using a custom domain
|
||||
## Using a Custom Domain
|
||||
|
||||
If you'd like to use a custom domain for your GitHub Pages site, create a file _static/CNAME_ with the domain name as its sole contents.
|
||||
This will put the CNAME file to the root of the published site as required by GitHub Pages.
|
||||
If you'd like to use a custom domain for your GitHub Pages site, create a file _static/CNAME_ with the domain name as its sole contents. This will put the CNAME file to the root of the published site as required by GitHub Pages.
|
||||
|
||||
Refer to the [official documentation](https://help.github.com/articles/using-a-custom-domain-with-github-pages/) for further information.
|
||||
@@ -8,21 +8,19 @@ lastmod: 2016-06-23
|
||||
categories: [hosting and deployment]
|
||||
tags: [hosting,deployment,git,gitlab]
|
||||
authors: [Riku-Pekka Silvola]
|
||||
weight:
|
||||
weight: 50
|
||||
draft: false
|
||||
toc: true
|
||||
needsreview: true
|
||||
needsreview: false
|
||||
aliases: [/tutorials/hosting-on-gitlab/]
|
||||
notesforauthors:
|
||||
---
|
||||
|
||||
|
||||
[GitLab](https://gitlab.com/) makes it incredibly easy to build, deploy, and host your Hugo website.
|
||||
[GitLab](https://gitlab.com/) makes it incredibly easy to build, deploy, and host your Hugo website via their free GitLab Pages service, which provides [native support for Hugo, as well as numerous other static site generators](https://gitlab.com/pages/hugo).
|
||||
|
||||
## Assumptions
|
||||
|
||||
* Working familiarity with Git for version control
|
||||
* Completion of the [Quick Start][quickstart]
|
||||
* Completion of the Hugo [Quick Start][]
|
||||
* A [GitLab account](https://gitlab.com/users/sign_in)
|
||||
* A Hugo website on your local machine that you are ready to publish
|
||||
|
||||
@@ -34,6 +32,7 @@ cd your-hugo-site
|
||||
|
||||
In the root directory of your Hugo site, create a `.gitlab-ci.yml` file. The `.gitlab-ci.yml` configures the GitLab CI on how to build your page. Simply add the content below.
|
||||
|
||||
{{% input "gitlab-ci.yml" %}}
|
||||
```yml
|
||||
image: publysher/hugo
|
||||
|
||||
@@ -46,10 +45,11 @@ pages:
|
||||
only:
|
||||
- master
|
||||
```
|
||||
{{% /input %}}
|
||||
|
||||
## Push Your Hugo Website to GitLab
|
||||
|
||||
Next up, create a new repository on GitLab. It is *not* necessary to set the repository public. In addition, you might want to add `/public` to your .gitignore file, as there is no need to push compiled assets to GitLab.
|
||||
Next, create a new repository on GitLab. It is *not* necessary to make the repository public. In addition, you might want to add `/public` to your .gitignore file, as there is no need to push compiled assets to GitLab or keep your output website in version control.
|
||||
|
||||
```bash
|
||||
# initialize new git repository
|
||||
@@ -65,14 +65,14 @@ git remote add origin https://gitlab.com/YourUsername/your-hugo-site.git
|
||||
git push -u origin master
|
||||
```
|
||||
|
||||
## Wait for Your Page to be Built
|
||||
## Wait for Your Page to Build
|
||||
|
||||
That's it! You can now follow the CI agent building your page at https://gitlab.com/YourUsername/your-hugo-site/pipelines.
|
||||
That's it! You can now follow the CI agent building your page at https://gitlab.com/<YourUsername>/<your-hugo-site>/pipelines.
|
||||
|
||||
After the build has passed, your new website is available at `https://YourUsername.gitlab.io/your-hugo-site/`.
|
||||
After the build has passed, your new website is available at `https://<YourUsername>.gitlab.io/<your-hugo-site>/`.
|
||||
|
||||
## Next Steps
|
||||
|
||||
GitLab supports using custom CNAME's and TLS certificates. For more details on GitLab Pages, see [https://about.gitlab.com/2016/04/07/gitlab-pages-setup/](https://about.gitlab.com/2016/04/07/gitlab-pages-setup/).
|
||||
GitLab supports using custom CNAME's and TLS certificates. For more details on GitLab Pages, see the [GitLab Pages setup documentation](https://about.gitlab.com/2016/04/07/gitlab-pages-setup/).
|
||||
|
||||
[quickstart]: /getting-started/quick-start/
|
||||
[Quick Start]: /getting-started/quick-start/
|
||||
@@ -7,7 +7,7 @@ sitelink: http://2626.info/
|
||||
tags:
|
||||
- personal
|
||||
- blog
|
||||
image: 2626info-tn.png
|
||||
image: 2626info.png
|
||||
title: 2626.info
|
||||
---
|
||||
|
||||
|
||||
@@ -10,7 +10,7 @@ tags:
|
||||
- personal
|
||||
- blog
|
||||
- foundation
|
||||
image: antzucaro-tn.jpg
|
||||
image: antzucaro.jpg
|
||||
title: Ant Zucaro
|
||||
---
|
||||
|
||||
|
||||
@@ -10,6 +10,6 @@ tags:
|
||||
- company
|
||||
- blog
|
||||
- bootstrap
|
||||
image: apperneticioblog.png
|
||||
image: apperneticioblog.png
|
||||
title: Appernetic
|
||||
---
|
||||
|
||||
@@ -9,6 +9,6 @@ sourcelink: https://github.com/arresteddevops/ado-hugo
|
||||
tags:
|
||||
- podcast
|
||||
- bootstrap
|
||||
image: arresteddevops-tn.png
|
||||
image: arresteddevops.png
|
||||
title: arresteddevops
|
||||
---
|
||||
|
||||
@@ -9,7 +9,7 @@ sourcelink: https://gitlab.com/acodispo/andrewcodispoti-com
|
||||
tags:
|
||||
- personal
|
||||
- bootstrap
|
||||
image: asc-tn.jpg
|
||||
image: asc.jpg
|
||||
title: Andrew S Codispoti
|
||||
---
|
||||
|
||||
|
||||
@@ -8,7 +8,7 @@ sourcelink: https://github.com/astrochili/astrochili.github.io
|
||||
tags:
|
||||
- personal
|
||||
- blog
|
||||
image: astrochili-tn.png
|
||||
image: astrochili.png
|
||||
title: Roman Silin
|
||||
---
|
||||
|
||||
|
||||
@@ -6,7 +6,7 @@ licenseLink: ""
|
||||
sitelink: https://aydos.com/
|
||||
tags:
|
||||
- web applications
|
||||
image: aydoscom.png
|
||||
image: aydoscom.png
|
||||
title: aydos.com
|
||||
---
|
||||
|
||||
|
||||
@@ -7,7 +7,7 @@ sitelink: https://barricade.io
|
||||
tags:
|
||||
- company
|
||||
- security
|
||||
image: barricade-tn.png
|
||||
image: barricade.png
|
||||
title: Barricade
|
||||
---
|
||||
|
||||
|
||||
@@ -9,7 +9,7 @@ sourcelink: "https://github.com/bep/bepsays.com"
|
||||
tags:
|
||||
- personal
|
||||
- blog
|
||||
image: bepsays-tn.png
|
||||
image: bepsays.png
|
||||
title: bepsays.com
|
||||
---
|
||||
|
||||
|
||||
@@ -7,7 +7,7 @@ tags:
|
||||
- blog
|
||||
- community
|
||||
- interviews
|
||||
image: bugtrackersio-tn.jpg
|
||||
image: bugtrackersio.jpg
|
||||
title: bugtrackers.io
|
||||
---
|
||||
|
||||
|
||||
@@ -9,7 +9,7 @@ sourcelink: https://github.com/camunda/blog.camunda.org
|
||||
tags:
|
||||
- company
|
||||
- blog
|
||||
image: camunda-blog.png
|
||||
image: camunda-blog.png
|
||||
title: Camunda Blog
|
||||
---
|
||||
|
||||
|
||||
@@ -9,7 +9,7 @@ sourcelink: https://github.com/camunda/camunda-docs-theme
|
||||
tags:
|
||||
- company
|
||||
- documentation
|
||||
image: camunda-docs.png
|
||||
image: camunda-docs.png
|
||||
title: Camunda Docs
|
||||
---
|
||||
|
||||
|
||||
@@ -8,7 +8,7 @@ tags:
|
||||
- bootstrap
|
||||
- portfolio
|
||||
- tech
|
||||
image: cdnoverview-tn.png
|
||||
image: cdnoverview.png
|
||||
title: cdnoverview.com
|
||||
---
|
||||
|
||||
|
||||
@@ -7,6 +7,6 @@ sourcelink: https://github.com/hughgrigg/chineseboost-articles
|
||||
tags:
|
||||
- learning
|
||||
- education
|
||||
image: chinese-grammar-tn.png
|
||||
image: chinese-grammar.png
|
||||
title: Chinese Grammar
|
||||
---
|
||||
|
||||
@@ -6,7 +6,7 @@ sitelink: http://www.chingli.com/
|
||||
tags:
|
||||
- personal
|
||||
- blog
|
||||
image: chingli-tn.jpg
|
||||
image: chingli.jpg
|
||||
title: <span lang="zh-CN">青砾</span> (chingli)
|
||||
---
|
||||
|
||||
|
||||
@@ -9,7 +9,7 @@ sourcelink: https://github.com/SamuelDebruyn/chipsncookies-site
|
||||
tags:
|
||||
- personal
|
||||
- blog
|
||||
image: chipsncookies-tn.png
|
||||
image: chipsncookies.png
|
||||
title: Chips 'n' Cookies
|
||||
---
|
||||
|
||||
|
||||
@@ -7,6 +7,6 @@ sitelink: https://christianmendoza.me/
|
||||
tags:
|
||||
- personal
|
||||
- profile
|
||||
image: christianmendoza-tn.png
|
||||
image: christianmendoza.png
|
||||
title: christianmendoza.me
|
||||
---
|
||||
|
||||
@@ -7,6 +7,6 @@ sitelink: https://open.cinegy.com/
|
||||
sourcelink:
|
||||
tags:
|
||||
- documentation
|
||||
image: cinegyopen-tn.png
|
||||
image: cinegyopen.png
|
||||
title: Cinegy Open
|
||||
---
|
||||
@@ -9,6 +9,6 @@ tags:
|
||||
- fintech
|
||||
- payments
|
||||
- acquirer
|
||||
image: clearhaus-tn.png
|
||||
image: clearhaus.png
|
||||
title: Clearhaus
|
||||
---
|
||||
|
||||
@@ -9,7 +9,7 @@ tags:
|
||||
- company
|
||||
- documentation
|
||||
- foundation
|
||||
image: cloudshark-tn.jpg
|
||||
image: cloudshark.jpg
|
||||
title: CloudShark
|
||||
---
|
||||
|
||||
|
||||
@@ -9,6 +9,6 @@ sourcelink: https://github.com/igorkulman/coding-journal
|
||||
tags:
|
||||
- blog
|
||||
- portfolio
|
||||
image: codingjournal-tn.png
|
||||
image: codingjournal.png
|
||||
title: Coding Journal
|
||||
---
|
||||
|
||||
@@ -10,7 +10,7 @@ tags:
|
||||
- academic
|
||||
- blog
|
||||
- kube
|
||||
image: consequently.jpg
|
||||
image: consequently.jpg
|
||||
title: consequently.org
|
||||
---
|
||||
|
||||
|
||||
@@ -8,7 +8,7 @@ tags:
|
||||
- edtech
|
||||
- technology
|
||||
- blog
|
||||
image: ctlcompiled-tn.png
|
||||
image: ctlcompiled.png
|
||||
title: CompilED at CTL
|
||||
---
|
||||
|
||||
|
||||
@@ -9,7 +9,7 @@ sourcelink: https://github.com/danmux/danmux-hugo
|
||||
tags:
|
||||
- personal
|
||||
- blog
|
||||
image: danmux-tn.jpg
|
||||
image: danmux.jpg
|
||||
title: Danmux
|
||||
---
|
||||
|
||||
|
||||
@@ -7,7 +7,7 @@ tags:
|
||||
- tech
|
||||
- blog
|
||||
- website
|
||||
image: datapipelinearchitect-tn.jpg
|
||||
image: datapipelinearchitect.jpg
|
||||
title: Data Pipeline Architect
|
||||
---
|
||||
|
||||
|
||||
@@ -10,7 +10,7 @@ tags:
|
||||
- photography
|
||||
- portfolio
|
||||
- blog
|
||||
image: davidepetilli-tn.jpg
|
||||
image: davidepetilli.jpg
|
||||
title: Davide Petilli
|
||||
---
|
||||
|
||||
|
||||
@@ -9,7 +9,7 @@ tags:
|
||||
- personal
|
||||
- blog
|
||||
- tech
|
||||
image: davidrallen-tn.png
|
||||
image: davidrallen.png
|
||||
title: David Allen
|
||||
---
|
||||
|
||||
|
||||
@@ -7,7 +7,7 @@ sitelink: https://davidyat.es/
|
||||
tags:
|
||||
- personal
|
||||
- blog
|
||||
image: davidyates-tn.png
|
||||
image: davidyates.png
|
||||
title: David Yates
|
||||
---
|
||||
|
||||
|
||||
@@ -9,7 +9,7 @@ sourcelink: https://github.com/peteraba/devmonk.com
|
||||
tags:
|
||||
- educational
|
||||
- video
|
||||
image: devmonk-tn.jpg
|
||||
image: devmonk.jpg
|
||||
title: devmonk
|
||||
---
|
||||
|
||||
|
||||
@@ -8,7 +8,7 @@ sourcelink: https://github.com/dmitriid/dmitriid.com
|
||||
tags:
|
||||
- personal
|
||||
- blog
|
||||
image: dmitriid.com.png
|
||||
image: dmitriid.com.png
|
||||
title: dmitriid.com
|
||||
---
|
||||
|
||||
|
||||
@@ -7,7 +7,7 @@ sourcelink: https://github.com/emilyhorsman/buttercup
|
||||
tags:
|
||||
- personal
|
||||
- blog
|
||||
image: emilyhorsman.com-tn.jpg
|
||||
image: emilyhorsman.com.jpg
|
||||
title: emilyhorsman.com
|
||||
---
|
||||
|
||||
|
||||
@@ -11,6 +11,6 @@ tags:
|
||||
- esolia
|
||||
- rickcogley
|
||||
- japan
|
||||
image: esolia_com-tn.png
|
||||
image: esolia_com.png
|
||||
title: eSolia.com
|
||||
---
|
||||
|
||||
@@ -11,6 +11,6 @@ tags:
|
||||
- esolia
|
||||
- rickcogley
|
||||
- japan
|
||||
image: esolia_pro-tn.png
|
||||
image: esolia_pro.png
|
||||
title: eSolia.pro
|
||||
---
|
||||
|
||||
@@ -6,6 +6,6 @@ licenseLink: ""
|
||||
sitelink: https://docs.eurie.io
|
||||
tags:
|
||||
- documentation
|
||||
image: docs.eurie.io-tn.png
|
||||
image: docs.eurie.io.png
|
||||
title: eurie Desk docs
|
||||
---
|
||||
|
||||
@@ -9,7 +9,7 @@ sourcelink: https://github.com/fale/fale.io
|
||||
tags:
|
||||
- personal
|
||||
- blog
|
||||
image: fale-tn.png
|
||||
image: fale.png
|
||||
title: fale.io
|
||||
---
|
||||
|
||||
|
||||
@@ -7,7 +7,7 @@ sitelink: https://fixatom.com/
|
||||
tags:
|
||||
- personal
|
||||
- blog
|
||||
image: fixatom-tn.png
|
||||
image: fixatom.png
|
||||
title: Atom
|
||||
---
|
||||
|
||||
|
||||
@@ -10,7 +10,7 @@ tags:
|
||||
- community
|
||||
- documentation
|
||||
- translation
|
||||
image: fxsitecompat-tn.png
|
||||
image: fxsitecompat.png
|
||||
title: Firefox Site Compatibility
|
||||
---
|
||||
|
||||
|
||||
@@ -10,6 +10,6 @@ tags:
|
||||
- projects
|
||||
- music
|
||||
- drawings
|
||||
image: gntech-tn.png
|
||||
image: gntech.png
|
||||
title: gntech.se
|
||||
---
|
||||
|
||||
@@ -7,7 +7,7 @@ licenseLink: ""
|
||||
sitelink: http://getgb.io
|
||||
tags:
|
||||
- project
|
||||
image: gogb-tn.jpg
|
||||
image: gogb.jpg
|
||||
title: GoGB
|
||||
---
|
||||
|
||||
|
||||
@@ -8,6 +8,6 @@ sitelink: http://www.goin5minutes.com/
|
||||
sourcelink: https://github.com/arschles/go-in-5-minutes/tree/master/www
|
||||
tags:
|
||||
- screencasts
|
||||
image: goin5minutes-tn.png
|
||||
image: goin5minutes.png
|
||||
title: Go in 5 minutes
|
||||
---
|
||||
@@ -6,6 +6,6 @@ sourcelink: https://github.com/zerok/h10n.me
|
||||
tags:
|
||||
- personal
|
||||
- profile
|
||||
image: h10n.me-tn.png
|
||||
image: h10n.me.png
|
||||
title: h10n.me
|
||||
---
|
||||
|
||||
@@ -9,7 +9,7 @@ sourcelink: https://github.com/spf13/hugo/tree/master/docs
|
||||
tags:
|
||||
- documentation
|
||||
- bootstrap
|
||||
image: hugo-tn.jpg
|
||||
image: hugo.jpg
|
||||
title: Hugo
|
||||
---
|
||||
|
||||
|
||||
@@ -8,7 +8,7 @@ sourcelink: https://github.com/jamesacampbell/causes-and-effects-hugo
|
||||
tags:
|
||||
- personal
|
||||
- blog
|
||||
image: jamescampbell-tn.png
|
||||
image: jamescampbell.png
|
||||
title: jamescampbell.us
|
||||
---
|
||||
|
||||
|
||||
@@ -7,6 +7,6 @@ sitelink: http://jorgennilsson.com/
|
||||
tags:
|
||||
- personal
|
||||
- blog
|
||||
image: jorgennilsson-tn.png
|
||||
image: jorgennilsson.png
|
||||
title: jorgennilsson.com
|
||||
---
|
||||
|
||||
@@ -10,7 +10,7 @@ tags:
|
||||
- personal
|
||||
- blog
|
||||
- academic
|
||||
image: kjhealy-tn.jpg
|
||||
image: kjhealy.jpg
|
||||
title: Kieran Healy
|
||||
---
|
||||
|
||||
|
||||
@@ -9,7 +9,7 @@ tags:
|
||||
- personal
|
||||
- blog
|
||||
- programming
|
||||
image: klingt-net-tn.png
|
||||
image: klingt-net.png
|
||||
title: klingt net
|
||||
---
|
||||
|
||||
|
||||
@@ -8,7 +8,7 @@ sitelink: http://www.launchcode5.com/
|
||||
sourcelink: https://github.com/Launchcode5/launchcode5.com
|
||||
tags:
|
||||
- bootstrap
|
||||
image: launchcode-tn.jpg
|
||||
image: launchcode.jpg
|
||||
title: Launchcode Software Studios
|
||||
---
|
||||
|
||||
|
||||
@@ -8,7 +8,7 @@ sitelink: http://leepenney.com/
|
||||
tags:
|
||||
- personal
|
||||
- website
|
||||
image: leepenney-tn.jpg
|
||||
image: leepenney.jpg
|
||||
title: Lee Penney
|
||||
---
|
||||
|
||||
|
||||
@@ -7,6 +7,6 @@ sitelink: https://www.leowkahman.com/
|
||||
tags:
|
||||
- personal
|
||||
- blog
|
||||
image: leowkahman-tn.png
|
||||
image: leowkahman.png
|
||||
title: Leow Kah Man - Tech Blog
|
||||
---
|
||||
@@ -9,7 +9,7 @@ sourcelink: https://github.com/LK4D4/lk4d4.darth.io
|
||||
tags:
|
||||
- personal
|
||||
- blog
|
||||
image: lk4d4-tn.jpg
|
||||
image: lk4d4.jpg
|
||||
title: lk4d4.darth.io
|
||||
---
|
||||
|
||||
|
||||
@@ -10,6 +10,6 @@ tags:
|
||||
- reviews
|
||||
- education
|
||||
- audiophile
|
||||
image: losslesslife-tn.png
|
||||
image: losslesslife.png
|
||||
title: LosslessLife
|
||||
---
|
||||
|
||||
@@ -9,6 +9,6 @@ sourcelink: https://github.com/mariobox/Hugo-Source
|
||||
tags:
|
||||
- personal
|
||||
- blog
|
||||
image: mariosanchez-tn.jpg
|
||||
image: mariosanchez.jpg
|
||||
title: mariosanchez.org
|
||||
---
|
||||
|
||||
@@ -8,7 +8,7 @@ sourcelink: https://gitlab.com/mayan-edms/website
|
||||
tags:
|
||||
- paperless
|
||||
- floss
|
||||
image: mayan-edms-tn.png
|
||||
image: mayan-edms.png
|
||||
title: Mayan EDMS
|
||||
---
|
||||
|
||||
|
||||
@@ -9,7 +9,7 @@ sourcelink: https://bitbucket.org/mdwhatcott/michaelwhatcott.com-boilerplate/src
|
||||
tags:
|
||||
- personal
|
||||
- blog
|
||||
image: michaelwhatcott-tn.jpg
|
||||
image: michaelwhatcott.jpg
|
||||
title: michaelwhatcott
|
||||
---
|
||||
|
||||
|
||||
@@ -7,7 +7,7 @@ sitelink: http://engineering.mongodb.com/
|
||||
tags:
|
||||
- engineering
|
||||
- blog
|
||||
image: mongodb-eng-tn.png
|
||||
image: mongodb-eng.png
|
||||
title: The Mongodb Engineering Journal
|
||||
---
|
||||
|
||||
|
||||
@@ -9,6 +9,6 @@ tags:
|
||||
- personal
|
||||
- portfolio
|
||||
- design
|
||||
image: mtbhomer-tn.png
|
||||
image: mtbhomer.png
|
||||
title: mtbhomer.com
|
||||
---
|
||||
|
||||
@@ -9,7 +9,7 @@ sourcelink: https://github.com/nickoneill/blog.nickoneill.name
|
||||
tags:
|
||||
- personal
|
||||
- blog
|
||||
image: nickoneill-tn.jpg
|
||||
image: nickoneill.jpg
|
||||
title: authenticgeek
|
||||
---
|
||||
|
||||
|
||||
@@ -9,6 +9,6 @@ sourcelink: https://github.com/shivanshuag/shivanshuag.github.io/tree/new
|
||||
tags:
|
||||
- personal
|
||||
- blog
|
||||
image: ninjaducks-tn.png
|
||||
image: ninjaducks.png
|
||||
title: ninjaducks.in
|
||||
---
|
||||
|
||||
@@ -9,7 +9,7 @@ sourcelink: https://github.com/ninya-io/ninya-io.github.io/tree/dev
|
||||
tags:
|
||||
- project
|
||||
- blog
|
||||
image: ninya-tn.jpg
|
||||
image: ninya.jpg
|
||||
title: ninya.io
|
||||
---
|
||||
|
||||
|
||||
@@ -6,6 +6,6 @@ sitelink: http://nodesk.co/
|
||||
tags:
|
||||
- digital nomad
|
||||
- web
|
||||
image: nodesk-tn.png
|
||||
image: nodesk.png
|
||||
title: nodesk.co
|
||||
---
|
||||
|
||||
@@ -8,6 +8,6 @@ sourcelink: https://github.com/peterychuang/peterychuang.github.io/tree/source
|
||||
tags:
|
||||
- personal
|
||||
- blog
|
||||
image: novelist-xyz.png
|
||||
image: novelist-xyz.png
|
||||
title: Peter Y. Chuang
|
||||
---
|
||||
|
||||
@@ -9,7 +9,7 @@ sourcelink: https://github.com/natefinch/npf
|
||||
tags:
|
||||
- personal
|
||||
- blog
|
||||
image: npf-tn.jpg
|
||||
image: npf.jpg
|
||||
title: npf.io
|
||||
---
|
||||
|
||||
|
||||
@@ -9,7 +9,7 @@ sourcelink: https://github.com/peteraba/peteraba.com
|
||||
tags:
|
||||
- personal
|
||||
- blog
|
||||
image: peteraba-tn.jpg
|
||||
image: peteraba.jpg
|
||||
title: peteraba
|
||||
---
|
||||
|
||||
|
||||
@@ -0,0 +1,15 @@
|
||||
---
|
||||
date: 2017-02-21T12:26:26+01:00
|
||||
description: "Corporate website a event management agency"
|
||||
license: ""
|
||||
licenseLink: ""
|
||||
sitelink: https://promotive.es
|
||||
tags:
|
||||
- company
|
||||
- corporate
|
||||
- spanish
|
||||
- event management
|
||||
- bootstrap
|
||||
thumbnail: /img/promotive.png
|
||||
title: Promotive
|
||||
---
|
||||
@@ -8,6 +8,6 @@ sourcelink: https://github.com/moonytheloony/Blog-Web
|
||||
tags:
|
||||
- personal
|
||||
- blog
|
||||
image: rahulrai_in-tn.png
|
||||
image: rahulrai_in.png
|
||||
title: My Take on Cloud
|
||||
---
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user