From 742771870aa80a269a28d4f5cf1bbd6e47c4ae78 Mon Sep 17 00:00:00 2001 From: Ryan Watters Date: Wed, 22 Feb 2017 21:41:31 -0600 Subject: [PATCH] Add first drafts of lists, sections, taxonomy templates --- content-changes.md | 434 ++++++------------ .../content-management/content-summaries.md | 4 +- content/content-management/content-types.md | 4 +- content/content-management/sections.md | 4 +- content/content-management/taxonomies.md | 17 +- .../contribute-to-the-hugo-docs.md | 58 ++- content/functions/count.md | 17 + content/getting-started/quick-start.md | 2 +- content/templates/lists-in-hugo.md | 28 ++ content/templates/rss-templates.md | 21 +- ...list-templates.md => section-templates.md} | 166 ++++--- content/templates/single-page-templates.md | 41 +- content/templates/taxonomy-templates.md | 212 +++++---- .../taxonomy-variables.md | 4 +- .../sections-explained.afdesign | Bin 28830 -> 29911 bytes .../site-hierarchy.afdesign | Bin 0 -> 62995 bytes layouts/shortcodes/allaliases.html | 2 +- layouts/shortcodes/gh.html | 14 +- layouts/shortcodes/ghrepo.html | 1 + layouts/shortcodes/lookupexplanation.html | 1 + layouts/shortcodes/note.html | 4 +- layouts/shortcodes/warning.html | 4 +- .../layouts/partials/lookup-explanation.html | 6 + .../scss/components/_lookup-explanation.scss | 17 + themes/hugodocs/pipeline/scss/style.scss | 1 + tree.md | 4 +- 26 files changed, 542 insertions(+), 524 deletions(-) create mode 100644 content/functions/count.md create mode 100644 content/templates/lists-in-hugo.md rename content/templates/{section-and-list-templates.md => section-templates.md} (72%) create mode 100644 dev-and-design-resources/site-hierarchy.afdesign create mode 100644 layouts/shortcodes/ghrepo.html create mode 100644 layouts/shortcodes/lookupexplanation.html create mode 100644 themes/hugodocs/layouts/partials/lookup-explanation.html create mode 100644 themes/hugodocs/pipeline/scss/components/_lookup-explanation.scss diff --git a/content-changes.md b/content-changes.md index 5e67f6466..d96597351 100644 --- a/content-changes.md +++ b/content-changes.md @@ -9,7 +9,28 @@ ## Changes to Existing Sections -The following is an *abbreviated* listing and only includes the *larger* changes to content organization. These changes do not include copy edits for consistent usage, which easily numbers in the thousands at this point. +The following is an *abbreviated* listing and only includes the *larger* changes to content organization. Everything is ordered according to [existing site structure and site navigation](http://gohugo.io/overview/introduction/). These changes do not include copy edits for consistent usage, which easily numbers in the thousands, if not more. + +### Download Hugo + +This is no longer a site navigation link and is instead a button along with "File and Issue" and "Discuss Hugo". + +### Site Showcase + +### Press & Articles + +### About Hugo + +### Getting Started + +### Content + +### Themes + +### Templates + +### Taxonomies + ### [Extras](http://gohugo.io/extras) @@ -19,6 +40,8 @@ The following is an *abbreviated* listing and only includes the *larger* changes * **Aliases** Incorporated into `/content-management/url-management/` * **Analytics** Incorporated into /templates/partial-templates/#built-in +### Community + ### [Tutorials](http://gohugo.io/tutorials) * Moved all installation guides to /getting-started/install-hugo/ @@ -27,298 +50,133 @@ 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 +### Troubleshooting +### Tools +### Hugo Cmd Reference + +This hasn't been touched. I'll make the necessary style changes once/if the site is integrated into the Hugo GH repo since these pages are pulled automatically using Viper. + +### Issues & Help + +This is no longer a site navigation link and is instead a button along with "Download" and "Discuss Hugo". ## Content Organization: Site Navigation -The following is a list of weights for the newly restructure site architecture +The following shows weights and ordering for the newly restructured site architecture. + +### "About Hugo" Ordering (- weight) + +_index - 01 +what is hugo - 10 +hugo features - 20 +the benefits of static - 30 +why i built hugo - 40 +roadmap - 50 +apache license - 60 + +### "Getting Started" Ordering (- weight) + +* _index.md - 01 +* quick start - 10 +* using the hugo docs - 20 +* install from source - 30 +* install on linux - 40 +* install on mac - 50 +* install on pc - 60 +* basic usage - 70 +* directory structure - 80 +* configuration - 90 + +### "Content Management" Ordering (- weight) + +* _index.md - 01 +* Content Organization - 10 +* Supported Content Formats - 20 +* Front Matter - 30 +* Shortcodes - 40 +* Sections - 50 +* Content Types - 60 +* Archetypes - 70 +* Taxonomies - 80 +* Content Summaries - 90 +* Cross References - 100 +* URL Management - 110 +* Menus - 120 +* Table of Contents - 130 +* Comments - 140 +* Multilingual Mode - 150 + +### "Templates" Ordering (- weight) + +* _index - 01 +* go template primer - 10 +* base templates and blocks - 20 +* lists in Hugo - 25 +* homepage template - 30 +* section templates - 40 +* taxonomy templates - 50 +* single page templates - 60 +* content view templates - 70 +* data templates - 80 +* partial templates - 90 +* shortcode templates - 100 +* local file templates - 110 +* custom 404 page - 120 +* menu templates - 130 +* pagination - 140 +* rss templates - 150 +* sitemap template - 160 +* additional templating languages - 170 +* template debugging - 180 + +## "Functions" Ordering + +**Ordered by title (note that `.Title` is all lowercase, whereas `.Linktitle` is used for proper casing)** + +### "Variables and Params" Ordering (- weight) + +* _index.md - 01 +* site variables - 10 +* page variables - 20 +* taxonomy variables - 30 +* file variables - 40 +* shortcode git and huge variables - 50 + +### "Hosting and Deployment" Ordering (- weight) + +* _index.md - 01 +* deployment with rsync - 10 +* deployment with wercker - 20 +* hosting on bitbucket - 30 +* hosting on github - 40 +* hosting on gitlab - 50 + +### "Themes" Ordering (- weight) + +* _index.md - 01 +* installing and using themes - 10 +* customizing a theme - 20 +* creating a them - 30 +* theme showcase - 30 + +### "Site Showcase" Ordering + +**Ordered by `.PublishDate`** + +### "Themes" Ordering (- weight) + +* _index.md - 01 +* Installing and Using Themes - 10 +* Customizing a Theme - 20 +* Creating a Theme - 30 +* Theme Showcase - 40 + +### "Troubleshooting" Ordering + +**Ordered by title** ## Content Organization: Source -**Updated 2017-02-21** - -``` -. -├── _index.md -├── about-hugo -│   ├── _index.md -│   ├── benefits-of-static.md -│   ├── hugo-features.md -│   ├── license.md -│   ├── roadmap.md -│   ├── what-is-hugo.md -│   └── why-i-built-hugo.md -├── commands -│   └── _index.md -├── content-management -│   ├── _index.md -│   ├── archetypes.md -│   ├── content-organization.md -│   ├── content-sections.md -│   ├── content-summaries.md -│   ├── content-types.md -│   ├── cross-references.md -│   ├── front-matter.md -│   ├── menus.md -│   ├── multilingual-mode.md -│   ├── shortcodes.md -│   ├── supported-content-formats.md -│   ├── table-of-contents.md -│   ├── taxonomies.md -│   └── url-management.md -├── contribute-to-hugo -│   ├── _index.md -│   ├── add-your-site-to-the-showcase.md -│   ├── contribute-to-hugo-development.md -│   └── contribute-to-the-hugo-docs.md -├── developer-tools -│   ├── _index.md -│   ├── migrate-to-hugo.md -│   └── syntax-highlighting.md -├── functions -│   ├── _index.md -│   ├── abslangurl.md -│   ├── absurl.md -│   ├── after.md -│   ├── apply.md -│   ├── base64decode.md -│   ├── base64encode.md -│   ├── chomp.md -│   ├── countrunes.md -│   ├── countwords.md -│   ├── dateformat.md -│   ├── default-function.md -│   ├── delimit.md -│   ├── dict.md -│   ├── echoparam.md -│   ├── emojify.md -│   ├── findre.md -│   ├── first.md -│   ├── get.md -│   ├── getenv.md -│   ├── getpage.md -│   ├── haschildren.md -│   ├── hasmenucurrent.md -│   ├── hasprefix.md -│   ├── highlight.md -│   ├── htmlescape.md -│   ├── htmlunescape.md -│   ├── humanize.md -│   ├── i18n.md -│   ├── imageconfig.md -│   ├── in.md -│   ├── index-function.md -│   ├── int.md -│   ├── intersect.md -│   ├── ismenucurrent.md -│   ├── isset.md -│   ├── jsonify.md -│   ├── last.md -│   ├── lower.md -│   ├── markdownify.md -│   ├── math.md -│   ├── md5.md -│   ├── param.md -│   ├── partialcached.md -│   ├── plainify.md -│   ├── pluralize.md -│   ├── printf.md -│   ├── querify.md -│   ├── range.md -│   ├── readdir.md -│   ├── readfile.md -│   ├── rel.md -│   ├── rellangurl.md -│   ├── relref.md -│   ├── relurl.md -│   ├── render.md -│   ├── replace.md -│   ├── safecss.md -│   ├── safehtml.md -│   ├── safehtmlattr.md -│   ├── safejs.md -│   ├── safeurl.md -│   ├── scratch.md -│   ├── seq.md -│   ├── sha1.md -│   ├── sha256.md -│   ├── shuffle.md -│   ├── singularize.md -│   ├── slice.md -│   ├── slicestr.md -│   ├── sort.md -│   ├── split.md -│   ├── string.md -│   ├── substr.md -│   ├── the-dot.md -│   ├── time.md -│   ├── title.md -│   ├── trim.md -│   ├── unix.md -│   ├── upper.md -│   ├── urlize.md -│   ├── where.md -│   └── with.md -├── getting-started -│   ├── _index.md -│   ├── basic-usage.md -│   ├── configuration.md -│   ├── directory-structure.md -│   ├── install-hugo.md -│   ├── quick-start.md -│   └── using-the-hugo-docs.md -├── hosting-and-deployment -│   ├── _index.md -│   ├── deployment-with-rsync.md -│   ├── deployment-with-wercker.md -│   ├── hosting-on-bitbucket.md -│   ├── hosting-on-github.md -│   └── hosting-on-gitlab.md -├── mailing-list.md -├── news -│   ├── _index.md -│   ├── press-and-articles.md -│   └── release-notes.md -├── showcase -│   ├── 2626info.md -│   ├── _index.md -│   ├── antzucaro.md -│   ├── appernetic.md -│   ├── arresteddevops.md -│   ├── asc.md -│   ├── astrochili.md -│   ├── aydoscom.md -│   ├── barricade.md -│   ├── bepsays.md -│   ├── bugtrackers.io.md -│   ├── camunda-blog.md -│   ├── camunda-docs.md -│   ├── cdnoverview.md -│   ├── chinese-grammar.md -│   ├── chingli.md -│   ├── chipsncookies.md -│   ├── christianmendoza.md -│   ├── cinegyopen.md -│   ├── clearhaus.md -│   ├── cloudshark.md -│   ├── coding-journal.md -│   ├── consequently.md -│   ├── ctlcompiled.md -│   ├── danmux.md -│   ├── datapipelinearchitect.md -│   ├── davidepetilli.md -│   ├── davidrallen.md -│   ├── davidyates.md -│   ├── devmonk.md -│   ├── dmitriid.com.md -│   ├── emilyhorsman.com.md -│   ├── esolia-com.md -│   ├── esolia-pro.md -│   ├── eurie.md -│   ├── fale.md -│   ├── fixatom.md -│   ├── fxsitecompat.md -│   ├── gntech.md -│   ├── gogb.md -│   ├── goin5minutes.md -│   ├── h10n.me.md -│   ├── hugo.md -│   ├── jamescampbell.md -│   ├── jorgennilsson.md -│   ├── kieranhealy.md -│   ├── klingt-net.md -│   ├── launchcode5.md -│   ├── leepenney.md -│   ├── leowkahman.md -│   ├── lk4d4.darth.io.md -│   ├── losslesslife.md -│   ├── mariosanchez.md -│   ├── mayan-edms.md -│   ├── michaelwhatcott.md -│   ├── mongodb-eng-journal.md -│   ├── mtbhomer.md -│   ├── nickoneill.md -│   ├── ninjaducks.in.md -│   ├── ninya.io.md -│   ├── nodesk.md -│   ├── novelist-xyz.md -│   ├── npf.md -│   ├── peteraba.md -│   ├── rahulrai.md -│   ├── rakutentech.md -│   ├── rdegges.md -│   ├── readtext.md -│   ├── richardsumilang.md -│   ├── rick-cogley-info.md -│   ├── ridingbytes.md -│   ├── robertbasic.md -│   ├── scottcwilson.md -│   ├── shapeshed.md -│   ├── shelan.md -│   ├── silvergeko.md -│   ├── softinio.md -│   ├── spf13.md -│   ├── steambap.md -│   ├── stefano.chiodino.md -│   ├── stou.md -│   ├── szymonkatra.md -│   ├── techmadeplain.md -│   ├── tendermint.md -│   ├── thecodeking.md -│   ├── thehome.md -│   ├── tutorialonfly.md -│   ├── ucsb.md -│   ├── upbeat.md -│   ├── vamp.md -│   ├── viglug.org.md -│   ├── vurt.co.md -│   ├── yslow-rules.md -│   ├── ysqi.md -│   └── yulinling.net.md -├── templates -│   ├── _index.md -│   ├── ace-templating.md -│   ├── amber-templating.md -│   ├── base-templates-and-blocks.md -│   ├── content-view-templates.md -│   ├── custom-404-page.md -│   ├── data-templates.md -│   ├── go-template-primer.md -│   ├── homepage-template.md -│   ├── section-and-listtemplates.md -│   ├── local-file-templates.md -│   ├── menu-templates.md -│   ├── pagination.md -│   ├── partial-templates.md -│   ├── rss-templates.md -│   ├── shortcode-templates.md -│   ├── single-page-templates.md -│   ├── sitemap-template.md -│   ├── taxonomy-templates.md -│   └── template-debugging.md -├── themes -│   ├── _index.md -│   ├── creating-a-theme.md -│   ├── customizing-a-theme.md -│   ├── installing-and-using-themes.md -│   └── theme-showcase.md -├── troubleshooting -│   ├── _index.md -│   ├── accented-characters-in-urls.md -│   └── eof-error.md -├── tutorials -│   ├── _index.md -│   ├── create-a-multilingual-site.md -│   ├── creating-a-new-theme.md -│   └── migrate-from-jekyll-to-hugo.md -└── variables-and-params - ├── _index.md - ├── file-variables.md - ├── page-variables.md - ├── shortcode-git-and-hugo-variables.md - ├── site-variables.md - └── taxonomy-variables.md - -15 directories, 264 files -``` \ No newline at end of file +**[See tree.md at the root of this repository](tree.md).** \ No newline at end of file diff --git a/content/content-management/content-summaries.md b/content/content-management/content-summaries.md index 5b2af72bb..3ade0a184 100644 --- a/content/content-management/content-summaries.md +++ b/content/content-management/content-summaries.md @@ -48,7 +48,7 @@ Be careful to enter <!--more--> exactly ## Example: First 10 Articles with Summaries -You can show content summaries with the following code. You could use the following snipper, for example, in a [section's list page template][]. +You can show content summaries with the following code. You could use the following snipper, for example, in a [section template][]. {{% input "page-list-with-summaries.html" %}} ```html @@ -72,4 +72,4 @@ Note how the `.Truncated` boolean valuable may be used to hide the "Read More... [org]: /content-management/supported-content-formats/ [pagevariables]: /variables-and-params/page-variables/ -[section's list page template]: /templates/section-and-list-templates/ \ No newline at end of file +[section template]: /templates/section-templates/ \ No newline at end of file diff --git a/content/content-management/content-types.md b/content/content-management/content-types.md index 7477965a1..7680f7201 100644 --- a/content/content-management/content-types.md +++ b/content/content-management/content-types.md @@ -50,7 +50,7 @@ Create a file called `post.html` inside the section lists template directory, `/ ### Create views -Many sites support rendering content in a few different ways, for instance, a single page view and a summary view to be used when displaying a [list of contents on a single page][]. Hugo makes no assumptions about how you want to display your content and will support as many different views of a content type as your site requires. All that is required for these additional views is that a template exists in each `/layouts/TYPE` directory with the same name. +Many sites support rendering content in a few different ways, for instance, a single page view and a summary view to be used when displaying a [list of section contents][]. Hugo makes no assumptions about how you want to display your content and will support as many different views of a content type as your site requires. All that is required for these additional views is that a template exists in each `/layouts/TYPE` directory with the same name. ### Create A Corresponding Archetype @@ -62,6 +62,6 @@ More details about archetypes can be found in the [archetypes documentation][]. [archetypes documentation]: /content-management/archetypes/ [sections]: /content-management/sections/ [front matter]: /content-management/front-matter/ -[list of contents on a single page]: /templates/section-and-list-templates/ +[list of section contents]: /templates/section-templates/ [template]: /templates/ [Tumblr]: https://www.tumblr.com/ \ No newline at end of file diff --git a/content/content-management/sections.md b/content/content-management/sections.md index ce8b8e179..07cf7eb4e 100644 --- a/content/content-management/sections.md +++ b/content/content-management/sections.md @@ -49,7 +49,7 @@ Hugo will automatically create pages for each section root that list all of the As of Hugo v0.18, section pages can also have a content file and front matter. These section content files must be placed in their corresponding section folder and named `_index.md` in order for Hugo to correctly render the front matter and content. {{% warning "`index.md` vs `_index.md`" %}} -Hugo themes developed before v0.18 often used an `index.md` in a content section as a hack to emulate the behavior of `_index.md`. The hack may work...*sometimes*; however, the order of page rendering can be unpredictable in Hugo. What works now may fail to render appropriately as your site grows. It is **strongly advised** to use `_index.md` as the *preferred* content section index page. **Note:** `_index.md`'s layout, as representative of a section, is a [list template](/templates/section-and-list-templates/) and *not* a [single template](/templates/single-page-templates/). +Hugo themes developed before v0.18 often used an `index.md` in a content section as a hack to emulate the behavior of `_index.md`. The hack may work...*sometimes*; however, the order of page rendering can be unpredictable in Hugo. What works now may fail to render appropriately as your site grows. It is **strongly advised** to use `_index.md` as the *preferred* content section index page. **Note:** `_index.md`'s layout, as representative of a section, is a [list template](/templates/section-templates/) and *not* a [single template](/templates/single-page-templates/). {{% /warning %}} ## Content *Section* vs Content *Type* @@ -60,6 +60,6 @@ By default, everything created within a section will use the [content type][] th [content type]: /content-management/content-types/ [example site]: /getting-started/using-the-hugo-docs/ [directory structure]: /getting-started/directory-structure/ -[listsandsectiontemplatespage]: /templates/section-and-list-templates/ +[listsandsectiontemplatespage]: /templates/section-templates/ diff --git a/content/content-management/taxonomies.md b/content/content-management/taxonomies.md index e84bb2eb1..711caae5b 100644 --- a/content/content-management/taxonomies.md +++ b/content/content-management/taxonomies.md @@ -11,7 +11,6 @@ weight: 80 draft: false aliases: [/taxonomies/overview/,/taxonomies/usage/,/indexes/overview/,/doc/indexes/,/extras/indexes] toc: true -notesforauthors: --- ## What is a Taxonomy? @@ -124,13 +123,23 @@ taxonomies: ### Overriding Hugo's Default Taxonomies -If you do not specify any taxonomies in your [site configuration][] file ***and*** your content already includes front matter with `tags:` or `categories`, Hugo will automatically create taxonomy pages. To override this behavior, set the key-value pairs for both of the default taxonomies to empty strings in your `config` file. +If you do not specify any taxonomies in your [site configuration][] file *and* your content already includes front matter with `tags:` or `categories`, Hugo will automatically create taxonomy pages. To override this behavior, set the key-value pairs for both of the default taxonomies to empty strings in your `config` file. +{{% input "remove-default-taxonomies-config.toml" %}} ```toml [taxonomies] tag = "" category = "" ``` +{{% /input %}} + +{{% input "remove-default-taxonomies-config.yml" %}} +```yaml +taxonomies: + tag: "" + category: "" +``` +{{% /input %}} ### Preserving Taxonomy Values @@ -200,7 +209,7 @@ project_url: "https://github.com/spf13/hugo" ## Adding Taxonomic `weight` to Content -A content file can assign weight for each of its associate taxonomies. Taxonomic weight can be used for sorting or ordering content in [taxonomy list templates][] and is declared in the content file's [front matter][]. The convention for declaring taxonomic weight is `taxonomyname_weight`. +A content file can assign weight for each of its associate taxonomies. Taxonomic weight can be used for sorting or ordering content in [taxonomy list templates][] and is declared in a content file's [front matter][]. The convention for declaring taxonomic weight is `taxonomyname_weight`. The following TOML and YAML examples show a piece of content that has a weight of 22, which can be used for ordering purposes when rendering the pages assigned to the "a", "b" and "c" values of the `tags` taxonomy. It has also been assigned the weight of 44 when rendering the "d" category page. @@ -244,5 +253,5 @@ Currently taxonomies only support the default ordering of content which is weigh [site configuration]: /project-organization/configuration/ [taxonomy list templates]: /templates/taxonomy-templates/#taxonomy-page-templates [taxonomy templates]: /templates/taxonomy-templates/ -[taxonomy terms templates]: /templates/taxonomy-templates/#taxonomy-terms-templates "See how to order terms associated with taxonomy via taxonomy templates" +[taxonomy terms templates]: /templates/taxonomy-templates/#taxonomy-terms-templates "See how to order terms associated with a taxonomy" [website configuration]: /project-organization/configuration/ \ No newline at end of file diff --git a/content/contribute-to-hugo/contribute-to-the-hugo-docs.md b/content/contribute-to-hugo/contribute-to-the-hugo-docs.md index f73447a60..1acef3b10 100644 --- a/content/contribute-to-hugo/contribute-to-the-hugo-docs.md +++ b/content/contribute-to-hugo/contribute-to-the-hugo-docs.md @@ -17,31 +17,31 @@ needsreview: true Documentation is an integral part of any open source project. The Hugo docs were completely reworked in anticipation of the release of v0.19, but there is always room for improvement. -## Edit Locally and Submit a Pull Request + -## Creating New Files from Archetypes +## Creating New Content for the Hugo Docs **IN DEVELOPMENT** -### New Default Content +### Creating Default Content **IN DEVELOPMENT** -### New Function +### Adding a New Function **IN DEVELOPMENT** -### New Showcase +### Adding a New Showcase **IN DEVELOPMENT** -### New Tutorial +### Adding a New Tutorial **IN DEVELOPMENT** @@ -57,10 +57,6 @@ Documentation is an integral part of any open source project. The Hugo docs were **IN DEVELOPMENT** -### Example Site Code Block - -**IN DEVELOPMENT** - ## Blockquotes @@ -82,9 +78,9 @@ Previous versions of the Hugo documentation used [Markdown `
` syntax Use the `note` shortcode when you want to draw attention to information subtly. `note` is intended to be less of an interruption in content than is `warning`. -#### Example `note` Admonition Shortcode Input +#### `note` Admonition Shortcode Input -{{% input "example-note-with-heading.md" %}} +{{% input "note-with-heading.md" %}} ```golang {{%/* note "Example Note Admonition" */%}} Here is a piece of information I would like to draw your **attention** to. @@ -92,30 +88,50 @@ Here is a piece of information I would like to draw your **attention** to. ``` {{% /input %}} -#### Examle `note` Admonition Shortcode Output +#### `note` Admonition Shortcode Output (Code) + +{{% output "note-with-heading.html" %}} +```html +{{% note "Example Note Admonition" %}} +Here is a piece of information I would like to draw your **attention** to. +{{% /note %}} +``` +{{% /output %}} + +#### `note` Admonition Shortcode Display {{% note "Example Note Admonition" %}} Here is a piece of information I would like to draw your **attention** to. {{% /note %}} -### Warning Admonition Shortcode +### Warning Admonition Examples -Use the `warning` shortcode when you want to draw the user's attention +Use the `warning` shortcode when you want to draw the user's attention to something important. A good usage example is for announcing breaking changes for Hugo versions, known bugs, or templating gotchas. -#### Example `warning` Admonition Shortcode Input +#### `warning` Admonition Shortcode Input -{{% input "example-note.md" %}} +{{% input "warning-admonition-input.md" %}} ```golang {{%/* warning "Example Warning" */%}} -This is a warning, which should be reserved for *important* information like breaking changes, bad practices, etc. +This is a warning, which should be reserved for *important* information like breaking changes. {{%/* /warning */%}} ``` {{% /input %}} -#### Example `warning` Admonition Shortcode Output +#### `warning` Admonition Shortcode Output + +{{% output "warning-admonition-output.html" %}} +```html +{{% warning "Example Warning" %}} +This is a warning, which should be reserved for *important* information like breaking changes. +{{% /warning %}} +``` +{{% /output %}} + +#### `warning` Admonition Shortcode Display {{% warning "Example Warning" %}} -This is a warning, which should be reserved for *important* information like breaking changes, bad practices, etc. +This is a warning, which should be reserved for *important* information like breaking changes. {{% /warning %}} ## Example Site Shortcodes diff --git a/content/functions/count.md b/content/functions/count.md new file mode 100644 index 000000000..1c2db17dc --- /dev/null +++ b/content/functions/count.md @@ -0,0 +1,17 @@ +--- +title: count +linktitle: Count +description: +godocref: +date: 2017-02-01 +publishdate: 2017-02-01 +lastmod: 2017-02-01 +tags: [] +categories: [functions] +toc: false +draft: false +aliases: [] +notesforauthors: +--- + +[Link to Taxonomy templates](/templates/taxonomy-templates/) diff --git a/content/getting-started/quick-start.md b/content/getting-started/quick-start.md index 2cc26d291..3b76c9907 100644 --- a/content/getting-started/quick-start.md +++ b/content/getting-started/quick-start.md @@ -594,7 +594,7 @@ git push [frontmatter]: /content-management/front-matter/ [hugodirectories]: /getting-started/directory-structure/ [installhugo]: /getting-started/install-hugo/ -[listsectiontemplates]: /templates/section-and-list-templates/ +[listsectiontemplates]: /templates/section-templates/ [partialtemplates]: /templates/partial-templates/ [quickinstall]: /getting-started/install-hugo/#quick-install [releases]: https://github.com/spf13/hugo/releases diff --git a/content/templates/lists-in-hugo.md b/content/templates/lists-in-hugo.md new file mode 100644 index 000000000..2e09f42af --- /dev/null +++ b/content/templates/lists-in-hugo.md @@ -0,0 +1,28 @@ +--- +title: Lists in Hugo +linktitle: Lists in Hugo +description: +date: 2017-02-01 +publishdate: 2017-02-01 +lastmod: 2017-02-01 +categories: [templates] +tags: [lists,sections,rss,taxonomies,terms] +weight: 25 +draft: false +aliases: [/templates/list/] +toc: true +needsreview: true +--- + +## What is a "List" Template + +A list page template is a template used to render multiple pieces of content in a single HTML page (with the exception of the [homepage][] which has a dedicated template). The idea of a list page comes from the [hierarchical mental model of the web][mentalmodel] and is best demonstrated visually: + +![Image demonstrating a hierarchical website sitemap.](/images/) + +We are using the term *list* in its truest sense: a sequential arrangement of material, especially in alphabetical or numerical order. Hugo uses list templates to render any place where content is being listed (e.g., taxonomies and sections). + + + +[homepage]: /templates/homepage-template/ +[mentalmodel]: http://webstyleguide.com/wsg3/3-information-architecture/3-site-structure.html \ No newline at end of file diff --git a/content/templates/rss-templates.md b/content/templates/rss-templates.md index 4c5f84d7e..dfa8f5324 100644 --- a/content/templates/rss-templates.md +++ b/content/templates/rss-templates.md @@ -18,10 +18,28 @@ needsreview: true Like all other templates, you can use a single RSS template to generate all of your RSS feeds, or you can create a specific template for each individual feed. +* /layouts/section/`SECTION`.rss.xml +* /layouts/\_default/rss.xml +* /themes/`THEME`/layouts/section/`SECTION`.rss.xml +* /themes/`THEME`/layouts/\_default/rss.xml + +{{% note "Hugo Ships with an RSS Template" %}} *Unlike other Hugo templates*, Hugo ships with its own [RSS 2.0 template](#the-embedded-rss-xml:eceb479b7b3b2077408a2878a29e1320). In most cases this will be sufficient, and an RSS template will not need to be provided by the user. But you can provide an rss template if you like, as you can see in the next section. +{{% /note %}} RSS pages are of the type `Page` and have all the [page variables](/layout/variables/) available to use in the templates. +### Section RSS + +A [section’s][section] RSS will be rendered at /`SECTION`/index.xml (e.g., http://spf13.com/project/index.xml) + +*Hugo ships with its own [RSS 2.0][] template. In most cases this will +be sufficient, and an RSS template will not need to be provided by the +user.* + +Hugo provides the ability for you to define any RSS type you wish, and +can have different RSS files for each section and taxonomy. + ## Which Template will be Rendered? Hugo uses a set of rules to figure out which template to use when rendering a specific page. @@ -121,4 +139,5 @@ The `.RSSLink` will render the appropriate RSS feed URL for the section, whether {{ .SomeText }} ``` -[RSS 2.0]: http://cyber.law.harvard.edu/rss/rss.html "RSS 2.0 Specification" \ No newline at end of file +[RSS 2.0]: http://cyber.law.harvard.edu/rss/rss.html "RSS 2.0 Specification" +[section]: /content-management/sections/ \ No newline at end of file diff --git a/content/templates/section-and-list-templates.md b/content/templates/section-templates.md similarity index 72% rename from content/templates/section-and-list-templates.md rename to content/templates/section-templates.md index 0282bdd84..156bedcba 100644 --- a/content/templates/section-and-list-templates.md +++ b/content/templates/section-templates.md @@ -1,6 +1,6 @@ --- -title: Section and List Page Templates -linktitle: Section and List Page Templates +title: Section Page Templates +linktitle: Section Page Templates description: date: 2017-02-01 publishdate: 2017-02-01 @@ -9,27 +9,22 @@ categories: [templates] tags: [lists,sections] weight: 40 draft: false -aliases: [/templates/list/] +aliases: [] toc: true needsreview: true --- -A list template is any template that will be used to render multiple pieces of -content in a single HTML page (with the exception of the [homepage](/layout/homepage/) which has a -dedicated template). +## Introduction to the Template Lookup Order -We are using the term *list* in its truest sense, a sequential arrangement of material, especially in alphabetical or numerical order. Hugo uses list templates to render anyplace where content is being listed such as taxonomies and sections. +{{< lookupexplanation >}} -## Lookup Order for List and Section Page Templates -Hugo uses a set of rules to figure out which template to use when -rendering a specific page. -Hugo will use the following prioritized list. If a file isn’t present, -then the next one in the list will be used. This enables you to craft -specific layouts when you want to without creating more templates -than necessary. For most sites only the \_default file at the end of -the list will be needed. +## Lookup Order for Section Page Templates + +Hugo uses a set of rules to figure out which template to use when rendering a specific page. + +Hugo will use the following prioritized list. If a file isn’t present, then the next one in the list will be used. This enables you to craft specific layouts when you want to without creating more templates than necessary. For most sites only the \_default file at the end of the list will be needed. ### Section Lists @@ -57,22 +52,6 @@ A Taxonomy will be rendered at /`PLURAL`/`TERM`/ (e.g. http://spf13.com/top Note that a taxonomy list page can also have a content file with frontmatter, see [Source Organization](/overview/source-directory/). -### Section RSS - -A Section’s RSS will be rendered at /`SECTION`/index.xml (e.g. http://spf13.com/project/index.xml) - -*Hugo ships with its own [RSS 2.0][] template. In most cases this will -be sufficient, and an RSS template will not need to be provided by the -user.* - -Hugo provides the ability for you to define any RSS type you wish, and -can have different RSS files for each section and taxonomy. - -* /layouts/section/`SECTION`.rss.xml -* /layouts/\_default/rss.xml -* /themes/`THEME`/layouts/section/`SECTION`.rss.xml -* /themes/`THEME`/layouts/\_default/rss.xml - ### Taxonomy RSS A Taxonomy’s RSS will be rendered at /`PLURAL`/`TERM`/index.xml (e.g. http://spf13.com/topics/golang/index.xml) @@ -101,27 +80,31 @@ Taxonomy pages will additionally have: ## Example List Template Pages -### Example section template (post.html) +### Example Section Template: `post.html` + This content template is used for [spf13.com](http://spf13.com/). -It makes use of [partial templates](/templates/partials/). All examples use a +It makes use of [partial templates][partials]. All examples use a [view](/templates/views/) called either "li" or "summary" which this example site defined. - {{ partial "header.html" . }} - {{ partial "subheader.html" . }} +{{% input "layouts/section/post.html" %}} +```html +{{ partial "header.html" . }} +{{ partial "subheader.html" . }} -
-
-

{{ .Title }}

-
    - {{ range .Data.Pages }} - {{ .Render "li"}} - {{ end }} -
-
-
- - {{ partial "footer.html" . }} +
+
+

{{ .Title }}

+
    + {{ range .Data.Pages }} + {{ .Render "li"}} + {{ end }} +
+
+
+{{ partial "footer.html" . }} +``` +{{% /input %}} ### Example taxonomy template (tag.html) This content template is used for [spf13.com](http://spf13.com/). @@ -394,37 +377,80 @@ you can do just that. ### `first` -`first` works like the `limit` keyword in SQL. It reduces the array to only the -first _N_ elements. It takes the array and number of elements as input. +`first` works in a similar manner to the [`limit` keyword in SQL][limitkeyword]. It reduces the array to only the `first N` elements. It takes the array and number of elements as input. `first` takes two arguments: - {{ range first 10 .Data.Pages }} - {{ .Render "summary" }} - {{ end }} +1. `array` or `slice of maps or structs` +2. `number of elements` + +{{% input "layout/_default/section.html" %}} +```golang +{{ range first 10 .Data.Pages }} + {{ .Render "summary" }} +{{ end }} +``` +{{% /input %}} ### `where` -`where` works in a similar manner to the `where` keyword in SQL. It selects all -elements of the slice that match the provided field and value. It takes three -arguments: 'array or slice of maps or structs', 'key or field name' and 'match -value'. +`where` works in a similar manner to the `where` keyword in SQL. It selects all elements of the array or slice that match the provided field and value. `where` takes three arguments: - {{ range where .Data.Pages "Section" "post" }} - {{ .Content }} - {{ end }} +1. `array` or a `slice of maps or structs` +2. `key` or `field name' +3. `match value` -### `first` & `where` Together +{{% input "layouts/_default/.html" %}} +```html +{{ range where .Data.Pages "Section" "post" }} + {{ .Content }} +{{ end }} +``` +{{% /input %}} -Using both together can be very powerful. +### `first` and `where` Together - {{ range first 5 (where .Data.Pages "Section" "post") }} - {{ .Content }} - {{ end }} +Using `first` and `where` together can be very powerful: -If `where` or `first` receives invalid input or a field name that doesn’t exist, -it will return an error and stop site generation. +{{% input "first-and-where-together.html" %}} +```golang +{{ range first 5 (where .Data.Pages "Section" "post") }} + {{ .Content }} +{{ end }} +``` +{{% /input %}} -These are both template functions and work on not only -[lists](/templates/list/), but [taxonomies](/taxonomies/displaying/), -[terms](/templates/terms/) and [groups](/templates/list/). +{{% note %}} +If `where` or `first` receives invalid input or a field name that doesn’t exist, it will return an error and stop site generation. `where` and `first` also work on taxonomy list templates *and* taxonomy terms templates. (See [Taxonomy Templates](/templates/taxonomy-templates/).) +{{% /note %}} -[RSS 2.0]: http://cyber.law.harvard.edu/rss/rss.html "RSS 2.0 Specification" \ No newline at end of file +## `.Site.GetPage` + +Every `Page` in Hugo has a `.Kind` attribute. `Kind` can easily be combined with [`where`](/functions/where/) in your templates to create kind-specific lists of content, but there are times where you may want to fetch the index page of a single section by the section's path. + +[`.GetPage`](/function/getpage/) looks up an index page (i.e `_index.md`) of a given `Kind` and `path`. This method is only supported in section page templates but *may* support [single page templates][singlepages] in the future. + +`.Site.GetPage` takes two arguments: `kind` and `kind value`. + +The valid values for 'kind' are as follows: + +1. `home` +2. `section` +3. `taxonomy` +4. `taxonomyTerm` + +### `.Site.GetPage` Example + +The `.Site.GetPage` example assumes the following project directory structure: + +{{% input "grab-blog-section-index-page-title.html" %}} +{{ with .Site.GetPage "section" "blog" }}{{ .Title }}{{ end }} +{{% /input %}} + +`.Site.GetPage` will return `nil` if no `_index.md` page is found. If `content/blog/_index.md` does not exist, the template will output a blank section where `{{.Title}}` should have been in the preceding example. + +[sections]: /content-management/sections/ +[directorystructure]: /getting-started/directory-structure/ +[homepage]: /templates/homepage-template/ +[limitkeyword]: https://www.techonthenet.com/sql/select_limit.php +[partials]: /templates/partial-templates/ +[RSS 2.0]: http://cyber.law.harvard.edu/rss/rss.html "RSS 2.0 Specification" +[singlepages]: /templates/single-page-templates/ \ No newline at end of file diff --git a/content/templates/single-page-templates.md b/content/templates/single-page-templates.md index 64faf8dcc..c15a1750a 100644 --- a/content/templates/single-page-templates.md +++ b/content/templates/single-page-templates.md @@ -15,24 +15,16 @@ toc: true The primary view of content in Hugo is the single view. Hugo will render every Markdown file provided with a corresponding single template. -## Which Template Will be Rendered? +## Introduction to the Template Lookup Order -Hugo uses a set of rules to figure out which template to use when rendering a specific page. - -Hugo will use the following prioritized list. This list is an inverted cascade: if a file isn’t present, Hugo will look to the next file. If that next file isn't present, Hugo will look to the file after that, and so on until it reaches the `_default` layout directory for the project and then the theme. - -The template lookup order enables you to craft specific layouts as needed without creating more templating than necessary. For most sites, only the `_default/*html` files at the end of the list will be needed. - -You can specify `type` (i.e., [content type][]) and `layout` in a content file's [front matter][]. However, you cannot specify `section` because this is determined based on file location (i.e. it's content [section][]). - -{{% note "Hugo Makes Assumptions" %}} -Hugo assumes your content section and content type are the same unless you tell Hugo otherwise by providing a `type` directly in the front matter of a content file. -{{% /note %}} - -This is why #1 and #3 come before #2 and #4, respectively. Values in angle brackets (`<>`) are variables. +{{< lookupexplanation >}} ## Lookup Order for Single Page Templates +You can specify `type` (i.e., [content type][]) and `layout` in a single content file's [front matter][]. However, you cannot specify `section` because this is determined based on file location (see [content section][section]). + +Hugo assumes your content section and content type are the same unless you tell Hugo otherwise by providing a `type` directly in the front matter of a content file. This is why #1 and #3 come before #2 and #4, respectively, in the following lookup order. Values in angle brackets (`<>`) are variable. + 1. `/layouts//.html` 2. `/layouts/
/.html` 3. `/layouts//single.html` @@ -82,7 +74,7 @@ The following examples assume two things: Now we can look at the front matter for the three single-page content (i.e.`.md`) files. {{% note "Three Content Pages but *Four* Markdown Files?" %}} -`_index.md` may seem like a single page of content but is actually a specific `kind` in Hugo. Whereas `my-first-post.md`, `my-second-post.md`, and `my-first-event.md` are all of kind `page`, all `_index.md` files in a Hugo project are of kind `section` and therefore do not submit themselves to the ***single*** page template lookup. Instead, `events/_index.md` will render according to the lookup order of [section and list templates](templates/section-and-list-templates/). +`_index.md` may seem like a single page of content but is actually a specific `kind` in Hugo. Whereas `my-first-post.md`, `my-second-post.md`, and `my-first-event.md` are all of kind `page`, all `_index.md` files in a Hugo project are of kind `section` and therefore do not submit themselves to the *single* page template lookup. Instead, `events/_index.md` will render according to its [section template](templates/section-templates/) and respective lookup order. {{% /note %}} ### `my-first-post.md` @@ -111,7 +103,9 @@ When it comes time for Hugo to render the content to the page, it will go throug 9. `/themes/mytheme/layouts/posts/single.html` 10. `/themes/mytheme/layouts/_default/single.html` -Notice the term `UNSPECIFIED` rather than `UNDEFINED`. If you don't tell Hugo the specific type and layout, it makes inferences based on sane defaults. `my-first-post.md` does not specify a content `type` in its front matter. Therefore, Hugo assumes the content `type` and `section` (i.e. `posts`, which is defined by file location) are one in the same. The `layout` also is not specified in the front matter. Hugo assumes that `my-first-post.md`, which is of type `page` and a *single* piece of content, should default to the next occurrence of a `single.html` template in the lookup. +Notice the term `UNSPECIFIED` rather than `UNDEFINED`. If you don't tell Hugo the specific type and layout, it makes assumptions based on sane defaults. `my-first-post.md` does not specify a content `type` in its front matter. Therefore, Hugo assumes the content `type` and `section` (i.e. `posts`, which is defined by file location) are one in the same. ([Read more on sections][section].) + +`my-first-post.md` also does not specify a `layout` in its front matter. Therefore, Hugo assumes that `my-first-post.md`, which is of type `page` and a *single* piece of content, should default to the next occurrence of a `single.html` template in the lookup (#4). ### `my-second-post.md` @@ -127,7 +121,7 @@ layout: reviewarticle ``` {{% /input %}} -Here is the lookup order for `my-second-post.md`: +Here is the way Hugo's traverses the single-page lookup order for `my-second-post.md`: 1. `/layouts/review/reviewarticle.html`
**BREAK** @@ -141,7 +135,7 @@ Here is the lookup order for `my-second-post.md`: 9. `/themes/mytheme/layouts/posts/single.html` 10. `/themes/mytheme/layouts/_default/single.html` -In the case of `my-second-post.md`, the front matter specifies the content `type` as well as the `layout`. Hugo finds the layout it needs at the top level of the lookup and does not continue to search through the other templates. +The front matter in `my-second-post.md` specifies the content `type` (i.e. `review`) as well as the `layout` (i.e. `reviewarticle`). Hugo finds the layout it needs at the top level of the lookup (#1) and does not continue to search through the other templates. {{% note "Type and not Types" %}} Notice that the directory for the template for `my-second-post.md` is `review` and not `reviews`. This is because *type is always singular*. @@ -159,7 +153,7 @@ description: This is an upcoming event.. ``` {{% /input %}} -Here is the lookup order for `my-first-event.md`: +Here is the way Hugo's traverses the single-page lookup order for `my-first-event.md`: 1. `/layouts/UNSPECIFIED/UNSPECIFIED.html` 2. `/layouts/events/UNSPECIFIED.html` @@ -177,11 +171,11 @@ Here is the lookup order for `my-first-event.md`: `my-first-event.md` is significant because it demonstrates the role of the lookup order in Hugo themes. Both the root project directory *and* the `mytheme` themes directory have a file at `_default/single.html`. Understanding this order allows you to [customize Hugo themes](/themes/customizing-a-theme/) by creating template files with identical names in your project directory that step in front of theme template files in the lookup. This allows you to customize the look and feel of your website while maintaining compatibility with the theme's upstream. {{% /note %}} -## Single Page Template Files Examples +## Example Single Page Templates Content pages are of the type `page` and will therefore have all the [page variables][] and [site variables][] available to use in their templates. -### Example: `post/single.html` +### `post/single.html` This content template is used for [spf13.com][spf13]. It makes use of [partial templates][partials]: @@ -230,7 +224,7 @@ This content template is used for [spf13.com][spf13]. It makes use of [partial t ``` {{% /input %}} -### Example: `project/single.html` +### `project/single.html` This content template is also used for [spf13.com][spf13] and makes use of [partial templates][partials]: @@ -286,9 +280,10 @@ To easily generate new instances of this content type (e.g., new `.md` files in [config]: /getting-started/configuration/ [content type]: /content-management/content-types/ [directory structure]: /getting-started/directory-structure/ +[dry]: https://en.wikipedia.org/wiki/Don%27t_repeat_yourself [front matter]: /content-management/front-matter/ [page variables]: /variables-and-parms/page-variables/ [partials]: /templates/partial-templates/ -[section]: /content-management/content-sections/ +[section]: /content-management/sections/ [site variables]: /variables-and-params/site-variables/ [spf13]: http://spf13.com/ \ No newline at end of file diff --git a/content/templates/taxonomy-templates.md b/content/templates/taxonomy-templates.md index 40c6f2fa0..dd41768f9 100644 --- a/content/templates/taxonomy-templates.md +++ b/content/templates/taxonomy-templates.md @@ -9,17 +9,41 @@ categories: [templates] tags: [taxonomies,metadata,front matter,terms] weight: 50 draft: false -aliases: [/taxonomies/displaying/,/indexes/displaying/,/taxonomies/templates/,/indexes/ordering/] -needsreview: true +aliases: [/taxonomies/displaying/,/templates/terms/,/indexes/displaying/,/taxonomies/templates/,/indexes/ordering/] toc: true -notesforauthors: +needsreview: true --- - +Hugo includes support for user-defined groupings of content called **taxonomies**. Taxonomies are classifications that demonstrate logical relationships between content. See [Taxonomies](/content-management/taxonomies) if you are unfamiliar with how Hugo uses taxonomies for content management. +Hugo provides multiple ways to leverage taxonomies through your project: + +* Order the way the terms for a taxonomy are displayed in a [taxonomy terms template](#taxonomy-terms-template) +* Order the way content associated with a taxonomy term are display in a [taxonomy list template](#taxonomy-list-template) +* List a single content's taxonomy terms within a [single page template]() + +## Introduction to the Template Lookup Order + +{{< lookupexplanation >}} + +## Taxonomy List Templates + +### Lookup Order for Taxonomy List Templates + + + +## Taxonomy Terms Template + +### Lookup Order for Taxonomy Terms Templates + +{{% note "The Taxonomy Terms Template has a Unique Lookup Order" %}} +Compared to taxonomy list pages and [other list templates](/templates/section-templates/), a terms template lookup has only two options. If Hugo does not find a terms template in `layout/` or `/themes//layouts/`, Hugo will *not* render a taxonomy terms page., +{{% /note %}} + + Hugo makes a set of values and methods available on the various Taxonomy structures. -## Taxonomy Methods +### Taxonomy Methods A Taxonomy is a `map[string]WeightedPages`. @@ -35,7 +59,7 @@ A Taxonomy is a `map[string]WeightedPages`. .ByCount : Returns an OrderedTaxonomy (slice) ordered by number of entries. -## OrderedTaxonomy +### OrderedTaxonomy Since Maps are unordered, an OrderedTaxonomy is a special structure that has a defined order. @@ -76,44 +100,43 @@ type WeightedPages []WeightedPage -Hugo provides the ability to both: - - 1. Order the way the keys for a taxonomy are displayed - 2. Order the way taxonomyed content appears ## Ordering Taxonomies + Taxonomies can be ordered by either alphabetical key or by the number of content pieces assigned to that key. ### Order Alphabetically Example -
    - {{ $data := .Data }} - {{ range $key, $value := .Data.Taxonomy.Alphabetical }} -
  • {{ $value.Name }} {{ $value.Count }}
  • - {{ end }} -
+``` +
    + {{ $data := .Data }} + {{ range $key, $value := .Data.Taxonomy.Alphabetical }} +
  • {{ $value.Name }} {{ $value.Count }}
  • + {{ end }} +
+``` ### Order by Popularity Example -
    - {{ $data := .Data }} - {{ range $key, $value := .Data.Taxonomy.ByCount }} -
  • {{ $value.Name }} {{ $value.Count }}
  • - {{ end }} -
+``` +
    + {{ $data := .Data }} + {{ range $key, $value := .Data.Taxonomy.ByCount }} +
  • {{ $value.Name }} {{ $value.Count }}
  • + {{ end }} +
+``` - -[See Also Taxonomy Lists](/templates/list/) + ## Ordering Content within Taxonomies -Hugo uses both **Date** and **Weight** to order content within taxonomies. +Hugo uses both `date` and `weight` to order content within taxonomies. -Each piece of content in Hugo can optionally be assigned a date. -It can also be assigned a weight for each taxonomy it is assigned to. +Each piece of content in Hugo can optionally be assigned a date. It can also be assigned a weight for each taxonomy it is assigned to. -When iterating over content within taxonomies the default sort is first by weight then by date. This means that if the weights for two pieces of content are the same, than the more recent content will be displayed first. The default weight for any piece of content is 0. +When iterating over content within taxonomies, the default sort is the same as that used for [section and list pages]() first by weight then by date. This means that if the weights for two pieces of content are the same, than the more recent content will be displayed first. The default weight for any piece of content is 0. ### Assigning Weight @@ -146,9 +169,7 @@ There are two different templates that the use of taxonomies will require you to Both templates are covered in detail in the templates section. -A [list template](/templates/list/) is any template that will be used to render multiple pieces of -content in a single html page. This template will be used to generate -all the automatically created taxonomy pages. +A [list template](/templates/list/) is any template that will be used to render multiple pieces of content in a single html page. This template will be used to generate all the automatically created taxonomy pages. A [taxonomy terms template](/templates/terms/) is a template used to generate the list of terms for a given template. @@ -165,42 +186,41 @@ using the [list templates](/templates/list/): 3. You can list all terms for a taxonomy 4. You can list all taxonomies (with their terms) -## 1. Displaying taxonomy terms assigned to this content +### Displaying a Single Piece of Content's Taxonomies -Within your content templates, you may wish to display -the taxonomies that that piece of content is assigned to. +Within your content templates, you may wish to display the taxonomies that piece of content is assigned to. -Because we are leveraging the front matter system to -define taxonomies for content, the taxonomies assigned to -each content piece are located in the usual place +Because we are leveraging the front matter system to define taxonomies for content, the taxonomies assigned to each content piece are located in the usual place (.Params.`plural`). ### Example -
    - {{ range .Params.tags }} -
  • {{ . }}
  • - {{ end }} -
+```html +
    + {{ range .Params.tags }} +
  • {{ . }}
  • + {{ end }} +
+``` -If you want to list taxonomies inline, you will have to take -care of optional plural ending in the title (if multiple taxonomies), -as well as commas. Let's say we have a taxonomy "directors" such as -`directors: [ "Joel Coen", "Ethan Coen" ]` in the TOML-format front matter. -To list such taxonomy use the following: +If you want to list taxonomies inline, you will have to take care of optional plural ending in the title (if multiple taxonomies), as well as commas. Let's say we have a taxonomy "directors" such as `directors: [ "Joel Coen", "Ethan Coen" ]` in the TOML-format front matter. + +To list such taxonomies, use the following: ### Example - {{ if .Params.directors }} - Director{{ if gt (len .Params.directors) 1 }}s{{ end }}: - {{ range $index, $director := .Params.directors }}{{ if gt $index 0 }}, {{ end }}{{ . }}{{ end }} - {{ end }} +```html +{{ if .Params.directors }} + Director{{ if gt (len .Params.directors) 1 }}s{{ end }}: + {{ range $index, $director := .Params.directors }}{{ if gt $index 0 }}, {{ end }}{{ . }}{{ end }} +{{ end }} +``` -Alternatively, you may use the [delimit](/templates/functions/) template function as a shortcut if the taxonomies should just be listed with a separator. See {{< gh 2143 >}} on GitHub for discussion. +Alternatively, you may use the [delimit](/functions/delimit/) template function as a shortcut if the taxonomies should just be listed with a separator. See {{< gh 2143 >}} on GitHub for discussion. -## 2. Listing content with the same taxonomy term +## 2. Listing content with the Same Taxonomy Term -First, you may be asking why you would use this. If you are using a taxonomy for something like a series of posts, this is exactly how you would do it. It’s also an quick and dirty way to show some related content. +First, you may be asking why you would use this. If you are using a taxonomy for something like a series of posts, this is exactly how you would do it. It’s also a quick and dirty way to show some related content. ### Example @@ -214,30 +234,28 @@ First, you may be asking why you would use this. If you are using a taxonomy for ## 3. Listing all content in a given taxonomy -This would be very useful in a sidebar as “featured content”. You could -even have different sections of “featured content” by assigning -different terms to the content. +This would be very useful in a sidebar as “featured content”. You could even have different sections of “featured content” by assigning different terms to the content. ### Example - +``` ## 4. Rendering a Site's Taxonomies -If you wish to display the list of all keys for a taxonomy, you can find retrieve -them from the `.Site` variable which is available on every page. +If you wish to display the list of all keys for a taxonomy, you can find retrieve them from the `.Site` variable which is available on every page. This may take the form of a tag cloud, a menu or simply a list. @@ -245,30 +263,40 @@ The following example displays all tag keys: ### Example -
    - {{ range $name, $taxonomy := .Site.Taxonomies.tags }} -
  • {{ $name }}
  • - {{ end }} -
+```html +
    + {{ range $name, $taxonomy := .Site.Taxonomies.tags }} +
  • {{ $name }}
  • + {{ end }} +
+``` ### Complete Example This example will list all taxonomies, each of their keys and all the content assigned to each key. -
-
    - {{ range $taxonomyname, $taxonomy := .Site.Taxonomies }} -
  • {{ $taxonomyname }} -
      - {{ range $key, $value := $taxonomy }} -
    • {{ $key }}
    • - - {{ end }} -
    -
  • - {{ end }} -
-
+```html +
+
    + {{ range $taxonomyname, $taxonomy := .Site.Taxonomies }} +
  • {{ $taxonomyname }} +
      + {{ range $key, $value := $taxonomy }} +
    • {{ $key }}
    • + + {{ end }} +
    +
  • + {{ end }} +
+
+``` + +## `.Site.GetPage` for Taxonomies + +### `.Site.GetPage` Taxonomy List Example + +### `.Site.GetPage` Taxonomy Terms Example \ No newline at end of file diff --git a/content/variables-and-params/taxonomy-variables.md b/content/variables-and-params/taxonomy-variables.md index a81489d33..ccc315c4d 100644 --- a/content/variables-and-params/taxonomy-variables.md +++ b/content/variables-and-params/taxonomy-variables.md @@ -20,10 +20,10 @@ notesforauthors: [Taxonomy terms pages][taxonomytemplates] are of the type `Page` and have the following additional variables. For example, the following fields would be available in `layouts/_defaults/terms.html`, depending on how you organize your [taxonomy templates][taxonomytemplates]: `.Data.Singular` -: The singular name of the taxonomy +: The singular name of the taxonomy (e.g., `tags => `tag`) `.Data.Plural` -: The plural name of the taxonomy +: The plural name of the taxonomy (e.g., `tags => tags`) `.Data.Pages` : The list of pages in the taxonomy diff --git a/dev-and-design-resources/sections-explained.afdesign b/dev-and-design-resources/sections-explained.afdesign index 7484733b3e633ecd11ea944afe59588bc3001bf8..b27ddf2a300bd70ab1d539936984600c8a34a125 100644 GIT binary patch literal 29911 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 z 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 Y-nS#_gFk}=oJkB<7=L|v`Gz0=3x~Dvp#T5? diff --git a/dev-and-design-resources/site-hierarchy.afdesign b/dev-and-design-resources/site-hierarchy.afdesign new file mode 100644 index 0000000000000000000000000000000000000000..3927309e814067604453cb6407dea6a89db75059 GIT binary patch literal 62995 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 literal 0 HcmV?d00001 diff --git a/layouts/shortcodes/allaliases.html b/layouts/shortcodes/allaliases.html index c81022b59..c37431c20 100644 --- a/layouts/shortcodes/allaliases.html +++ b/layouts/shortcodes/allaliases.html @@ -14,7 +14,7 @@ {{.Title}} {{$section}} - {{ delimit .Aliases ", " }} + {{ delimit .Aliases ", " " and " }} {{end}} {{end}} diff --git a/layouts/shortcodes/gh.html b/layouts/shortcodes/gh.html index dadf9ab61..0d1a9498e 100644 --- a/layouts/shortcodes/gh.html +++ b/layouts/shortcodes/gh.html @@ -1,9 +1,9 @@ {{ range .Params }} -{{ if eq (substr . 0 1) "@" }} -{{ . }} -{{ else if eq (substr . 0 2) "0x" }} -{{ substr . 2 6 }} -{{ else }} -#{{ . }} -{{ end }} + {{ if eq (substr . 0 1) "@" }} + {{ . }} + {{ else if eq (substr . 0 2) "0x" }} + {{ substr . 2 6 }} + {{ else }} + #{{ . }} + {{ end }} {{ end }} \ No newline at end of file diff --git a/layouts/shortcodes/ghrepo.html b/layouts/shortcodes/ghrepo.html new file mode 100644 index 000000000..e9df40d6a --- /dev/null +++ b/layouts/shortcodes/ghrepo.html @@ -0,0 +1 @@ +GitHub repository \ No newline at end of file diff --git a/layouts/shortcodes/lookupexplanation.html b/layouts/shortcodes/lookupexplanation.html new file mode 100644 index 000000000..7391999e3 --- /dev/null +++ b/layouts/shortcodes/lookupexplanation.html @@ -0,0 +1 @@ +{{partial "lookup-explanation.html" . | markdownify}} \ No newline at end of file diff --git a/layouts/shortcodes/note.html b/layouts/shortcodes/note.html index d3b106d44..afcdfa1b5 100644 --- a/layouts/shortcodes/note.html +++ b/layouts/shortcodes/note.html @@ -1,6 +1,4 @@

{{if .Get 0}}{{.Get 0 | markdownify}}{{else}}Note{{end}}

-
- {{.Inner}} -
+
{{- .Inner -}}
\ No newline at end of file diff --git a/layouts/shortcodes/warning.html b/layouts/shortcodes/warning.html index c74da6f0c..ce3b24d75 100644 --- a/layouts/shortcodes/warning.html +++ b/layouts/shortcodes/warning.html @@ -1,6 +1,4 @@

{{if .Get 0}}{{.Get 0 | markdownify}}{{else}}Warning{{end}}

-
- {{.Inner}} -
+
{{- .Inner -}}
\ No newline at end of file diff --git a/themes/hugodocs/layouts/partials/lookup-explanation.html b/themes/hugodocs/layouts/partials/lookup-explanation.html new file mode 100644 index 000000000..73df94daa --- /dev/null +++ b/themes/hugodocs/layouts/partials/lookup-explanation.html @@ -0,0 +1,6 @@ +Hugo uses a prioritized list called the *lookup order* as it traverses your files looking for the appropriate template to render your content. The template lookup order is an inverted cascade: if template A isn’t present or specified, Hugo will look to template B. If template B isn't present or specified, Hugo will look for template C, and so on until it reaches the `layouts/_default/`` directory for your project, or in the case of themes, `themes//layouts/_default/`. In many ways, the lookup order is similar to the [control mechanism of a switch statement (without fallthrough)][switch] seen in many programming languages. + +The power of the lookup order is that it enables you to craft specific layouts as needed without creating more templating than necessary, thereby keeping your templating [DRY][dry]. *Most sites will only need the default template files at the end of the lookup* (i.e. `_default/*.html`). + +[dry]: https://en.wikipedia.org/wiki/Don%27t_repeat_yourself +[switch]: https://en.wikipedia.org/wiki/Switch_statement#Fallthrough \ No newline at end of file diff --git a/themes/hugodocs/pipeline/scss/components/_lookup-explanation.scss b/themes/hugodocs/pipeline/scss/components/_lookup-explanation.scss new file mode 100644 index 000000000..c58e157b2 --- /dev/null +++ b/themes/hugodocs/pipeline/scss/components/_lookup-explanation.scss @@ -0,0 +1,17 @@ +// #lookup-explanation { +// padding:0em; +// background-color: $hugo-blue-ultra-light; +// h2 { +// font-size: 1.3em; +// padding:0px; +// margin-bottom:0px; +// background-color: $hugo-blue; +// color:$hugo-white; +// } +// .inner-content { +// padding:.5em; +// p { +// margin-bottom:1em; +// } +// } +// } \ No newline at end of file diff --git a/themes/hugodocs/pipeline/scss/style.scss b/themes/hugodocs/pipeline/scss/style.scss index 5f305a8b5..524a42f8d 100644 --- a/themes/hugodocs/pipeline/scss/style.scss +++ b/themes/hugodocs/pipeline/scss/style.scss @@ -33,6 +33,7 @@ @import 'components/breadcrumb'; @import 'components/tables'; @import 'vendor/featherlight.scss'; +@import 'components/lookup-explanation'; //major layout parts/chrome @import 'layout/site-header'; diff --git a/tree.md b/tree.md index 03b4639b9..f6dcc2a52 100644 --- a/tree.md +++ b/tree.md @@ -1,4 +1,4 @@ -**Content Files at a Glance** +## Content Files at a Glance ``` . @@ -254,7 +254,7 @@ │   ├── pagination.md │   ├── partial-templates.md │   ├── rss-templates.md -│   ├── section-and-list-templates.md +│   ├── section-templates.md │   ├── shortcode-templates.md │   ├── single-page-templates.md │   ├── sitemap-template.md