diff --git a/LICENSE b/LICENSE index a0d568843366154ee6a96df46b4dad63819dfde7..a4d7087758599f9900dfb327ef3052e6d2e6f1b5 100644 --- a/LICENSE +++ b/LICENSE @@ -1,6 +1,6 @@ The MIT License (MIT) -Copyright (c) 2019 Giuseppe Pignataro. +Copyright (c) 2018 LIUZHICHAO.COM 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 diff --git a/README.md b/README.md index 01a835eed31de67c82790097c8726cf64e12f84b..9cd82cfa2d3030ee6887adf119bb856e505f3063 100644 --- a/README.md +++ b/README.md @@ -15,9 +15,7 @@ To see this theme in action, Here is a live [demo site](https://www.fsb01.com) * A More coerent style beetwen page and sections * Multilanguage support. * Added configuration file for use on [Netlify](https://www.netlify.com) -* Reading Time -* Dark/Light mode -* Word Count +* Dark/Light mode * Wrap Image with Figure Tag without Shortcode. Thanks [Junian.Net](https://www.junian.net/hugo-image-figure-wrap/) * Load images with Lazy Load By [lazysizes](https://github.com/aFarkas/lazysizes) * Automatically highlighting code By [Google code-prettify](https://github.com/google/code-prettify), Customizable styles via CSS. See the [themes gallery](https://rawgit.com/google/code-prettify/master/styles/index.html). diff --git a/archetypes/default.md b/archetypes/default.md index 82d1c0523c01a15ed98cae6424e51882c94a3eea..ce48f5ec0fdfff1f937c517d65cfcba5c343f180 100644 --- a/archetypes/default.md +++ b/archetypes/default.md @@ -4,9 +4,7 @@ date: {{ .Date }} draft: true description: categories: - - -tags: - - + - featured_image: author: "" ---- +--- \ No newline at end of file diff --git a/exampleSite/config.toml b/exampleSite/config.toml index 241c21c4281c851e5dc36178a46c5a033440bdf1..523871f4702f2fe51c06f8f607712fa6eb4013a2 100644 --- a/exampleSite/config.toml +++ b/exampleSite/config.toml @@ -38,6 +38,11 @@ googleAnalytics = "" url = "/categories/" weight = 3 + [[menu.main]] + name = "About" + url = "/about" + weight = 4 + [params] since = 2012 author = "Fastbyte01" # Author's name diff --git a/exampleSite/content/about.md b/exampleSite/content/about.md index 77adcf16a45824dbb69a549891160851329d9afd..318d60f091baebea2416e7928cb20940d874b340 100644 --- a/exampleSite/content/about.md +++ b/exampleSite/content/about.md @@ -1,7 +1,9 @@ +++ -title = "About Hugo" +title = "About" date = "2014-04-09" -menu = "main" +aliases = ["about-us","about-hugo","contact"] +[ author ] + name = "Hugo Authors" +++ Hugo is the **world’s fastest framework for building websites**. It is written in Go. diff --git a/exampleSite/content/posts/creating-a-new-theme.md b/exampleSite/content/posts/creating-a-new-theme.md old mode 100755 new mode 100644 index b3da5cfe02bc5801db2237a294a15c83773dfafd..fa68901fa40f37030dfd10fa06a6057e571780dc --- a/exampleSite/content/posts/creating-a-new-theme.md +++ b/exampleSite/content/posts/creating-a-new-theme.md @@ -1,11 +1,18 @@ --- -title: Creating a New Theme -author: "Michael Henderson" -tags: ["Theme", "Hugo"] -categories: ["Uncategorized"] +author: + name: "Michael Henderson" date: 2014-09-28 +linktitle: Creating a New Theme +type: +- post +- posts +title: Creating a New Theme +weight: 10 +series: +- Hugo 101 --- + ## Introduction This tutorial will show you how to create a simple theme in Hugo. I assume that you are familiar with HTML, the bash command line, and that you are comfortable using Markdown to format content. I'll explain how Hugo uses templates and how you can organize your templates to create a theme. I won't cover using CSS to style your theme. @@ -22,7 +29,7 @@ $ echo this is a command this is a command ## edit the file -$vi foo.md +$ vi foo.md +++ date = "2014-09-28" title = "creating a new theme" diff --git a/exampleSite/content/posts/goisforlovers.fr.md b/exampleSite/content/posts/goisforlovers.fr.md new file mode 100644 index 0000000000000000000000000000000000000000..80ec6328a3903a8f7e8ad6b79c8cd1a0397d2cea --- /dev/null +++ b/exampleSite/content/posts/goisforlovers.fr.md @@ -0,0 +1,352 @@ ++++ +categories = ["Go"] +date = "2014-04-02" +description = "" +featured = "pic02.jpg" +featuredalt = "" +featuredpath = "date" +linktitle = "" +slug = "Introduction aux modeles Hugo" +title = "Introduction aux modèles (Hu)go" +type = ["posts","post"] +[ author ] + name = "Michael Henderson" ++++ + +Hugo utilise l'excellente librairie [go][] [html/template][gohtmltemplate] pour +son moteur de modèles. c'est un moteur extrêmement léger qui offre un très petit +nombre de fonctions logiques. À notre expérience, c'est juste ce qu'il faut pour +créer un bon site web statique. Si vous avez déjà utilisé d'autre moteurs de +modèles pour différents langages ou frameworks, vous allez retrouver beaucoup de +similitudes avec les modèles go. + +Ce document est une introduction sur l'utilisation de Go templates. La +[documentation go][gohtmltemplate] fourni plus de détails. + +## Introduction aux modèles Go + +Go templates fournit un langage de modèles très simple. Il adhère à la +conviction que les modèles ou les vues doivent avoir une logique des plus +élémentaires. L'une des conséquences de cette simplicité est que les modèles +seront plus rapides a être analysés. + +Une caractéristique unique de Go templates est qu'il est conscient du contenu. +Les variables et le contenu va être nettoyé suivant le contexte d'utilisation. +Plus de détails sont disponibles dans la [documentation go][gohtmltemplate]. + +## Syntaxe basique + +Les modèles en langage Go sont des fichiers HTML avec l'ajout de variables et +fonctions. + +**Les variables Go et les fonctions sont accessibles avec {{ }}** + + +Accès à une variable prédéfinie "foo": + + {{ foo }} + +**Les paramètres sont séparés par des espaces** + +Appel de la fonction add avec 1 et 2 en argument** + + {{ add 1 2 }} + +**Les méthodes et les champs sont accessibles par un point** + +Accès au paramètre de la page "bar" + + {{ .Params.bar }} + +**Les parenthèses peuvent être utilisées pour grouper des éléments ensemble** +``` +{{ if or (isset .Params "alt") (isset .Params "caption") }} Caption {{ end }} +``` + +## Variables + +Chaque modèle go a une structure (objet) mis à sa disposition. Avec Hugo, à +chaque modèle est passé soit une page, soit une structure de nœud, suivant quel +type de page vous rendez. Plus de détails sont disponibles sur la page des +[variables](/layout/variables). + +Une variable est accessible par son nom. + + {{ .Title }} + +Les variables peuvent également être définies et appelées. + + {{ $address := "123 Main St."}} + {{ $address }} + + +## Functions + +Go templace est livré avec quelques fonctions qui fournissent des +fonctionnalités basiques. Le système de Go template fourni également un +mécanisme permettant aux applications d'étendre les fonctions disponible. Les +[fonctions de modèle Hugo](/layout/functions) fourni quelques fonctionnalités +supplémentaires que nous espérons qu'elles seront utiles pour vos sites web. +Les functions sont appelées en utilisant leur nom suivi par les paramètres +requis séparés par des espaces. Des fonctions de modèles ne peuvent pas être +ajoutées sans recompiler Hugo. + +**Exemple:** + + {{ add 1 2 }} + +## Inclusions + +Lorsque vous incluez un autre modèle, vous devez y passer les données qu'il sera +en mesure d'accèder. Pour passer le contexte actuel, pensez à ajouter un point. +La localisation du modèle sera toujours à partir du répertoire /layout/ dans +Hugo. + +**Exemple:** + + {{ template "chrome/header.html" . }} + + +## Logique + +Go templates fourni les itérations et la logique conditionnèle des plus basique. + +### Itération + +Comme en go, les modèles go utilisent fortement *range* pour itérer dans une +map, un array ou un slice. Les exemples suivant montre différentes façons +d'utiliser *range* + +**Exemple 1: En utilisant le context** + + {{ range array }} + {{ . }} + {{ end }} + +**Exemple 2: En déclarant un nom de variable** + + {{range $element := array}} + {{ $element }} + {{ end }} + +**Exemple 2: En déclarant un nom de varialbe pour la clé et la valeur** + + {{range $index, $element := array}} + {{ $index }} + {{ $element }} + {{ end }} + +### Conditions + +*If*, *else*, *with*, *or*, *&*, *and* fournissent la base pour la logique +conditionnelle avec Go templates. Comme *range*, chaque déclaration est fermé +avec `end`. + +Go templates considère les valeurs suivante comme *false* : + +* false +* 0 +* tout array, slice, map ou chaine d'une longueur de zéro + +**Exemple 1: If** + + {{ if isset .Params "title" }}

{{ index .Params "title" }}

{{ end }} + +**Exemple 2: If -> Else** + + {{ if isset .Params "alt" }} + {{ index .Params "alt" }} + {{else}} + {{ index .Params "caption" }} + {{ end }} + +**Exemple 3: And & Or** +``` +{{ if and (or (isset .Params "title") (isset .Params "caption")) + (isset .Params "attr")}} +``` +**Exemple 4: With** + +Une manière alternative d'écrire un "if" et de référencer cette même valeur est +d'utiliser "with". Cela permet de remplacer le contexte `.` par cet valeur et +saute le bloc si la variable est absente. + +Le premier exemple peut être simplifié à ceci : + + {{ with .Params.title }}

{{ . }}

{{ end }} + +**Exemple 5: If -> Else If** + + {{ if isset .Params "alt" }} + {{ index .Params "alt" }} + {{ else if isset .Params "caption" }} + {{ index .Params "caption" }} + {{ end }} + +## *Pipes* + +L'un des composants le plus puissant de Go templates est la capacité d'empiler +les action l'une après l'autre. Cela est fait en utilisant les *pipes*. +Empruntés aux *pipes* unix, le concept est simple. Chaque sortie de *pipeline* +devient l'entrée du *pipe* suivant. + +À cause de la syntaxe très simple de Go templates, le *pipe* est essentiel pour +être capable d'enchainer les appels de fonctions. Une limitation des *pipes* +est qu'il ne peuvent fonctionner seulement avec une seule valeur et cette valeur +devient le dernier paramètre du prochain *pipeline*. + +Quelques exemples simple devrait vous aider à comprendre comment utiliser les +*pipes*. + +**Exemple 1 :** + + {{ if eq 1 1 }} Same {{ end }} + +est identique à + + {{ eq 1 1 | if }} Same {{ end }} + + +Il semble étrange de placer le *if* à la fin, mais il fournit une bonne +illustration de la façon d'utiliser les tuyaux. + +**Exemple 2 :** + + {{ index .Params "disqus_url" | html }} + +Accès au paramètre de page nommé "disqus_url" et échappement du HTML + +**Exemple 3 :** +``` +{{ if or (or (isset .Params "title") (isset .Params "caption")) + (isset .Params "attr")}} +Stuff Here +{{ end }} +``` +Peut être réécrit en + +``` +{{ isset .Params "caption" | or isset .Params "title" | + or isset .Params "attr" | if }} +Stuff Here +{{ end }} +``` + +## Contexte (alias. le point) + +Le concept le plus facilement négligé pour comprendre les modèles go est que +{{ . }} fait toujours référence au contexte actuel. Dans le plus haut niveau de +votre modèle, ce sera l'ensemble des données mis à votre disposition. Dans une +itération, ce sera la valeur de l'élément actuel. Enfin, dans une boucle, le +contexte change. . ne fera plus référence aux données disponibles dans la page +entière. Si vous avez besoin y d'accèder depuis l'intérieur d'une boucle, il est +judicieux d'y définir comme variable au lieu de dépendre du contexte. + +**Exemple:** +``` +{{ $title := .Site.Title }} +{{ range .Params.tags }} +
  • + {{ . }} - {{ $title }}
  • +{{ end }} +``` + +Notez que, une fois que nous sommes entrés dans la boucle, la valeur de +{{ . }} a changée. Nous avons défini une variable en dehors de la boucle, afin +d'y avoir accès dans la boucle. + +# Les Paramètres d'Hugo + +Hugo fournit l'option de passer des valeurs au modèle depuis la configuration du +site, ou depuis les métadonnées de chaque partie du contenu. Vous pouvez définir +n'importe quelle valeur de n'importe quel type (supporté par votre section +liminaire / format de configuration) et les utiliser comme vous le souhaitez +dans votre modèle. + +## Utiliser les paramètres de contenu (page) + +Dans chaque partie du contenu, vous pouvez fournir des variables pour être +utilisées par le modèle. Cela se passe dans la +[section liminaire](/content/front-matter). + +Un exemple de cela est utilisé par ce site de documentation. La plupart des +pages bénéficient de la présentation de la table des matières. Quelques fois, +la table des matières n'a pas beaucoup de sens. Nous avons défini une variable +dans notre section liminaire de quelques pages pour désactiver la table des +matières. + +Ceci est un exemple de section liminaire : + +``` +--- +title: "Permalinks" +date: "2013-11-18" +aliases: + - "/doc/permalinks/" +groups: ["extras"] +groups_weight: 30 +notoc: true +--- +``` + +Ceci est le code correspondant dans le modèle : + + {{ if not .Params.notoc }} +
    + {{ .TableOfContents }} +
    + {{ end }} + + + +## Utiliser les paramètres de site (config) + +Dans votre configuration de plus haut niveau (ex `config.yaml`), vous pouvez +définir des paramètres de site, dont les valeurs vous seront accessibles. + +Pour les instances, vous pourriez délarer : + +```yaml +params: + CopyrightHTML: "Copyright © 2013 John Doe. All Rights Reserved." + TwitterUser: "spf13" + SidebarRecentLimit: 5 +``` + +Avec un pied de page, vous devriez déclarer un `