Squashed 'docs/' changes from f3c88b08..b0470688

b0470688 Use infinitive mood for titles
96066d1b Update theme to fix JS error
8d500e7d Fix dead key typo in v0.25 release notes
3f6bd838 Add site image for Twitter card
52adf3c9 Fix union description
b1238c98 Document Pages support in union and intersect
14beb0ec Add some more missing aliases
2baad4b3 Add missing functions alias
d3603ef9 Adjust GetPage doc
adeca9f0 Remove unused file
4b0d3393 Regenerate commands doc
436f2a36 Improve Netlify config
94bf0abf Remove tags from menu
2c257180 Add production config
b779fdc8 Remove unused files
fac13f4f Copy edits variables
92726cf0 Copy edits themes and tools
6a058168 Templates copy edits
8cdaa2b6 Update theme
61203de8 Some minor edits of the getting started section
43c935a8 Copy editing of the template func documentation
972f8ba2 Update theme
b9bdfd40 Prefix methods with a "."
4e0bca2b Remove the needsexamples construct
4ac6e828 Update content references to new gohugoio org
646112a2 More copy edits
c6bf314d Update theme
2d75e090 Content fix
ef0564e2 Update theme
6994ef2c Content fix
48c2b9f4 Fix broken links
94806d0c Update theme
29ba55bf Some more copy edits
2a657165 Set unix func to draft
90ba82b4 Update theme
183472a6 Do some copy editing
87db4be7 Remove the tags config for now
52deebf6 next: Cleanup after the big merge
6b07427f next: Final step of merge
45f33bf6 Merge branch 'reword' of hugo-docs-concept into next
f00e68e7 Add release notes for v0.20 - 0.25.1
86c3ac1b Add fREW Schmidt's articles to news
a518ccb9 Fix baseurl
cea93ebe Update archetypes documentation for v0.24
469e504c Explain use of disableKinds to remove default taxonomy
73d616c5 Remove category taxonomy from site config
813a0cb0 Add time to int example for time function
58da4d9e Clean up link formatting on lookup order page
52aedacd Add admonition note to getenv function
9305be17 Make minor tweaks to docs on generated dirs in Directory Structure
ed98ef4e Update dir structure and remove old YT video from Quick Start
240f675f Change baseurl to empty string to fix CSS in dev URL
a4400e8a Remove all temp landing page templating and content
af940ab5 Add temporary tax and terms templates for Announcement page
5c383297 Add temporary Hugodocs.info site migration page
5004ef61 Update output of "hugo help" on Basic Usage page
6df80224 Add CentOS to Install Hugo page
2cef2175 Tweak marketing "copy" for custom outputs on homepage features
ed40185e Clean up language a bit around Configuring RSS entries
0671aed5 Add regenerated docs.json
1b7044b2 Add LICENSE file
578d7978 Release of v0.25.1
e6c38585 Merge branch 'tmp'
e01df481 releaser: Prepare repository for 0.25-DEV
6f462739 releaser: Add release notes to /docs for release of 0.25.1
91a4d55f releaser: Bump versions for release of 0.25.1
d0ee1e45 Add jonbeebe.net to the showcase
a4b499fb Add Hugo/Unix/Vim integration post to press section
ec4cae94 Fix link for pull requests in press.md
c37ea39a releaser: Prepare repository for 0.26-DEV
d89da99d releaser: Add release notes to /docs for release of 0.25
2b11466e releaser: Bump versions for release of 0.25
a8096ce4 docs: Regenerate the docs helpers
d68eaeeb docs: Regenerate commands doc
1c8fff5d docs: Merge docs commit '37c69054e294bf554be03cf7e4c01e1f586e6943'
2afe0747 tpl/math: Add log function
ab4e5da8 Merge commit 'dd78d5b23fe597f4461aa4199401b4e07c0612e2' as 'docs'
31393f60 Remove the docs submodule
aff1ac32 commands: Use example.com as homepage for new theme
b463c5ad releaser: Remove trailing space in fixes list
1a041522 releaser: One more fix
3aade089 releaser: Improve docs submodule handling
0e1bda34 vendor: Fix +-timezones in TOML
2e4ccd3d create: Preserve shortcodes in archetype templates
fd924d18 commands: Create default archetype on new site
e908d955 create: Fix archetype regression when no archetype file
8b620f7a docs: Update
12611e0c Update docs
58ce9213 releaser: Fix typo, change "relase" to "release"
ae3039b6 Update docs
3554fd12 releaser: Prepare repository for 0.25-DEV
1ac4dbb9 releaser: Update /docs to 0.24 [ci skip]
8f69fe57 releaser: Bump versions for release of 0.24
f8c5716a releaser: Update /docs [ci skip]
2ba9a876 releaser: Add release notes draft for 0.24
b7f8d057 Add numfmt to functions list
976c398f Add numfmt to functions list
c43b512b output: Identify extension-less text types as text
19f2e729 Support non-md files as archetype files
0f40e1fa media, hugolib: Support extension-less media types
516e6c6d hugolib: Add disableAliases
175eb008 Take the first crack at some copy for custom output types
176c35d4 Update theme to include theme PR gohugoio/gohugoioTheme#37
3ac3539f Fix typo on output formats
3183b9a2 parser: Fix handling of quoted brackets in JSON front matter
1a282ee4 vendor: Update Viper
fb53987a hugolib: Fix error handling for JSON front matter
6e3bd702 Update theme to reflect NAV changes
662e12f3 commands, create: Add .Site to the archetype templates
422057f6 create: Use archetype template as-is as a Go template
acd7ffdf config.toml: Update links for GH org and forum
4aa12390 Update links to new discuss URL
d78c5b4d Replace all instances of discuss.gohugo.io with new discourse.gohugo.io URL
e731a7aa Fix heading typo for Windows 10 users in install instructions
4231fd69 Update all relevant instances of spf13 to gohugoio in install instructions
411ac930 vendor: Update deps
4345026b releaser: Add TODO
deffb4c3 releaser: Prepare repository for 0.24-DEV
12b844da releaser: Update /docs to 0.23 [ci skip]
b502b9d8 releaser: Bump versions for release of 0.23
781a1539 releaser: Update /docs [ci skip]
af85eb62 releaser: Adjust
882b2b61 releaser: Add release notes draft for 0.23
00e2fe07 releaser: Adapt release logic to docs submodule
d4e8ea3e Move the theme to the new org
481850c9 Add STOQE's tweet
186eacbe Update tweets through mid-June
ccb8300d Update logo link in README
214dbdfb Remove docs building from CI builds
729be807 commands: Adjust docs path
6cee0dfe Add docs as submodule
8be3934b docs: Remove
fbb25014 Update Gitter link in README
bf5e5995 vendor: Update to new org name
86543d6a Change Windows build badge link, take #3
3b47805f Change Windows build badge link, take #2
e6ae32a0 Update Windows build link
5103935a hugolib: Disable shaky leaktest on CI
95386544 Update links in CONTRIBUTING.md due to the org transition
7b99fb9f Update source path in Dockerfile due to the org transition
d531d17b Update clone folder in appveyor.yml due to the org transition
9266bf9d Update import path in snapcraft.yaml due to the org transition
873a6f18 Run gofmt to get imports in line vs gohugoio/hugo
f503d76a Update Makefile vs gohugoio/hugo
93643860 Update README to point to gohugoio/hugo
db46bcf8 examples: Update examples to point to gohugoio/hugo
66d4850b  docs: Update layout references to gohugoio/hugo
715ff1f8 docs: Update content references to gohugoio/hugo
c17ad675 all: Update textual references in Go source to point to gohugoio/hugo
d8717cd4 all: Update import paths to gohugoio/hugo
2d08a296 vendor: Improve GitInfo
a9e551a1 Fix handling of duplicate footnotes
2aafb247 Revert "releaser: Bump versions for release of 0.22.1"
4bd5ce7e releaser: Prepare repository for 0.23-DEV
0f78dd06 releaser: Prepare repository for 0.22.1-DEV
714594a8 releaser: Add relase notes to /docs for release of 0.22.1
dce70fb7 releaser: Bump versions for release of 0.22.1
c84079ba releaser: Add release notes draft for 0.22.1
a30023f5 hugolib: Fix section logic for root folders with subfolders
1f26420d hugolib: Support sub-sections in permalink settings
ff54b6bd commands: Adjust rlimit to 64000
629e1439 commands: Make error on setting rlimit a warning only
26aa06a3 Revert "commands: Remove the rlimit tweaking on macOS"
52a0cea6 docs: Add note on updates for rpm-based distros
8ca586a6 releaser: Prepare repository for 0.23-DEV
e797a94d releaser: Add relase notes to /docs for release of 0.22
21cf464c releaser: Bump versions for release of 0.22
fb5cac70 releaser: Spelling
63311a14 releaser: Add release notes draft for release of 0.22
0f8f5141 docs: Rewrite “Archetypes” article
8744e6d0 Add noindex to alias explanation
39408925 docs: change .Site to $.Site where the global context is masked by the term's context
208d1646 Add additional reference to layout front matter
e47b74d8 Add information about layout front matter variable
00d63215 docs: Use single link element for RSS in example
f1da5a15 hugolib: Make the RSS feed use the date for the node it represents
d5ab7f08 Add noindex tag to HTML generated by Hugo Aliases
55dd533b hugolib: Unexport some internal methods
b82cd82f tpl/collections: Add uint support to In
204c3a9e tpl/collections: Support interfaces in union
fe901b81 hugolib, commands: Improve live-reload on directory structure changes
b3968939 hugolib: Enable nested sections
bef50485 Revert "hugolib: Fix live-reload regression for add/removal of dirs"
49a10430 hugolib: Fix live-reload regression for add/removal of dirs
5be04486 hugolib: Fix disablePathToLower regression
1f55cb76 hugolib: Simplify some test loops
8aaec644 hugolib: Add test for no 404 in sitemap
55c53ae9 docs: Add thislittleduck.com to the showcase
44e6279d Move archetypes from Bud's theme to project dir
d05edb0f Move all shortcodes out of theme and into project dir
5ba50897 Add more tweets
9ccb82fa Add functions file for uniq
e28d9aa4 tpl: Add uniq function
92bb618c Add new tweets through June 3
9412e0b0 Remove Duoshuo from list of commenting services
46b46078 hugolib: Remove some superflous TODO comments
2c2ce33a parser: Add horizontal YAML tags to benchmark
adc0572d docs: Add Nutspubcrawl.com to the showcase
0907a5c1 all: Temporarily revert to BurntSushi for TOML front matter handling
3d9c4f51 parser: Add BenchmarkFrontmatterTags
250ebc1d hugolib: Add some more tags to benchmark
b37d9594 hugolib: Bump leaktest timeout to 30 seconds
4e00bb7f Write CPU and mem profiles from site benchmark script
fdcfcced hugolib: Fix tag calculation in benchmark test
4d0b6653 Fix typo on Hawksworth's tweet for homepage
bdacc320 Move tweet data file to project dir from theme
c940f08f Remove duplicate custom output pages
59c1bdc5 Move custom outputs from CM to templates section
0e363fe7 Remove theme-showcase.md => removing from global nav as well
213ea749 hugolib: Add number of tags as a benchmark know
08a10e5d hubolib: Make the site benchmark output more compact
d83c53a8 Replace "Github" with "GitHub"
9fa71c94 hubolib: Add 10k pages as a benchmark variant
d25d89e6 hugolib: Increase leaktest timeout
89697019 hugolib: Break early from sitemap disabled check
69d92dc4 hugolib: Respect disableKinds=["sitemap"]
d74452cf Add benchSite.sh
978951cf vendor: Update go-toml
00ea027e Clean up shortcode description on homepage and remove extra "to"
f96df8f2 Remove outdated developer tools
f2ede42a Make minor tweaks to home page and news layout
4aff2b6e source: Cache language config
2342df4d hugolib: Add TOML/YAML switch to benchmark
828427ef hugolib: Adjust timeout for leaktest
ce624cc7 hugolib: Add slightly more realistic tag distribution to benchmark
8930e259 hugolib: Add site building benchmarks
8c53afdb Move assets used in content files into images/ subfolder
0d9ce481 Add _headers file for cross-origin issues with SVGs
fede945d Add home page to hugoDocs
f4c1efc6 Make assets used in content files theme independent
710300cb docs: Update overview/usage
93cab620 Update snapcraft.yaml
b68758a9 Update _index.md to show more intuitive link titles
7fd64f19 Merge bp/theme-design branch containing Bud Parr's new design
19de4476 hubolib: Remove the regular page restriction from .Site.GetPage
37e37877 docs: Fix parameter name in YouTube shortcode section
b5b41c44 hugolib: Refine allKindsInPages
bde807bd travis: Update Go versions
612f6e3a hugolib: Fix ref/relref issue with duplicate base filenames
50d11138 hugolib: Add a cache to GetPage
e0c2e798 hugolib: Support regular pages in .Site.GetPage
87203139 cache: Add a simple partitioned lazy cache
ccf1fcb0 Remove single.html references from homepage template
a91c2705 docs: Add furqansoftware.com to the showcase
99412bfe docs: Delete `brew update` from docs
f4d9612e Update console message in sample code for brew installation
2e693d1e Remove "brew update" from install page
801ab9f5 Remove "brew update" from install page
421a4694 cmd: Replace flagChanged with pflag.FlagSet.Changed
0a40cb43 docs: Add tutswiki.com to the showcase
d460159a docs: Regenerate commands docs
8b49c3a1 hugolib: Enable leaktest
bcd32f10 commands: Remove the rlimit tweaking on macOS
62fe640d vendor: Update libs
fbb78b89 hugolib: Speed up GetPage
6c560288 hugolib: Add BenchmarkGetPage
89b85aed releaser: Disable flaky test
4113693a tpl/cast: Handle template.HTML and friends in ToInt
f41f7282 Remove Unmaintaned Frontends from Tools.
8ddc7a5c releaser: Prepare repository for 0.22-DEV
f63ee656 releaser: Add relase notes to /docs for release of 0.21
1a965e5d releaser: Bump versions for release of 0.21
baa414ae releaser: Add a new step
cdf32f08 releaser: Update ldflags
98e333b3 vendor: Update golang.org/x/sys/unix
a0096213 releaser: Add release notes draft for 0.21
a119ef69 tpl/time: Re-add the time example
1f9e8dcc tpl: Make the Namespace func signature explicit
ebd636e4 releaser: Delay the version bumping
4d1989d5 releaser: Fix tag detection for changelog when doing a main release
a59525b0 tpl/time: Remove asTime template func mapping
3954160a tpl/time: Support overlapping namespace and template func
93c5774d tpl/collections: Make IsSet WARNING less chatty
77d2fe78 docs: Add ttsreader.com to the showcase
405c2f68 tpl/images: Fix error handling in Config
00945628 Remove showcase
58d4c25e tpl/collections: Use Feedback log instead of Error in IsSet
38661c17 tpl/collections: Log an error on unsupported types in IsSet
42fbded1 docs: Regenerate docs helper
10287263 output: Fix output format mixup in example
27e88154 docs: Fix incorrect path in templates/list
f1c29b01 tpl/collections: Add support for interfaces to intersect
93b3b138 tpl/lang: Add NumFmt function
e92ce83d docs: Update references to JSON
4c427f6a docs: Fix minor grammar issue in shortcodes.md
e682fcc6 hugolib: Fix RSSLink vs RSS Output Format
b6ea492b tmplimpl: Add support for ellipsed paginator
6e2f2dd8 hugolib: Fix output formats override when no outputs definition given
ac57a388 Add more 2017 tweets for homepage
765fd441 Remove GH buttons to test performance change
ef8ed989 Add back CRP for speed tests
94b5be67 commands: Skip .git directories
c7646551 Dockerfile: Remove ENTRYPOINT
af72db80 hugolib: Handle shortcode per output format
e951d657 hugolib: Handle any errors in processShortcodes
2bcbf104 hugolib: Prepare render per output format
1e4d082c hubolib: Refactor site rendering with an "output format context"
1d70aa98 docs: Add carnivorousplants.co.uk to the showcase
6fc7337a docs: Add worldtowriters.com to the showcase
ddaf6941 docs: Add ocul.on.ca/topomaps to the showcase
a28fbca6 docs: Fixed incorrect specification of directory structure
544f0a63 hugolib: The deprecated Extension, Now and TargetPath will now ERROR
5794a265 commands, hugolib: Deprecate disable404, disableRSS, disableSitemap, disableRobotsTXT
5d6d5221 Add anchor titles to all links on partial templates page
c022b4bb Add more links to partial templates page
ebf677a5 hubolib: Embed Page in WeightedPage
58d9cbd3 hugolib: Improve shortcode error message
7d399904 helpers: Don't clean the path before Join
9b202862 commands: Use paths from PathSpec for walker
c9976155 docs: Fix bash command in tutorials/github-pages-blog
9b5fac0b Fix menu for "What is Hugo" page
9b080dc6 helpers: Don't clean path twice
231c0a7e docs: Fix typo in templates/functions.md
5575ed44 docs: Update datafiles.md
42f4ce15 hugolib: Add default config for ignoreFiles
14555f13 Fix broken link on templates/introduction page
cff2f313 tpl: Add some GoDoc info to template func docs
f9e41f64 releaser: Push the tag before goreleaser is run
8f2ab5f4 i18n: Simplify code for detecting of untranslated id
cce49997 i18n: Add tests
3dd949d9 tpl/urls: Make urlize return a string
a40d1f6e i18n: Improve the detection of untranslated string
9c17fcb4 Update slug translation in multilingual.md
635b3bb4 docs: Add documentation on slug translation
08c0de5c tpl/data: Clean up data namespace
1cf2f3dc tpl/data: Move cache logic to separate file
5f095c27 tpl/data: Shorten some internal func names
f604076d tpl/images: Fix embedded sync.Mutex
f69df916 tpl: Add basic tests for all namespace init funcs
690b0f8f tpl: Add docshelper for template funcs
e2b067f0 tpl/partials: Remouve unused method
0e226042 tpl: Fix the remaining template funcs namespace issues
4714085a  tpl/urls: Make it a package that stands on its own
55f90a3a tpl/transform: Make it a package that stands on its own
ee5aa84f tpl/time: Make it a package that stands on its own
4a346346 tpl/safe: Make it a package that stands on its own
b958c0c1 tpl/os: Make it a package that stands on its own
fc77b630 tpl/inflect: Make it a package that stands on its own
a432c90a tpl/images: Make it a package that stands on its own
9aee8ace tpl/encoding: Make it a package that stands on its own
744dccbe tpl/crypto: Make it a package that stands on its own
8a49c0b3 tpl/collections: Make it a package that stands on its own
a3bf118e tpl/compare: Make it a package that stands on its own
65615573 tpl/data: Make it a package that stands on its own
0ab23eb5 tpl/strings: Make it a package that stands on its own
eefa0703 tpl/math: Make it a package that stands on its own
c5373efc tpl: Add TemplateFuncsNamespaceRegistry
8f95172c releaser: Disable shaky test
f4857661 Add txtpen to the Commenting Alternatives section
906ad232 Change temporarily ghdocsrepo field in site config
c616ade9 Add logic and operators tags to where.md for better discoverability
044b2389 Add regex101.com reference to both RE functions
c2a5952f Add regex101.com reference to both RE functions
8b94418e Add link to regex101.com for replace/find RE
71471f13 Remove opinionated code blocks (Third round)
bc9a6491 Clean up code block for ids and classes (Second round)
e4336f06 Fix minor typos in "where" function page
8e151a93 Clean up all list templating samples
abe797c9 Clean up code block (First round)
4b637ac0 docs: Replace cdn.mathjax.org with cdnjs.cloudflare.com
b6dc570c Update MathJax official CDN and respective code block
de7c32a1 tpl: Add template function namespaces
154e18dd Render 404 in default language only
565a78b1 netlify: Add some security headers
355736ec livereload: Fix data race in close
86f36c38 Comment out path frontM override in cm-organization page temporarily
93a447c5 docs: Fix typos
eaf75a18 vendor: Update cobra and pflag
8d0917af hubolib: Narrow a test assertion
718c0e14 releaser: Fix broken test build
d6957c19 releaser: Skip Git test on Travis
a695202f release: Add relase notes for 0.20.6
fea4fd86 hugolib: Avoid index.md in /index/index.html
656f8188 docs: Regenerate commands docs
f0f69d03 commands: Make first letter of flags' usage lowercase
8fbec599 vendor: Update cobra and pflag
d163576c Add blank content file for new numFormat function
e55399f5 releaser: Fix some of the fpm fields for deb
5ad2f176 hugolib: Make missing GitInfo a WARNING
202fa954 Update custom output formats description to mention extensiblity
0c435aaa Update description for output formats
162d3a58 docs: Add notes about some output format behaviour
fd5109b6 releaser: Fix ldflags setting
88d81110 docs: Remove temp release notes
4ac60e4c docs: Add relase notes for 0.20.5
b332d93e docs: Add a time to 0.20.4 release docs
b096a10f releaser: Add relase notes for release of 0.20.4
24be139c Add -linkmode external
3e0f1ad7 Set extldflags to static when building
0bd0593a releaser: Add relase notes to /docs for release of 0.20.3
c6e4aff1 release: Adjust release notes for 0.20.3
c0f491ab releaser: Add relase notes draft for release of 0.20.3
67746f36 releaser: Fix a Go vet complaint
7f6430d8 Automate the Hugo release process
0e87b18b hugolib: Fix handling of zero-length files
e98f885b hugolib: Prevent decoding pageParam in common cases
6498d73c helpers: Delete RenderingContext.getConfig
b5b6e81c hugolib: Ignore non-source files on partial rebuild
90d3fbf1 tplimpl: Add translation links to the default sitemap template
5f3ad1c3 commands: Import Octopress image tag in Jekyll importer
8cd3ea56 Fix check-vendor logic in Makefile
9c72fa36 Move lookup order section within lookup order page
8fb94fa4 Add note on Golang regexp library to findRE and replaceRE funcs
6aaf47be Remove the pesky .DS_store from the site and improve .gitignore
1b867649 Correct typo in cm-types page
e63c2fb1 Remove extra parentheses in GetPage function example
21ebf481 Remove extra parentheses in GetPage function example
d3041306 Clean up links in RSS templates
79355410 Remove check-vendor from make check
d6818f23 vendor: Fix go-toml
592e055f Add check-vendor target to Makefile
e97837f6 Fix typo in Format function
4a2148e2 Clean up list ordering and grouping; add ref to Format func
c67f09b2 Update signature for len function
999ba8d4 Add len to functions list with examples
246bb068 Fix heading structure for newest releases
6cba8ff7 Fix minor typos in Release Notes
2d1854f7 Add 20+ Release Notes
b1ce0d98 Fix .Date.Pages typos across the board
f7fae4b1 Fix .Date.Pages typos across the board
ab692e73 hugolib: Log WARNING only on unknown /data files
7cdc244a docs: Add txtpen as alternative commenting service
ed0c3ec4 Fix .Data.Pages range in sample
b5e32eb6 docs: Fix .Data.Pages range in sample
66ec6305 docs: Add 0.20.2 release notes
1cf29200 tplimpl: Allow text partials in HTML templates
fcca2cad Clean up single page and list template explanations further
318a75ec Update homepage terminal to govendor install instructions
74da85ed Fix small typographical errors in shortcode templating page
d557ca80 Explain use of .Params in shortcode templating
807f4519 Make small typographical tweaks to homepage template
8f70189a Fix typographical errors in lists.md
e8457556 Beef up explanation of _index.md in homepage content
452bd58a Add admonition note to GitHub hosting
9ed90b70 Add more in-page references to date-related page vars
0fff8177 Propose archetype usage for summary divider in content-management/summaries.md
8aaa5e17 Fix typo in content-management/types.md
26f87754 Fix broken link in toc.md to page variables
c5e2fa22 Fix link in cm-cross references
83fba815 Fix links in content-management/front-matter.md
8ccee671 vendor: Update dependencies
86a97dbd docs: Add Netlify badge if on Netlify
5e2e62d9 Get versions back to 0.20-DEV
8ac1fcd0 Prepare release 0.20.1
0ed3beec docs: Add 0.20.1 release notes
077005e5 output: Fix base theme vs project base template logic
efc0e05c docs: Add sanjay-saxena.github.io to the showcase
ab7f43e1 Update math function page to include "add" usage with strings
6d2ea0f7 hugolib, output: Do not lower case template names
45c74526 hugolib: Must recreate Paginator on live-reload
e765b43e hugolib: Avoid recreating the Paginator on copy
3b677594 hugolib: Avoid processing the same notify event twice
da022418 Remove unnecessary keys from config file
81fa0a45 Adjust all metadata partials to use absURL and relURL
7ee73ffd Update scripts to use absURL func
5fad8a9d snapcraft: Go 1.8.1
9a1c3f42 Add CLI Overview
aa0c2bd6 Add Emacs Easy Hugo to "other tools" page
26777720 Fix env var description in configuration.md
24ae7df1 Add mention of output format configuration to configuration.md
0b51849d Remove wip badge from output formats page
08ff6f61 Do a small language cleanup for output formats page
33db4143 Update custom outputs title and aliases
6652cb8b Move custom outputs to templating section
9ec00725 hugolib: Final fix of rssURI deprecation
cfd3af8e hugolib: Only show rssUri deprecation WARNING if it is actually set
4c6fec56 all Bump to 0.21-DEV
dac0d4a6 all: Prepare Hugo 0.20 release version
03ec2b33 docs: AddHugo 0.20 Release Notes
2ea0e17b Update incorrect titles in example front matter
18f5f3c1 docs: Add Emacs plugin easy-hugo
308678aa docs: Add siba.ai to the showcase
b50796e3 Add siba.ai to showcase
e73a35de hugolib: Remove unused line
c9731b2c hugolib: Delay deletion of Page.Now()
9ebbf1b0 docs: Add docs about output format linking
2874fc75 hugolib, output: Add NotAlternative to OutputFormat
9e69a92e hugolib: Deprecate rssURI
31014f0a Fix typos in yt shortcode description
f80b90b9 Add back CRP
9f1c72ee Fix typo for code block on templates introduction
0902a1c0 Make toc font size less obnoxiously large
8f60e9ac Update single page template example
bd40c73f Add datatable shortcodes and custom outputs draft
f9df1ed6 Change datatable shortcode to articlelistshortcode
9a8b65d8 travis: Go 1.8.1
7b2e1b0b hubolib: Do not add missing trailing slash to command line baseURL
3ce3917e Remove mention of v0.20 in Getting Started
aa5fddd5 Change width and height of search icon in SVG dimensions
1b638005 Fix links in content-management/front-matter.md
c05526d6 Remove "Using Hugo's Server in Production" section
0b4c1af0 Add some improvements to getting-started/usage.md
63034b10 Keep names of content formats more consistent
39f1401b Keep the name of content formats more consistent
2e639d95 Make a small casing fix on installing page
e975a07f Update press.md
2329545a Favor HTTPS and use ref.-style links more consistently
7ad721fd hugolib: Add .Site.Params.mainSections
5714531f hugolib: Only do link transforms etc. on HTML type of pages
3c405f51 all: Document the Output Formats feature
95808724 hugolib: Update deprecation vs Hugo 0.20
af99a590 output: Add some sane defaults for output format
83dcf5f3 Add SiteGetPage example to taxonomy templates
45bf976b Add Li-Wen Yip press additions to articles data file
7ad5d51e Update lastmod for single page templates
c7816c5b Update single page examples to use more recent Hugo features
7d60b1a5 Update mixed param type error for shortcodes
abe58bf5 Remove more wordiness from shortcode parameter type intro text
7ad76bfa Make yet another typo fix in shortcode templates
2e981048 Clean up shortcode templates
74d331ba Change to Template Lookup Order for temp-lookup linktitle
78164269 Fix heading typo in cm shortcodes
56d459d6 Fix heading in cm-shortcodes
3375fc2b Fix heading in cm-shortcodes
260b55ea tpl: Set RenderingContext.Config in markdownify
8f09e5f6 helpers: Add new properties to ContentSpec
c4a11655 all: Handle all errors
35fffad1 Update content-management/multilingual to reflect new TOML support
bf2d2bbe Fix typo: "KaTex" → "KaTeX"
e77bb13c media, output: Fix spelling
e6e1aca3 docs: Disable GitInfo by default
f3b4a0e9 docs: Add info about Pygments installation in installing.md
0dd6890e docs: Add article by Li-Wen Yip to press section
119182aa Add sections_weight to all content files
ce428a9c Update trim description with note on whitespace
fe78595c Add emphasis to trim function explanation
6650fae7 tpl: Fix nil pointer in Tree()
f4b12935 Fix typos in syntax highlighting docs
6b7c8497 Update trim explanation per gohugoio/hugo#3279
b31da911 docs: Properly capitalize GitHub
4b1dfc1d Update govendor instructions in source install
14255871 hugolib: Add optional outputFormat to Ref/RelRef
a883948c Register all media types when in server mode
bc36d468 tplimpl: Reintroduce the double template lookup in Partial
7da1b659 all: Use the configured output types to resolve template type
868f89d5 hugolib: Improve render error handling
04d80e6e commands, helpers: Add correct verbose log level to the global loggers
0802f79e output: Make template name lower cased
10ff2f31 hugolib: Read media types and output formats from site config
f8d555cc media: Add DecodeTypes
c9aee467 output: Add output formats decoder
d6e8b86f output: Add CSV to the global output formats list
2cf2b483 Add language-hugo Atom plugin to dev-tools editors
dba7e38a Add embedded SVGs example to dict function
af3230aa Fix typos and add explanation on configuration.md
77647be7 Expand static dir explanation in dir structure
a098081c vendor: Update go-i18n
5d7eeead docs: Remove localhost part from link
8b5b558b tpl: Rework to handle both text and HTML templates
53eee8a4 Update Mmark info to show ease of use with MathJax and KaTeX
b3819aa0 Add esaezgil.com to showcase
27610ddd hugolib: Don't ignore errors from applyDepsIfNeeded
6b29bccf hugolib, i18n: Update tests with flat format and TOML files
28fdd71c vendor: Update go-i18n
fe8462b2 docs, examples: Use TOML for i18n config files
d122260d vendor: update goorgeous
a037b855 docs: Add blog of Enrique Saez Gil to the site showcase
7eb71ee0 Revert "tpl: Rework to handle both text and HTML templates"
c97dae40 hugolib: Use Page Kind in template errors to prevent log spam
0aeadfd0 tplimpl: Add test with failing partial
5c5efa03 tpl: Rework to handle both text and HTML templates
631833e9 Add missing comma in Supported Content Formats page
561edc0c Add fm-specific Mmark syntax per bep suggestion
8d65b360 Add fm-specific Mmark syntax per bep suggestion
484bbd1e Add fm-specific Mmark syntax per bep suggestion
3d7960e1 Fix typos in Mmark section in content formats
969178b6 Fix typos in Mmark section in content formats
5a59b0fd Add Mmark section to content formats
e491b309 Add Mmark section to content formats
73c1c7b6 vendor: Update cobra
67076e58 Add example to "now" function
f911b107 media, output: Add CSV type and format
ab07457e Update with temp GA code
d1709df3 Fix broken link at the bottom of shortcodes.md
904eaa8d Fix incorrect syntax decl in cm-shortcodes
7e3805b5 Fix odd formatting in cross-references
45aad24e Add note on Mmark with MathJax to formats doc
d98cfe10 Update nginx config in 404 templates
fb94d4c9 Fix terms template lookup order
4d27a27b Update broken links in customizing themes
bf4015d6 Fix typos in vimeo sc description
001cd27c Clarify custom class to yt and vimeo shortcodes
0c770e40 Add warning to isset function for lowercase site config keys
a649a7ae Add firstname.club to showcase
763dd22c Remove how-to-use docs-page
d2829694 Fix inconsistencies in FM categories
530002e6 Update GitHub deploy
d7d5771a Update gh deploy
68969470 Update content to use Hugo's built-in menu
05949c90 docs: Fix typo/source link in firstname.club showcase addition
d5036c3a docs: Update link to Disqus alternative Livefyre.com
af1f9ecf docs: Add firstname.club to the showcase
42a4f6f9 tplimpl: Fix map data race in URLLock
79b34c2f tplimpl: Fix deadlock in getJSON
de558c3e Remove Livefyre from commenting options
a05fbce1 Remove unnecessary pre 2.4 git docs from GH hosting instructions
5758a6d6 Update GitHub pages hosting
b286c7d9 Remove intelligent posts - stale issue - from roadmap
e1645544 Update taxonomy templates
3c6b16d5 vendor: Update fsnotify with several Linux-fixes
87b3cd46 hugolib, helpers: Reduce log level to WARN on .Render for non-regular pages
8b06205a Add "tip" shortcode and documentation
5989c4d4 helpers, output: Fix spelling
af55ec76 hugolib, output: Gofmt
70080e3d Merge pull request rdwatters/hugo-docs-concept#57 from moorereason/iss31
f2fbf0b2 media: Add some more relevant MIME types
da717759 Add function signatures
3d6d55d6 Remove concept documentation for time being
c698a77d Fix breaking yaml in delimit function
d688bd98 Add alias for old MathJax tutorial
7a1f9a6a Update signature fields
dbbbd498 Add MathJax to supported formats
1989c17e Add old MathJax content to content formats page
0819a044 Add intro text to hosting and deployment
8366049a Add intro text to hosting and deployment
f514681d Remove all tutorial-related content from install guide
db09419d Update readme todos and clarifying readFile w themes
0a6bc386 Fix broken link in list page templates
9c652071 Fix broken link in list page templates
109a6a59 Move list and homepage content to list templates page
e6511dff Remove findRE TOC example
49232736 tplimpl: Fix lookup with non-standard layout folder
930a3df1 hugolib, output: Restrict Render to regular Pages
e49a2b83 hugolib: Fix Render layouts for list pages
9a0aa5fd hugolib: Wrap pageOutput create in sync.Once
0aaf3c56 hugolib: Fix panic for Permalink in 404 etc. templates
ee4a33b1 commands: Fix broken commandeer
09c88e84 output: Rename HTMLType etc. to HTMLFormat
24c17702 hugolib: Revise paginator alias path handling
b7ed67d4 hugolib: More TODO fixes
3cd97951 hugolib, layout: Consolidate RSS template handling
ee75e299 Remove the now superflous defaultExtension
15b64d51 all: Propagate baseURL error to the callers
148fedd2 hugolib, tplimpl: Use OutputFormats to create atom links
ec01c3a7 hugolib: Add 404 test
5761b93c hugolib, output: Fix RSSLink vs output formats
87188496 hugolib, output: Handle aliases for all HTML formats
0c4701f0 hugolib: Update site stats to take output formats into account
d851d6b9 Add custom protocol support in Permalink
8bcc08e3 media, output: Add Calendar type
dbb83f92 hugolib: Read default output formats from site config
4aaed87d hugolib, media: Make the MediaType available to the templates
c7dbee23 hugolib, output: Add Rel to the output format
29d3778b docs: Move the rough custom output formats spec to docs
1b2be5e8 hugolib: Add OutputFormats with permalinks to Page
baa29f65 output: Rework the base template logic
c7c6b47b hubolib: Pick layout per output format
08fa2b11 hugolib: Fix layout lookup order for Render func
6178238a output: Speed up layout calculations
df953839 hugolib: Speed up URL handling
a49bf870 hugolib: Remove siteWriter
d76e5f36 hugolib: Pull all alias handling into one file
ad8cea87 Refactor layout resolve to a descriptor/adapter pattern
4c2abe00 Rename OutputType to OutputFormat
6bf010fe hugolib: Refactor/-work the permalink/target path logic
c8fff950 Implement the first generic JSON output testcase
3ec5fc35 hugolib, output: Incorporate suffix and type in layout resolve
f091fc23 hugolib: Add basic setup for output def per Kind
03122e51 hugolib: Revert to using Page as the render chan type
e5200dda hugolib: Remove the copying in the renderRSS
a8244658 hugolib: Put back taxonomy term paginator logic lost in rebase
50c64415 hugolib, output: Add theme logic to LayoutHandler
348834d0 hugolib: Add a PageOutput wrapper for rendering
254cd89c hugolob: A first incorporation of output types in rendering
10de0771 hugolib: Use the new layout logic in Page
3bb52bf7 output: Move layout logic to the output package
d3d2c63d output: Add output type
c4989c39 Add MediaType and a crude implementation
047e039b Make docsearch config async and defer
0d5146a8 Tweak content
9262c5b3 Exit -1 on ERROR in non-global logger
e0cfe258 Add first round of custom output content
2bea9d0c Revert "tplimpl: return an error on unsupported type in isSet"
850a08a4 Move all files to theme
0796957d Fix paths to indicate theme path and leave a note about it
1b92c8b7 Change RSS description from full .Content to .Summary
50c24e07 Move to theme folder
2ac2fa93 Remove extraneous config key-values in config.toml (continued)
b14b6596 Add Hugo SFTP Upload tool to dev tools
1517384b Remove more extraneous config.toml values
a479cb13 Update all uses of readfile SC to use root path
17b21e0a hugolib: Correctly identify "my_index_page.md"
02501129 Update GH pages tutorial
55407e34 Merge pull request rdwatters/hugo-docs-concept#52 from digitalcraftsman/ga
a3f46c9d Resolve config conflict for taxonomies
8cfea6b1 Update config GA
847d3d4f Remove extraneous values from config.toml per convo with BP
043b4e49 Fix Hosting on GitHub tutorial
22351f4a Switch to Hugo's internal GA variable
7f68e319 snapcraft: Bump version to 0.20-DEV
2ed75f34 snapcraft: Add vendoring support
767ea0a0 Update to muli font across the board
32fc7534 Mix font faces
56c61466 Test out serif font on body copy
0381c06d Remove outdated warning about imageConfig not working
9d9ec1dd docs: Add Hugo SFTP Upload to the tools section
9f0b02b8 commands: Fix case of createpath in new.go
a159feff create: Delete redundant viper calls
30b43476 Add GitHub stars
b5c13109 Make more color changes per Bud's suggestions
0c0ec81d Make more color changes per Bud's suggestions
8b5e4d73 Update footer color to match news site
01a296dd Add navigation design changes per Bud's suggestions
2dab2351 Test adding events to codeblocks
bc055d0a Fix typos on after function page
fc826d5f Update after function with combo example
683011a6 Fix typos on summaries page
09aed316 Add admonition note for CJKLanguages and Hugo summaries
8bfc8828 Fix odd font sizing for code
d07ff9d2 docs: Remove dead links, consistent formatting...
c830861e Add example usage to seq function
f1b1df50 docs: Fix typo in templates/functions.md (#3214)
36bbadec Add final copy for directory structure
b8cfe226 Improve Netlify copy to reflect Netlify design blog
77b26b71 Improve Netlify copy to reflect Netlify design blog
ce78b00f Fix search colors on homepage replacing with SVG
73ede162 Fix breadcrumb to take full section name
fdd20af5 Fix typos
559b4007 commands: Keep "." directories on cleanDestinationDir
5e191ccf docs: Add bharathpalavalli.com to the showcase
6411cbf9 Fix site nav toggle on mobile
ddaebc4e Fix homepage search colors
e5e175c7 Remove test page for yt shortcode
4d8532ab Try out dark header per bp mockup
4df25162 Fix capitalization consistency for markdown term
20bf194f Fix homepage SVG logo
1cbccec3 Add back embedded crp in site header, perf test
b56a888e Align tags to the left in article header
ff9d4635 Switch header logo to img - too big for CRP
f43481f2 Fix heart icon on homepage
d359d63a Add back CRP and switching header logo to embedded svg
08738d38 Add back CRP and switching header logo to embedded svg
d1ab36a4 Merge pull request rdwatters/hugo-docs-concept#48 from sethmacleod/patch-1
15317f21 Fix typo
d3cd68e6 parser: Improve TOML frontmatter parser performance
f816f2bd Add updated Netlify tutorial
68f4cd82 Removing .Site.Recent
e3f79885 Update site.recent closes #46
ff2931c6 Remove all bloat from video sass partial
594a9691 Add yt shortcode
3fa7bc9c Revert "Add support for a flatter and simpler language file structure"
3518de10 Revert "vendor: Fix broken i18m definition"
7c48ad57 vendor: Fix broken i18m definition
0e75f6e7 Add support for a flatter and simpler language file structure
68368bb0 Tweak env var config content
6eddb3e5 Revert "helpers: Add a Debug method to DistinctLogger"
d134b397 Remove editor from config docs
9e2b548b Fix URL for emoji cheat sheet
95597b8a Fix URL for emoji cheat sheet
50d95b94 Add emoji instructions to supported formats in cm
917e26a8 Add tibobeijen-nl to showcase
f74d9c81 Add tibobeijen-nl to showcase
5e6bbd69 Fix typos
6e03c96a docs: Add tibobeijen.nl to site showcase
190dcb59 Improve admonition semantics
1ca6a276 Add ns field to all func files
8c611c13 Remove unnecessary comments from header and baseof
4382a8a6 helpers: Add a Debug method to DistinctLogger
9dfb9c14 Case insensitive translation of the 'more' tag when importing from Jekyll
c2ffdfab docs: Fix documentation of non-existent 'editor' config
2390c000 Add back CRP
fa1c7d1f Update shortcode templating
09d0120d Update to use muli as font
51e42a3a Add parent to shortcode docs
fbc35a84 Add parent to shortcode docs
a9966103 docs: Change OS X to macOS in README and CONTRIBUTING
491d4068 docs: Fix CONTRIBUTING.md
e4c59bf0 Merge pull request #35 from rac2030/firebase
10b05a8f Merge branch 'master' into firebase
ab5cf356 Make small tweaks to language used in "Hosting on Firebase"
d8923eb6 Update to new go-toml API
09384837 Get rid of extraneous icons on homepage
2f02dfa7 Add some 🔥 ❤️️
5ee2949b Remove gratuitous notes markdown
c94abaff Fix SVG on homepage
d6093aba docs: Update contributing guides
770b9ac7 Fix JSON front matter expl per gohugoio/hugo@ede452d
b64f808e Update license page to include download
1849c7e9 Add Red Hat and Fedora to installing.md
0fe6d98b Update OSX to macOS across the board closes #33
7071026d Add IE=Edge to meta to fix broken SVGs on IE11
b87eed3e Fix overflow issues with HP in IE11
110f3086 Fix more IE11 homepage layout issues
78cc9e20 Fix more flexbug issues for IE11
1b6431e1 Remove extra scroll bar in toc
b0c3f566 Make more typographical fixes to the front matter page
aeda2337 Add generator tag and fix typos in front matter page
638cc806 docs: Optimize 11 showcase thumbnail images
ec3dc325 docs: Add Linux distro-specific installation instructions
b156ef27 docs: Note Hugo as Snap package can write only inside $HOME
042f8fca docs: Replace Mac OS X with macOS in three places
c126c941 Remove commented-out front matter vars
6af744c2 Add missing page vars and predefined FM vars
2f1140cb Move articles to toml file in site data (continued)
902d336b Move articles to data file called in datatable shortcode
2704a4ce Update installation instruction on Linux distros
431d5974 docs: Add lucumt.info to showcase
b8666826 Update toc documentation with more advanced example - inspired by forum discussion
a4eb1e0f Update content source tree for spf review
903e43f1 Update content source tree for spf review
a9bfec6d Update concept docs for spf13 review
ede452d3 parser: Accept JSON frontmatter without leading "{\n"
bae5d8a7 Fix typos
a1c8d046 Add GH milestones to roadmap, and update Snap/Ubuntu in installing.md
62efcdfe commands: Improve jekyll import date format
4b9493cb docs: Improve command reference page
48eaf43c Fix typos
b1b4c07a Remove wip badge from multiple template files
b414d7d2 Combine ordering grouping lists with lists introduction page
8187b315 Change all heading links to copy-links
44c97f91 Change to locally hosted blazy.js
3c50e8dd Make final changes to complete final schema.org partial
4dbb2301 Fix odd ordering in functions section
032982a6 Fix date formatting in JSON-LD for schema.org
20bfa632 Commit first draft of schema.org structured data
bec843de Fix broken links (final round)
fbee443c Fix many more broken links, and fix TOC scroll on L-
d97c7778 Fix broken links (first round)
0e0abb17 Fix weights for ordering of hosting and deployment section
201c999a Update other vars to individual pages
c315f532 Fix broken URLs for tags pages
a4f76cfc Remove Tutorials section
a5a7e873 Add js icon to code blocks and fix prev/next icons in content footer
5d0748ce tpl: Add union template func
fb25d255 Update content filenames for all vars section; updated authors draft in cont mgm
559e73b9 Add Netlify hosting and deploy tutorial
4d187661 Add chocolatey install
83fd79c4 Add first draft of content-management authors page
b0eddb63 Add build issues empty page
5c69a21d Add TOC to format function
63e2a46f docs: Add Android to README
2f2ea42c hugolib: Fix reloading corner cases for shortcodes
5f443bd4 commands: t.Error => t.Errorf
e472140d Update for crp before forums release
f039e3be parser: Refactor frontmatter parser and add tests
6f3a6efd Shorten text on homepage; update ordering lists page
9c03693d Update types content
bca33c38 Remove unnecessary content in type
2779a288 Add host-specific icons to source links in showcase
14ddd029 Add host-specific icons to source links in showcase
4c51ebf8 Merge lazy-loading from digitalcraftsman
0f7ce22c Merge pull request rdwatters/hugo-docs-concept#12 from digitalcraftsman/lazy
ddc8cc00 hugolib: Clean up redundant frontmatter error logging
2a011b7c Add admonition note for Snap users in install docs
0e44f75e docs: Explain themes dir in quickstart guide
690961ba docs: Add myearworms.com to the showcase
eb41128a Add lazy loading to showcase
fe41bd61 hugolib: Default rssLimit to unlimited
b841193d Change sorting of tutorials to weight
0f24f217 Fix typos on lookup order page
149abc4e Fix typos on lookup order page
f69dba20 Fix search on M+ screens for HP; make typing faster in HP terminal
6914e9aa Fix search HP icon on mobile
fc7fe4db Fix flex footer on overview pages
cc0d8203 Update docs contrib guide
df5eb4e7 Update docs contrib guide
5ef857a0 Update docs contribute content
e12f8def Fix flexbox wrapping issues on homepage; tighten up gopher animation
fe1a7557 Move to kebab for secondary/toc menu
7032ee8e Add enjoyable recipes with new optimized img and FM
b5ce1d1d Fix external links icon placement
b31ad2ee Merge pull request rdwatters/hugo-docs-concept#6 from sethmacleod/master
68d58c29 Merge branch 'master' into master
8381df3b Fix small typo and make content updates
8e27de10 Fix external link icon in contents list
aba53d24 Fix fontello for blockquotes icon
1739a966 Add README for gulp asset pipeline
c1437ea4 Add finalized views.md and usage.md
60c2babf Attempt to fix scroll on focus issues in iOS
9e999539 Remove extraneous showcase images
ad6367bf Update doc contrib, baseof temps
48120ccf all: Fix some govet complaints
560ed6e6 Update appveyor config
0c45e638 Optimize all showcase images
7e3ef07a Add missing markdown icon for code blocks
1995b5d4 Update permalink values to dl
0467c189 Add back CRP for last build of the day
434edddc Fix homepage layout
766089dd Finalize more CM pages
01545899 Fix bash icon in examples
8d0c9ac6 Fix bash icon in examples
74d7da54 Remove GH buttons and GA temporarily for dev
248fdef3 Concatenate all js
5c638b69 Update to use crp and fontello
45b9d722 tplimpl: Add built-in print funcs to FuncMap
df5be925 Update to use locally hosted Monserrat font
3839a0f9 Make nav accord to 1 item only, per @digitalcraftsman
4e1ad212 Fix forum link in site footer
a2a8a651 hugolib: Don't report taxonomy count if disabled
4bfa1890 hugolib: Remove unnecessary params
7bedd4e2 Update content and CSS
681712a9 Update freebsd icon placement
a2ec372a docs: Add enjoyable.recipes to the showcase
fbe1b65c Fix install row on homepage to not break lines in terminal on iOS
f7ff4eef Update doc contrib guideline
3a3828d7 Update doc contribute guidelines
da06842e Fix icon font family for code blocks
87099898 Revise "Front Matter" section (second round)
da5b2435 Revise "Front Matter" section (first draft)
b67ee3a5 Increase font weight on features row of homepage
5f8d840f Fix typo on homepage
958cb423 Update with homepage description & smaller default social image
e45a9713 Add default social image for sharing
49a83a41 Set font-weight of function headings to 300
3dfb2961 Update AddDate functions and make navigation more narrow
2f3fd84e Fix toc scrollspy and desc for internal.md
ee114747 Fix toc scrollspy and desc for internal.md
b134f2c2 Change title of additional templating languages
26225d8b Add first draft of internal templates page
118704aa Begin first wave of taxonomy templates edits
f9b19fab Add GoHugo AMP to Starter Kits and increase font-weight on hp tagline
07985120 Add Poppins as a self-hosted font
fb9012d5 Concatenate all scripts
67c60f48 Correct delimiters for YAML front matter example
1a147b9b Shorten descriptions for getting started pages
a3dd283d Fix typo with @digitalcraftsman in Arch Linux install docs
c5c7d5a5 Merge pull request rdwatters/hugo-docs-concept#4 from digitalcraftsman/install-via-arch
d1672cac Update funcQR _index content
e90f0b5f Fix open source footer text on homepage
2c776de6 Fix more typos on installing page
b6c7d01e Finish edits to go templates content
c4aa9a34 Remove unnecessary partialCached for footer
eb99500b Clean up first draft of templates/partials
bfddd8ab Clean up first draft of templates/partials
c9506999 hugolib: Populate the taxonomy term Pages list
6c5ef713 hugolib: Add a temporary workaround for page.copy() data race
8e2e9fc8 Add installation instructions for Arch Linux
c7b8c45d docs: Correct toml syntax in Github deploy tutorial
14915639 Fix typos
72685a74 Remove all references to baseurl in templates
e0c3e906 Make small iterative improvements to copy in templating
85707e92 Add descriptions to all remaining pages
be89f1e5 Remove relpermalink file; fix sorting on functions QR
ec001f08 Update with new homepage
3f1de445 Update master with homepage
96544d23 Clean up relURLs and extraneous templating
90d7bfed Make further improvements to content organization page
4b2d20fc Finalize types page under content organization
e52e2a70 hugolib, target: Rework/move the target package
ea165bf9 vendor: Update cast
1a0f38ad Update homepage partials structure for easier management
2e669359 Add descriptions to features section
22c89dcb hugolib: Fix HugoSites.createMissingPages
6db2087e Add fadeindown for homepage menu
4c446c6a Remove call to homepage stylesheet in site-style.html
b45c4b3a Update homepage features data file
eb0e7580 Add download button back to code block shortcode
8d4584c9 Fix bottom margin in global nav
5cb9f686 Add twitter row and dummy text for homepage features
1b7b1f4f Fix eye blinking animation on homepage
4677cbec Add animations to homepage gopher badget and cape
29c1c9aa Fix typo on homepage
e7a9b447 Add first version of adddate to functions
144cc8ee Add format and full date format explanation to functions
78d55aec Copy tweaks to homepage
fe211e9d Fix phrasing on home page to make it more relevant to visuals
7fb86c29 Fix phrasing on home page
fd062680 Add new article to news
d0e2a1fa docs: Add blog post from After Dark creator
6b31541b Add AddDate to functions list
c9dc4276 Add quotes to homepage
e21aa250 Add more content to home row
7ff7a63a Fix breaking error on missing bfconfig shortcode for BF Rendering
33ed1b4c Add webkit no scrollbars to navs
395b2086 Update toc for testing fade at bottom on PC
28cc820f Make first content fixes to bfconfig readme
d5b49fe3 Fix toc
befd5d73 Remove unnecessary sass files
8074ff09 Add Twitter references to data folder
aa3ce7ab Update content and URLs of About section
0b1c31fe Add section lookup order change for v0.20
5a94e4cf hugolib: Add section template baseof test case
f4779b25 docs: Add new section list lookup alternative
8203fc59 hugolib: Add /layouts/SECTION/list.html to template lookup
1dd2b163 Fix more styling inconsistencies
fdcc05e7 Add more icons to code blocks with or without shortcode
9dc11d3b Add SVGs and slide animations to homepage
fb461856 Add removal of icons
abe77bc1 Update fonts per type kit
8b09dfba Update fonts per type kit
7acec3c6 helpers: Return partially cleaned URL in case of error in URLPrep anyway
74ea81b8 tplimpl: return an error on unsupported type in isSet
577522bd helpers: Remove unused arg
8a8a0fc3 Make first content commit with beginnings of new homepage (testing Netlify subdomain)
23f5b9ac hugolib: Fix broken test
1279ca20 docs: Add some more quotes
b1eab2be Update README with new URL
38a9ffaa Make first commit to homepage branch
d5f2560d Add link to GitHub Pull Request Tutorial
9671162a hugolib: Make sure that empty terms lists are still created
50b301cb Fix config to include noindex tag
3669015f Handle Hugo version strings with patch level
a0e3ff16 helpers: Fix version string for Hugo 0.20 and similar
cc158647 hugolib: Only return RSSLink when RSS is available
2c07f133 Add styles for different languages in code blocks
b19db039 Add styles for different languages in code blocks
d0c7f01d Tweak code blocks
c21fea82 Move pipeline to root
0366c01b Switch to new Typekit "Museo Sans" fonts
f0ebb43d Remove headings from note and warning entirely
0ef29d31 Change code block styles, and start first round of fixes for bf config
b7a672fd vendor: Update Cobra
972649c6 docs: Correct date in automated deployment tutorial
afb3334e docs: Correct link of 'now' tpl func in release notes
c266cd2d vendor: Bump versions
5ed3660b Remove heading from admonitions replacing icon with SVG
0b91053c hugolib: Only consider regular pages in Prev/Next
2af9243e Update required fields icon in lists, esp contrib to docs
63b78b38 Remove old aliases afor abs and rel langurl functions
4c048ac4 Fix wrapping issue with prerendered text for code in lis
9c6096db Fix odd behavior of content footer with flexbox
be081676 Switch to Roboto Mono for code
cc6aef27 Add first round of themes submission guide
781574be Finish local file templates page
fcb147cb Add content to contribute themes page from them GH readme
d5146d68 Add contribute themes page
396276aa docs: Revise automated deployment tutorial
d3ea7920 Remove temporarily JSON-LD schema.org metadata that is breaking build on Netlify
66b7e324 Update to ideal workflow in concept document
58eb36f3 Remove functions dropdown and adding content strategy section to concept page
072cd003 Bump version to 0.20-DEV
0a991682 docs: Some minor release notes fixes
28198ce9 docs: Fix shortcode param in release notes
a1741f19 Update versions to 0.19 release
f22a8edd Remove more unnecessary needsreview in front matter
c9c889c1 docs: Add release notes for Hugo 0.19
f2706329 Remove needsreview from all hosting and deployment pages
d219bd04 Update descriptions for all of hosting and deployment section
29edd7fe Add markdownify for function quick reference
e6dc8c46 Add GH stars button to site header for dev review
770d3e96 Make first round of updates for lists explanations and content views
c41585f8 Delete unnecessary sass files, shortcodes, and partials
cd4613d8 Make first round of cleanup for content organization page
f70b94bd Fix ordering of pages in dev tools section in nav
4bd4374d Add updated command mds from bep's 2-25 commit to master
515426a1 Make final commit before submitting to Gitter channel
72e1b602 Update content changes in concept document
6cf78346 Update multilingual page
eb572c8a docs: Add documentation for disableKinds
8d513222 docs: Update RSS docs with rssLimit changes
495d88ef Update filenames and sections for shorter URL structure
75935138 Remove and consolidating countwords and countrunes
1faf3d3c Fix spacing issue caused by command line template
b8a606f6 Update rss vars page
c0a626b6 Add first round of functions
a9604235 Fix spacing on section list pages
0eb76b08 Revert "hugolib: Add terms' pages to .Data.Pages"
a8a8249f Revert "hugolib: Render paginator pages for taxonomy terms"
3631fd2f docs: Regenerate commands doc
e37e3dcc tpl: Add title meta tag to twitter card template
b108e5ee Make first round of edits to ordering and grouping lists page
82dcefe5 Add last of shortcode display examples
ef3edffe Update all built-in shortcodes with output and display examples
6dd57f7a docs: Remove waffle.io graph from CONTRIBUTING.md
eaabecf5 docs: Adds 'Using _index.md' page
e21fdbae docs: Fix ambiguous typo in quickstart
564bce71 Fix missing link in articles page
0c48be63 Fix max size issue with toc on xl=
d93008b4 Fix footer for additional twitter list for bep spf13 and gohugoio
718ed72a Try main element as full width
aeaaa42c Fix broken link in site variables
bfd6a131 Update with download button and new see-source icons in code blocks
ee008f4b Update function front matter across all files
d8c64b2d Make more copy edits to customizing themes tutorial
e9921ae4 docs: Mention Hugo's official twitter account
950d1aa1 docs: Add article to press.md + cleanup
4c101c5e Add external link icon to contents-list.html
582045d6 Add external link icon to contents-list.html
91ff6ac3 Add external link icon to contents-list.html
0fa26bc5 Fix non-markdownified titles in showcase
0004cdd9 Update few functions
ba6104bd Fix delimit description
81596493 Make small mods to heading structures in several WIPs
c1425a16 hugolib: Fix preserveTaxonomyNames regression
8b180ffd Update homepage tile descriptions
1dda1b25 Add first few functions and site hierarchy SVG
74277187 Add first drafts of lists, sections, taxonomy templates
831bfd36 Update Docker file to Go 1.8
4d679627 hugolib: Render paginator pages for taxonomy terms
e117b1b2 hugolib: Add terms' pages to .Data.Pages
48fecc42 Add tree.md to root
27f206de Update local file templates page
7e64e217 Enable TOC breaking layout with content footer
acd850f0 Fix headings in dev tools - comments.md
2e899e41 Fix typos on single page template page
cca1ef53 Revise description of Archetypes
b7c91e4f Update other templates pages with toc true
d15d7dc9 Add missing toc to certain content files
691544f4 Finalize single page template content
9e6b5eb9 hugolib: Temporarily disable leaktest
ed22a83f Finalize syntax highlighting
2eb2431c Finalize syntax highlighting page
c8d5a2ba Update syntax highlighting page
7b72d6ba Finalize migration tools page
1b7ee6e5 Update migration page
2414df12 Add all weights to template section and updated go template primer
0f109fae hugolib: Fix broken shortcode tests
62783935 hugolib: Include full filepath on shortcode errors
a1512e50 Update files for reviewers
5d0694a4 Change annotated content doc to just content changes
06370ca6 Remove redundant roadmap
13c75f44 Add first draft of strategy statement and content revisions
87acf292 docs: Add promotive.es to the showcase
13972d6c hugolib: Cleanup the Goroutine count calculation
91968f3b vendor: Update cast
7934db91 commands: Cache logFile in createLogger
9e52477d hugolib: Add relativeURLs and canonifyURLs to Site
c7535b9c commands: Remove flagChanged from commandeer
eb27c47f tpl: Use og:updated_time OpenGraph tag on nodes
df1ff57d Use Page.Params more consistently when adding metadata
2cbdd653 tpl, hugolib: Fix live-reload of non-renderable content pages
4e77c871 tpl: Remove twitter:domain tag from internal shortcode
d3fb1960 docs: Improve documentation for menu rendering
f8115778 Add comments and analytics to partials page
9bdc96fa Add content for syntax highlighting
f8267ffe Add Scratch function page
122e3c4f Add toc to most template pages
1aafe65f Update content sections page
cbb0461c Fix typos and revise text on install and tutorial pages
2320c568 commands: Make sure build error is logged in watch mode
41857d03 utils: Use local logger
d04a2457 Add tree.txt
03d0a338 Update functions content footer and added new funcs for menus
75d855c0 hugolib: Add check for p.Markup == "org"
86e8dd62 all: Add org-mode support
d2f2d9a3 Update temp command section and reverted to old favicon
e34a358e Add first part of command section
1645c501 Add review badge on incomplete pages
a3af4fe4 hugolib: Finish menu vs section content pages
2a6b26a7 hugolib: Improve menu generation for section pages with content
782004ba Update with aerobatic article on password protected sites
807b2a9c Remove redundant press and articles page
f3e48405 Change all overviews back to section titles on section list pages
170e9616 Finish though in create-your-own-theme admonishment
49f468e6 Update more content management files
370d6686 Add list-icon to overview/section list pages
5860bf1b Revise order of variables pages in site navigation
c184c685 Add more content to getting started pages
fe9fd0ac hugolib: Cache the value of Page's RelPermalink
840c71be Add all variables and params pages
7e0fa13f Get rid of some viper.Get* calls
b4cd9e63 Finish up last of hosting-and-deployment transfer from old site
0a76c785 Add finished Quick Start
9acdc1bb Remove breaking relrefs in quickstart
fb1911e0 Consolidate all install pages into single page
d40ebc68 Add mac install guide
3483642a Remove wercker yml validation ref - 404
16513c9a Add wercker tutorial as example for reviewers
3d4e99ed config: Remove unused var
02b120d1 hugolib: Discard current language based on .Lang()
6809ea1e hugolib: Fix .Site.LastChange
a0b3d9db hugolib: Add temporary date parse test
2ea242d5 hugolib: Minor Go vet fix
99fbc75e hugolib: Fix regression of .Truncated evaluation in manual summaries
ec3c1997 Fix broken links in features page
2b06eb88 Fix odd syntax highlighting in cross references doc
ce58bede Fix local files shortcode
1890155a Add shortcode from live site for readfile example in local files template
b8fba275 Add shortcode from live site for readfile example in local files template
9416fdd3 hugolib: Add missing page kind to allKinds
ed70c14a Add shortcode from live site for readfile example in local files template
4e159ed5 Fix featherlight to avoid icon images
3bedf1e2 Add featherlight for body copy images
b2e3748a hugolib: Enhance `.Param` to permit arbitrarily nested parameter references
44e00b62 Fix broken images originally used in how to contribute tutorial
e028978d Update broken links
55aae645 Fix shortcode language in local file templates that was breaking Netlify build
2cb5ad8e Update shortcode and shortcode templates, both of which need much more work
56ecb233 Add just a shit ton of content
949bbd03 Update functions front matter
6d2281c8 hugolib: Add disableKinds option
e096917f appveyor: Add go version
13ca0b4c appveyor: Fix build, take 2
3dade5de appveyor: Fix build
b360f9b3 appveyor: Print Go environment
be1bb5fc Make further improvements to Go Template Primer
bdc02edf tplimpl: Fix issue with recursive templates
e24c1af2 Make further improvements to Go Template Primer
4493e8ed hugolib: Fix issue with taxonomies when only some have content page
960707a4 Update amber and ace sections
07ab7ae3 hugolib: More test helper cleanup
fa1e4780 Update archetypes content
82c02b84 Update content sections admonition
bec195d1 Fix page title issues with functions section
a1ca69b9 Fix broken tox on markdown and support pages page
bd3b1b53 Make further fixes to shortcodes
e9c7e054 Fix order of built in shortcodes
605508d4 Fix content footer next and prev links
ce3eb287 Fix toc sidebar, add icons to site nav, and add prev/next links
ed847ed9 hugolib: Test helper cleanup
bf7399fe Add first exFile shortcode
10c13f5d hugolib: Make RSS item limit configurable
ade20763 hugolib: Fix Windows build failure, final take
09466307  hugolib: Fix Windows build failure, take 2
94216902 hugolib: Fix Windows build failure
d3abb93c tplimpl: Fix instagram shortcode panic on invalid ID
b7aa2304 travis: Bump to Go 1.7.5 and 1.8 (Yay!)
edfb9d55 vendor: Update Viper
53d07fb4 hugolib: Add test case for empty Pages in regular pages
9d68eb72 Update homepage
04a4a193 hugolib: Remove deprecated marked for removal
4b3ca38b tplimpl: Fix data race in resGetResource
77cbe4d6 tplimpl: Refactor imageConfig into a struct
c507e271 tpl: Refactor package
93ca7c9e all: Refactor to nonglobal Viper, i18n etc.
7483b8ce Fix typo and update shortcodes body copy
0a16b93d Update homepage cards description for getting started
fca2d1e2 Update getting started guide homepage card description
dc5900ba Fix to homepage card descriptions for developer tools
34063e94 Add release notes
9e3dfb66 Fix tags missing quotes for v0.18 on Netlify
2e55c924 Fix front matter in getting started section files
5629f7e2 Fix terms table layout
5091be1c Update terms layout to table
88cad8e7 Update contents list style and markup
cbd08323 Update shortcodes, needs works, and toc styles
6f0eec31 Fix bg color for code shortcode
78213277 Update toc with home baked scrollspy
e34af6ee docs: Add hugofy for atom to the tools section
711fd889 Fix minor typos in content mgmt section files
aeafa4a0 Update issues via shortcode in roadmap
f6a55a16 Add section to toc header
9aa2df68 Add section to toc header
19d7a56e Remove unnecessary math functions and created table for all
0d0973d1 Update breadcrumb colors
1f50dca4 Add contents list for section pages
875a0642 Add contents list for section pages
658b7fc0 Revise style of content footer and blockquote
5851f4b6 Start new callout styles
691156c5 Use OS fs by default
16b16216 Attempt to fix input rounding on ios
51fc29a1 Update archetypes content
5dedeb69 Remove unnecessary content from benefits of static page
3db5aff4 Remove unnecessary content from benefits of static page
c8963435 Update next and prev buttons
ed50c7db Fix js for toc
7768124f Add terms layout and section icon to taxonomy.html
66bd832d Add terms template
63c79249 Add taxonomy list page
3fd4d241 Fix overflow on file name for code block shortcode
01f5105e Update toc style
7982cfa3 Add updated toc esp for mobile
19fcf0dd Update taxonomy aliases
f9c5c3f9 Tighten up archetypes content
f05a9f2d Fix all links and creating new aliases for Hugo features page
7ae01dbb Fix toclayout
9764af5b Update toc styles
513a7852 Add table of contents first attempt
a988d3cf docs: Remove the source relative links docs
360161f6 Emphasize GitHub Stars rating of StaticGen in Why-Use-SSG md file
493b7e11 Update content
0a87ef7f Update content
e067e89d Update content management page order
2ded3bf3 docs: Update www.bullion-investor.com/report/ in the showcase
212241b8 Fix footer on mobile when menu is open
6384a53f Fix overflow issues on mobile safari
1d52df22 Fix overflow issues on mobile safari
4b133ece Fix overflow issues on mobile safari
4a281e2e Improve to archetype copy
c18d21d8 Update archetypes section
f9db26c5 Update inline code styles
234273a5 Deprecate sourceRelativeLinks
03dc2766 Update search input styles
5cc8b589 tpl: Accept limit as interface in findRE func
298ebc37 hugolib: Add ability to sort by frontmatter parameters
2618cfbe hugolib: Fix error for non-renderable HTML content with shortcodes
7234c140 Update homepage icons
dfd84dac Update homepage icons
28e5fb90 Fix descriptions for homepage in data file
91130d1b Fix descriptions for homepage in data file
c7874aa0 Fix last icon for homepage
99e53a95 Fix scroll up by adding preventDefault for site menu toggle on mobile
c4b40a8f Improve layout of homepage cards
11df9370 Add first batch of icons for homepage
25bfa7e1 hugolib: Use the site's Tmpl for non-renderable pages
eb7f8aed Update algolia search styles
c20a89b3 Commit first addition of Algolia search
7d4b94b4 Add a few icons for homepage
87d4ad94 Update directory structure to include dev and design resources
7a5cc3cf docs: Add instructions for customized domain
962443ad hugolib: Correct repeated spelling errors in documentation
f26344ae Fix typos
26443287 Update smooth scroll header links and config page
68476fdf Add smooth scroll to header links andpdf icons to anchors
872a67a8 Update code block
2e677d5a Update styles for code blocks
f9016d40 Remove public folder
20b57f87 Attempt further fixes with Netlify build
0093be60 Fix build error in single and section default layouts
092b3e3c Fix flexbox safari issues
085ccbf4 Fix section default layout
167b7001 Fix content header in single.html
b8de89b4 Fix flexbox issues with Safari
99ee283b Update with more Getting Started and improve code block styles
9d209ada Add tags
060fe019 Replace Font Awesome with Fontello
a89fb86c tpl: Must do a extra lookup of cloned base templates
f4046033 Revert "hugolib: Add some baseof test variants"
d11f37d9 hugolib: Add some baseof test variants
b0de2c1e Add note, caution, and warn shortcodes
b9a13344 Add more to Roadmap and to Getting Started section
24fd81ab Update anchor styles
3e5ad4ae docs: Update Bitbucket Hosting Tutorial
9c979495 docs: Add article to press section
73ccb153 Update font family for functions
a71f7e0c Change font and stylesheet
5dfb3097 Update more section descriptions
36156cfc Revise site main menu and stylesheet, etc.
e459a55f Revise site main menu and stylesheet, etc.
d02359cd Add edit button
7fd88fb1 docs: Update link to blog post in community/press.md
faba90ab helpers: Fix misspells
2af2ff3c docs: Add tuorial "How to use Google Firebase to host a Hugo site"
dae6a453 docs: Fix typo in templates/functions.md
19aff029 hugolib: Skip rendering for the page tests
c71e1b10 all: Refactor to nonglobal file systems
0ada4059 vendor: Revert to previous cast
c2f69226 vendor: Update cast
f9fd6978 Revise link to stylesheet
e0897d3c Update site scripts
a01a0533 Add more content and styling
fdce08fc Update for base templates and blocks page
b676277a Make further changes to nav
c5f367f7 Make first update with actual layout (4/4)
0a5944c9 Make first update with actual layout (3/4)
304e6eae Make first update with actual layout (2/4)
868dccef Make first update with actual layout (1/4)
8e879422 Update with first round of nav scaffolding
48677581 Update README to include link to Discuss forum and proposed source org
9b152d88 Update theme.toml for first Netlify build
3e04d066 Update theme.toml for first Netlify build
24512fa8 docs: Add engineering.invisionapp.com to the showcase
7241253c docs: Multilingual documentation for frontmatter params
1e799008 docs: Add netlify to the list of static hosting solutions
72cffed8 docs: Add picturingjordan.com to the showcase
feeb93d4 Add pygmentize to the hugo snap
95ad3ad2 tpl: Improve generation of OpenGraph date tags
91c569c7 docs: Add petanikode.com to the showcase
99fd7c68 cmd: Remove empty tags/features strings in theme.toml template
d949c34a docs: Add Dokuwiki to hugo conversion tool
7dc94581 make: Fix typo
940c5d8b docs: Add tumblr-to-hugo to tools section
3ac1b9fe tpl: Fix deadlock in cached partials
dc61d3b6 docs: Update author credits in GH pages tutorial
3818d696 docs: Update tutorial on GitHub Pages deployment
85c75783 tpl: Fix broken benchmarks
0d0e0699 Add first round of single files for functions
92ba7219 commands: Fix newly broken server flag handling
1d7b9606 Clean up Makefile (#2924)
db33a33e Show full template error
d6000a20  all: Refactor to nonglobal template handling
4ea4359a hugolib: Avoid double-encoding of paginator URLs
bc06135c helpers: Allow tilde in URLs
45e3ed51 all: Refactor to non-global logger
24a28679 Add the instructions to install the snap
56c5eadc hugolib: Remove summary.go
3d058a93 hugolib: Allow arrays of arrays in frontmatter Params
3286b24f commands: Show OS and ARCH in version output
2989c382 tpl: Add truncate template function
9c19ef0f target: Add COM0 and LPT0 as reservedNames on Windows
9f20e648 hugolib: Sync page collections with Site.Info on rebuild in watch mode
c60c41e0 commans: Remove unneeded build constraint
01ee525f hugolib: Correct usage of "shortcode" in error messages
1b46d2cf commands, vendor: Remove log level setting in Jekyll command
fff6617c vendor: Update jww logger
0dad6932 docs: Vanity-update of site meta description
001dd01e helpers: Remove unusded WordCount
b8544389 Create first commit of new concept hugoDocs (continued)
e856f241 docs: Update references to _index.md
49a840be docs: Add new article about Netlify's PR site preview
e3e5600b helpers: Fix minor typo in error message for Seq()
19b6fdf2 tpl: Fix Unix time test case in TestDateFormat()
b8057b49 vendor: Fix broken build
2127203a Update documentation and test for sitemap template
cb63e87f hugolib: Clean up a benchmark
c344b190 commands, helpers, vendor: Update to the latest jww logger
2ac9817e helpers: Add doc to Language.SetParam
4352156a commands, helpers: Fix docs
52976da0 commands: Fix case in default config variable
6fb4f048 commands: Fix case in names of some methods
be39ae5e docs: Fix typo in overview/source-directory.md
2ece1b32 docs: Add heimatverein-niederjosbach.de to the showcase
433c0361 docs: Add dbzman-online.eu to the showcase
0d330b0d docs: Fix typo in v0.18 release notes
6a51216c docs: Don't use binary version in docs site
5834efd5 hugolib: Add a taxonomy test case
f79877cb Remove waffle.io graph from README
a60ec063 docs: Replace .Now with now
09a0af94 Fix  Appveyor Windows build and GitInfo path issue on Windows
6e0f326b hugolib: Deprecate Page.Now
695be00c hugolib: Bump the current warning deprecations
cabc6b31 tpl: Add now function
707d3cf1 docs, tpl: Fix documentation of  UniqueID
7d072fbb source: Make UniqueID ... unique
02d6f532 tpl: Use HTTPS in Google Analytics template
73c1e271 docs: Add HugoPhotoSwipe to the tools section
6374d82b travis: Add GOARCH 386 test
e9e4fd90 docs: Add release notes for Hugo 0.18.1
a18b9e72 vendor: Update Cobra
95a473e7 Fix Dockerfile
211d20a3 docs: Update GitLab depleyment in /themes/installing.md
164d0fb6 docs: Hide next arrow in theme
8a63e092 docs: Remove right padding in theme
83b4c405 docs: Fix h1 size on small breakpoint in theme
c22b7ff8 docs: Remove unuseful breakpoint in theme
84896080 docs: Fix menu arrows position on mobile devices
bcb3ef74 hugolib: Fix preserveTaxonomyNames regressions
862f09ba docs: Add hugofy for VS Code to the tools section
6affd31b livereload: Simplify RefreshPath
88b5bbd5 hugolib: Fix IsTranslated for "old" node types
d1b89f5c hugolib: Use reflect.DeepEqual in tests
17f85178 hugolib: Fix redundant URL file extension on taxonomy terms pages
e78dd3cd docs: Enable ToC for extras/shortcodes
7d991ed8 hugolib: Make template error messages more verbose
3e4fbbaa helpers: Add patch version
99e5fc63 vendor: Update Afero
63d3c4ce vendor: Temp roll back to an older Afero
bc060ee1 tpl: Update dateFormat test expectations for epoch values
b0e86dcd vendor: Update dependencies
d055862a tpl: Fix crash when using imageConfig
8b0c3b9b helpers: Remove "no theme set" warning
34c87421 tpl: Update getenv to accept interface{} params
29caaddc tpl: Update title to accept interface{} params
661d64c4 tpl: Update upper to accept interface{} params
4e5b4ac5 tpl: Update lower to accept interface{} params
6b8422bb tpl: Update hasPrefix to accept interface{} params
f25f8373 Update Travis go versions
441476b6 docs: Convert code in multilingual.md to TOML
ec34ed05 docs: Add neavey.net to the showcase.
a4fc20a1 docs: Fix typo in templates/blocks
e7ff094d docs: Add details about binary names for setup on Windows
b2687ab1 command: Add `themesDir` command argument to specify themes directory
4845a13c docs: Update christianmendoza.me in the showcase
1881f60a hugolib: Add a test assertion for IsTranslated
1eb07954 docs: Regenerate commands doc
1e313ced Bump to 0.19-DEV
8b410347 Add GoBuilds to .gitignore
09cc7915 docs: Add new alias feature to release docs
3d6fdb8e Bump to 0.18 release version
4de808ae docs: Add 0.18 release notes
018813ca vendor: Update go-toml
71aa797b docs: Fix broken link to Content Types
6fd4bfca docs: Update layouts path name
79b2725a docs: Improve documentation for block templates
a3a67163 hugolib: Enable override of theme base template only
596bbea8 docs: Clarify single page template search path
26084ad1 docs: Fix pipe examples
fa09e20d docs: Fix Ref and RelRef syntax
2f0e8198 docs: Document partialCached func
9c2ea369 docs: Add .Site.RegularPages docs
d332aa16 docs: Update GitInfo usage docs
f8190777 docs: Cleanup Extras menu ordering
aecabfcd docs: Add Extras > GitInfo
ef03c6f9 create: Allow empty dates in archetype in new
e4ebe0d5 docs: Fix querify example
7862de91 tpl: Add a querify test case that is actually and URL
83c68065 Fix menu URL for node type pages
c7f67dd6 docs: Clarify usage of archetypes provided by themes
b4404a95 docs: Update File variables
a1c25bea Create first commit of new concept hugoDocs
b4cbccaa docs: Fix prev/next links in content section
e90cb153 next: Move content files to prepare for new layout
e3d48760 hugolib: Fix comment
d4b9fa96 hugolib: Respect disableRSS
5b1eee44 tpl: Avoid repeating the same test case in TestMD5 and TesSHA*
22360566 docs: Fix linebreaks in templates/variables.md
0f6c73cf tpl: Add sha256 template function
01b8bc1b docs: Update description of querify
0ba9fb96 docs: Document querify template func
ba8a00a6 hugolib: Add regular content page count in publish summary
15622c80 hugolib: Remove superfluous assignment
2f026ab3 hugolib: Make RawContent raw again
971d1baf commands: Add noChmod option to disable perm sync
a4b9abf0 vendor: Update fsync
529574e6 create: Run all the test variants in TestNewContent
c87331ae hugolib: Fix rendered empty msg
b2eadd93 create: Simplify archetype logic
96018ab9 create: Fix archetype title and date handling
65d4d96e vendor: Update go-toml
b7e80045 makefile: Add test-cover-html
20d82a7a hugolib: Create the permalink once only
046320d3 tpl: Fix params case issue with nested template funcs
c38bfda4 hugolib: Fix regressions with uglyURLs
1f6e0de3 hugolib: Avoid repeated Viper loads of sectionPagesMenu
dbb0c1cf hugolib: Add shortcode for Instagram
001e2bbe docs: Set correct default archetype directory in overview
2c7cbca8 examples: Update blog example
68ebf616 examples: Update multilingual example
4c72eb12 commands: Simplify
65e5959b helpers: Simplify
139585f8 tpl: Simplify
a721fbed target: Simplify
3739871f transform: Simplify
43604520 hugolib: Simplify
f1ed89fe Revise the deprecation strategy
0a0db9cd hubolib: Simplify map range
ff2498ee Remove ShowPlan
a6d584bf vendor: Update go-toml
1156be3b vendor: remove afero/sftp deps
e0b27820 Fix alignment of go gets in Dockerfile
c06c3234 helpers: Fix typo in language.Get documentation
c8d41141 hugolib: Add missing paginator test case
c33eb935 tpl: Add some missing test cases
174f97a9 tpl: Fix spelling in test
7665dd23 tpl: Drop an else block in checkCondition
581291dc hugolib: Omit type from declaration of var lang
32336e9e hugolib: Camelcase ALL_CAPS vars and const in tests
75e55cd0 hugolib, source, tpl: Fix docs
e81c06c3 helpers: Rename WalkRootTooShortError to ErrWalkRootTooShort
647540d0 helpers: Add documentation to some Language methods
700d531a helpers: Use iterate operator by int in Emojify
713f577a commands, hugolib: Unify case of config variable names
dec1706a commands, hugolib, parser, tpl: Use errors.New instead of fmt.Errorf
1f130fd6 commands, hugolib, source, target, tpl: Get rid of some fmt statements
120f6b0c all: Use jww instead of fmt for printing
e1da7cb3 Fix case issues with Params
a5b3b076 docs: Add Pages to variables section
382582fc node to page: Re-add translations sort of regular pages
6c0ecc2d docs: Add release notes about node to page
e29f6fe5 docs: Add sections on node now being a page
0eb5f54d node to page: Fix site pages sort
976f8f84 node to page: Fixe index page translation issues
aafbd3b4 docs: Revise docs to reflect that Node is gone
ae1de7ab docs: Make the tools content page a section page
7e81971b node to page: Don't repeat the RSS title if it is the same
f776af6c node to page: Temporary set RSS date to zero
0bbdcf24 node to page: Render aliases before pages
32fb1e6f node to page: Need to append theme templates
28031b08 node to page: Only return regular pages in home.Data.Pages
a843d5d3 node to page: Final TODO-fixes
99d11386 node to page: Fix the Page copy()
62e9e7e6 node to page: Misc. TODO-fixes
524eb166 node to page: Handle URLs
c8d3124d node to page: Remove Node
9347084d node to page: Make Kind a string
9fba2a30 node to page: Rename PageType to Kind
96f71141 node to page: Export GetPage to the templates
487b210f node to page: Handle Date and Lastmod
c80308e6 node to page: Add Pages to Page
063b78d2 node to page: Make Nodes into Pages
88972b0d node to page: Refactor the build process
640b8bed node to page: Handle sections with only _index.md
2d91b17c node to page: Handle aliases on home page etc.
7cb0e34d node to page: Handle menus on home page etc.
ecedc85c node to page: Handle taxonomies on home page etc.
d3d3863c node to page: Add all nodes to sitemap
7cc637e9 node to page: Do not create section node for root
503fb299 node to page: Get Rebuild up to speed
80e453f1 node to page: Fix home target path on Windows
94ea12eb node to page: Remove unused code
bde1bfd3 node to page: Handle aliases, 404, robots.txt, sitemap
ec2d502b node to page: Handle translations
698b994f node to page: Fix the page collections
c175407f node to page: Use _index as identificator for the list nodes
3ff25b37 node to page: Handle RSS
75c38071 node to page: Create pages for nodes without content
f8bda16e node to page: Handle taxonomy terms
3737c9bc node to page: Handle taxonomy lists
c2f3cb2d node to page: Handle sections
734b6508 node to page: Handle home
e371ac0b node to page: Basic outline
e7d0bc8a Revert "Fix case issues with Params"
239c75c7 Fix case issues with Params
1eb3c4a8 docs: Fix list template link
30317934 docs: Add a simple list template
3b42640e hugolib: Don't write zero-bytes files to disk
65f803e1 docs: Rename RSSlink to RSSLink
29fda0e6 commands: Make benchmark command more useful
7b8a09d5 docs: Add balaramadurai.net to the showcase
ce5f41ff vendor: Update deps
a49f838c tpl: Add imageConfig function
950034db source, tpl: Fix staticcheck complaints
bb36d57b docs: Fix typos in extras/scratch.md
4d4c7791 hugolib: Must update PathSpec on SiteInfo per language
85a2d81e commands, tpl: Get rid of repeating viper accesses
4b4ab475 hugolib: Fix page sorting when weight is zero
52e2fd27 docs: Add article by Zetao Yang
b619eb5a docs: Compress Hugo logo (hugo.png)
07eb3a50 tpl: Golint fixes
d4830fc4 helpers: Golint fixes
72156e40 hugolib: Simplify range
8dace9ad docs: Update roadmap
f4afd133 Enhance commit message guidelines
ec44ad5c docs: Link latest change as commit in the footer
774f13bd doc: Add a "Deployment with rsync" tutorial page
0cd0adda transform: Return any read or write error from Apply
3a86aba5 commands: Move initialization of flags in separate function
c9be931e docs: Remove non-showcase Hugo sites
e8380e61 Add GitInfo
186db7cd Fix page names that contain dot
cda3b36f Revert "docs: Add www.bullion-investor.com to the showcase gallery"
b5bc74ca docs: Add www.bullion-investor.com to the showcase gallery
01cfcce6 docs: Add two articles written by Hash Borgir
6a3d1037 Fix RSS Title regression
342b6fe8 Make it clear that Path is relative to content root
4ad39445 Refactor Page tests
f5b26455 Remove Wercker config
301e4c7e Make Amber read from the Afero source file system
0406be3d Add missing template error logging
89e31256 Get rid of the rawContentCopy field of the Page struct
c936b6c8 docs: Fix punctuation in content.md
c859810b docs: Add clearhaus.com to the showcase
a2cc2e75 docs: Fix typos in content section
333bb055 Remove now superfluous lowercasing
5859c691 vendor: Update Viper
f21e2f25 all: Unify case of config variable names
d9f54a13 Handle ToC before handling shortcodes
165edc7f tpl: Fix comment
a10b2cd3 Avoid reading from Viper for path and URL funcs
dffd7da0 docs: Clarify installation of themes
6427fba9 docs: Improve instructions in quickstart.md
db86f480 docs: Add dmitriid.com to the showcase
1992b356 Bump Travis to Go 1.7.3
d0d24b43 commands: Do not print error on missing unknown dirs
f0af8075 commands: Only watch relevant themes dir
ddf2a340 Add page context to error logging in rendering
67df33d8 Fix a more summary corner case
58f31d27 Consolidate the Param methods
faa64abd docs: Add singular/plural i18n example
e6f2426e docs: Add christianmendoza.me to the showcase
3a5b7027 docs: Add fixatom.com to the showcase
6a7f989d docs: Add hugojoomla to the tools section
7f4d9025 docs: Remove merge artifact
df943595 helpers: Slight improvement of ToLowerMap
40b1b8f7 Fix case issue Viper vs Blackfriday config
4d6cd3cb docs: Update link for Ace template site
2ea22a42 docs: Add docs.eurie.io to the showcase
0456f950 docs: Add GitLab to Forestry.io integrations
35dda2d9 Fix pygments check in test
9ee2538e vendor: Add external
2e0e77be Make the pygments shortcode test matching less specific
10a773cd Implement support for alias templates
88675473 Updated link for Ace template site
8b43d39e Use govendor sync instead of get
3ce90466 Rewrite TestRSSOutput to use Afero
58825677 Add workaround for block template crash
794589fb Use example.org for replace-this-with-your-hugo-site.com
4e0c71a6 Added GitLab to Forestry.io integrations
8fa871a0 all: Remove dead code
766c82a6 Add context to asciidoc/-tor error logging
9f9b93af Add logging of asciidoc/-tor errors
998034fa Log on error in translation file
eb00c621 tpl: Remove the spamming template errors
8ddd95e3 tpl: Factor out double Lookup in executeTemplate
474eb454 tpl: Add partialCached template function
d2bc64be Add draft test
5355ddf6 docs: Remove deleted article "Hugo on Netlify — Insanely Fast Deploys"
bfe9b870 docs: Add "Hugo on Netlify" article to press.md
8a63ebcb docs: Add shapeshed.com to the showcase
9d0b1320 docs: Add thecodeking.co.uk to the showcase
71422a7d docs: Add Firebase Hosting to usage.md
df7b8b5c docs: Add Firebase Hosting to hosting providers
b3bcd78f docs: Add webhook to tools for deployments
8d509258 docs: Mention GitLab hosting support
8b8a1e0a Fix broken build
0206be02 hugolib: Prevent TestShortcodeTweet from accessing network
7b0f92db vendor: Update Viper
1f087794 snap: Add "network-bind" plug for "hugo server" to work
a7e2a04d docs: Add Forestry.io to the tools section
c2bf748e docs: Refactor /docs to use the block keyword
56512e81 Allow to set cache dir in config file
3616fb62 command: Fix hugo new for multiple architectures
cf5d2e27 vendor: Revert latest Viper
1c214fcb Add quiet mode
7cdd230e vendor: Update dependencies
a22294aa docs: Stylize "Mac OS" as "macOS" in v0.17 release notes
6195d8f7 docs: Fix grammar in v0.17 release notes
1adfaf49 snapcraft.yaml: Bump version to 0.18-DEV
d54d6633 release: version bump to v0.18-DEV
e1e677f6 snapcraft.yaml: Bump version to 0.17 for release
fe2d246c commands: Bump min_version to 0.17 for "new theme" subcommand
5b9f4883 release: version bump to 0.17
8bc390d8 vendor: update viper to latest version
f9c70c0f add release notes for v0.17
57d7dd5b docs: Add rahulrai.in to the showcase
fbce8445 Whitelist startinline pygments option
27d7aa5f travis: Reintroduce asciidoctor to build
f8e968b2 snapcraft.yaml: Change grade from "devel" to "stable"
00b3667f travis: Remove asciidoctor from build
217d6ea6 travis: Fix asciidoctor build
f37f57a8 travis: Lock asciidoctor to 1.5.4
b3a113b7 docs: Regenerate commands doc
2a4ed1c4 Add hugo env command
80367ea2 docs: Us vs you
88ec7d88 docs: Improve home page
ffbf3dd3 doc: Improving language in archetypes doc
0721a9c7 Update Dockerfile to pull in missing test dependency
d9c1f1ee docs: Add Lipi to tools section
bf0dfa3e Fix URL in multilanguage sitemap index
d30c6a26 docs: Fix typo in tutorials/how-to-contribute-to-hugo.md
50c43c36 Contributing: Link the "How to contribute" tutorial
0043b486 docs: Add notes about multilingual menus
78e5263c Readme: Clarify usage of Gitter
e36b0305 docs: Add tryo labs article to press.md
614dd2aa Deprecate PageMeta.WordCount etc.
59df7db7 Fix half-broken self-closing shortcodes
8b0d16b8 docs: Fix typo on hosting-on-gitlab
6b4d3263 commands: Revise instructions after "hugo new site"
0c223d9c vendor: Update Viper
a61b1497 vendor: Update cast
a0167d83 Fix leaky goroutine
63a6da06 Make multilingual respect DisableSitemap
73894cca Add TestChangeDefaultLanguage
2071d470 tpl: Polish i18n tests
e7e2a1ca tpl: Improve tests and docs for i18n
e7ff5c2d vendor: Update go-toml
608b90da vendor: Update dependencies
894b69db Remove some unused vars
9c017e51 commands: Add some band-aid to convert
2105e42a tpl: Set i18n bundle once per test run
6e692f2d Add vendoring with govendor
b3a72155 Fix i18n with missing translations and add tests
bacc1706 helpers: Skip TestGetRealPath on Windows when not in CI
98c12b7b Fail early in TestGetRealPath
4a79fa0c Revert the "standardize author data"
83533a88 docs: Improve Overview Configuration manual
a7af6303 Make suure SectionPagesMenu setting is always loaded per language
b6673e53 docs: Add documentation for author profiles
56afd943 docs: Add  multilingual alias example
51c9bfbc Remove Authors.Sort
cf978c06 Add First Class Author Support
44bf76d0 Add snapcraft.yaml file
74291114 docs: Clarify difference between slug and url
e80453a9 tpl: Add EnableMissingTranslationPlaceholders option
0dd57b90 docs: List i18n folder in source organization
bca567fa docs: Clarify usecase of data files
0c49370c docs: Fix example of displaying taxonomies
3410007d docs: List multilingual tpl vars and show menu creation
9dab62c5 docs: List config options for multilingual feature
4e16a6d4 docs: Fix markdown in content/extras/scratch.md
cdf1edd5 docs: Fix French translation in multilingual.md
0d1e9670 docs: Improve Traversing Local Files
b86a605b Make paginate settings configurable per language
bbb11a4a Do not add lang prefix in URL when set in frontmatter
dd45e6d7 Lazy calculate  WordCount, ReadingTime and FuzzyWordCount
4abaec5c Improve TotalWords counter func
bcd43479 Avoid splitting words for summary
74ffb45f helpers: Improve the language prefix logic
f53145b2 helpers: Avoid adding language prefix if already present
8d040c96 commands: Improve error messages in convert
a04abf0d tpl: Make the *langURL funcs tace interface{}
7615ef0c commands: Report errors in convert
be09781a Fix broken convert command
69a97823 Add Language.LanguageName
a7dc3c08 Support site menu per language
f0ac26c9 commands: Fix typos
3908489c tpl: Extend where to iterate over maps
64012142 tpl: Fix typos in tests
46342ad5 hugolib: Fix typos in tests
c700cdc3 Replace some leftover os.Stat with hugofs.Source
ef3c4a56 Fix reload dir matching in theme
364e69ab Handle symlink change event
e70cf1ac docs: Remove JPEG as format for showcase thumbnails
d5379fd1 docs: Add davidyat.es to the showcase
4d1cb500 parser: Use strings.Contains instead of strings.Index
798bf60c parser: Simplify err conditions
60baec80 commands: Delete useless conversion
2294b022 commands: Simplify err condition
1e180873 commands: Delete unused newUserErrorF
5867cb5a Fixe target path location check in jekyll import command
7d3dfba8 Prevent panic on empty authorlist
33921331 Remove redundant field in sort helper struct
9c5f2bef tpl: Make it more clear on  missing language string
43bf9ed3 Redirect to root when DefaultContentLanguageInSubdir = false
4df86a70 Fix paginator counter on x86-32
eaf2f9bc Add TODO list support for Blackfriday
76bf2dcd Fix shortcode vs pygments
ccb3040a Fix pagination page counter on 32 bit
fe0c2705 Reset the i18n func map on reload
5ef45bec docs: Fix typos in multilingual section
97c57fe3 Add missing read lock in getNodes
a8fad866 Bump Travis to Go 1.7.1
34fe5cd3 tpl: Fix echoParam
a00edff5 Make it the DEV version
35d2eac4 Fix go vet 1.7 issues
09ed41be Add a global Reset func
dc3618ab Make sure the 404 node has .Data.Pages
30d65fd4 Fix site reset for benchmarks etc.
b3563b40 Fix multilingual reload when shortcode changes
a823b157 Set lang template globals for each site when render shortcodes
28696b5d Small adjustment to SiteInfo init
2f7e8df5 docs: Fix spelling: HasTranslations > IsTranslated
1bce8a85 Create a copy of the section node for RSS
bbfebdea Fix Data in multisites
93717aac docs: Get the variable and funcs re multilingual up-to-date
4fbce787 Add JSON config to the multilanguage testing
d8a256c1 Fix YAML loading of multilingual config
446e606a Add data tests
5b331a18 Add temp MULTILINGUAL version suffix to this branch
a07293cf Create a Node map to get proper node translations
d1212307 doc: Fix TOML vs YAML in multilang section
45c69dd1 Handle error in config loading
76108440 Add IsTranslated to Node and Page
8b55bfc8 Remove unused Multilingual Viper default
f1e1cdab Improve i18n string handling
8da04034 Render main content language in root by default
d953e39e Add parent as owner to Site
9798a956 Make the check command work in multilingual mode
6b552db7 Make sure drafts etc. are not processed
e56ecab1 Multilingual TODO-fixes, take 1
0a7d1d0d Fix some corner cases in revised summary handling
d18a8cbe Fix livereload in multilingual mode
506e131f Fix the shortcode ref tests
54141f71 Improve language handling in URLs
2079a23d Make it possible to configure Blackfroday per language
596e0e98 Make it possible to add a language in server mode
7cac19b1 cmd: Load config from the common config loader in hugolib
8b657a11 Get the list commands up to multi-site level
90de5110 Make taxonomies configurable per language
36f2a1f6 Make the config loading testable
b6fcb3d0 Add sitemap index for multilingual sites
d5720717 Redirect to main language from root
f0b91852 Rework the multilingual docs
ed098540 Render the shortcodes as late as possible
708bc787 Optimize the multilanguage build process
f023dfd7 Move the Build* methods to HugoSites
5b9c2a40 Move HugoSites to hugolib
3a028079 Add Translations and AllTranslations to Node
52bf8f90 Rework the i18n template func handling
75dd596e Introduce HugoSites type
618948e4 Reset translation slice on rebuild
c447b7dd Rename MainSites to Sites
c4e7c370 Add Translations and AllTranslations methods to Page
06d12ab8 Add proper Language and Languages types
ec33732f Add multilingual support in Hugo
faa3472f docs: Fix typo in Quickstart guide
ccc51fe7 docs: Add open.cinegy.com to the showcase
723d4656 docs: Add Vim/Emacs plugin to tools section
a48ac6e9 docs: Clarify first level URL generation
0614a59b docs: Improve Quickstart guide
696c67b0 docs: Clarify Creating a New Theme
bb1812b6 docs: Mention theme config option on Usage page
8e1bcea8 docs: Update documentation for URLs
b6635e1b helpers: Fix bug in emoji renderer
7cb81077 docs: Correct spelling for "parameters" in partials.md
38d034df docs: Document shuffle template func
6eff9e50 docs: Update highlight.js example to latest version
2fc05dad docs: Add location of block template
fee9ee72 tpl: Add missing arg to Fatalf
20c4311d Switch to a more up to date TOML library
81f04ef4 docs: Clarify Usage
2530087a docs: Add Spanish video tutorial by Verónica López to press.md
715d4425 hugolib: Use named keys in composite literals
c5d07299 docs: Just a small grammar fix in quickstart.md
3ce9de76 docs: Follow through on watch default
68c8e0e2 docs: Correct name of release archives for OS X
be429d22 docs: Correct all erroneous swaps of "it's" and "its"
8474b9de docs: Improve section 'Why did you write Hugo?'
de1ca477 docs: Fix URLs in examples sites with path prefix
f914774f Remove broken Bitdeli badge from README.md
5498a1bd tpl: Return all errors from casting
d3627b17 Simplify Travis build
d72c454f Fix command for getting hugo in CONTRIBUTING.md
97c37732 Add a global Reset func
2175ea5b Bump Travis to Go 1.7
661c9787 commands: Suppress 'missing static' error
f6d4801b Skipt Twitter test in short mode
09612f7a tpl: Fix faulty ordering of relURL test cases
88dcbc6e tpl: Make absURL and relURL accept anything
26725515 docs: Convert toml to yaml in config overview
39df7724 source: Normalize file name to NFC
b33bfd40 docs: Add doc for time template func
f2faae08 Remove maximeguitare.com from showcase
0d9c0677 docs: Add rdegges.com to the showcase
914e4d85 tpl: Fix typo in FindRE test
93f3a85b Fix the time template func test
70544f9e tpl: Add time template func
d7f364c2 Fix for meminterval not using specified interval
5824e809 docs: Add romansilin.com to the showcase
b426c20e Return specific error on walk path too short
15b66935 Adjust the sanity check to path length 4
94d99898 Add sanity check to the file walker
802d43cb Disable Go 1.5.4 in Travis
285807ba Take 2: Load templates from the Afero source fs
ec23aa99 Load templates from the Afero source fs
5f5fccbc Do not return empty theme dirs
4ddd5361 Use the Afero source fs where relevant
a0859dc6 Make LazyFileReader use the Afero source fs
94892726 Handle errors during filesystem walk
0087beef docs: Add tumblr2hugomarkdown to tools section
0d0a7596 docs: Add tumblr-importr to tools section
5b40eeed examples: Add example for translation files
04889a5e docs: Document .File variables for pages
333646c5 docs: Drop .isDraft to new line
e3e1f7a2 docs: Add a link to hugo-openapispec-shortcode
ddd5a922 docs: Removed comma from json example.
df0a4534 docs: Add missing configuration option disableHugoGeneratorInject
9c458657 docs: Add weilinshi.org to the showcase
17f53526 docs: Add CTL Compiled edtech blog to showcase
76f332bf docs: Add www.leowkahman.com to the showcase
3e1b579c Be less aggressive with CHMOD filesystem events
91b61b97 Simplify the configuration of HugoHTMLRenderer
4d4da001 Fix broken shortcode test
39a452a4 Add "missing slice" to the Params test
593a546f Check for nil Params in shortcode's Get
0bdc0d62 Add shortcode null param variant
198efc89 docs: Add Algolia as commercial search service
e9924e96 Add shortcode test for mmark
c0eedfe9 docs: Update last-mod date of installing-on-windows.md
10ad648e docs: Fix PATH issue in the instruction for Windows 10
20555b16 Add `htmlEscape` and `htmlUnescape` template functions
7dd5cd67 Bump Travis to Go 1.6.3
3564f09e tpl: Add humanize examples to smoke tests
55a4f6e4 Do not double-escape in querify
ef9b9156 Revert "Throw a noisy error when a post has no layout"
318558f2 docs: Add 404 template
b1593400 Throw a noisy error when a post has no layout Fixes #1313
af34613f Update frontmatter.go
0a812beb tpl: Modify tpl.humanize to ordinalize integer input
330639d2 Fix panic when using URLize
32d82a44 Ignore emacs temp files
d44bb4ec Revert "Use bufferpool in Asciidoc handler"
7c125ebb Revert "Use bufferpool in Rst handler"
adf40549 Fix humanize when string is empty
d9bc233f Use bufferpool in Rst handler
00d70e55 Remove []byte to string to []byte conversion in Rst
068a7715 Use bufferpool in Asciidoc handler
ed5ad12a Remove []byte to string to []byte conversion in Asciidoc
1d7f4413 Consolidate the Render funcs
4a48b5f3 Replace replace-this-with-your-hugo-site.com with example.org
b8af06f2 Make auto-date disabled by default
b581bbd8 Make config flag global
223073c6 transform: Add missing GoDoc
39fe42cf Simplify querify
fbf48824 tpl: Add a querify function to generate query strings inside templates
770df77b Add Docutils to Travis
05a33e31 Add Asciidoctor to Travis
e6d97c4f Add Rst shortcode test
5388211c Add Asciidoc shortcode test
6c0f7052 Fix Emoji benchmark
aa66478c Add Emoji test case
7e08d23e transform: Explicitly bind LiveReload to server port
0ce64382 docs: Update install instructions to reflect hugo.exe filename change
e140070c docs: Add tutorial for GitLab Pages
ca6b26fe commands: Allow schema-less baseURL on command line
5572e349 Update Travis config to Go 1.6.2
195a2b38 docs: Suggests the use of delimiter for taxonomy listing
364686ec docs: Add additional example for taxonomies listing
eda36787 Add automatic page date fallback
c21e2b3b tpl: Enable safeHTMLAttr
cdd6a124 Add test for shortcode in fenced code block
e3b162cc transform: Don't use helpers.StringToReader
e2aea651 helpers: Remove ToReader funcs
29ca323a docs: Regen commands doc
1accd3ba Fix example for autocomplete
a4b84962 docs: Fix typo is 0.16 release notes
ca5ae50c Revert "docs: Refactor /docs to use the block keyword"
3a2748e0 docs: Refactor /docs to use the block keyword
357c9db2 docs: Add mtbhomer.com to the showcase
714d4a9a Fix failing Windows test
44edd938 Add tests for embedded shortcodes
8b54843a hugo: Revert git commit message guidelines
373ca662 hugo: Update contribution guidelines
c52bb4ef commands: Specify os port generic errors
aa690c8e commands: Fix charsets in mimetypes
34f40044 Fix shortcode in markdown headers
6ba07456 docs: Add upbeat.it to the showcase
c01f9825 docs: Add mayan-edms to the showcase
85881033 Unexport ShouldBuild and AssertShouldBuild
eeaafb4b hugolib: futureStats plural
fb0c1350 hugolib: Handle unpecified date for IsFuture and IsExpired
673e41bf hugolib: Add expiredStats to build feedback
32c0e3fd hugolib: Bug fix futureStats
4724a579 hugolib: Refactor page.ShouldBuild and table driven test
f7b2e532 docs: Add ExpiryDate to the list of variables
448f0306 docs: Example of how to use Order by ExpiryDate
02d2f05e docs: Add instructions on buildExpired in build configurations
6e9fbf8a docs: Add expirydate to front-matter doc
5461a5e0 commands: Add listExpiredCmd for expired pages
51f7cd9b commands: Add buildExpired flag
c1c8ecc9 hugolib: Add GroupByExpireDate function
091915c7 hugolib: Add sort ByExpiryDate function
6472f158 hugelib: Add expiredCount as a Site variable
d4156e61 hugolib: Support an expiration date
2564f46a Fix Emojfy for certain text patterns
683888eb Change hugo to Hugo in help text
5d3aabcb Update the alias generated HTML files to conform to the W3C HTML spec
75deb923 Remove unneeded casts in page.getParam
acbedf62 Fix urlesc import url in Dockerfile
48ebd598 docs: Add jamescampbell.us to the showcase
f9cadee8 Bump version to 0.17-DEV
7212e513 Update release-notes.md
b7513ea6 Get Dockerfile up-to-date
a7f51703 Add Hugo generator tag to home page if not present
80ebe057 Update release-notes.md
60184823 docs. Add the guranteed exit -1 on eror to Hugo 0.16 rel notes
cf10d4ce Some polish and addends to 0.16 release notes
d4e5fa6f Pull the shootouts about 0.16 into the intro section
26c18005 Remove HugoVersionSuffix "-DEV" prior to 0.16 release
834d4177 update release notes for 0.16 release
f94cd281 Handle errors during rereading properly
d1cf262b Ignore __jb_tmp___ files created by IntelliJ
f8e4a060 Annotate temp files that Hugo ignores
ce05dfa5 docs: Grammar fix in overview/quickstart.md
4ab5ed6c docs: Add Digital Ocean articles to press section
d486396f docs: Add c't magazine article to press section
20358f46 docs: Document UniqueID page variable
56116315 docs: Add an example of how to use .PrevInSection
c21b1558 docs: Add note about live reload script injection
dcee05b2 docs: Fix minor typo in overview/quickstart.md
efae41c1 docs: Add novelist.xyz to the showcase
90362933 docs: Fix typo / readability in extras/menu.md
6dec7b3e docs: Add stefano.chodino.uk to the showcase gallery.
dec74431 docs: Add klingt.net to the showcase gallery
9305deca docs: Clarify that watch is enabled by default
9aa70af1 docs: Fix git clone for hugo_theme_robust in quickstart guide
ac938d9d docs: Improve description for .Hugo.Generator
64817cc0 Fix broken template test
26906d85 Don't add any space around Emojis
608cfe62 Remove kr/pretty dependency
fd40fe39 docs: Document relativeURLs
b5030782 Ignore Byword temp files
273a6840 Add non-string support in markdownify
7cbafa4e docs: Fix typo in overview/configuration.md
a07889d4 docs: Fix typo in templates/content.md
bf4206a0 docs: Fix links in the documentation
5caea6f2 docs: Add 2626.info to the showcase
09038865 tpl: Add intersect operator to where function
ffbd2b6c docs: Add appernetic blog to showcase
2b02a402 commands: Sett mime type for CSS in Hugo server
e4ee1b89 helpers: Use net/url for URL parsing in AbsURL
16b71bbb Export "detectFrontMatter" to fix caddy-hugo
c5723a89 docs: Add aydos.com to the showcase
4152ce88 Update release-notes.md
7da9163d docs: More on release notes
efa9bdcc docs: Order by Lastmod in release notes
eb627ca1 docs: Order by Lastmod
10af9063 Add ByLastmod page sort
fbca53ac docs: Add notion of exiting the themes folder in quickstart
fe2b22fe docs: Grammar fixes in overview/quickstart.md
19afa5ee docs: Update showcase screenshot of yulinling.net
81a2466b docs: Add some more fixes to release notes
ebefa476 docs: Move image-width fix to style.css
48fce611 docs: Move Algolia styling into style.css
22683a3b Make alias redirect output URL's relative
76738347 docs: Fix findRE typo
a8e05b11 docs: Fix some typos in release notes
56cd3081 doc: Get feature list of 0.16 release notes up to date
01c33898 📚 Add ENV support to release notes
9ddf5202 Update import path of fsnotify
5e9b147c docs: Add some doc about ENV config
b7fd4102 commands: Support config from ENV
0743c767 docs: Fix typo in tutorials/how-to-contribute-to-hugo.md
77159b4b Add some schemaless BaseURL tests
215b8939 docs: Fix grammar in templates/partials.md
fed5f20f docs: Add tutorialonfly.com to the showcase
4b4bfa6a docs: Fix lastmod date for chipsncookies in showcase
6fdb0ca6 docs: Add barricade.io to the showcase
ba0a6614 docs: sa.muel.be has moved to chipsncookies.com in showcase
c40bc274 Improve build labels in README
24cb0d1f tpl: Do not write to cache when ignoring cache
5d50c464 Chomp Unicode BOM if present
d48b986c Revert "tpl: Extend where to iterate over maps"
dc8659c5 Update Travis config to Go 1.5.4 and 1.6.1
0141a021 tpl: Extend where to iterate over maps
206440ee Fix broken tests
88759eec docs: Add plainIDAnchors change to release notes
0d9a5f80 docs: Update default for plainIDAnchors
06772eef Default to plainIDAnchors
c3d28d28 Revert "Add Node.ID"
39c9ae31 Revert "Use Node.ID for anchor ID"
2468b10e docs: Fix example for Param method
cd558958 Use Node.ID for anchor ID
5ef52294 Add Node.ID
37fb2d43 helpers: Ignore cache for Pygments when flag set
c0cf1a7e Fix section menus for lazy blogger
dde967d8c hugofs: Add package doc
16ee8566 create: Add package doc
257dee53 bufpool: Add package doc
4d34a98a Add GoDocs badge
ff7eec2f docs: Regenerate the commands docs
b7efbdc1 hugolib: Add option to disable rendering of 404 page
72bda5ad Move section initialization to Site.assembleSections
8fe48a65 Fix potential data race in test
39c74b70 docs: Add commercial services to the "Tools" section
51ee3fc7 docs: Document how to install dependencies for tests
88a07b75 docs: Fix missing step in Windows version check instructions
65f94270 docs: Document Go 1.6's new ability to trim whitespace
e4d328d8 docs: Fix Go version in install guide
ac1ec5c7 docs: Remove remaining Mercurial references
9f6b5ad3 Save auto-detected markup type in Page.Markup
e6e98bf5 docs: Remove Mercurial from contribution tutorial
6c900380 tpl: Add replaceRE to the "smoke tests"
f2ff77f3 Make Hugo build without Mercurial
ebf3cef1 docs: Add "How to contribute to Hugo" tutorial
970f15cf docs: Use HTTPS links in README where appropriate
d3e82950 commands: Add helpful instuctions after "hugo new site"
1c3c148b hugolib: Un-export internal Site-methods
16ad6281 docs: Fix references to section list templates
6d2898b3 docs: Correct date for proper sorting in showcase
18738266 docs: Add one more quote
ef933e4a docs: Limit the quotes on front page to the last two years
40f62a86 docs: Use data folder for website carousel
1648e327 Document and clean SourceRelativeLinksEval code
819271cb Re-export the methods used in page group tests
3950b137 hugolib: Camelcase ALL_CAPS vars and const in tests
05b88887 huglib: Add even more missing GoDoc
85bcac53 source: Add missing GoDoc in File
ddd02b2f hugolib: Camel-case ALL_CAPS const in test
98ee8c3f hugolib: Add GoDoc to pageGroup.go
57c347e4 hugofs: Fix GoDoc
969f9311 Build Hugo in Travis with race detection enabled
fd5d5735 Add go test -race to make check
27f9e62b Remove Wercker badge
5bfe16ef tpl: Add findRE template func
54750b07 Do not create robots.txt by default
43b5dfab Disable syntax guessing for PygmentsCodeFences by default
0698f294 docs: Add yushuangqi.com to the showcase
dea06f86 docs: embed YouTube video in Windows installation tutorial
23046146 docs: Update set PATH instructions for Windows
21e0515f docs: Fix menu in firefox
1adf4035 docs: Add alternative for Wordpress import
f0dbf2c8 tpl: Add the other test case for hasPrefix
aaee0385 tpl: Sort the smoke tests
80d02a14 tpl: Add hasPrefix to the template funcs' "smoke test"
4502c4e3 docs: Add documentation for hasPrefix template func
fe929114 tpl: Fix panic in sort of nil sequence
d15fda50 tpl: Fix panic in pairList.Less
7d5c9fbf Make ByCount sort consistently
c6c2c689 hugofs: Add missing not nil checks to tests
b678e90d Use to most specific interface in WriteDestPage
c2277fcb docs: Add doc and a test for readDir
cb89ae63 tpl: Make readDir use the WorkingDir fs
4f66f790 Add readFile template func
a89035bd docs: Mention CLA in the showcase contribution guidelines
6a3a6f68 docs: Remove incorrent reference to list.html
93e41a1f docs: Fix typo in templates/functions.md
d65fbfe1 docs: Add surge.sh to main page of static site hosters
effaf6c2 docs: Document GitHub flavoured code fences Fixes #1259
e35a6921 docs: Document lastmod variable Fixes #1351
50506ebe docs: Document the split function Fixes #1997
4c95b700 docs: Add silvergeko.it to the showcase
79af7143 docs: Add robertbasic.com to the showcase
dbfc7ea0 Fix error handling in SymbolicWalk
bfe80094 helpers: Fix SymbolicWalk for the root folder
977b0e34 docs: Adapt commit message for showcase additions
8890885a docs: Add search form powered by Algolia
8aec5ee2 hugolib: Some more unexports
7c81c86b commands: Apply Golint rules
5d3705df helpers: Apply GoLint rules
7fa2cec9 tpl: Small Golint fixes
b71f391c parser: Remove unused vars
6dbae7b6 Be explicit about the type in Scratch test
d7701305 hugolib: Remove unused Tmpl on Page
c846b051 Do not use defer for unlocking in Scratch
fa1a9653 hugolib: Taxonomy GoDoc cleanup
b5bced1d Add a simple benchmark for Scratch
7c84e6b3 hugolib: Even more Golint fixes
3e77886a helpers: Fix GoDoc in Hugo version constants
a7953e25 commands: Apply Golint rules to hugo.go
3bbfd991 hugolib: Apply Golint rules to rss_test.go
b8bf01cd hugolib: Add missing GoDoc in pagination.go
c2c73c2b hugolib: Some more GoLint fixes
218fceac livereload: Add missing GoDoc
e467d233 hugoblib: Clean up the time tests
94409072 transform: Group vars and consts in chain_test
c7869fd7 transform: Clean up the var naming mess in chain_test
a6de8dfb hugolib: Some more Golint fixes
dac34f9b hugolib: Fix spelling mistake
c31fa378 hugolib: Add Godoc to pageSort
c20dee9d parser: Make the constant vars ... constants
bf76e744 parser: Fix ALL_CAPS var names in test
1cb7ed6a parser: Spring code cleaning
937592cb hugolib: Fix some more Golint warnings
8a60571f helpers: Fix and add Godoc in path*
6ff2e1db helpers: Remove the else in MakePathSanitized
faf2e506 Do some minor code cleaning of Site
626874b9 transform: Golint fixes
67289033 target: Fix some Golint warnings
dc7d8a9e Spring cleaning of the menu code
4f00f1c9 heloers: Add a linefeed to make Golint happy
9cf93e11 commands: Fix remaining Golint warning
da4d4164 utils: Add godoc
df92fc31 hugolib: Fix Java-styled all-caps consts
b0e21f96 helpers: Silence some Golint warnings
283b8663 commands: Do not use named return vals in Jekyll import
35b79824 Check returned error in Scratch-test
691c2ea9 Do make check in Travis
b319c189 source: Consolidate if conditions
c54df37f source: Remove unnecessary else condition
b1b7ac7e hugolib: Use field keys in composite literals
b9127ecc helpers: Apply gofmt
e8cf8b40 hugo: Add check tasks to Makefile
048e0742 Add Scratch to shortcode
de8fc876 Re-render shortcode on template or data file change
e5e1bcc2 Add plainify template function
e5aa4774 Add support for symbolic links for content, layout, static, theme
6258d48b Utils methods refactored for readability
c42982f7 Add '+' as one of the valid characters in urls specified in the front matter Fixes #1290
02effd9d Protect against concurrent Scratch read and write
f52b040e docs: Draft of 0.16 release notes
d45b55bd helpers: Rename getMmarkHtmlRenderer to getMmarkHTMLRenderer
bec1ac7b livereload: Run go fmt on connection.go
9323707b create: Refactor NewContent to be testable
bafb7717 livereload: Simplify conditional
2c5e4f76 helpers: Support EXTENSION_BACKSLASH_LINE_BREAK for Blackfriday
4c4ce552 helpers: Fix minor typo in content_test.go
0a768ec9 Simplify GetDottedRelativePath
8d86f1ec Return early from parseOptions
02e50c01 Remove duplicate doArithmetic
42b302fc Revert "Add Codebeat badge"
3529152e Return early from appendThemeTemplates
c50c6687 Add Codebeat badge
0ec8fc54 Add Go Report Card badge to README
21054f73 source: Consolidate filepath.Split calls
df44b193 tpl: Send actual values to in from intersect
60055827 tpl: Add missing printf param in t.Errorf call
b0326a1c tpl: Treat booleans as set in default function
b5c718a4 docs: Fix typos in functions.md and contributing.md
575ae1b3 Remove CircleCI badge for now
58802de3 No block support in shortcodes
3a2a4c3b tpl: Make the safeHTML and cousins accept more than strings
70739c97 Remove unnecessary type conversions
3a82ae71 parser: Unexport some internals
5d915e7e helpers: Unexport some internals
aedb13b2 tpl: Fix race condition in regexp cache
f6c3ca8b transform: Remove unused code
263daaea target: Remove unused code
4ada1cab source: Remove unused code
df3f2af0 parser: Remove unused code
dea185aa hugolib: Remove unused code
c21dc16d commands: Remove unused code
91ffc76b helpers: Remove unused code
0fb31e4a Create an alias from shortcode.Page.Site to shortcode.Site
734dd1c4 Bump Pygment version to 2.1.3
542e220c Make tests green on both Pygments 2.0.2 and 2.1.3
988962e8 Add Pygments 2.0.2 to CircleCI build
989c7487 Add emojify to the template func smoke tests
612c6114 Docs: move tutorial screenshots in their own subfolder
a103d581 Docs: update Windows install instructions
6fb4e071 Docs: add Aerobatic as a deployment option in the Introduction
d9049752 Docs: add tutorial for Hosting on Bitbucket
153dccc0 Add debugging steps for no variables defined
0ab41624 Ability to config layout and content dir via cli
cafb7847 Add emoji support
5926c6c8 Update showcase entry and article link to softinio.com
b8d36512 tpl: Add replaceRE function
e9008b91 Allow picking a specific file out of a gist
7cd69aaa Exit with error code on any error
077b0fa7 Add package prefix to the commit message guidelines
0667d8a0 Add engineering.mongodb.com to the showcase
941b4caf tpl: Add Copyright reference to the Go authors
6cb032b6 Docs: use Shekhar Gulati's Hugo tutorial as quickstart guide
2d0650db tpl: Add custom index function
f3f9763a tpl: Add time note to default func description
09c8c17b tpl: fix default function
0743646f docs: add better default example
ce9ee3cf tpl: Add default function
09624708 Make absURL properly handle baseURL with path component
94c3825e Add md5 and sha1 template funcs
be3519fa Use default sitemap configuration for homepage
0945673f Update Dockerfile to use golang:1.6 base image
a2abad96 Add support for Go 1.6 block keyword in templates
924028a9 Fix for page in multiple menus
973393c9 Create template clone for late template execution
9896cd00 Add reference to parent shortcode
866176be Docs: fix missing words, tense in datadrivencontent.md
7705e32e Resize showcase thumbnail of h10n.me
0f486313 Add viglug website to showcase
64ed64d9 Add h10n.me to the showcase
2a75e970 Add fale.io website to showcase
429b669a doc: Correct Scratch slice example
c7d22604 doc: Add some Scratch slice samples
c7acc318 Add some missing resets on rebuild
eaba04e8 Add list support in Scratch
435e996c Add jsonify template func
c8c6f5d0 Add json mime extension type
d774b142 Make where accept slice
4e32dc80 Simplify the IsHome test cases
023992ab Unexport the target handlers
27f8d8f9 Allow URL with extension in frontmatter
3c100cc3 tpl: Unexport the rest of the internal template funcs
f6591eca tpl: Add some dateFormat testcases with both time and date
8aa90f2b Try both prepped and unprepped taxonomy keys
ccd2f4c3 Prevent capitalized taxonomy labels
e85b821d tpl: Fix broken chomp test
f223f17c tpl: Make chomp return template.HTML
daaf4eb3 tpl: Add integration tests for most of the template funcs examples in doc
80e1fd29 Log fsync errors
5b065a27 Some missing shortcode replacements
7f682d78 Fix shortcode handling in RST
cc38a40f Docs: fix typo in tools section
e2965a35 Remove superfluous FontAwesome files
6b922750 Revert "Create template clone for late template execution"
93b04e67 Create template clone for late template execution
80460315 Check for the presence of pages before setting dates
75cf3243 Set Date and Lastmod for main home page
1f61f403 Use flagChanged in all places
c1f8b188 Add template function slice
9349a889 Do not try to find available port if set by user
ff4ca992 Press: add "Comparison site built with Hugo"
455df107 Optimize replaceShortcodeTokens
83759953 Enlarge data in BenchmarkReplaceShortcodeTokens
ac2eaca0 Press: add tutorial written by Shekhar Gulati
c59bdc20 Press: add article from sitelabs.es
d1bf2f54 Docs: fix typo in introduction.md
086d6540 Add cdnoverview.com to the showcase
060f0206 Docs: remove .Taxonomies from Page variables
d607f4c7 Docs: fix small typos in functions.md
3749dc76 Docs: add "Minify Hugo Generated HTML" to press
e9853642 Listen channel before sending values to it
253a6188 Go 1.6 is out!
284e959f Close file handle when finished reading file
df17fae5 Docs: add hugo-lunr to the tools section
50182cd0 Remove superfluous Errorf
c1e43095 Clean up the trim template func test
8c840480 Force full rebuild when site config changes
ad176055 Export MainSite var
ce7c2671 Docs: clarify that Amazon WS is, actually, AWS
4ecf019e Add gntech.se to the showcase
2b1ad546 Docs: fix typo in YouTube shortcode description
bac1ba46 Fix spelling and go vet errors
0d415e45 Link Gitter as Dev Chat in README
21b0aa86 Restore the wercker status badge to original small size
06e90b12 Add documentation for Google Analytics internal template
a0eec02b Set the wercker badge to track the aaster branch only
207a574f Docs: fix Disqus shortname reference
cfbae7ce docs: Add guideline for showcase additions
4a15051e Crop, resize and optimize shelan-tn.png
2d11551c Ignore temporary file "4913" created by Vim
42f43ad4 Add jorgennilsson.com to showcases
28e6e19d Fix git commit blog article link
8fe10708 Prevent confusing template errors when seq is nil
2b3b90a6 Add test for Hugo hanging up with empty content
d1b0290f Add shelan.org to showcase page
2b0fad79 tpl: Add two more doArithmetic test cases
f90b45f7 tpl: Test with nil value in first, last, after and shuffle
3cc468a8 tpl: Add missing test variants for slicestr
05c8bccf hugolib: Add test for parseSitemap
b3c2d90b tpl: Add missing substr test variants
4dcb63c2 tpl: Add highlight test
0a8583a4 tpl: Add missing base64 tests
0888ddd0 tpl: Add tests for word and rune counting
ec49dbb8 tpl: Consolidate and complete the Inflect tests
1e8b4d9c Add some missing doArithmetic test cases
0f6c8439 Add missing menu tests
c462440d Add Page tests for simple methods
66570d2f Add Node tests for simple methods
75044c19 Add menu sort tests
5995eaaa tpl: Unexport all template funcs
d1d7702c Add a benefit and a simple example to return current year
49c2761b docs: Fix typo: Janapese → Japanese
0586bf0d Use filepath.Join in locale resource getting
8d8e9dde Minor cleanup of some of the resource getting code
b3a70abe tpl: Complete coverage for Humanize
7c3dceea Fix buggy Menu.Limit()
a95426d4 Remove Printf in test
88a320fb Fix buggy Pages.Limit
b21d280c transform: Complete test statement coverage
08b582e1 Only do one livereload replacement
dd1db334 transform: Add missing test case in livereloadinject
96e99045 transform: Add missing test case for NewEmptyTransforms
21cb5264 bufferpool: Add test
1f326ad9 Fix bash-completion for Hugo builder flags such as --theme
45df4596 tpl: Add humanize func and cleanup lint
e95f3af9 helpers: Test coverage increase
318a9845 Apply gofmt -s
eebf00f7 Re-export HugoCmd
08670e6a Fix README.md to list the correct -ldflags for Go 1.5+
ed23711e Optimize seven recently added Showcase thumbnails
61197f9f Order the hugo comand flag vars
74539dea Unexport the remaining vars in hugo command
a89b2f41 commands: Get BaseURL from viper in server mode
792b2438 Add --renderToMemory as an additional Travis build step
3b596b85 Add renderToMemory flag
87ca0d0c Clean flags
bd0176a5 Add CONTRIBUTING.md
447228a7 Revise README.md emphasizing "good commit message"
8f368114 Update Travis CI status in README.md to track master branch only
5a7837cd Added showcase for datapipelinearachitect.com
868d0745 Added showcase for davidrallen.com
68e2e63d Fix Hugo hang up with empty content directory
ec02b990 Fixed example and cross-reference in content/variables.md
243fbbf0 Update lastmod date and screenshot for Rick Cogley site
9b8d2ce5 Remove destination from config file docs
9015aa5b Docs: fix some typos in templates/variables.md
57eebbf2 Use FEEDBACK instead of ERROR for empty home page warning
ca0c67dc Fix a minor typo discovered by Lintian (Debian)
817d6948 Expanded the Page Params section in variables.md
d158f7e3 Provide more detail on static sync when running with verbose
cd36d752 Add autostart option to YouTube shortcode
e8eb6181 Do not call watchConfig() when not in watch mode
c438f456 Add flag --cleanDestinationDir=false to retain prior behavior
5def6d9a Make the watch logger less chatty
3054a461 Make the DistinctErrorLogger more generic
3b3e771d Check for exported fields in embedded structs
12876ec9 Fix hugo benchmark
d08e4c87 Rewrite commentary on static event handling
b0b4b821 Permit directory removal during static sync
db18fd15 Ignore .DS_Store changes (thumbnail cache file on mac)
9413cf84 Handle self rename operations gracefully
74c90553 Static file incremental sync improvements in tandem with Afero improvements
7e196a82 Handle remove & rename source operations incrementally
e01c3409 A single file can be replaced in site.Files
45e50914 Process only the source content that has changed
9f3796a3 Read/reread individual source content files next is incremental conversion
ca6ca4f4 Separate handling content, data and template changes
bcc42c05 Separate reading source and processing source operations
f3aa93fa Ignore temp files created by IntelliJ when saving
0525fbdd Add leepenney.com to showcase page
eae46bdc Add Web Study List to showcase page
8537cecb Docs: add Hugopit to tools section
e27beadf Add Rakuten Tech Blog in showcase page
ca8d187b add javaunion in showcase
3526afc7 Fix some Go vet errors
58a183c3 Docs: Add doc for string and int
75ba84ac Add int and string cast template funcs
f89eb349 Docs: Enable plain id anchors
78f9bf24 Add one more menu test
ab70e6f5 Add menu test for external URL
dd85c290 Docs: Add missing "-b master" parameter to "git submodule add" command
e69e276a Update Travis config to Go 1.5.3
e8ca52e9 Add one more temporary template test for linux/arm
bca2d38e Add temporary template test for linux/arm
ed3015c3 update server to match latest afero
dd1d6556 Docs: Change the pseudo-absolute path to a relative one
082476e7 Docs: add emilyhorsman.com (buttercup theme) to showcase
1ce184b7 Add some p-wrap shortcode tests
48870fef Group vars in paginator
b47652fb Docs: add panel showing the last revision of a page
2c661674 Docs: Copyedit extras/robots-txt.md
01f71bab docs: Add lastmod to content files
9d70e780 Update press.md
9a6dc6c7 Add embeded template for robots.txt
7c5a1fd1 Replace *bytes.Buffer with io.Writer in rendering
4c596483 Update and refactor to ack Go Authors
6a23cd65 Docs: Update copyright year on gohugo.io front page
851c16ef Docs: Run "brew update" before "brew install hugo"
9ff36c5a Add some trailing newline shortcode tests
7bc5d366 Use a Docker container to build hugo
bc48b460 Added documentation about variable scoping in "partials".
8f8120ba Added "Caddy server"'s handling of 404 errors.
dcad0660 Small refactor: don't call `p.Permalink()` for all aliases, call it only once and only if necessary.
0bb3b49c Update doc to reflect default value of watch variable
6cdb8109 Allow renaming of sitemap.xml
26d23f7f added remaining relevant options
e904ccff added more pygments opts
9008ac0b Rename random to shuffle. Remove count parameteter to simplify its role. Add tests for randomising.
302a6ac7 Add Random function to template functions
b1f2b433 Fix /.xml RSSLink when uglyurls are enabled
ff28120e Added async version of Google Analytics internal template
8f6f1310 Copy static files changed
f310492c Add to press.md two articles about Hugo on AWS Lambda
ce0304a1 Change Gitter badge to "gitter | dev chat" in README.md
b309fe85 Update press.md
dfa34afd Add template funcs countwords and countrunes
2e92f368 Add hasPrefix template function.
0f6b334b Source file based relative linking
b78f13b0 Write a simplistic test for site.refLink
47587321 Add themesDir option to configuration
40fccf22 Fixes #1292
b56362de Docs: add hugodeploy to tools section
3b2a78ba Add to press.md Beginners Tutorial for Hugo (German)
fc627d55 Docs: remove unnecessary --watch flag
796ef3a3 Docs: add cross-references to installation guides
f807953a Update Hugo examples
cd54042c Add Coding Journal (blog.kulman.sk) to the Showcase
1d6286b0 update to use cobra's sub package doc
a291f3c5 Copy only the static files changed
277425ba Ignore temp files created by IntelliJ when saving
cb8f4591 Docs: Add nohighlight shortcode and improve formatting
22bd4850 Docs: Add lang attribute to Chinese and Japanese Press entries
ea75985c Update embedded livereload.js to 2.2.1 in livereload.go
5b1261c4 Upgrade Bootswatch, Font Awesome and jQuery in examples/blog
7cf7f85a Docs: Upgrade highlight.js to 9.0.0
df92a6b9 Docs: Upgrade InstantClick from 3.0.1 to 3.1.0
aee92f2a Docs: Upgrade livereload.js from post-2.0.8 to 2.2.1
23abad7b Docs: Upgrade Owl Carousel to 2.0.0-beta.3 (2015-06-19)
4b521b4f Docs: Upgrade jquery.scrollTo from 1.4.6 to 2.1.2
cca49ad0 Docs: Correct file permissions from 0755 to 0644
f6f0111d Docs: Rebase bootstrap-gohugo.css on Bootstrap v3.3.6
88343144 Docs: Rename bootstrap-theme.css to bootstrap-gohugo.css
ad6717bd Docs: Upgrade Bootstrap from v3.2.0 to v3.3.6
f8f128a0 Docs: Remove octicons fonts
7c84ad56 Docs: Remove unused GitHub:buttons files
217d25f5 Docs: Upgrade Font Awesome from 4.1.0 to 4.5.0
a84d8212 Upgrade jQuery 2.1.1 to 2.1.4 in doc
7a5a52f4 Clean up the loop counter variables confusion in TestPageCache
f24ffc9c Docs: Allow HTML in Showcase titles
e1af7cb9 Use MkdirAll instead of Mkdir in `hugo gen doc`
de82404d Fix hugo server "Watching for changes" path display
a1d232f4 Docs: Make <hr> slightly darker on gohugo.io
00fc038d Document 32-bit `hugo server` crash in v0.15 Release Note
5af8cc29 Add gadgetplayboy.com to Showcase and an article to Press
fe7ca7d7 Fix build
13d14ab9 Remove "Host:" prefix from Host header
dd2ab282 Correct the strings.Contains syntax in failing test
31035f8a Fix remote test on Go 1.4
89f8fa58 Set the request Host on http test server
9edc58a0 Fix failing template related tests in Go 1.6
8cea4288 Fix data race in non-renderable pages
0c01fef3 Fix 2 data races in TestPageCache
32da9b20 Docs: add hugo-lambda to tools section
3574304c Improve some random feedback messages
9c39593d Move cobra.MousetrapHelpText to hugo_windows.go
70510433 Docs: Enhance contrast and increase font-weight
868e4798 Fix formatting of "Installing on Windows" tutorial
67b4c524 Regenerate the commands section of doc
c1e134f1 Add `--source` flag back to `hugo new` command
41a3af1a Use absolute path when editing with editor
78576019 Docs: reference Jekyll import command in tools section
ebc187b4 Docs: add Contentful converter to tools section
d1bec542 Do not fail on unknown Jekyll file
d5ebf648 Remove/update outdated links in Press and Showcase
9569d116 Duplicate p.Description in Params map
38c5db98 Added a missing closing tag
f22d59bb Revise docs/content/tools/index.md (minor fixes)
1469ce0e Remove Duplicate "Editor Plugins" Section
280b2f29 Document PreserveTaxonomyNames
4a2623c8 Regenerate the commands section of doc
768370a5 Docs: remove references to dynamic CMS products
9ae07c4f Docs: document Node.IsHome
8509727f Add copyright header to that source files that don’t have one.
e29ede70 Fix some of the "new site" tests
b81fc1be add more architectures to .goxc
6042fc2b move some of the path helper utilities to afero and provide wrappers in Hugo.
de14ceec Update "Join Chat" to "Dev Chat"
56d6c0be Turn off failing new site test
f3c74c9d Add boolean value comparison to where tpl function
e445c35d Fix copyright headers in source files
f13db932 Sort and remove "" from "Available templates" list
d35d8206 Remove transformation of menu URLs
f6fdfcd4 Added 'themes' as a default new site directory
6a519e69 Update Travis config to Go 1.5.2
cd062623 Fix crash with "config", "check" and "benchmark"
69c28985 Fix broken Highlight test
c1b5a48f Add sanity checks for `hugo import jekyll`
00d04774 Change most global flags into local ones
c9526f6e Revise format for "Unable to locate Config file" error
df85e5a0 Switch to container-based Travis
be28d9d9 Fix some errors with format patterns
f363faad Add a number sign "#" before a GitHub issue number
6812229b Add gh shortcode to docs site
d48781ba One more error fix in the server command
c5287e78 Some more error fixes in commands
3f0f7eed Improve error handling in commands
6959b7fa Update external tutorial links in usage.md
75c61236 Move `import jekyll` functions to import_jekyll.go
666ddd23 Enable dirname and filename completion for more flags
0d1d33d7 Print error when /index.html is zero-length
f8302768 Run `go fmt hugolib/site.go`
afbc18c0 Bump min_version to 0.15 for `hugo new theme`
e9894683 Make noTimes command flag work
6c810314 Copy static dir files without theme's static dir
c5e68ba1 Fix typo in "Creating a New Theme"
91771ee3 Add Draft page variable to docs
b0b6a8c7 Use .Site.Pages in the documentation examples instead of .Site.Recent
d7ef272a Add Camunda blog and docs showcases
b557f624 Change plainIdAnchors to plainIDAnchors in docs
249cd625 Copyedit the shortcodes documentation some more
2e3d5c2d Docs: improve shortcodes page
cf732940 Remove an erroneous "$" prompt in quickstart guide
c83e10a4 Added the command in the documentation.
50b5d0af Support setting target directory in `hugo gen man`
09379e89 Update for version 0.16
2519b707 Docs: remove note about config changes and manual livereload
ffb1a96e Docs: improve usage.md
37676a25 Docs: improve quickstart guide
72a66972 Update press.md
26af48a5 Add note in doc about Jekyll import
f77a899d Regenerate the commands section of doc
d356720f Version bump to 0.16-DEV
6faf1d01 version bump to v0.15
9c1319cd Update license file in the docs/website to apache
9410d25e Update release notes with additional new features
171fb883 Update and reorganize 0.15 release notes
0f11eb4f Make the release note about renderToDisk more consise
234fac4a Update release notes
311307c9 Add IsNamedParams property in shortcodes
86dcac61 Add documentation for built-in shortcodes
7d31d5f5 Add shortcode for tweets
e03f27cc Add shortcode for github gists
3027b151 Add shortcode for vimeo
4424288d Add shortcode for youtube
cc3f52b9 Add shortcode for speakerdeck
fe2a9fa2 Update shortcode docs with .IsNamedParams
f045d7a6 Change the license to Apache 2.0
b00771ca Simplify ExtractRootPaths
c3931ef7 Add PygmentsOptions option
99acbb2e Permalink on Node and Page should be of string
5838420a Move blackfriday site-wide config loading to NewBlackFriday()
fde47c5e Add shortcode IsNamedParams property
3d09de89 Restructure the gen commands
831e9368 Improve "watching for ..." logging
098a0c81 Add commands/genman.go to autogenerate man pages
87274755 Fix missing word in code comment (my own fault)
6fa7f2ac Avoid multiple locks for shortcode template
c5f40e8b Improve RW-locking of template in shortcode handling
58c446f5 Fix recently introduced new data race in the shortcode handling
5c723401 Copyedit long help message in commands/server.go
3abb2675 Add RSSLink to SiteInfo
afbd52f7 Apply absURL on social tag urls
05c29ad5 Return error if shortcode template.Tree is nil
e59aabcf docs: Change "Github" to "GitHub"
a871c87f docs: Optimize a few large showcase thumbnail PNGs
2e1d2ba0 Add Go in 5 minutes to the showcases
a5bd101d Docs: fix typo in template function section
c5a4c07b Add SafeJS template function
7c9a2dfe Add increased time.Time support to the 0.15 release notes
f6ba48f2 Update Travis 1.4.2 > 1.4.3
f99730e8 fix broken image in showcase
83f19d8d fixed documentation link
923e4557 Add Arrested DevOps site to Showcase
97d06895 Hugo server watch by default
35abd179 Add time.Time support in ge, gt, le, lt
8d8fa722 Remove some superficial tests
3f5ddd52 Revert "Disable render-to-memory on Windows"
91e0c2b1 Disable render-to-memory on Windows
4679fbee Do not rebuild on extra Spotlight filesystem events
b08d9f26 Make replaceShortcodeTokens rewrite the input slice
4ecf56b8 Add latest review from Smashing Magazine to Press page
df824fa3 Hugo server renders and serves from memory by default (30%+ improvement)
e1618e9d permit the notimes flag on hugo server
cb48425f No double slash when destination set to '/'
ef0b9b51 Handle sync (file copy) errors better)
18a29964 Fix trivial typos in code
452ffab4 Copyedit docs/content/tools/index.md
2fec32a2 Add @wicast’s "Hugo is cool" post to Press page
acd720df Add docs/data/titles.toml to set title "Site Showcase"
5c6d8c57 Add ReadText project to Site Showcase
39933111 Adding LosslessLife blog to showcase.
28436059 Emphasize that commit message titles should start with a capital letter
619c16fd re-simplify SafeHTML function
1a26e351 Docs: add hugofy to tools
5c1204c2 simplify rssuri logic
062f6c33 rewrite safeHTML function
dcf1f96c Revert "Update Go release version to 1.5.2 in Travis config"
53a5932f Get rid of allocation in the BenchmarkReplaceShortcodeTokens itself
d7588fac Docs: fix typo in tools section
b8effd8a Docs: add hugofy to tools
b4ebd0eb Update release notes
8e68a648 Adding article about moving to hugo
a50133ff Improve the server usage output
3bbd02a1 Print parse errors from Viper
469d268c doc: Add new article by Fabiano Frizzo to Press
30ebf6b8 Update Go release version to 1.5.2 in Travis config
139be09f Fix GroupByParam to return original param string
bccf957e Add support for dynamic reloading of config file when watching
488966dc Add hugo theme site to the sidebar
570713a4 Use Identifier as last sort resort for default menu sort
01c87d2d Small Doc Changes
1758db29 Cosmetic change in README to trigger new build
341dcc47 Docs: fix broken links
9dbb6dc5 Add internal Google Analytics template
ca55ea50 Improvements to Automated Deployments tutorial
5bda0398 Export Page.Layout
e1729935 doc: Add new article by Thomas Peham to Press
08b3004f Update link to S3 deploy instructions
217ffa87 Fix doc render on Firefox
c8f2a574 Fixed link to Google Prettify
42453357 add bugtrackers.io to hugo docs showcases
277d0ae4 Fix spell mistake in variables.md
1ce3bb22 add ninjaducks.in to showcase
83e46555 Disable directory listing for Hugo file server
50c819ce Remove dots from snippets.
3d96dfc9 Docs: fix typo under tools section
6c6905d5 Fix missing "]" in README.md in commit 2242712
2242712b Add CircleCI status badge to README.md
e95db67b Add smartDashes flag for Blackfriday
6b34a4e4 Remove anchor from fork link in README
f77279bb Turn all README headlines into imperative mode
4974a62c Trim down 'Adding Compile Information to Hugo' in README
5cf1475e Improve README
36adb5fb Preserve Unicode marks in MakePath
9d603ce8 Show usage when new site creation fails
ab7223df Improve error message on new site command
5e97cf30 Add force flag
3a412543 The missing static directory shouldn't fail the build
4e9a5d8b Fix some typos in docs
0c66ad87 Add CLA assist to the contribution workflow in README
fb0e17a3 Update README.md
698019a5 Disable LiveReload when Hugo is not running as a server
ef4dfcec Load livereload.js from "/"
0f438d18 Create minimal default.md in archetype file
bea7b2e2 Fix typo in shortcode tests
ec9c6912 Insert code tag for server-side syntax highlighting
6a3aced1 Rename prettiyPath to prettifyPath
5619fe52 Unexport internal path helper
4c04d710 Fix In func given an []interface{}
ddd8c779 Use https
17fb7522 Correct number of args to Errorf
72f14a82 Apply project wide go fmt
c274e213 Add Param to release notes
65beca13 Add Param to the docs
078fad49 Add Param(key) to Node and Page
3586d77b Docs: Add pointers to the new themes.gohugo.io site
63d9859c Expose canonifyURLs as a command flag
002227e0 Add `dict` func to release notes
3a27cefe Add dictionary function to be passed into a template
ccd83c30 Docs: Added `hasCJKLanguage` global config flag and `isCJKLanguage` FrontMatter
7b4e4769 Fix comment for NormalizeHugoFlags
c1a60732 Remove Go 1.3 from README
82333487 WordCount and Summary support CJK Language
2c045ac4 Remove RuneCount from doc
5ec6a61d Add Mmark GitHub-flavoured markdown to release notes
c2c694f1 Add GitHub style code fence support to mmark
7ecf2a55 Docs: Added RIDING BYTES to Showcase Page
622d8724 Adding maximeguitare.com to showcase
b25ba8b0 Let Cobra do the usage error logging
b9aaa007 Improve command text for import command
ac1e3c3c Capital J in Jekyll
0387deee Add Jekyll import to release notes
9a2f6c62 Hugo import from jekyll
08d41c3a Fix strange carousel width on http://gohugo.io/
218554e3 Rename NormalizeHugoFlagsFunc to NormalizeHugoFlags
ead339ab is it .md instead of .ad?
7fd42af3 Used leading slash more consistently
d06ebc98 Marked the whole path as code
dcd9c69a Use filepath as the last default sort key for pages
7708d455 Add the base64 template funcs to release notes
79f8bb62 Add base64Decode and base64Encode template functions
a1e32439 Allow for any (short) line begining or ending with html comment
a43b0376 Change port number from 1414 to 1313 (default)
82f770a6 Remove superfluous `g` in docs
493147a7 Tools: Add more to tools to the list
06caa025 Fix typo in docs
8d695ec5 Add singularize template func
751d4906 Add pluralize template func
74924dd5 correct spelling for 'including' and 'counterpart'
ab0d29aa Press: Update URL to Spencer Lyon’s “Hugo and GitHub Pages”
740dc2ca Press: New URL to Kenny Woo’s blog about Hugo
c397c0b2 dead link
0bdb9b7d Link no longer works - Dead link
b29ca44c Show both baseURL and bind address in `hugo server` output
d984dde2 Update .travis.yml for Go 1.5.1
b5b8cc9b Test builds on OS X
c2a7c456 Fix typo in terms.md
e67bee93 Revert "docs: Fix URL to yulinling.net (https → http) in Showcase"
1abc12a9 docs: Fix typo in url extras
ca74dd23 docs: Fix URL to yulinling.net (https → http) in Showcase
68b8dd73 Add yulinling.net to Showcase
cd4f36ba docs: Optimize recent thumbnail images in Showcase
0a80ead5 docs: Fix formatting in overview/usage.md
397080ea docs: Add a few more blog articles to Press
3679fe67 Add "control code" and "trailing space" to alias validation
f5308da3 Move isThemeVsHugoVersionMismatch to /commands
e71bef79 Validate aliases to prevent directory traversal etc.
db85299c Complete the Url-to-URL transition in docs
29aa9bae Complete the Url-to-URL transition in tests
d05b297e Add helpers.NormalizeHugoFlagsFunc() to handle flag name changes
833a396f Docs: extend the migration tool list and add a cross-reference in the start guide
60f7394b Docs: Add a section about tools around Hugo
0e1fd78f WordCount Summary support UTF-8 string
c7521b3d docs: Change redirect documentation to aliases
cf7318a0 Convert example/blog to use new syntax for Hugo v0.14+
cec9054b docs: Remove empty sourceLink from two sites in Showcase
93b38986 Add FxSiteCompat.com to Showcase
9e526b65 fix showcase to render properly
daf5f32c Adding RichardSumilang.com to the showcases.
aec0e17a Docs: Add Humboldtux.net to Showcase page
c7b701ea Docs: Add new french mag article by @humboldtux to Press page
9f75a518 Added details about generated files and development flows
fd7b3155 Add a 404.html file if a new theme is created
d6f69455 Update organization.md
bfa06fff showcase layout improved when thumbnails are different proportions
138ffefd Add NoDesk to Showcase
ea852b8d Add NoDesk to Showcase
d584ca59 Describe the use of custom archetypes in the docs
16cbda97 Add GreenITGlobe website for showcases page
570d4e4c Add Chinese Grammar to showcase
1b8440af Docs: Add new blog post by @CoderZh to Press page
52d94fa6 Add config option "disablePathToLower"
49fe04c0 Correct check of published boolean
311593bf Add undocumented published setting to front matter
5b90b388 Unexport FileAndExt
fd2fc1d3 Polish 0.15 release notes
1e06dfd1 Add first draft of Hugo 0.15 Release Notes
0c98d8e9 Use LazyFileReader for reading file contents
97eb55da Add LazyFileReader type to source library
3982854e Update Travis for Go 1.5
c2869aea Fix -ldflags for Go 1.5
e791835e Fix typo, "delemiters" -> "delimiters"
35ff685c Update press.md
4047ca5c Search current directory for config file by default
dac9c0da Use cast.ToIntE for int conversions in substr and slicestr
5b51b3b9 Slicestr fix for other int type param
d313bc78 Documentation update on Template Where Function for nil
29c9a40a Implement `hugo --theme=[Tab][Tab]` bash completion
7555e364 Print feedback for `hugo genautocomplete`
c69835da Print feedback for `hugo gendoc`
fee55191 Use spf13/pflag's new SetAnnotation helper
209166a2 Added sitemap configuration documentation.
caaf6370 Added mention of .Data.Pages, removed duplicate .Site.Pages mention.
cafcd190 docs: Remove minodisk's http://dsk.mn/ from Showcase
68b424c2 docs: Clean up and align Showcase thumbnail images
36b374f8 docs: Add site title; set pluralizeListTitles = false
b14b9043 Add Arqueart to Showcase
8c3b6f8b Create arqueart.md
ee7dd292 docs: More detailed explanation of .Site.LastChange
6511e2c4 Removed extra .Site.LastChange listing
7a681035 Doc for other supported formats (external helpers)
04b4c996 Reset Scratch for 404
b05a292c Revert "Fix some Go code doc issues"
0f1fb8c7 Avoid panic in shortcode param handling
35bb72c8 Do not panic on index out of range in shortcode.Get
2805a6f8 Also rename readDir in docs shortcode
cea82842 Rename ReadDir to readDir
15333270 Make sort tpl func accept field/key chaining arg
56534bea Fix sort tpl func to return explicit type value
c7aa881d Fix Unicode issue in Slicestr and Substr
de7dd70b Fix some Go code doc issues
1583d8d0 Add missing formatting directive in Printf call
5b19a265 docs: Extend documentation on Blackfriday options
0b7229f7 Add some float tests to TestArethmic
4a2eda49 Add option to disable Blackfriday Smartypants
eb519afe docs: Fix typos
ab8e189a docs: Bolden the blackfriday flags to make them stand out
5505ac0d doc: Strip trailing whitespace; other revisions
b0416e9b Strip trailing whitespace in code
f2ab0b26 Improve formatting of Hugo command descriptions
e64e571b Bump `hugo new theme` template min_version to 0.14
98659bf3 Fix searching YAML/TOML delimiters in frontmatter
4bed6962 Add map support to scratch
8d28686e Trim trailing spaces from YAML and TOML delimiters
211b757f [Docs] Add <br> to an extra-long title in the Press page
738f9561 docs: add netlify article to press section
252ea96d Remove deprecated fields and methods for v0.15
b23b546a Asciidoc[tor]: use --no-header-footer option
43891e39 Always use the template provided in page.Render
3037d200 Fix inconsistent front matter handling
81e69c41 Add ReadDir function to list local files.
72ecd0cd Ignore non-presence of "layouts" directory in watch logic Fixes #691
18d69d7f Fix periods in taxonomies create bad paths Fixes #1188
c1a2b7a1 Replace strings.Compare
40efc867 Fix sort test and title sort
36e0d005 Fall back to link title for default page sort
6674189b The guide is updated to fit the current Wercker interface and configurations. Wercker changed its interface and default infrastructure (Docker).
da0715a0 Remove point 7 in contributors guide
d25cd039 Make small fixes to README file - Add a step to Contributor instructions for those modifying commands - Change forum link to http (https does not work) - Add "Sign the forum release thread" to contributor instructions
027abcfb docs: fix prev in highlightling
9c8ce0d9 Added szymonkatra.github.io site to showcase
cdefb5a0 Fix links to Ace and Amber pages
de38524c Add scottcwilson.github.io to showcase site
28020f86 Move apply before cache put
47e65c4a docs: Rename dynamic content to data-driven content
a9c5133a Fix data races in sorting and Reverse
ea6ae769 Fix broken test
5cf0aa2f Add benchmark for sort and reverse
aca0f604 source/File: Fix data races
dec9749b Document Amber templates Fixes #1064
8a48412c On error, return error message, not nil
c00a1fcb Add a check for the setting of watch flag in config file
03a70161 Let Amber template call Hugo's custom functions
e3ea4b48 Fix name logic for Amber templates
7f1bcd89 Fix link to front matter
85f4935d Fix unclear RSS template docs
bfcf95b9 Add mention about .Hugo.Generator in 'Creating a theme' section
c8477c4f Fix typo: "taxononomy" -> "taxonomy"
1a94148d Add paginator support for page groups
2c22a8b7 fix TestHomeNodeMenu test
24757497 Allow page.HasMenuCurrent() and node.HasMenuCurrent() to proceed with multi-level nested menus Currently HasMenuCurrent only process the first 2 levels.
354192d2 Log missing theme as FATAL
029cdb68 Checks to ensure theme directory, if specified, exists
a2fa3895 Fix log message in test
3663828f Optimize RuneCount
77c60a34 Add RuneCount to Page
90af334c Omit protocol from embedded font resources
c4f81840 Change arianv sourceLink to master branch
88fe0e7c Add learnoverpass
5f69d3d6 Add arianv
6807151a add a showcase of sa.muel.be
c6d46ff2 [Docs] Press page. Fix URL
c139c6e1 Add support for GitHub-flavoured markdown code fences for highlighting
fdab1180 If no language is provided to Pygments, then try and guess it
450dc7a4 Add a showcase of Kangkona
a9454124 Add how-to for foreign language month names
617fa2fe Add Rick and eSolia's sites to the Hugo docs showcase
9b3d0cf5 Added missing "Social" section to SiteInfo
24c8226c Document Page.RawContent in templates/variables/
c9fc0e78 Add Page.RawContent() to access raw Markdown as a string.
dd732e84 Add nil comparison to where tpl function
033a13e1 Fix watcher detecting changes as static when no theme
a509a232 Add doc for new Blackfriday options
483fc8fa Add config option for Blackfriday HTML_HREF_TARGET_BLANK
05c07c56 Add option to disable Blackfriday LaTeX style dashes
664a9781 404 is homeless
50df3140 added thumbnail
d118d037 Create mariosanchez.md
1b50ccd1 add vamp.io site as showcase
c4ad8f64 Use helpers.GetThemeDir() to find base templates.
1058cb17 Refactor theme path helper functions.
0987e98d Add support for baseof.ace templates in themes.
29e786aa Proper parsing structured array from yaml based FrontMatter
e764a6e6 Use pooled buffer in replaceShortcodes
67209dbf docs: make the named value Data File example simpler
e96624cc Update datafiles.md
d4b6f9ac Fix map-order dependent menu tests
c5072291 Print URL when failing menu test
dbd93f51 Remove unused var
004fcddc Remove superfluous p-tags around shortcodes
ae4f72b0 Comment out mystery test
6bcb7e83 Revert "add preliminary support for content/index.md file to be homepage content"
3eb301b5 Revert "refactor and clean up site tests"
f25ce7fe Revert "Move matchRender to test helpers file"
d770fa59 Revert "Add tests for homepage content support"
59c6ba4e Revert "Make .IsHome work when homepage as page"
7e765cc1 Make .IsHome work when homepage as page
24351c58 Add tests for homepage content support
32d91d61 Move matchRender to test helpers file
99e25091 refactor and clean up site tests
5f84bc02 add preliminary support for content/index.md file to be homepage content
50269f25 Remove superfluous return
4b7c1342 Make removal of accents in taxonomy and section paths optional
847ad36e Add new tutorial for multilingual sites
cc9536ec Update docs for `last` template function
0a2e5424 Add `last` template function
627d016c Refactor var name limit to index
40a92a06 Add `after` to template function documentation
c335efdd Add `after` template function
82cc1ac0 Add Blackfriday definition lists extension support
be6cf6a9 Revert "Add some debug to failing menu test"
becc627e Add some debug to failing menu test
bed8197d Move Viper reset to correct level in menu tests
beda46d2 Reset Viper for every duplicate menu test iteration
53c9e890 Make sure target destination has the right path separator.
3ab00e6e Let travis test against go-tip
bee46915 Temp remove tip from Travis
51cabe6f Fix substr tpl func's int type variant issue
be443452 Silence chatty JSON test
beeae6ab Add some tests for IgnoreFiles
beaa1b3a Add some docs for IgnoreFiles
bec3f403 Rename WatchIgnoreFiles to IgnoreFiles
bed22788 Add configurable list to ignore files in server watch
cc5d63c3 GetJSON/GetCSV: Add retry on invalid content
be38acdc Add PreserveTaxonomyNames flag
3ea4df35 Remove accents in URLs
be0903c7 Fix FullFilePath
3cee9b77 Allow custom RSS Uri for section and taxonomy feeds
2690a8c1 Update introduction.md
be0314b1 Fix Windows Ace path issue
e4ed9d6b Add some Ace test cases
be45399c Extract Ace handling to a method
be7404e3 Support `Fish and Chips` section
be535832 Add IsHome
be6dfcc4 Add some missing page permalink test cases
be964e95 Never remove trailing slash in RelPermalink
beffe756 docs: getting usage up to spec
2a404752 Add two articles about Hugo to the Press page
beaa008c Make deprecated warning for this release more alert
be381683 Hyphenate DEV version
601a2ce1 Add `time.Time` type support to `where` tpl func
beaa09a7 docs: add bepsays.com to showcase
102a3b95 Document techniques for debugging templates.
cd06e89b adding goxc config file
d4de2615 bumping master version to v0.15-DEV
6af9d678 Bump version to Hugo v0.14.0
fa58ef53 Add GopherCon to the showcase
6f0b80c9 Add GoGB to the showcase
45efc5e4 Add DavidePetilli to showcase
fe38dc2f update release notes
20cb4c93 Add new directions for maintaining press page
f49b63a4 Move press page to top level menu
4a177396 add dozens of articles to the press page
beee679d Unexport filepath/path bridge types
be79c35b Pass RenderingContext by reference in Mmark
befb54da Apply gofmt -s
bef34597 Add Go 1.4.2 to Travis config
4c850b69 Update release notes in prep for v0.14.0
bec697b0 Remove unused Completed chan on Site
be7c3bbb Prevent cyclic ref crash in JSON encode
be778c31 docs: some more on absURL, relURL
be136607 docs: add doc for substr
be4376a0 docs: add doc for slicestr
be2e08c4 docs: add doc for seq
be4a404f docs: add ToC to some more pages
be71fda5 docs: avoid navbar hiding when jumping to in-page anchor
0d65ca27 Docs: Add taxonomy term variables to the list of vars.
7125103b Add ".Render" to the list of functions.
321bac2f Clarifying Edits for templates/rss.md
be0784bb Grammar fix in error message
be7f5a42 Do not consider single.html for the home page
be2842da Fix formatting in hugo command description
be831d74 Fix CLI command description for the top level
fc946ded Adding default handler & tests Fixes #147
fd5cf9ac Better organization of loading defaults
bdb187e4 Merge branch 'master' of GitHub.com:spf13/hugo
a584ff20 Stop Viper from leaking across many of the tests (now tests pass regardless of order tested)
be026278 Add benchmark test for replaceShortcodeTokens
599d1b97 Add gendoc command
be920fdb Add a line in doc about the RelativeURL setting
be5f865c Add bugfix to releasenotes
2890b6db Fix UTF8 permalink
8a96234b Add Page tests with UTF8 paths
befa26b1 Remove trailing spaces in completionfile flag
be1bac9f Add some bullet points to 0.14 rel notes
be9224d7 Add Bash completion
84f4c21d Fix datePublished to publishdate
bee9718a Do not shout about missing baseURL if relativeURLs is set
6b5ed88c Edits on aliases, comments, theme customizing
6453bb58 Edit docs extras syntax highlighting.md
beaa8b1b Add support for URLs relative to context root
e522e5f4 Edits to templates/404.md
d0a4645a Set s.Info.LastChange to Lastmod
3882e7ce Add Lastmod field
be534a86 Remove old baseline.txt with no current relevance
bef92baa Add convenience script to run benchmarks
be1a5662 Only uglify 404.html on server root
be1287fb Add data-no-instant to livereload script tag
be5fa2f3 docs: reverse taxonomy entries
d5c77bdf Allow to reverse taxonomy entries.
be3a3506 Allow forward slashes in Hugo new on Windows
be72f234 docs: Use ToC length to pick the compact version
be823555 Add doc for absURL and relURL
be4f4865 Add ToC to long pages
be16e5ff Add absURL and relURL to release notes
bec839e6 Add relURL template func
be0cbeee Add absURL template func
bec90e08 Make page 1 alias ugly
be0c1bfe Add docs for Section Menu for “the Lazy Blogger”
be7e746f Add list of deprecated names to release notes
beb1735d Add issue to release notes
0e00ca6a Fix paginator with uglyurls
bef496b9 Fix .Truncated in manual summaries
be52eff6 Some notes on 0.14 rel notes
be325a30 Fix IsMenuCurrent for SectionPagesMenu
bef0f281 Make sure that complete server URL is logged on startup
feba35cd Added in set PATH and new site output.
a52e508d Update test logs for uniformity and consistency
2b91b480 IsMenuCurrent now resolving correctly when baseUrl is not at the root path
b4871787 add undraft command
563a6302 Very experimental support for mmark
d4acacd4 Section menu for the lazy blogger
beb4ab16 Make RSS output test more realistic
fd08e16e Add RSSUri to specify the name of the RSS file
beccdc04 Add bind to release notes
2bfa9fb7 Make server bind interface configurable.
24d8ac1f Fix multilingual styling with small screen.
9cd8673f Added missing files, make the site look better.
9123ac55 Fix multilingual site layouts/templates.
3596b1b8 Add blackfriday/ExtensionsMask option.
ee5a1bbf Allow 'classprefix' pygments options.
bec2c1e3 Add shortcode support for HTML files
bea9280f Do not add trailing slash to baseURL
bef3df74 Polish absurlreplacer
be918d71 Rename field i to the more descriptive idx
be57b1fe absurlreplacer: remove superfluous code, take 2
be4ca217 absurlreplacer: remove superfluous code
be96aacb Add benchmark tests for srcset handling
beb601c7 Fix testdata: srcset items should be comma separated, according to spec
bee6a698 canonifyurls in srcset
be648260 Disable faulty range validation in apply
bee521c6 Try to make it more visible that you have to set baseUrl
be159278 tpl: check that types in args match the target func's type
be049ff9 absurl: export a base url var for testing
be9df847 shortcodeparser: fix panic on slash following opening shortcode comment
be7b830f tpl: add sanity check to prevent panic in seq on big nums
be190fdb tpl: check for too many arguments in apply
be017f18 tpl: check slice bounds in slicestr
be3b8a13 tpl: avoid panic on too few args to apply
beacfcf8 doc: move the index func reference to where it's used
da08fad5 Add index reference to go template primer doc page
be15b077 Fix typo in test
bee1358e Return error from HandleShortcodes
be29c0bf Print ERROR on theme vs Hugo version mismatch
a8f91ace Clarify partials folder subfolders
9e13ac9a Single rather than double backticks in types.md
6b69f951 Clarify hugo new command in types.md
be2c67ad Fix broken Travis tests
beb32af7 Do not fail on unknown files in /data
be366bfe pagination: export pager to make Golint happy
be8e6d4f Use fmt.Errorf to make Golint happy
be01f843 Add shortcut to Scratch from shortcode
bef25432 doc: clarify Scratch usage in shortcodes
be62c948 Check spelling and some minor additions to Ace doc
be7c1e5d Add doc for Ace templates
beff6805 Expand the ACE base template lookup pattern
be46a4b9 Polish func naming in shortcode handling
bed05307 Remove unused types Shortcode and ShortcodeFunc
be0d9770 Only write highlight to cache when CacheDir is set
bee52f85 Fix broken Highlight test
be6a92c8 Temporarily disable Highlight test
be24457a Add more options to highlight
be540f5b Fix potential Windows path issue with Pygments cache
0fcb78e4 Added isso as a Disqus alternative to the docs
1b5b0b3a Add "Google Cloud Storage" article to docs Press page
1f4a3c1f Typo in mathjax.md
3b1db70a Add Google Cloud Storage to doc
bebb1b9d Fix spelling mistake in comment
be31b9e2 Add custom Windows mousestrap message
be4a9dd5 Remove section about the buildDate being configurable
be25acae Fix README part about missing Windows tests
be1b7f67 Add git commit message guideline
be2097e1 tpl: split template.go
42dcaabf Document getenv template function
9a499b56 Add a section comparing the 'build' and 'server'
6b50c8fb Sort function names in templates documentation
9de78aab docs: how to compile on mac, fix minor errors
beb66c19 helpers: add some missing documentation
be57ec53 Fix the last Go Vet error
be01d048 hugolib: make Page implement the ReaderFrom interface
bea42218 helpers: fix some go vet errors
bea5feb3 Return early from DistinctErrorLogger's Printf
99a18b21 List directories being watched when server is run
72aa516c documentation: mention data files under liverload
be627fa7 Remove paragraph tags produced by markdownify
bec9b92d Make contentTransformer names consistent
bec4bdae Return error on wrong use of the Paginator
bec22f89 Add pager size argument to paginator methods
06d704f2 Updates documentation with instructions for a Windows computer
3b2e1006 Capitalize singular
0ab34523 Updates documentation with instructions for a Mac
6a539db5 Update embedded rss.xml code in the docs
be21e2cb Add some more corner tests for ReaderContains
be1429fa Fix shortcode handling in ToC
be6696c3 Handle views in combo with Ace base templates
e8ca8602 Hash all pygments parameters.
beaf5db3 Use helpers.FilePathSeparator const
61a02c4d Fix section name guessing on Windows
15463d3d Cache pygments rendering between runs
be8c0675 Add support for Ace base and inner templates
0921761e Add missing ".adoc" extension in handler_page.go
be84f937 Change to variadic int args in Slicestr
5b0245ca Implement substr template function
beb423a2 Rename Slice to Slicestr
be82b5a9 Polish Slice doc
be19f4eb Rename Substr to Slice
be4fe8f8 Polish Substr and Split tests
04817c7b Add Substr and Split template functions
9cc3d67c Pull Data Files tests into its own file
1e8e5d4e Format docs
66cf3bdc Rename interface contentRewriter to contentTransformer
efb56477 Change safeHTtml to safeHTML in sitemap template
a8bfaba0 template: add some missing test cases for First
b15d0a16 transform: remove some superfluous int conversions
658cfb28 Remove URL param from exported AbsURL methods
e7099cfa Un-export ContentReWriter
98ee69bc Write to rotating ContentReWriter in transformer chain
9688ed25 Comment out shaky Seq test
f4244be0 Calculate the next Hugo version in Deprecated
3273fce0 Refactor Hugo version
49f20bbc Add UrlPath to the deprecated list
e39a258e Improve type handling in Seq
b3bd71fe Update Hugo docs with the initialisms suggested by golint
8b8fb417 More initialism corrections (golint)
ca69cad8 Press: Add "Migrating to Hugo From Octopress" by Nathan LeClaire
a220a3ba [Docs] Copyedit http://gohugo.io/extras/dynamiccontent/
bcdad02c Use ReaderToString in site tests
e1340c06 Fix crossrefs on Windows
a0447345 Add "getenv" as an wrapper for os.Getenv
32bf8b76 removed duplicate word in readme
27ed49e5 Revert "Added image support to the sitemap.xml template"
3c147bd4 Added image support to the sitemap.xml template
0be2aade Add Seq template func
358dcce7 Experimental AsciiDoc support with external helpers
fbcda030 Do not ERROR-log missing /data dir
b190ad0f source: add some test cases for File
f8a840a1 Add double checking in Deprecated
6e30c10d Add deprecated logger
f848dc92 [Docs] Update and expand http://gohugo.io/overview/usage/
d3c0fde5 Update press coverage: Fix URL; new tutorial in Chinese
232398f1 Remove trailing space from site build statistics
67df33f5 Correct initialisms as suggested by golint
00f07c53 doArithmetic: add test for division by zero
43742e02 Add some basic tests for doArithmetic
b9b70fb6 Skip directories like node_modules from the watchlist
f85d1a7d parser: add some frontmatter test cases
c641ffea absurlreplacer: write replacements directly to the byte buffer
3ba279c2 Do not parse backup files with trailing '~' as templates
81695717 Switch from fsnotify.v0 to fsnotify.v1 API (watcher)
634548b9 Add new min_version field to theme.toml template
4784b63e Add test cases for Ne and Eq type normalisation
44cdb37b Fix eq and ne tpl function issue
91d16fbb Fix UglyUrls on Windows
602ceec0 Handle 404 thread safely
851badcb There is only one s.PageTarget() - so we cannot change it, even tempoararily. We have to find another solution to this. ...
63ffb916 parser: apply some Golint rules
81c41d6f livereload: apply some Golint rules
a91bcd85 source: apply some Golint rules
e007c9b2 hugolib: apply some more Golint rules
57590078 menu: make receiver name on Page methods consistent
e24a7759 page: make receiver name on Page methods consistent
8539f781 hugolib: apply some Hugolint rules
b9f8c0c1 author: fix doc
bd2b679e helpers: apply some Golint rules
e685dfc0 Apply some more Golint suggestions
224a2ddf Fix some Go Lint errors
103ea842 Fix errors reported by Go Vet
c4c19ad3 Prevent 404.html from prettifying into 404/index.html
3343cacc Avoid panic when pagination on 0 pages
6e1b0e0c Apply gofmt -s
8557e2cb Add benchmark for the shortcode lexer
ecb2aca6 Update github-pages-blog.md
fb0facef Tidying the Readme a bit more
6c9bdc28 Using a smaller Header Image
8aa646ce Fixing image in readme
1e210a43 Restructure top of Readme.md
fa5cbb2a Merge pull request #944 from gitter-badger/gitter-badge
45d962c6 Added Gitter badge
d5cb3695 Update Readme.md with additional contribution guides
ab5862cd Allow the same shortcode to  be used with or without inline content
241f9f9e Improve error message on missing shortcode inner content
9d80ecb4 Keep trailing slash when baseUrl contains a sub path
176ce5de Allow hyphens in shortcode name
967d001e Use osext on GitHub
bb13d826 [Docs] NetBSD and ARM pre-built binaries are already provided
729a6739 Bumping to version "v0.14-DEV"
e43eabac Updating the final release notes for v0.13
88e7c031 [Docs] Clarify the switch to `canonifyurls = false` as default
ac189fd5 Update README.md and overview/installing.md
dc7b7ef8 Avoid race condition in target list init
c33a8528 Avoid race condition in isInnerShortcode
a3892685 Add trailing file separator to temp dir
f0c8585b Use $.Paginator in template
62752cfe Return unmodified content if panic in LiveReloadInject
4d708f09 Add revocer in LiveReloadInject
d2e022f2 Suppress errors for symbolic links witch point to a file.
aeddaee9 add note that running with watch doesn't produce a site suitable for deployment
e31536dd Add information to highlighting with Payments
c4393257 Adapt to relative path bug fix in purell
41c0e82f Moved futured getSQL topic to another branch
b209f443 getJson and getCsv documentation proof reading by @msjulias
4342dd84 Update Dynamic Content docs
48a6d447 Update doc
47b7cfeb Add getSQL idea
fdf8db9c Initial doc file: Dynamic Content
32d645d9 Fix bug where running hugo without options causes to create $TMPDIR/hugo_cache/ directory.
076b618f GetJson and GetCsv have now variadic URL parts so that you can submit pre or post parts of an URL. The parts will be joined to the final URL.
10c2b41b Add --ignoreCache CLI flag with description "Ignores the cache directory for reading but still writes to it" as @spf13 suggested.
c168666b Adding getJson and getCsv to funcMap
41a51681 Fix bug on windows where the backslash got removed in func MakePath()
5e2d3d2e Merge to stay up to date with current dev Feature: GetJson and GetJson in short codes or other layout files. For more details please see: http://cyrillschumacher.com/2014/12/21/dynamic-pages-with-gohugo.io/
9bf223e5 Quote strings in `hugo config` output
82a08889 Revert "Expansion of unit tests for utils/utils.go"
c2e29138 Fix canonifyurl vs schemaless links
6b28e38c Expansion of unit tests for utils/utils.go
cb9fa627 [Docs] Minor copyediting of highlighting.md
bd0de85d Add information to highlighting with Pygments
1827680b List of variables
09ed3c4b Fixed a typo
54e41768 Make "Indexes" the alias and "Taxonomies" the canonical name
d33a42f1 Merge branch 'master' of github.com:spf13/hugo
159836ed README.me: Add linefeed that got lost in the last commit
63e7b970 [Docs] Add pointers to roadmap; new tweet and article
f1fec88c Improve abs url replacement speed
27c03a6d Add benchmark for AbsUrlInXml
366f9916 Another link in the same page
b389a923 Fixed invalid link to partials
462e666f Update docs so that `figure` includes the `class` parameter.
c14e7b10 Add 'config' command to list site configuration
d6f81c73 Put back static theme conditional
d10e05f2 [commands/new.go] Update theme.toml etc.
87975e04 Remove nohup.out committed by accident
48206833 Doc Data Files: Add section about themes and expanded the example a bit
12176323 Remove now superfluous conditional
8ed67169 Fix broken data dir test
8df59c81 Temporarily disable broken test
ebcc1e66 Add data files support in themes
664fd991 Change "ctrl+c" to "Ctrl+C"
dbb86679 Fix typo: GetJson -> GetCsv
7e28db18 Add showcase entry for consequently.org
fa71f6c1 Make # survice Url cleaning
e3daa359 Update release notes for v0.13
22d85c2a Avoid converting summary to []byte and back to string
371c148c Fix alias for data files doc
03fff880 Add docs for Data Files
6afe70d5 Better error message for data-file parsing errors
1c50f775 DataDir: Minor polish and add missing tests
773812de Reads data files inside data/ and makes data available in .Site.Data
4c7e119c [Docs] Say which directory to clone the hugoThemes
088d46a8 parser.FormatSanitize() MetaDataFormat for date too
08219161 Use buffer pool in StripHTML
5e34ae61 Log ERROR on missing baseurl
43e48a89 Add benchmark test for StripHTML
48b6777e Fix Truncate
2bee4a15 Replace 4 strings.Replace with 1 strings.Replacer
5df85770 Add memprofile to pprof benchmark
f8704c1b Avoid calling strings.Fields multiple times with same content
11a19e07 Build PageMenus only once
df734bc1 Tighten README for the sloppy reader
8b95cab9 Avoid panic on unknown markup
dd934481 Scratch doc: Use the special $ variable to prevent confusion
13d90094 Use .Site.Params.description as fallback for social partials
b984ec96 Optimize for the common case in Blackfriday config
c5078093 Print template parsing errors to aid troubleshooting
d1364ffb Fix defaults for Blackfriday
f264076f Add doc for Scratch
420c9e4d Add writable context to Node
47c8f329 Prevent site config being overwritten
659f71e6 [Docs] Fix more missing `.` in example `partial` calls
20bed49f Fixed syntax error in 404.html template code
f4737689 Updating shortcode imports & site test to work with new buffer pool functions
e1e6aaed Merge branch 'master' of github.com:spf13/hugo
4a9436c1 Some more .Date.IsZero checks in internal templates
230e7c02 Remove _default prefix from SEO templates
8db3c0b0 page rendering and writing using BBP
3d60955e Use .Date.IsZero to skip unset date in embedded templates
35684e8f Use strings instead of byte arrays for replaceShortcodeTokens tests
366c5572 Use a regular expression in replaceShortcodeTokens
b4c50728 site's XML generation using BBP
77074127 page source creation using BBP
4828fee1 transform chain using BBP
5441fc5d template render with BBP
2f2297bd shortcodes using BBP
66ed5c5e Adding BufferPool. Implementing BP in ReaderTo{Bytes,String}().
ba53799f url_path => urlPath
523f38a9 Fix for issue 839 and 490 on Windows
d397bc4f [Docs] Complete the transition from "indexes" to "taxonomies" (almost)
ba44e860 [Docs] Copyediting
82d4b8ab [Docs] Use OptiPNG to shrink PNG images losslessly
8e6cbe82 Some housekeeping of the Showcase and Press pages
831fbd5e Add .mailmap to get a more correct author log
ee1045ad ignore root path, no need strip traling slash
2d8e15a5 Version uses binary name instead of hugo
06b1a883 Added three videos to documentation.
e52a76f5 Use runtime.GOOS to identify Windows specific path tests
0b5f8c8c [doc] Improve paginator doc
7c74a77d Replace assert.Equal(true/false) with assert.True/False
251f5e9d Do not panic on permission denied
8ad4fd05 Split Windows and Unix specific path tests
b155e8b4 Temporarily comment out breaking Windows test case
bedc2d84 Introduce FilepathPathBridge
5f9596e6 Add more tests to helper
de76d4a8 Improve pagination testing
0c229707 Linkify release notes
fb594fc6 Set detault for Paginate to 10
a6d22bcf Add documentation for pagination
c0fbe614 Add Bootstrap-compatible pagination.html
3628d0bb Add pagination to release notes
37445bc6 Add pagination support for home page, sections and taxonomies
407e80a9 Add site-wide/per-page [blackfriday] `extensions` option
39b2cdec Wrong URL for Github Pages
e72ce89a Move s.prepUrl() before prepending BaseUrl.
ea72f15f Correct wercker URL
57b4f331 Fix inverse notation
f6c0b472 Make Blackfriday smart fractions to really default to `true`
eb686352 Add site-wide/per-page [blackfriday] `fractions` option
803865f8 Fix for page.GetParam() for JSON and TOML maps
a0c6dba3 Upgrade from gopkg.in/yaml.v1 to gopkg.in/yaml.v2
bd1b019f Handle empty front matter in archetype.
b345ca26 [Docs]: Add new press/blog coverage about Hugo
1b42dc57 Fix RelPermalink() and Urls in menus vs canonifyUrls
74399830 [Docs] Document the new (temp?) default of `canonifyurls = false`
60c6faa3 Revert "Try to fix mysterious test failures on Travis"
71fe85df Try to fix mysterious test failures on Travis
01ec44a6 Add menu tests for pages with both Yaml and Toml front matter
020c0b86 Revert "Quick-and-dirty way to print details of template errors"
6db6d33b Add dateFormat to release notes
37490ee2 Add dateFormat template function
878754c2 Protect the innerShortCodeCache by a RW lock
c8f8f48e Cache the page's rendering context flags
19c52ab0 Register rstHandler to restore experimental reST support
1cc63869 Make ref and relref respect plainIdAnchors
e5be592e fix outdated MathJax CDN URL
173aa53b [Docs] Use of `$.` to access global context from anywhere
f015e9b8 [Docs] Recommend the use of backticks for IE conditionals
02da4959 Fix string comparison for .Truncated page variable
a17c290a [Docs] Correct description of "Read More" links in Summaries
edcdb6f4 Fix two errors in two internal templates
d897b1e8 Add missing assertion to trim-test
932214d7 fix --uglyUrls params
2ec046af Minor polish in path/url
9e688507 Add more tests to general helper
1b91fec0 Add tests for IsSet
ee34a840 Add test binaries to .gitignore
f77f2a9b Refactor TestGt to also include Lt, Ge, Le, Eq and Ne
1348caa6 [Docs] Add a note about the plan to switch to Apache License
f470cf95 Add tests for Apply
3f0f186b Add inline doc for Apply
eabe8e1a Rename ignoreDotFile to isDotFile (which is what it is)
077d726b Replace regexp based Chomp with builtin TrimRight
99aee304 Add tests for Replace
26856c3b Add tests for Trim
4b1780bf Add test coverage files to .gitignore
a6bf6f52 Add tests for Chomp
42b33102 Quick-and-dirty way to print details of template errors
2342655f [Docs] Incorporate some great ideas by @mohae into the `safeUrl` docs
724cc0dd Add `safeUrl`; disable `safeHtmlAttr`; rename `safeCSS` to `safeCss`
f5946ea3 Add SafeHtmlAttr, SafeCSS template function
53b4ab4c Revert "[Docs] Use <dl> for definition lists of variables"
4609f77a [Docs] New testimonials and press coverage
0e60c513 [Docs] Limit `.fa { display: inline }` within #main-content
b56c9db6 [Docs] Add FreeBSD logo beside the FreeBSD name
3c4bc653 Merge branch 'master' of github.com:spf13/hugo
783c76b8 Make RSS dates valid
5d6dfe81 [Docs] Use <dl> for definition lists of variables
9712d06b Fix the Hugo.Generator tag so it can be used
56eead2a Fix broken doc section
c23dfd99 Use an init() method to create the HugoInfo instance
7257ab68 Update release notes with the new Hugo var
724357a2 Make sure there are only one HugoInfo instance
109e6f95 Merge branch 'master' of github.com:spf13/hugo
73d923e9 Fix HugoInfo init
ac6b86af Added top level .Hugo variable with version, commit and generator information + docs Added Version, CommitHash and BuildDate to hugolib/hugo.go and used it in build Removed commitHash and buildDate from commands/version.go and used hugolib vars Removed getDateFormat function from commands/version.go
1dfd0225 [Docs] Minor revisions to future v0.13 Release Note
a2c88715 [Docs] New "Troubleshooting Overview" page
90afe41e Add trim and replace to release notes
4f4015d7 Make all the params to Replace an interface{}
e08cabad Rewrite first argument to interface{}
871e8113 Add trim and replace template functions
32d15d91 Change CR+LF to LF on gohugo.io front page, saving 286 bytes
af956c41 Update gohugo.io front page for 2015; add @popthestack's testimony :-)
b59dd163 [Docs] More copyediting
769ab9e2 [Docs] Adjust sidebar menu width and capitalization
a4da5262 Missing . on footer partials
508788e6 Update TestFixUrl() to expect BaseUrl to have trailing `/`
3a9300dd Merge pull request #798 from bjornerik/fix/nestedshortcodes
1cbdd3e5 Ensure that BaseUrl used in `hugo server` ends with `/`
714abd5c Fix issue with nested shortcodes
9150a98f Replace `if` with `with` in embedded rss.xml
208086eb Add ".swx" suffix to file watcher's ignore list
f0b3979a Disable shortcode processing for html files
4f66acdc First take on release notes for 0.13
fc39019f Add an alias to the old URL of github-pages-blog.md
433ce3b7 Rename github_pages_blog.md to github-pages-blog.md
4107fd50 [Docs] More random revision and copyediting
6fda9012 Fixed error in tutorial, added site variable docs
6c5a7b7b Tutorial: Automated deployments
700c2b8f Trivial fixes to get RSS 2.0 feeds to validate.
5bfc812d [Docs] Remove references to "ATOM" feeds
6ee35f65 Correct typo in hugolib/path_separators_windows_test.go
a4eef4eb Correct spelling of two test files: seperators → separators
78e9229c Fix "hugo new" EOF error with an archetype file without the final EOL
b6ab6618 note in archetype.md to alert that ending carriage return may be nessary to avoid EOF errors.
b0181e27 Some more random copyediting of Hugo docs
49f5eb5c Moved a test regarding a content.go function to a new test file content_test.go. Added some tests for general helpers, especially as a way to document the expected behavior, and as a warm-up welcome contribution.
2b46f3e5 Do not exit server watch on error
190964c5 [Docs] New Troubleshooting section
cb909cde Google Custom Search: Open link in _parent
eba33459 Add basic Google Custom Search to Hugo docs
d12f6cd7 Fix `echoParam` template function to accept string key name
c0f54aef Rename to plainIdAnchors
a0e44bb7 Add Blackfriday: documentIDAnchor documentation
4adf58cc Group both options under Blackfriday: documentIDAnchor
b7716948 Add config options: disable footnote anchor prefix and header ID suffix New config options:
dca6eaba Add config file example to variables.md
0b7392b3 Update configuration.md
e6c27f76 Add example code to Summaries
d3763147 use fsnotify 0.9.3
a5f51061 Add in-section Next/Prev content pointers
837922d3 Add ERROR logging on invalid date and publishdate
0d17ee7e Add operator argument to `where` template function
ae9c25af Implement `apply`.
6033abe1 Add a chomp function.
14e93de8 Initialize funcMap in an init function.
6a98d269 Hygiene: Reduce copy-pasted code.
c6f4b09f always use http scheme for localhost
dd1001ce Merge pull request #762 from bjornerik/fix/revert-revert-menutest
076a475d Revert "Temporarily disable failing menu test"
fb1b795d Bumping Travis to test go 1.3 & 1.4
d3c36761 Fix EOF
ec2566fa Add www.thehome.dk to showcase
975f4cf1 Refactor tpl codes
fa8ac87d Make 'where' template function accepts dot chaining key argument
dd5bc034 [Docs] Mention support for the Ace HTML Template Engine
ddf41901 Docs copyediting: Add more external URLs; add backticks, etc.
5792cc3a [Docs] Go 1.4+ required for building on Windows
afe5add8 Add anchor ref to Blackfriday doc
5e0a16ea Fix a crash for ref page#anchor.
029a3ae7 Merge pull request #742 from bjornerik/doc/blackfriday
7dacc999 Add ability to canonify URLs in rendered XML output.
f5a3fb14 Wrap comments helpers package to fit 80-column width
a0fe1170 Add doc for Blackfriday configuration
fbf8bcac Add configurable support for angled quotes
bb376982 Fix unicode menu URLs
e4a22255 Temporarily disable failing menu test
0cfdb2e5 Revise README.md: buildDate expects timezone; copyediting
8042e774 Typo fix: "simple" → "simply" in templates/views.md
68cea070 Minor copyediting, no new content added.
e3433e6a Fix long descriptions of `benchmark` and `serve` commands
331043b9 Remove noisy Println in test
717f702e Added delimit & sort template functions, tests and docs
8f6f871f Added AuthorList, Author, AuthorSocial, SiteSocial, Image and Video structs Added Page.Author(s) functions Added schema, opengraph, twitter_cards, google_news metadata templates Added "" template
fd33e5d2 Documentation for `ref` and `relref`.
112c3c5c Provide (relative) reference funcs & shortcodes.
14bce119 Commented helpers package
7436829b Use current working dir as WorkingDir instead of hugo executable's dir
ec4b6c03 Trigger an editor after `hugo new`.
2c8e9a79 Commenting helpers package
b11838da Commented commands package
9b04c279 Revert "Make Urls in menus respect CanonifyUrls"
3ccb3979 Make Urls in menus respect CanonifyUrls
e6541c45 ERROR-log on symbolic links
9f77f930 Fix various Windows-issues
3a8c1241 Add timezone to buildDate
be3d563a Add an `install` target to Makefile.
9f0f73f4 Fix front matter for 'Creating a New Theme'
a6d3862b Docs: Minor copyediting/proofreading
736dd4b5 Docs: Quote <!--more--> in <code> instead of italicizing it
010f6057 Correct URL of the favicon in the documentation
11cdb815 Remove Println that panics in test
27840932 Always use RFC3339 for version date format.
a0d956c2 Add Ace template engine support
390c158f Github page strategy for username.github.io repos
1b36bda6 Fixed typo in summaries description in the documentation
c00788d8 showcase: update ucsb entry
742a064b Correct alias
df8e9366 Fix missing shortcode in doc
b719ba7e Adding Prev/Next functionality to all lists of pages (sections, taxonomies, etc)
78316903 adding appvoyer support for Windows CI integration
d6166172 Doc for markdownify
53c707bb Add markdownify template filter
f0400697 update summary.md with info on handling of html tags
8f9cea7f Enable descriptive header IDs.
0282c922 fixing race condition in CreatePages
c5ae2a2d Added makefile that builds with git information
9b850c4a Correct path in theme search order
9e152989 Added link to my blogpost about travelling with Hugo in asia
a1954c4f Added stou.dk to showcases
0eeaa4c8 fix version command so that it will work with all supported config formats and added tests
6c25cd52 typo: practical
cdbc741c fixed #656. Templates work properly when watching.
4a2f16f9 refactor handlers to use types instead of structs.
73f203ad Move template library into it's own package (tpl). No longer dependent on hugolib. Can be used externally.
92a3372a Added a new command `hugo list drafts` and `hugo list future`
728d0fa3 Update shortcode doc for 0.13-DEV
cb3576b6 Fix broken convert
bcaf3341 Update shortcodes.md
a6a9df39 Fix failing shortcode tests on Travis
596d6793 Various fixes in RSS feed generation
a07dd565 fixing typo
b716dbec Fix template checking order in site.go
55fcd2f3 Shortcode rewrite, take 2
c8904756 Removing dependency on go-html-transform (fixing the build).
7e692544 Fix `GroupBy` function issues
91e03b9f Reinsert deleted test
6bf6a810 Update creating-a-new-theme.md
88881de2 Update creating-a-new-theme.md
e9917bfe Update creating-a-new-theme.md
ca4e4ce2 converted helpers usage of path 2 filepath
99463f6a converted path 2 filepath
2c51bba0 converted path 2 filepath
7fd348cf convert path 2 filepath
4f2dfe70 converted path 2 filepath
7badd2eb change path usage to filepath
05300fde add support for fsync's noTime flag
f037ae7b update README.md with info on adding compile information to version
fc20d0b4 Fixed launchcode5.md description
52ae1c75 Added launchcode-tn.jpg to docs/static/img
15dae3cc Create launchcode5.md
8ad9c0a7 Make Where template-method accept methodname as key
fdae0907 Params map has string as key
e127a5cb Added better error message for poorly formed frontmatters in archtypes
3cec04e0 Add Git directory deployment flow to tutorial
d467ec0a Fix a bug with taxonomy rendering.
d7e6e490 Allow partial without .html
266511b6 Fix missing space before 'width'
cafd39eb Fixing some tests
55fb0242 Updating tests to use hugofs
a40bd3ca rewriting guessSection to accurately reflect intent and usage. Update tests.
e2634752 First stab at correcting GuessSection tests
f81f9ceb Fix: rewrite FileAndExt
5906c865 Fix: remove the unnecessary dot in an extension
3521e8b1 Updated TestReplaceExtensioni, TestFilename and TestFileAndExt
980d0f14 WriteToDisk and SafeWriteToDisk test cleaned up
bf07dc92 WriteToDisk and SafeWriteToDisk tests now pass
a54ad2bf Fix: Test TestSafeWriteToDisk now works
e8bbc44a Added the path modules test files
6b619d2c Added the url modules test files.
57cd9539 Added the general modules test files
b87402e8 Remove the helpers_test.go file
8a5dd06a Use page.Markup to determine which PageHandler to use if it's set.
ade2ca60 Adding an html file handler
7fba2500 Adding a proper css file handler (with automatic minification)
4dcf734a Updating tests to use new Targets & Writers and switch to using Afero.MemMapFs for more accurate tests.
7b960ac1 New targets & new renderers and write methods [WIP]
e02dc674 Cleanup file conversion handling
3616d167 Better error messages for show_plan_test
07f2ef9c Page Group functions now work even when an uppercase field / method is provided.
4b9ea105 Setting to filesystems to the afero.fs interface so can be easily swapped out.
ad69374f Source files can provide content as String or Bytes or Reader
dcea0fa5 Adding ReaderTo and ToReader helper functions
2cb89a52 Update menu test to work with revised source struct
8cc7684a Change the type of .Site.Author from…
f3e9cbc7 Fix #593 problem with `hugo -w`
c1942e91 Change permalink validation and substitution.
c07b10bb Output a timestamp with hugo server --watch
2060031c Fix sourceLink for Hugo
d036ddf2 Create creating-a-new-theme.md
11ddc308 Fix for issue 583
6c238e14 Fix broken link
649a7d2b Minor doc corrections
af47e5a2 Extend template's mod and modBool functions to accept any int types
d4ed5919 added note about pygment example code and markdown processing, updated example
8e368e25 540: add support for build information output to version command
8cb435f1 Fix redirect-loop for Hugo server
5e28606b Add sort and grouping functions for publish date and param of Page `GroupBy` is modified to allow it to receive a method name argument for example `Type` as its first argument. It is only allowed to call with a method which takes no arguments and returns a result or a pair of a result and an error.
d013edb7 Implement HasMenuCurrent and IsMenuCurrent for Nodes
2b412d4a fixed server reporting Web Server is available at https://localhost:1313 when server always serve http
73ec0925 update summary doc
9e029fe4 #463 add summary.md page
c5f1031e Handler WIP
141f3e19 Migrating Hugo to Afero for filesystem calls.
dfb84825 Handlers WIP - Convert now working
30d4a26b Handlers WIP (builds)
93f3d604 Handlers WIP
8bd0ffba Initial Handler Architecture WIP
20467e36 Improved error message when config file not found.
5dfc1ded Big refactor of how source files are used. Also added default destination extension option.
24bbfe7d Set Content-Type for livereload.js
0167fb48 Copy content from archetype
da5d98e9 Make First accept any int
d064139c Fix spf13/hugo#467. RSSLink now point to index.xml
16330cea Add nil-check to Intersect
1d4dde7a added docs for 'intersect' and 'in' template functions
ca7007bf Minor proofreading corrections to Hugo docs
953cad6c Document manual breakpoint of .Summary
3da97656 add 'width' parameter to 'figure' shortcode
fb82f00f handle https prefixes in baseUrl
b98c2088 Minor fix to error message when copying static files
4b9e4c90 #462 fix, remove leading and trailing dashes from urlized slug. includes test changes
f52e6628 Feed the titleized taxonomy key through string replace to replace '-' with ' ' for proper display of the taxonmy title
938733f4 added In and Intersect template functions
9cdd2e54 Use md5 against the file path for uniqueness.
603b24a1 Make each generated page’s footnotes unique.
e68e7ef9 Configure footnote rendering.
eeaf343a Mention .Params and .Page variables in shortcode docs. Also `highlight` variables.
1614b824 Correct desc for hugo new command
c739ec22 Removed text from code block.
879e90dc Switch to new hompage
e3d4d40d better error messages for template errors
3f59abe8 add some information to rendering errors so it's easier to tell what's failing.
def79376 Make taxonomy documentation match the example.
30603070 Make highlight.js example clearer
b81ebf2a Making the install on the homepage a bit more clear
4e4ea958 instructions for Homebrew installation
26e44506 adding memstat option to server
5d565c34 Extend template's basic math functions to accept float, uint and string values
d5308e6f Adding a community link to the homepage
bf980bc1 switching website to gohugo.io & adding links to discuss
1a0dc0b9 Update urls.md
b590de69 limit the number of goroutines used in taxonomy rendering to gomaxprocs*4
49045b1c limit the number of goroutines we use for page rendering to gomaxprocs*4
cf3e748b remove unused field
a72ca38c make the value of the BuildDrafts flag available to templates.This can be useful for if you only want to show some specific information on your local machine and/or when showing drafts.
71423743 Sort by title if dates are the same
275e1c0d more examples and explanation of go templating
becd4fe3 refactor handling of amber to AddTemplateFile as the TODO note stated. Used switch statement to make it easier to add other template support
4e9b0408 fix tags not being in lowercase, #491
012a473e added "eq" function to docs.
df489b47 Enable soft livereload of CSS and images
0099b5a3 Change all uses of sort.Sort to sort.Stable.Using sort.Stable ensures that even if the sort keys are the same, the order of the sort will not randomly change.  Using the old sort.Sort, if you had pages with no date, the lists of those pages would randomly reorder every time you regenerate the list, causing spurious changes to the output.  Now they'll always get ordered in the same way.
d9964451 More error messages at syncing static contents
acf9561a fix zero date
b336abcf Fix typo in Archetypes documentation.
2ca615c5 Add Node.Site.Pages to all nodes and ensure all pages from the site exist in the list before processing shortcodes.
b97c6c70 add Name to File, which is the filename minus the extension
16845791 Go back to lowercase slugs. Also, use MakePathToLower in TestMakeToLower.
5dd3eaab More proofreading and minor revisions to Hugo docs
ac78d252 A small fix and update to the multilingual example
4bb5e326 Taxonomies can now be provided as a single string value if there is only one in frontmatter (tag = "val" vs tag = ["val"])
1b7f18e3 Making partials context optional for compatibility with template.
7b3df238 Bumping Version to 0.13-DEV
efc98a3b Update example blog to Hugo v0.12 conventions
05102f1b Fixing typo in ordering.md fixed #401
13631289 Bumping Version
b4d3195f Adding V0.12 release notes
f36ed446 Adding a bunch of new quotes to the front page and switching to Owl Carousel
d2020506 Fix loading of Lato font in style.css for docs
a6022293 Minor proofreading corrections to Hugo docs
f142458c Use typographic quote chars in the carousel quotes section
13a317b9 Enable header id blackfriday extension
c1b9e8d5 quickstart.md: Put long options inside backticks
242d6b4e Adjusting the number of go routines to build the pages in to 4*GOMAXPROCS (from 2) for faster rendering.
47c91a4c Fix CreatePages
93addfcb Adding documentation about 'where' and cleaning up docs around first.
0ce4ec1e Added more examples and cleaned up the GroupBy functionality documentation
7e19fa40 Making direction optional (and setting defaults) for GroupBy Pages functionality.
b15eb889 Adding .Reverse() to PagesGroup
41b28462 Switch .Data to .Pages in the PageGroup functionality for increased consistency.
70dc370c Making the term "Term" more consistent with Taxonomy usage.
01caaeba Making the Pages Sorting methods available within a taxonomy term.
bb02a14b Adding a page listing the different methods available to Taxonomies.
ba8f652a More taxonomy examples in templates.
6f9f93f3 Fixing the taxonomy example. Fixed #318.
d3646aaa Be more specific about .Params content
7de32092 Shortcodes are content files specific.
6f9db4a7 Add document about page grouping functions
53b7d5b8 Inner Shortcodes now treated as markdown. fixed #185
828401cb More press additions
4b71eb16 Compressed showcase thumbnails further
95449880 Added ucsb to showcase
dcda66df More Press
4a91b8c7 fixed #389 . Added alias for missing page.
987a82d0 small tweaks to the hover effect
8a44deac Creating a showcase archetype to make for easier showcase additions
1c1615d7 Adding a bunch of new sites to the showcase
c9a6b2b9 Adding a bunch of new press to the Press page.
733bff90 Prettier link hover state
1143a8fa Bumping Travis to test Go 1.2 & tip (1.3)
294222ac Fixing a broken link in the docs
4281cbfa LiveReloadDisabled works with Watching properly. Fixed #335.
1b5f59b0 go fmt site.go
30af267b Fix #302. Links now have trailing slashes.
a31edb33 Support subdir in baseurl.
4b979b17 added functionality to check the error message returned from Cobra, if any. for uage message text. If its present, the usage message gets truncated and the resulting message is returned to be used for the rest of the error message. If the resulting error is blank, no error message is printed
4c735a78 preserve alias case while lowercasing taxonomy
348e123c Update 404 to be compiled to .html instead of directory
50a8c507 Add page grouping functions
867683e4 Add link for learning more about static directory
c750a95e support for futre/draft summary info output
946ad9c2 Making the links stand out more
f5157566 Cleaning up a ton of CSS.. Removing unused selectors. Eliminated over 80% of CSS. Upgrading jQuery & FA
34a93fa1 Fixing the docs sidebar interactions
04d412ed Fixed showcase image paths
cece27fa fix issue 411, /path/to/site/archetypes : is a directory error
e31d4609 Bringing back the showcase
b047e2f8 Removing redundant bootstrap
864f91d9 Changing the docs template partials to be able to be used to render a section
aae1ff3c Adding IsNode & IsPage functions to Page & Node
b10dea29 added evaluation for toml for metadataformat date handling
27c0ec31 Added a note after the script adding potential issues per @franklinwise's feedback
5ae28327 errors not propagating
634d7b26 switch to new location of goyaml
002a5b67 Add 'where' template function
6e15f652 Added yaml menu example
5d8ac54f Config changes and Live Reload
09115a96 Fix #394 - Docs: add a missing link to the livereload page in the intro
e9b47da0 hugo builds no site if there are only drafts
3e9fc47a Adding more press
cbb29795 Docs-removed bullet and broken link for catagetories.  Included category text in bullet for taxonomies
b3130b52 Fix #363 - Docs: make the fixed menu on the left scrollable
1778f28c remove extraneous "Because"
f556cb44 update docs for permalinks with all fields
29c45dd6 make type-or-section more obvious
756be987 Merge pull request #388 from GraemeCaldwell/patch-2
d8b78c3d Update press.md
2850692a Merge pull request #370 from kevinburke/its
657e4a46 it's/its
bf9595aa Fixed #328. Config file set appropriately.
8d3fa7ef Getting rid of bad scrollbar
aa42f430 allow site to be built with empty content
73dd4f38 report errors
78962a14 Allows 404 templates from themes/THEME directories.
ac99cecc Add shortcode template loading from themes directory.
35d04671 Add PluralizeListTitles option (default true) to allow disabling use of the inflect package
3eb480a6 fix link to template primer
b7671974 taxonomies -> Taxonomies
836b1800 Fix minor typo in file docs/content/templates/overview.md
0e57e32f do not use angle brackets in hyperlink labels
5969315c switch back to master blackfriday; enable footnotes
406233f0 Included instructions for omitting disqus comments on localhost.
86c3de4b Fix #263, document HTML comments & IE conditionals
b2b7ba42 fixing typo in docs
4483a665 Centralizing the template execution logic in one place
c297d745 Adding 'partial' template function to add theme / local awareness to the partials directory.
4e99d6b5 Adding proper error message when view is not found.. fixing #303
640ab3c7 fixed #303. Adding theme support to views
e0ea6b99 Support embedding <script> tags in markdown pages
7b7ce117 Add empty line to correctly render a list
ca18cfef Setting new version
05875153 Converting front matter to YAML
2b90779f Actually bumping the version
a3d6e7c4 Fix docs script and css references to refer to the correct location
012823a3 Update menu documentation to be accurate
b9bba2b9 Updating Convert to handle dates properly for yaml and json
0c254460 Add future details to documentation
c502f078 Add handling for publishDates (which will be ignored if in the future). Fixed #260
4ebaec89 Include Section Taxonomy into SiteInfo
35a60597 SiteInfo is now a pointer on the Node
7a8b754c Fixed #301. LiveReload works on any port now.
4076d770 Simplifying the siteInfo handling
280df4e3 Fix Viperized .Site.Params
e98f0014 Allow to use filename in permalinks
d65061df Adding TechMadePlain to showcase
79767f56 Fix links to GitHub repo for spencerlyon2/hugo_gh_blog
1ba63f15 Make the header not jump around
2a44ca54 More doc site improvements. Added documentation's new layout
79dd1d02 Fixing bug with Live Reload where it broadcast instead of sending the handshake
57ad3abe Pre and Post in Menu are type HTML
a87f171b Updating / Rewriting / Adding all of the documentation in preparation for the next release
aeb06c7b Rename chrome to partials (in builder)
9173022e Set verbose to Info level
e7991003 Fix bug so watch works on theme directories as well
6b8244ba new site works in an empty directory now
df4bbcef Adding instant click library to docs so even more responsive navigation
be1ee220 Proper integration of live reload with automatic injection
60ed5bda Live reloading is working! Still need to incorporate cleanly.
296d218e Better handling of when the specified port is already in use
b520f885 Switching docs highlighting to highlight.js .. Docs build super fast again!
b198cb26 Renaming indexes to taxonomies in docs
a4a1e39a Fixing issue when two menu items have the same name.
4f75ec98 Homepage renders with _default/list.html or then _default/single.html when index.html is not present.
025a37df Fix permalink functionality, which was broken in 62dd1d4.
05b76dcb Add a blank line after the front matter when writing back a page.
73cbefdb Make template comparison functions handle floats
667a047c Fix date issue with home page in Sitemap
0053be97 Correctly print server URL when base-url is specified in the command line
2194cc77 Add pygmentsstyle and pygmentsuseclasses options
5df0cf7e Add Sitemap documentation content
35926dcf Add Sitemap testing
6049c3a1 Update Sitemap default value syntax
2a902bbc Add Sitemaps config values handling
f8e675d0 Add base Sitemap support
17922544 Add template comparison functions (Go 1.1 compat)
4e0208d4 Doc fix: replace "hugolibs" with "hugo" in "contributing" page, fixes #271.
c38d694f  Change some typography in the docs.
ec4b1526 Fixing broken link. Fixed #278.
9b192e67 Adding more information about client side highlighting
bc9f69e7 Add client-side syntax highlighting example
6b9d4a93 Adding new commands (new site [path], new theme [name])
be3e5592 Adding an archetype file for the docs site
28ffb92b Adding the new command and the create package
08c30b6e Using new helpers in page.go
bff1f1e6 Adding some new methods to helpers (GuessSection, MakeTitle & Filename)
ef2ad4d9 More feedback where errors happen during metadata conversion
6d9a2d24 adding a front matter format to lead rune method
fb7d45e6 permitting empty files again. Fixing some tests to now pass.
3395e1cb Adding a command that enables converting site to a different metadata format. Doing this revealed some bugs in the encoding functionality in some of the underlying libraries. Please backup before using.
859a78e1 Providing the ability to save (write) a content's source file.
1302ef9f Making site page initialization a bit more granular and accessible
cbd9506c moving front matter parsing (and creation) to parse package
58f8b43f moving writeToDisk to helpers to make it more accessible
f271faea Don't process dotfiles
5581e33a Update broken localhost link
96b6ae81 Adding example blog
b52e9463 Little syntax mistake
2e954d85 Fix permalinks to subdomains
bdf7cd9f Creating site menu configuration and have the docs site use it
ac82fe32 Making active parent in nav reflect when child is active page in docs
ef87dffb Fix accidentally removed line from menu template.
4f813c09 Fixing some bugs introduced in prior few commits. Tests now pass.
11fe227b Implementing new menu system in the docs site
9ecf58e2 new menus system including active link & nesting
69c1944f Add handling of deeply nested front matter
4a8de8ea Add Disqus support out of the box. Move template/bundle into hugolib.
41adafbc Updated to work with the latest viper
8afff8c7 Preliminary Theme Support
c0a046cb Added internal rss.xml template and config option to turn off rss creation
bb9bcdcf Add more information to the siteInfo (and configuration options) for better RSS generation.
93bcddeb Renamed Indexes to Taxonomies. Old template and config parameters still work.
aae6fa0b Fix test to not fail when order is different, but slice contents are the same.
be37c0b3 Adding more articles to press page.
bd022534 Adding Params to node for easy template access of page.params without throwing errors.
c8269d6d Making node.Keywords the correct length
4161d542 Misc doc fixes
d1c500c1 Adding Press page to hugo docs
af1acfbc writing indexes under more configuration conditions
ad34be9d strip trailing baseurl slash. Added a new template function "sanitizeurl" which ensures no double slashes. Fixed #221
a6170154 add: yslow-rules showcase
9a83f7a0 Fixing all tests to pass with new Viper Config
62dd1d45 Hugo config abstracted into a general purpose config library called  "Viper". Hugo casting now in own library called "cast"
a01056b9 typos in mathjax.md
a7ca39cc ENH: added tutorial for hosting a blog on github pages
2e4158b0 added appliance.cloudshark.org to showcase also cleaned up thumbnail view to not show source link if unavailable
e50b9d8a Adding support for logging & verbose logging. Consolidation of error handling. Integration of jWalterWeatherman library. Fixed #137
2fa3761e DOC: added tutorial for using MathJax with Hugo
c02a0207 change golang to go
5ee0a3b9 Typo: s/executible/executable/
895fe536 Adding a few more logos and powered by/made by images.
f733e70e Adding apple touch & favicon meta links
51b078a7 Homepage update. New Logo. Minor site updates.
6205a16b Fixes #227 by properly scoping the variables within the go routine.
85c04ca2 Add Tutorial With Steps to Migrate from Jekyll.
7135d897 Optimizing thumbnail & preview images
17fdf7d6 Add www.heyitsalex.net to Community Showcase.
1b3525d6 fix typo of readme
38131837 clearer pseudo command in quickstart doc
d5c58b45 Order ByTitle and ByLinkTitle added
eec0e512 Add sort pages by Title and by LinkTitle
3dfb4751 Parallelizing the largest build processes (templates, pages, indexes). Seeing 300%+ improvement of total build time.
d84f707d Also ignore Emacs lock & recovery files.
3a0ab5a3 Bumping version to v0.11-dev
0447c759 Adding the right date for the release of 0.10
0a775650 bumping version for 0.10
2540d884 Fixing issues go vet reports.
2c0ded7f Add test for ignoring ~$ files
e53bc948 Ignore content files ending in ~
0becad72 Make error message when encountering unrecognized file extensions more helpful
ea8d0981 Make per-page url overrides take precedence over section permalink settings
732b5d42 Add Kieran Healy's website.
ae954d51 updating the intro page
14227351 Reorganization of helpers. Centralized Url/Path logic. Fixed #175.
64572d2d Shortcode cleanup. Added a ton of tests. Much more flexible with input. Doesn't crash with bad input. Fixed #193
dc068ccb Fix imports so hugo builds on darwin
8fe78f6f A bunch of small documentation changes
de05a0d9 Adding documentation on Pretty Urls
e74d1b86 Adding documentation on Table of Contents functionality
30e804ee Adding an introduction to Hugo
82fdfa2c Warn about bad shortcode parameters (and don't crash)
5cff3e62 Adding Else If example
ed0fe9dd Make 'read a string' code understand float64 (json) and int (yaml) as well as actual strings
b41622bc Allow 1/0 for true/false in Yaml front-matter
e4af4f65 Support ISO8601 date/time format without timezones
0bfe9276 Make the invalid date/time format error message more helpful
1dbed5ee Call the json delimiter 'json_lead' instead of 'java_lead'
8ebb85f1 Fix build
1bead0ed Adding Documentation on using Syntax Highlighting
56dfdfe8 Adding Documentation on Hugo Template Functions
bf640775 Minor Docs Tweaks
80086759 Adding Go Template Tutorial
dca7a901 Updating Release Notes and Roadmap
75c260fa Only change rLimit on OSX (where it is needed). Fixed #194
11ca84f8 Add unicode support for aliases, indexes, urlize template filter. Now aliases and indexes are not restricted ASCII letters and can include any unicode letters.
24ffe043 Add Ant Zucaro's showcase.
5cfb690e Fix docs error with json comma
72ba6d63 Fix permalink bug in uglyurls mode (refs #187).
3e87d7a8 Automatically increase the process ulimit to maximum available.  fixes #168.
ae9cc09b Adding the ability to check the system limit on open files (important for watching large sites)
c1b9380d Add back blackfriday extensions during Markdown conversion
6dd2e9a4 gofmt all go code
ff9f6e1b Fix panic with HTTP serve initialization problems.
0ce6f05f Add text transformation template functions.
18b9948f Using table of contents within the documentation.
1882ffab Adding support for boolean params
1da3fd03 Continue with TOC integration and page refactor. Updated a few tests to match new generated output.
f45c6bc3 Moved TOC test into page_test. Some general page_test cleanup.
9666f33e Don’t render short codes on summary twice
f82c645b fixing 178.
d0825a21 Big refactor of pages code. Changed TOC code to only parse when actually used
f62e3e99 Add new TableOfContents Page variable (Markdown only)
4f1807c7 Replacing hall of fame with showcase. (new type, content driven, thumbnails, etc)
9564e6e9 Adding support for some primitive template math functions
0e013b52 add andrewcodispoti.com to hall-of-fame
3851117c renaming MinRead to ReadingTime and adding to documentation.
50a7f97a Updating page variable documentation (for templates).
f0634ec0 fixed #171. RSSlink is now RSSLink (and matches existing docs).
ae15ff09 Fixing test which erroneously checked values and order, rather than just values.
44186c6a Extending rss item limit to 50… can reduce further in template with ‘first N’ functionality.
fa2e58fd Have travis build with latest go.
cb040533 RSS improvements, now limit to 15 items and provide accurate date. fixed #172
303be735 Adding github button to docs homepage
c51d040e Adding Werker status to readme
845d0976 Create wercker.yml
f8243624 feat(docs/hall-of-fame): add ifup
438c2198 Add `canonifyurls` config option.
2ff108fc Add highlighting of code in documentation and clean up a bunch of the docs.
13b5c10d Rewriting some homepage text
74d7ae1f A bunch of style updates. Switching to bootstrap carousel.
01da9a40 Report error, but don’t fatally stop if pygments has error. Return original string. (+1 squashed commit) Squashed commits: [849a7af] if highlighting doesn’t work, just return original string
3fd6c1a2 Adding some embedded short codes (including code highlighting)
13b067b5 Adding support for embedded templates
f78e2cb8 Removing Twitter js
a70acd11 New Icon Font for Hugo
247db151 Adding some analytics
b82baa28 Adding chimeraarts.org to hall-of-fame
5550c414 Added append-port flag
e5aa08ff If baseurl is set then print that on the command line, else leave as default of localhost
8b84156f Example of a multilingual site.
8055838c Allowing empty files (ignored) so you can touch a new file while watching
1c60d5bf Don't shutdown hugo on an empty file.
8d80f9b3 Added batching behavior for page building.
1979f7d9 Avoid locking the files for an extended amount of time. Sublime Text doesn't like this and shows an error when modifying a file in rapid succession.
e46148f9 Fix static file change detection on Windows. Fixed windows uses different filepath separator. The filepath.ToSlash shouldn't be used, because it can cause errors in filepath suffix and prefix testing since "c:\a" isn't a prefix of "c:/a/b/c".
065928fc Adding page sorting by weight function (the default)
34ac562c Added documentation on ordering indexes, content and content within indexes
70745e8c Complete refactor of indexes, move (and rewrite) page sorting to page.go, add tests
6aa3e512 Added PageSorter and PagesByDate
c7083a5d Section in example was wrong for happiness.md
950d9f55 Testcases for multilevel structure were wrong
de670ced Fixes #141: Wrong section in multi level structure
6da23f74 Gofmt
1abc2f0b properly use non-localhost BaseUrl in server command
a1051964 Adding better contribution guidelines from the read me to the contribution page.
dd574628 Adding community section to the documentation
ceb70805 Adding selected tweets to the homepage
f09505a6 Adding example short codes to the documentation
6410965b Add go fmt to contribution guidelines
357ab956 Add Contribution Guidelines
0e04b9a0 Moving processing short codes to the page
d0ef3d43 better handling of detecting markup format
f432b187 render shortcodes prior to converting to html
a45de56d adding support for shortcodes with opening and closing tags
db29f57c Adding (source code) Highlight template helper
fa29e94e Adding Pygments helper
44d57fdc Reorganize helpers
10c7cf29 Create directories in publishdir with mode 0777.
ba5dadff Typo fix in docs.
32d9345b Fix a minor typo in types.md
b351731f quickstart docs - fix flag needs arg error
860f982c fixed trailing dir slash when using slug
e425226a Documentation updates, mostly for my bits
07978e4a configurable permalinks support
4f335f0c Updated release notes.
445b7d23 Updating docs to include ‘first’ functionality for the homepage
aedfa6a2 Version bump 0.9
ad2c0b56 Homepage now has all content available, use sorting and first to control rendering
13fa7cb7 lowercase template function first to be consistent with all other template functions
50d9046b remove initialization loop error from compile
40d05f12 Truncated; .Site.Params; First function
6017599a restored behavior of respecting config values unless set by command flags. fixed #116
ef595aed Handle schema-less urls when apply absurl
90a902c8 fixing double slash during absurlify
b69694a3 Merge branch 'master' of github.com:spf13/hugo
532e2e7b Some mobile and other fixes for docs
0b6a11c9 Merge pull request #113 from oyvindsk/master
adc559b0 minor documentation fix
ad04f6c8 Adding baseline
86233c00 Remove the hugo-nav function
1cebce12 Adding RSS test case.
b2236457 Fix Test Name
1fbcaf92 Buffers instead of pipes
226bc8f5 Updated release notes
23a5711d Fix benchmark panic
23a711a2 Hugo updated to work with latest cobra
9af47f07 Improve rendering time
f4cb8e16 Adding benchmark for transformation module.
789aa6ad Removing check for directory: static, layouts
861472be Small tweaks to Homepage and CSS
1d0d280e Addition of an indexes section to the docs. Updated most of the existing index content.
a7dae30a More work on indexes
bc7c9221 Better mobile support on docs site
90355eec Big visual overhaul of the docs. Docs now using indexes for all menu generation.
df0523ff Flipping around weight order. higher weight at the bottom. use negative to pin to top.
5003f7f7 Docs menu now powered by indexes.. converting some of the content to use this.
d20b41a2 Big index overhaul. Now supporting ordering tokens by count or alphabetically. Also made full indexes available to the Site variable.
9388f236 Adding support for linkTitles
b580a25d Better error handling when rendering error found when in watch mode In watch mode it should continue to watch for changes, in any other mode it should exit with a -1 error code so can check for success when scripting
764abd20 Update homepage
dde965a5 Migrate docs to Bootstrap 3.0
cd71eb73 Watching doesn't built site 2x on write (ignores rename events). Also ignores temporary files written by editors.
a5606b06 Adding support for ordering content in indexes by other than date (weighted indexes)
471fb1ff Adding support for date field in front matter as date (as TOML provides)
f3c816ea Adding support for more front matter types (int, float & date)
3558e3d6 Add support for weighted pages Now pages can be sorted by other than date
90090175 Adding preliminary support for weighted indexes (for ordering by other than date)
678ddef4 Adding a quick start guide to hugo docs
4d333e81 New Homepage for Hugo
4263094d Adding support for MinRead. Closed #106
be5ace15 Wordcount restored. fixed #92
e58d8fe7 fixed #95, fixed #93
f5fda804 simplified buildSite & better error handling around it
0318f7c1 Clean up server & build site logic. Fixed #94
e6ace71f server command now builds prior to serving
4993152d Permalink to include multiple directories levels
6e1268f4 Test case for permalink functionality
89563843 Adding back the hugo homepage.
9500ec1b Refactor layout selection code
197aacb6 Add support for Relative Permalinks
06da6091 Refactor Permalink to private function
6fa6f69a Change transformer order
d712d6f3 Moving transformation on a per-page level
9032a228 Better handle missing layouts
54a2790f Use io.Pipe for chaning render tasks.
689cda17 Code cleanup
19cb6c78 Move writing next to rendering
2176d2c1 Reducing scope of RenderThing*
ff8b5275 Move in memory target into target module.
80009b42 Change the order of Apply to be more Unixy
94a3184a Fixing up source code formatting.
5a66fa39 Chain transformers and test cases
eb117eb9 Move AbsURL into seperate file
f0211b84 Rename Transform to AbsURL
03d1a57f Set the name of the Nav attribute to select
5e14af95 Proper handling of 404 page return value
7468292c Fixing bug where RSS for site was rendered in wrong location
d829e050 Fixing bug where only the first index list was created.
2aaf92b5 Summary can now contain short codes when using <!--more--> to define end of summary.
be7ba0e9 server defaults to localhost unless overridden by command line flags
266f583a Restoring former snippet behavior & adding test to ensure future behavior
dcfcbac5 Enabling Nitro ('--stepAnalysis') again. Fix #58
18f2b826 Switching to the rjson library which is more friendly to human generated json.
48e1068e fixed #85
8efb90eb Updating usage documentation to new interface
3ae8dda2 Restoring build and watch functionality
aa9b9d59 minor documentation cleanup. - changed it's -> its where appropriate. - added post/ parent directory above happy/ to the organization examples
8ce4bc7a Update filesystem.go
94d7fe52 Change the interface to use commands and flags instead of just flags. Better organization of main (controller style) code.
92cff055 go fmt so code
ff2b98c9 Better error message when no source content is found.
f34ea610 Add the ability to set navbar li class to active
db50154e Support index.html indexes in content directory
4250bf8e Fixes #80 - Homepage now renders correctly
c9223cfd source: Fix failing build on windows
8df88496 Fix breaking test cases on unix platform
bffe4baf Create a TargetPath() method that provides OutFile
52e8c7a0 Section is determined by the source, not the url
784077da Fix fragments being AbsUrlified in final html
311e1022 Allow non-markdown content in content directory
5374242f More expressive --check output
c510140c Add renderer information to --check
67b2abaf Add IsRenderable to Page
d8e18349 Fix parsing edge case of frontmatter
a82efe5b Merge remote-tracking branch 'origin/parser' into mrg_praser
6b0752e8 Move AbUrlify to post content transformation
c6fe87b1 Add a transform step
c75da346 Fix alias documentation.
172ff5ea Initialize HTMLRedirectAlias before ShowPlan()
d45fb72f Add /index.html to unadorned alias paths
803a0fce Remove RenderedContent from page.
2ebfb33f Move alias logic to target module
2f10da15 Move alias rendering to target
74b55fc7 Normalize paths within hugo
998b2f73 Added safeHtml template function
6274aa0a Homepage "/" respects PublishDir
610c06e6 Introduce source.Filesystem
d4d9da9f Remove page module dependence on opening files
cb00917a Expand the ShowPlan functionality
4004687f Move to target.Filesystem
7919603f Add Translate to target
c6ad532b Add file reporting to planner
13d2c552 Adding Planner
79d9f82e Code reorg, helpers.go has been decomposed.
207d8fb7 Date rendering unit tests in pages
3ecc698f Remove hugolib.HTML and hugolib.URL types
a591a106 Include building hugo docs as part of test.
d841d522 Include building hugo docs as part of test.
ba82a203 Add support for amber files
ee5865f2 Abstract html/template dependency
0a9dc705 Use s everywhere for consistency
b268e639 Return an error (other than 0) when ./hugo fails
6c8e7edb The <!--more--> (summary divider) now works even if it is on the same line as content
4349216d Small code cleanup
0fdea0c2 Return an error with WritePublic
097b782a Removing site.Directories.
b14b61af Externalize the writing of content to a target
bc3c2290 Ensure Section is set before returning Page object.
c32f401b Revert "Return errors when rendering"
a792ec09 Cleanup formatting - go fmt ./...
4ed43e80 Fixed bug where Url specified in front matter as pretty url wouldnt render
71678a71 Adding .Summary to page variables
3ab52450 clean up logic
1bb00b8c Refactored added RenderThingOrDefault and tests
554375b2 Using new parser.
1de19926 Return any error reported by RenderHomePage
9930011e Wordpress summaries
7b1f0960 Add 404.html for gh-pages
f28a8fa0 RenderThing test cases
9d15262e Test cases for ignoreDotFile
0fabd51a Update .gitignore to ignore *.swo files
7461ed63 Fix benchmark so the buffer is read each time.
599e6672 Removing GetSection
ae711297 Skip "dot" files in layout
eb4288e3 Merge pull request #53 from hugoduncan/feature/print-error-on-invalid-index
00839567 Merge pull request #52 from rozza/StaticSync
35b35a70 Merge pull request #51 from cabello/patch-3
6f424175 Merge pull request #50 from cabello/patch-2
3d0dc1ac Merge pull request #49 from cabello/patch-1
301d2baf Print error if index value in a page is wrong type
5aa47a7b Static changes shouldn't be destructive to existing files
8415c5e6 Remove extra quotes from meta data
acd5ea0e Check .Prev and .Next pointers before using it
8058abd7 Fix broken link to Index page
eff8457a Merge pull request #46 from rawfalafel/sync_static
2dcdd673 Watch StaticDir and sync to PublishDir on change New behavior adds a special case for file changes inside the static directory to fsync PublishDir
c4bcdebc Merge pull request #44 from cactus/avoid-redirect-with-slugs
e2744d40 Merge pull request #43 from hugoduncan/feature/allow-xhtml-aliases
2542836b Merge pull request #41 from rozza/skipStatic
8f330626 Merge branch 'noahcampbell-index_reporting'
c713beba Formatting cleanup
ec821739 Removing the use of slash
8eca8f8a Detect missed index from front matter
e66ba5d2 Return errors when rendering
0a79edd4 Removing extra links on homepage
3ae8078d Adding "fork me on github" banner
8c0ab4de Complete overhaul of the docs
b76b80c5 Merge pull request #40 from VonC/clarify_uglyurls_flag
b9e835b1 avoid handling a redirect from slug to slug/
23a98ad0 Enable aliases from .xhtml paths
0f143dcf Skip Static directory if its in your content directory
9308cd6a Clarify uglyurls flag.
3c3fc45d Merge branch 'master' of github.com:spf13/hugo
480e01eb Further work on path/section stuff. Tests passing now.
7a51a8a5 Merge pull request #38 from noahcampbell/workflow_dotfile
b4bcc591 Now support for nested paths. Better section detection.
6e272394 Merge branch 'master' of github.com:spf13/hugo
ca5a94a9 Merge pull request #37 from noahcampbell/master
c661d980 Merge pull request #31 from cactus/issue-31
ec02fa4b Adding support for a default content type template default template found at layouts/_default/single.html
89685249 Adding support for recent content.
97eb9225 Ignore dotfiles in content directory
5664780c gofmt pass
2d11d1bd Test GetParam and the various incarnations of frontmatter.
31a1ade1 move "dot" in regex to avoid it being part of a range
c689d46a Merge pull request #32 from cactus/issue-32
b13afc41 fix sanitizeRegex to not strip "dots"
023567b0 fix bad tab/space due to paste
2f9b582d fix wrong renderlist feed permalink
cb39f052 Merge pull request #36 from noahcampbell/master
8c031413 Use / for template names regardless of platform.
ec1a3a8d Merge pull request #35 from noahcampbell/master
3fdcd0ba Support for non-standard formats.
0305c825 Move timezone tests to integration test.
f610d45c Add additional details to date test cases.
dd19d0cc Provide better support for various date formats.
17aafb39 Avoid error if no content.
5b3b0f95 Merge pull request #26 from noahcampbell/master
02337089 Started new release notes, added nitro step for aliases
ac26de20 Adding correct canonical link to alias pages
d5518c09 Adding support for aliases (redirects)
45ce6e2b Merge branch 'redirect' of https://github.com/rozza/hugo into rozza-redirect
bb273df4 Add support for continuous testing.
733c0207 Merge branch 'master' of github.com:spf13/hugo
2bf24877 Merge pull request #25 from noahcampbell/master
2bbecc7b Better reporting when the template is missing.
309db474 Nitro timer is encapsulated.
e26b43f6 Adding more test cases
e67db666 Adding benchmark for parsing pages using unicode.
085ce15f Adding ability to read from io.Reader
274d324c Introduce unit testing for page.go
fa55cd98 Remove unreachable code path.
0595f27e Using a composite literal to create a page.
19538a1b Support pages without folders
fc5e92cc Provide better error handling
e2a28114 Add redirect to page parameters and redirects example
4f17ad69 Merge pull request #22 from nsabine/master
7a13434d Merge pull request #21 from duncanbeevers/master
a8b3e153 Added examples to indexes.md
04a0dbbf Added .Content variable to docs
6a5e4b36 Merge pull request #20 from VonC/version
49b8ac5f Make sure hugo --version prints the version and does *nothing* else.
a870f4d9 Fixing missing trailing slash in baseUrl
d89c7ec7 Merge pull request #19 from nsabine/master
780e2f31 Populated page Site metadata.  Enables accessing Indexes from Page template.
42de9bd8 Merge pull request #15 from hhatto/update-doc
0e57fcc9 Merge branch 'master' of github.com:spf13/hugo
783f0d61 fixing badlink on homepage
6789b6c5 removing erroneous debugging output
78afe8d3 update document for content directory
c5715e98 Merge pull request #12 from imrehg/docfix
f31ec3c2 Fix example in docs that wouldn't work in practice
de9f9ae1 Fixing getting started link.
57b206ca Merge pull request #11 from noahcampbell/master
f6e590e5 Fixing link to contributor page on github
6a1a038c Shrinking the readme to just the basics to avoid dupe with doc site
6efbd93a Updating a bunch of the docs
def5f101 Including documentation on indexes
dff86cb2 Renaming indexes template to indexes.html
21a7b725 Moved static content to /static
52c089ff Added support for indexes of indexes & ordered indexes
ddad1e04 adding previous next capabilities
66610a65 Removing OSX files from repo.  Updating .gitignore to not track these files.
d36d7fba Merge pull request #8 from SebastianM/doc-json-fix
47783c1f Merge pull request #10 from noahcampbell/master
3e539c71 Adding error message when no content pages exists.
03e804ff Updating the .gitignore for windows and vim users.
c9a09418 Fixed section labels causing panic on windows. The filename path was being split using a unix specific path seperator.  This fix uses the os.PathSeperator to ensure proper evaluation regardless of platform.
4efdb909 Fix JSON syntax error in example configuration
61258858 copying static content to destination
736677a2 Using MkdirAll instead of my own logic
7ab28c56 Adding support for destination dir, split out static
92c31bbe permalink now respects pretty urls
d5f55430 create content at any level of nesting
e08d14ad fixing issue with some urls missing '/'
b7bbc28c fixing bug with server not finding right path
c560a753 adding more verbose output to server functionality
b2385f06 create missing directories recurisvely
dd9a7e64 Fixing headers in readme
16b1f284 Improving installation instructions
f2e4c9d7 Merge branch 'master' of github.com:spf13/hugo
3ad3f2f0 Merge branch 'doc-fix' of https://github.com/brandonblack/hugo into brandonblack-doc-fix
580bb9bb minor: adding some more instructions for building from source
2dde27f0 Update README.md
627cf265 Adding proper command line option parsing
8fae5f0d Default is now pretty urls (without .html) Adding --uglyurls option to retain previous behavior
dcd8ff71 Adding better source build instructions
f1990049 GO -> Go
8d50dd91 fixing typo in config readme
c24112ce Render shortcodes before index and section rss feeds
649560fc proper BaseUrl handling (if has trailing slash or not)
7a521ad1 Fixing some RSS issues
b7b6f054 Accidentally left in debugging code
75a2e6d4 Now support for config files as yaml, json or toml
d9b5f9cd fixing incorrect import path
f857f4ca adding helper to create absolute url
d4caa8ee Adding total time to generated stats.
51e30985 Writing relative links to absolute so they work in feeds
e76c3feb Fix bug with JSON front matter parsing.
a6914e9c Better error handling for parsing front matter
8403dba3 Merge pull request #3 from tychoish/rst-fix
4951ff99 rst: fixing rst output processing
aee48725 Adding version number to command line options
d2a6267a Adding support for TOML, updating documentation
3c80cd32 YAML support similar to jekyll (start and end with '---')
94e57774 Merge pull request #2 from tychoish/yaml-rst-support
d0ff3126 minor: correcting example
f851c416 fix: changing terminal yaml line, generalizing forematter splitting
b024454e fixes: returning json parsing, error messages, yaml header offsets
67f4da30 revert: adding json support
6c42d3d4 fix: parsing of yaml forematter
431fa0e2 changing to suport yaml rather than json and adding optional restructuredtext support
a7f5f97b sanity: move from json to yaml
4d2fbfc7 Merge pull request #1 from tychoish/add-gitignore
8aff6cc3 gitignore: sanity
f8755771 rendering shortcodes earlier for better performance
77d142ba fixing typos
1aa125cf fixing two typos
0d63bf00 better install instructions and fixing usage typo
3ec920ac adding better install directions
d1162555 updating readme
6e16449e adding hugo
50a1d6f3 Initial commit

git-subtree-dir: docs
git-subtree-split: b0470688f14bc964f4928a812f4c3dbd6123e2e7
This commit is contained in:
Bjørn Erik Pedersen 2017-07-18 10:24:26 +02:00
parent 37c69054e2
commit 6dbde8d731
580 changed files with 20561 additions and 16233 deletions

3
.gitmodules vendored Normal file
View file

@ -0,0 +1,3 @@
[submodule "themes/gohugoioTheme"]
path = themes/gohugoioTheme
url = https://github.com/gohugoio/gohugoioTheme.git

View file

@ -1,20 +1,3 @@
---
aliases:
- /doc/license/
- /license/
- /meta/license/
lastmod: 2015-11-25
date: 2013-07-01
menu:
main:
parent: about
title: License
weight: 50
---
Hugo v0.15 and later are released under the Apache 2.0 license.
Earlier releases were under the Simple Public License.
Apache License
==============

View file

@ -1,6 +1,13 @@
+++
weight = 5
[menu]
[menu.main]
parent = "x"
+++
---
linktitle: ""
description: ""
godocref: ""
publishdate: ""
lastmod: ""
categories: []
tags: []
weight: 00
slug: ""
aliases: []
toc: false
---

17
archetypes/functions.md Normal file
View file

@ -0,0 +1,17 @@
---
linktitle: ""
description: ""
godocref: ""
publishdate: ""
lastmod: ""
categories: [functions]
tags: []
ns: ""
signature: []
workson: []
hugoversion: ""
aliases: []
relatedfuncs: []
toc: false
deprecated: false
---

View file

@ -1,14 +1,13 @@
---
date: 2013-07-01T07:32:00Z
description: ""
lastmod: ""
license: ""
licenseLink: ""
sitelink: http://spf13.com/
sourceLink: https://github.com/spf13/spf13.com
tags:
- personal
- blog
thumbnail: /img/spf13-tn.jpg
title: spf13.com
---
sitelink: ""
sourcelink: ""
categories: [showcase]
tags: []
image: ""
toc: false
notesforauthors: "Go to gohugo.io/contribute/documentation for more info"
---

16
archetypes/tutorials.md Normal file
View file

@ -0,0 +1,16 @@
---
linktitle: ""
description: ""
godocref: ""
publishdate: ""
lastmod: ""
categories: [tutorials]
tags: []
author: ""
authorurl: ""
originalurl: ""
draft: false
aliases: []
notesforauthors: "Go to gohugo.io/contribute/documentation for more info."
---

View file

@ -1,13 +1,21 @@
baseURL = "https://gohugo.io/"
paginate = 100
defaultContentLanguage = "en"
enableEmoji = true
# Set the unicode character used for the "return" link in page footnotes.
footnotereturnlinkcontents = "↩"
languageCode = "en-us"
metaDataFormat = "yaml"
title = "Hugo: A Fast and Flexible Website Generator"
baseurl = "http://gohugo.io/"
MetaDataFormat = "yaml"
theme = "gohugoioTheme"
googleAnalytics = "UA-7131036-4"
pluralizeListTitles = false
# We do redirects via Netlify's _redirects file, generated by Hugo (see "outputs" below).
disableAliases = true
[blackfriday]
plainIDAnchors = true
[outputs]
home = [ "HTML", "RSS", "REDIR" ]
@ -23,113 +31,191 @@ baseName = "_redirects"
isPlainText = true
notAlternative = true
[social]
twitter = "GoHugoIO"
#CUSTOM PARAMS
[params]
description = "Documentation of Hugo, a fast and flexible static site generator built with love by spf13, bep and friends in Go"
author = "Steve Francia (spf13) and friends"
release = "0.24.1"
description = "The worlds fastest framework for building websites"
## Used for views in rendered HTML (i.e., rather than using the .Hugo variable)
release = "Hugo-Next"
## Setting this to true will add a "noindex" to *EVERY* page on the site
removefromexternalsearch = false
## Gh repo for site footer (include trailing slash)
ghrepo = "https://github.com/gohugoio/hugoDocs/"
### Edit content repo (set to automatically enter "edit" mode; this is good for "improve this page" links)
ghdocsrepo = "https://github.com/gohugoio/hugoDocs/tree/master/docs"
## Gitter URL
gitter = "https://gitter.im/spf13/hugo"
## Discuss Forum URL
forum = "https://discourse.gohugo.io/"
## Google Tag Manager
gtmid = ""
# First one is picked as the Twitter card image if not set on page.
images = ["images/gohugoio-card.png"]
flex_box_interior_classes = "flex-auto w-100 w-40-l mr3 mb3 bg-white ba b--moon-gray nested-copy-line-height"
#sidebar_direction = "sidebar_left"
# MARKDOWN
## Configuration for BlackFriday markdown parser: https://github.com/russross/blackfriday
[blackfriday]
plainIDAnchors = true
hrefTargetBlank = true
angledQuotes = false
latexDashes = true
## As of v0.20, all content files include a default "categories" value that's the same as the section. This was a cheap future-proofing method and should/could be changed accordingly.
[taxonomies]
tag = "tags"
group = "groups"
category = "categories"
[[menu.main]]
name = "Download Hugo"
pre = "<i class='fa fa-download'></i>"
url = "https://github.com/gohugoio/hugo/releases"
weight = -200
[[menu.main]]
name = "Site Showcase"
pre = "<i class='fa fa-cubes'></i>"
url = "/showcase/"
weight = -180
[[menu.main]]
name = "Theme Showcase"
pre = "<i class='fa fa-puzzle-piece'></i>"
url = "http://themes.gohugo.io"
weight = -170
[[menu.main]]
name = "Press & Articles"
pre = "<i class='fa fa-bullhorn'></i>"
url = "/community/press/"
weight = -160
[[menu.main]]
name = "Discuss Hugo"
pre = "<i class='fa fa-comments'></i>"
url = "https://discourse.gohugo.io/"
weight = -150
[[menu.main]]
name = "About Hugo"
identifier = "about"
pre = "<i class='fa fa-heart'></i>"
weight = -110
[[menu.main]]
name = "Release Notes"
url = "/release-notes/"
pre = "<i class='fa fa-newspaper-o'></i>"
weight = -111
[[menu.main]]
name = "Getting Started"
identifier = "getting started"
pre = "<i class='fa fa-road'></i>"
weight = -100
[[menu.main]]
name = "Content"
identifier = "content"
pre = "<i class='fa fa-file-text'></i>"
weight = -90
[[menu.main]]
# High level items
[[menu.docs]]
name = "About Hugo"
weight = 1
identifier = "about"
url = "/about/"
[[menu.docs]]
name = "Getting Started"
weight = 5
identifier = "getting-started"
url = "/getting-started/"
[[menu.docs]]
name = "Themes"
weight = 15
identifier = "themes"
post = "break"
url = "/themes/"
# Core Menus
[[menu.docs]]
name = "Content Management"
weight = 20
identifier = "content-management"
post = "expanded"
url = "/content-management/"
[[menu.docs]]
name = "Templates"
weight = 25
identifier = "templates"
url = "/templates/"
[[menu.docs]]
name = "Functions"
weight = 30
identifier = "functions"
url = "/functions/"
[[menu.docs]]
name = "Variables"
weight = 35
identifier = "variables"
url = "/variables/"
[[menu.docs]]
name = "CLI"
weight = 40
post = "break"
identifier = "commands"
url = "/commands/"
# LOW LEVEL ITEMS
[[menu.docs]]
name = "Troubleshooting"
weight = 60
identifier = "troubleshooting"
url = "/troubleshooting/"
[[menu.docs]]
name = "Tools"
weight = 70
identifier = "tools"
url = "/tools/"
[[menu.docs]]
name = "Hosting & Deployment"
weight = 80
identifier = "hosting-and-deployment"
url = "/hosting-and-deployment/"
[[menu.docs]]
name = "Contribute"
weight = 100
post = "break"
identifier = "contribute"
url = "/contribute/"
#[[menu.docs]]
# name = "Tags"
# weight = 120
# identifier = "tags"
# url = "/tags/"
# [[menu.docs]]
# name = "Categories"
# weight = 140
# identifier = "categories"
# url = "/categories/"
######## QUICKLINKS
[[menu.quicklinks]]
name = "Fundamentals"
weight = 1
identifier = "fundamentals"
url = "/tags/fundamentals/"
######## GLOBAL ITEMS TO BE SHARED WITH THE HUGO SITES
[[menu.global]]
name = "News"
weight = 1
identifier = "news"
url = "/news/"
[[menu.global]]
name = "Docs"
weight = 5
identifier = "docs"
url = "/documentation/"
[[menu.global]]
name = "Themes"
weight = 10
identifier = "themes"
pre = "<i class='fa fa-desktop'></i>"
weight = -85
[[menu.main]]
parent = "themes"
name = "Theme Showcase"
url = "http://themes.gohugo.io"
weight = -170
[[menu.main]]
name = "Templates"
identifier = "layout"
pre = "<i class='fa fa-columns'></i>"
weight = -80
[[menu.main]]
name = "Taxonomies"
identifier = "taxonomy"
pre = "<i class='fa fa-tags'></i>"
weight = -70
[[menu.main]]
name = "Extras"
identifier = "extras"
pre = "<i class='fa fa-gift'></i>"
weight = -60
[[menu.main]]
url = "https://themes.gohugo.io/"
# Anything with a weight > 100 gets an external icon
[[menu.global]]
name = "Community"
identifier = "community"
pre = "<i class='fa fa-group'></i>"
weight = -50
[[menu.main]]
parent = "community"
name = "Discussion Forum"
url = "https://discourse.gohugo.io/"
weight = 150
[[menu.main]]
name = "Tutorials"
identifier = "tutorials"
pre = "<i class='fa fa-book'></i>"
weight = -40
[[menu.main]]
name = "Troubleshooting"
identifier = "troubleshooting"
pre = "<i class='fa fa-wrench'></i>"
weight = -30
[[menu.main]]
name = "Tools"
url = "/tools/"
pre = "<i class='fa fa-cogs'></i>"
weight = -25
[[menu.main]]
name = "Hugo Cmd Reference"
identifier = "commands"
pre = "<i class='fa fa-space-shuttle'></i>"
weight = -20
url = "/commands/"
icon = true
identifier = "community"
post = "external"
url = "https://discourse.gohugo.io/"
[[menu.global]]
name = "GitHub"
weight = 200
identifier = "github"
post = "external"
url = "https://github.com/gohugoio/hugo"

49
content/_index.md Normal file
View file

@ -0,0 +1,49 @@
---
title: "Hugo: A Fast and Flexible Website Generator"
date: 2017-03-02T12:00:00-05:00
features:
- heading: Blistering Speed
image_path: /images/icon-fast.svg
tagline: What's modern about waiting for your site to build?
copy: Hugo is the fastest tool of its kind. At <1 ms per page, the average site builds in less than a second.
- heading: Robust Content Management
image_path: /images/icon-content-management.svg
tagline: Flexibility rules. Hugo is a content strategist's dream.
copy: Hugo supports unlimited content types, taxonomies, menus, dynamic API-driven content, and more, all without plugins.
- heading: Shortcodes
image_path: /images/icon-shortcodes.svg
tagline: Hugo's shortcodes are Markdown's hidden superpower.
copy: We love the beautiful simplicity of markdowns syntax, but there are times when we want more flexibility. Hugo shortcodes allow for both beauty and flexibility.
- heading: Built-in Templates
image_path: /images/icon-built-in-templates.svg
tagline: Hugo has common patterns to get your work done quickly.
copy: Hugo ships with pre-made templates to make quick work of SEO, commenting, analytics and other functions. One line of code, and you're done.
- heading: Multilingual and i18n
image_path: /images/icon-multilingual2.svg
tagline: Polyglot baked in.
copy: Hugo provides full i18n support for multi-language sites with the same straightforward development experience Hugo users love in single-language sites.
- heading: Custom Outputs
image_path: /images/icon-custom-outputs.svg
tagline: HTML not Enough?
copy: Hugo allows you to output your content in multiple formats, including JSON or AMP, and makes it easy to create your own.
sections:
- heading: "100s of Themes"
cta: Check out the Hugo's themes.
link: http://themes.gohugo.io/
color_classes: bg-accent-color white
image: /images/homepage-screenshot-hugo-themes.jpg
copy: "Hugo provides a robust theming system that is easy to implement but capable of producing even the most complicated websites."
- heading: "Capable Templating"
cta: Get Started.
link: templates/
color_classes: bg-primary-color-light black
image: /images/home-page-templating-example.png
copy: "Hugo's Go-based templating provides just the right amount of logic to build anything from the simple to complex. If you prefer Jade/Pug-like syntax, you can also use Amber, Ace, or any combination of the three."
---
Hugo is one of the most popular open-source static site generators. With its amazing speed and flexibility, Hugo makes building websites fun again.

20
content/about/_index.md Normal file
View file

@ -0,0 +1,20 @@
---
title: About Hugo
linktitle: Overview
description: Hugo's features, roadmap, license, and motivation.
date: 2017-02-01
publishdate: 2017-02-01
lastmod: 2017-02-01
categories: []
#tags: []
menu:
docs:
parent: "about"
weight: 1
weight: 1
draft: false
aliases: [/about-hugo/,/docs/]
toc: false
---
Hugo is not your average static site generator.

43
content/about/benefits.md Normal file
View file

@ -0,0 +1,43 @@
---
title: The Benefits of Static Site Generators
linktitle: The Benefits of Static
description: Improved performance, security and ease of use are just a few of the reasons static site generators are so appealing.
date: 2017-02-01
publishdate: 2017-02-01
lastmod: 2017-02-01
#tags: [ssg,static,performance,security]
menu:
docs:
parent: "about"
weight: 30
weight: 30
sections_weight: 30
draft: false
aliases: []
toc: false
---
The purpose of website generators is to render content into HTML files. Most are "dynamic site generators." That means the HTTP server---i.e., the program that sends files to the browser to be viewed---runs the generator to create a new HTML file every time an end user requests a page.
Over time, dynamic site generators were programmed to cache their HTML files to prevent unnecessary delays in delivering pages to end users. A cached page is a static version of a web page.
Hugo takes caching a step further and all HTML files are rendered on your computer. You can review the files locally before copying them to the computer hosting the HTTP server. Since the HTML files aren't generated dynamically, we say that Hugo is a *static site generator*.
This has many benefits. The most noticeable is performance. HTTP servers are *very* good at sending files---so good, in fact, that you can effectively serve the same number of pages with a fraction of the memory and CPU needed for a dynamic site.
## More on Static Site Generators
* ["An Introduction to Static Site Generators", David Walsh][]
* ["Hugo vs. Wordpress page load speed comparison: Hugo leaves WordPress in its dust", GettingThingsTech][hugovwordpress]
* ["Static Site Generators", O-Reilly][]
* [StaticGen: Top Open-Source Static Site Generators (GitHub Stars)][]
* ["Top 10 Static Website Generators", Netlify blog][]
* ["The Resurgence of Static", dotCMS][dotcms]
["An Introduction to Static Site Generators", David Walsh]: https://davidwalsh.name/introduction-static-site-generators
["Static Site Generators", O-Reilly]: /documents/oreilly-static-site-generators.pdf
["Top 10 Static Website Generators", Netlify blog]: https://www.netlify.com/blog/2016/05/02/top-ten-static-website-generators/
[hugovwordpress]: https://gettingthingstech.com/hugo-vs.-wordpress-page-load-speed-comparison-hugo-leaves-wordpress-in-its-dust/
[StaticGen: Top Open-Source Static Site Generators (GitHub Stars)]: https://www.staticgen.com/
[dotcms]: https://dotcms.com/blog/post/the-resurgence-of-static

90
content/about/features.md Normal file
View file

@ -0,0 +1,90 @@
---
title: Hugo Features
linktitle: Hugo Features
description: Hugo boasts blistering speed, robust content management, and a powerful templating language making it a great fit for all kinds of static websites.
date: 2017-02-01
publishdate: 2017-02-01
lastmod: 2017-02-01
menu:
docs:
parent: "about"
weight: 20
weight: 20
sections_weight: 20
draft: false
aliases: [/about/features]
toc: true
---
## General
* [Extremely fast][] build times (&lt; 1 ms per page)
* Completely cross platform, with [easy installation][install] on macOS, Linux, Windows, and more
* Renders changes on the fly with [LiveReload][] as you develop
* [Powerful theming][]
* [Host your site anywhere][hostanywhere]
## Organization
* Straightforward [organization for your projects][], including website sections
* Customizable [URLs][]
* Support for configurable [taxonomies][], including categories and tags
* [Sort content][] as you desire through powerful template [functions][]
* Automatic [table of contents][] generation
* [Dynamic menu][] creation
* [Pretty URLs][] support
* [Permalink][] pattern support
* Redirects via [aliases][]
## Content
* Native Markdown and Emacs Org-Mode support, as well as other languages via *external helpers* (see [supported formats][])
* TOML, YAML, and JSON metadata support in [front matter][]
* Customizable [homepage][]
* Multiple [content types][]
* Automatic and user defined [content summaries][]
* [Shortcodes][] to enable rich content inside of Markdown
* ["Minutes to Read"][pagevars] functionality
* ["Wordcount"][pagevars] functionality
## Additional Features
* Integrated [Disqus][] comment support
* Integrated [Google Analytics][] support
* Automatic [RSS][] creation
* Support for [Go][], [Amber], and [Ace][] HTML templates
* [Syntax highlighting][] powered by [Pygments][]
See what's coming next in the [Hugo roadmap][].
[Ace]: /templates/alternatives/
[aliases]: /content-management/urls/#aliases
[Amber]: https://github.com/eknkc/amber
[content summaries]: /content-management/summaries/
[content types]: /content-management/types/
[Disqus]: https://disqus.com/
[Dynamic menu]: /templates/menus/
[Extremely fast]: https://github.com/bep/hugo-benchmark
[front matter]: /content-management/front-matter/
[functions]: /functions/
[Go]: http://golang.org/pkg/html/template/
[Google Analytics]: https://google-analytics.com/
[homepage]: /templates/homepage/
[hostanywhere]: /hosting-and-deployment/
[Hugo roadmap]: /about/roadmap
[install]: /getting-started/installing/
[LiveReload]: /getting-started/usage/
[organization for your projects]: /getting-started/directory-structure/
[pagevars]: /variables/page/
[Permalink]: /content-management/urls/#permalinks
[Powerful theming]: /themes/
[Pretty URLs]: /content-management/urls/
[Pygments]: http://pygments.org/
[RSS]: /templates/rss/
[Shortcodes]: /content-management/shortcodes/
[sort content]: /templates/
[supported formats]: /content-management/formats/
[Syntax highlighting]: /tools/syntax-highlighting/
[table of contents]: /content-management/toc/
[taxonomies]: /content-management/taxonomies/
[URLs]: /content-management/urls/

167
content/about/license.md Normal file
View file

@ -0,0 +1,167 @@
---
title: Apache License
linktitle: License
description: Hugo v0.15 and later are released under the Apache 2.0 license.
date: 2016-02-01
publishdate: 2016-02-01
lastmod: 2016-03-02
categories: ["about hugo"]
#tags: ["License","apache"]
menu:
docs:
parent: "about"
weight: 60
weight: 60
sections_weight: 60
aliases: [/meta/license]
toc: true
---
{{% note %}}
Hugo v0.15 and later are released under the Apache 2.0 license.
Earlier versions of Hugo were released under the [Simple Public License](https://opensource.org/licenses/Simple-2.0).
{{% /note %}}
_Version 2.0, January 2004_ <br>
<http://www.apache.org/licenses/LICENSE-2.0>
*Terms and Conditions for use, reproduction, and distribution*
## 1. Definitions
“License” shall mean the terms and conditions for use, reproduction, and
distribution as defined by Sections 1 through 9 of this document.
“Licensor” shall mean the copyright owner or entity authorized by the copyright
owner that is granting the License.
“Legal Entity” shall mean the union of the acting entity and all other entities
that control, are controlled by, or are under common control with that entity.
For the purposes of this definition, “control” means **(i)** the power, direct or
indirect, to cause the direction or management of such entity, whether by
contract or otherwise, or **(ii)** ownership of fifty percent (50%) or more of the
outstanding shares, or **(iii)** beneficial ownership of such entity.
“You” (or “Your”) shall mean an individual or Legal Entity exercising
permissions granted by this License.
“Source” form shall mean the preferred form for making modifications, including
but not limited to software source code, documentation source, and configuration
files.
“Object” form shall mean any form resulting from mechanical transformation or
translation of a Source form, including but not limited to compiled object code,
generated documentation, and conversions to other media types.
“Work” shall mean the work of authorship, whether in Source or Object form, made
available under the License, as indicated by a copyright notice that is included
in or attached to the work (an example is provided in the Appendix below).
“Derivative Works” shall mean any work, whether in Source or Object form, that
is based on (or derived from) the Work and for which the editorial revisions,
annotations, elaborations, or other modifications represent, as a whole, an
original work of authorship. For the purposes of this License, Derivative Works
shall not include works that remain separable from, or merely link (or bind by
name) to the interfaces of, the Work and Derivative Works thereof.
“Contribution” shall mean any work of authorship, including the original version
of the Work and any modifications or additions to that Work or Derivative Works
thereof, that is intentionally submitted to Licensor for inclusion in the Work
by the copyright owner or by an individual or Legal Entity authorized to submit
on behalf of the copyright owner. For the purposes of this definition,
“submitted” means any form of electronic, verbal, or written communication sent
to the Licensor or its representatives, including but not limited to
communication on electronic mailing lists, source code control systems, and
issue tracking systems that are managed by, or on behalf of, the Licensor for
the purpose of discussing and improving the Work, but excluding communication
that is conspicuously marked or otherwise designated in writing by the copyright
owner as “Not a Contribution.”
“Contributor” shall mean Licensor and any individual or Legal Entity on behalf
of whom a Contribution has been received by Licensor and subsequently
incorporated within the Work.
## 2. Grant of Copyright License
Subject to the terms and conditions of this License, each Contributor hereby
grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free,
irrevocable copyright license to reproduce, prepare Derivative Works of,
publicly display, publicly perform, sublicense, and distribute the Work and such
Derivative Works in Source or Object form.
## 3. Grant of Patent License
Subject to the terms and conditions of this License, each Contributor hereby
grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free,
irrevocable (except as stated in this section) patent license to make, have
made, use, offer to sell, sell, import, and otherwise transfer the Work, where
such license applies only to those patent claims licensable by such Contributor
that are necessarily infringed by their Contribution(s) alone or by combination
of their Contribution(s) with the Work to which such Contribution(s) was
submitted. If You institute patent litigation against any entity (including a
cross-claim or counterclaim in a lawsuit) alleging that the Work or a
Contribution incorporated within the Work constitutes direct or contributory
patent infringement, then any patent licenses granted to You under this License
for that Work shall terminate as of the date such litigation is filed.
## 4. Redistribution
You may reproduce and distribute copies of the Work or Derivative Works thereof
in any medium, with or without modifications, and in Source or Object form,
provided that You meet the following conditions:
* **(a)** You must give any other recipients of the Work or Derivative Works a copy of
this License; and
* **(b)** You must cause any modified files to carry prominent notices stating that You
changed the files; and
* **\(c)** You must retain, in the Source form of any Derivative Works that You distribute,
all copyright, patent, trademark, and attribution notices from the Source form
of the Work, excluding those notices that do not pertain to any part of the
Derivative Works; and
* **(d)** If the Work includes a “NOTICE” text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License.
You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License.
## 5. Submission of Contributions
Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions.
## 6. Trademarks
This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file.
## 7. Disclaimer of Warranty
Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an “AS IS” BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License.
## 8. Limitation of Liability
In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages.
## 9. Accepting Warranty or Additional Liability
While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability.
_END OF TERMS AND CONDITIONS_
## APPENDIX: How to apply the Apache License to your work
To apply the Apache License to your work, attach the following boilerplate notice, with the fields enclosed by brackets `[]` replaced with your own identifying information. (Don't include the brackets!) The text should be enclosed in the appropriate comment syntax for the file format. We also recommend that a file or class name and description of purpose be included on the same “printed page” as the copyright notice for easier identification within third-party archives.
{{% code file="apache-notice.txt" download="apache-notice.txt" %}}
```
Copyright [yyyy] [name of copyright owner]
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
```
{{% /code %}}

51
content/about/roadmap.md Normal file
View file

@ -0,0 +1,51 @@
---
title: Roadmap
linktitle: Roadmap
description: Take a look at what's in the pipeline for future versions of the Hugo project.
date: 2017-02-01
publishdate: 2017-02-01
lastmod: 2017-02-01
categories: [about hugo]
#tags: [about,contribute,roadmap]
menu:
docs:
parent: "about"
weight: 50
weight: 50
sections_weight: 50
draft: false
aliases: [/meta/roadmap]
toc: false
---
To track Hugo's progress, see our [GitHub Milestones][milestones].
In no particular order, here are some other features currently being worked on:
* Even easier deployment to S3, SSH, GitHub, rsync. Give the [hosting and deployment][] section a shot.
* Import from other website systems. There are already [existing migration tools][migrate], but they dont cover all major platforms.
* An interactive web-based editor (See the [related forum thread][])
* Additional [themes][], which are always ongoing and [contributions are welcome][themescontrib]!
* Dynamic image resizing via shortcodes ({{< gh 1014 >}})
* Native support for additional content formats (AsciiDoc {{< gh 1435>}}, reST {{< gh 1436 >}})
* And, last but not least, [***your*** best ideas!][]
## Contributions Welcome
Feel free to [contribute to Hugo's development][devcontribute], [improve Hugo's documentation][doccontribute], or [open a new issue][newissue] if you have an idea for a new feature.
[#98]: https://github.com/gohugoio/hugo/issues/98
[#1014]: https://github.com/gohugoio/hugo/issues/1014
[#1435]: https://github.com/gohugoio/hugo/issues/1435
[#1436]: https://github.com/gohugoio/hugo/issues/1436
[devcontribute]: /contribute/development/
[doccontribute]: /contribute/documentation/
[hosting and deployment]: /hosting-and-deployment/
[migrate]: /tools/migrations/
[milestones]: https://github.com/gohugoio/hugo/milestone/14
[newissue]: https://github.com/gohugoio/hugo/issues/
[related forum thread]: https://disourse.gohugo.io/t/web-based-editor/155
[themes]: /themes/
[themescontrib]: /contribute/themes/
[tutorials]: /tutorials
[***your*** best ideas!]: /contribute/

View file

@ -0,0 +1,69 @@
---
title: What is Hugo
linktitle: What is Hugo
description: Hugo is a fast and modern static site generator written in Go, and designed to make website creation fun again.
date: 2017-02-01
publishdate: 2017-02-01
lastmod: 2017-02-01
layout: single
menu:
main:
parent: "about"
weight: 10
weight: 10
sections_weight: 10
draft: false
aliases: [/overview/introduction/,/about/why-i-built-hugo/]
toc: true
---
Hugo is a general-purpose website framework. Technically speaking, Hugo is a [static site generator][]. Unlike systems that dynamically build a page with each visitor request, Hugo builds pages when you create or update your content. Since websites are viewed far more often than they are edited, Hugo is designed to provide an optimal viewing experience for your website's end users and an ideal writing experience for website authors.
Websites built with Hugo are extremely fast and secure. Hugo sites can be hosted anywhere, including [Netlify][], [Heroku][], [GoDaddy][], [DreamHost][], [GitHub Pages][], [Surge][], [Aerobatic][], [Firebase][], [Google Cloud Storage][], [Amazon S3][], [Rackspace][], [Azure][], and [CloudFront][] and work well with CDNs. Hugo sites run without the need for a database or dependencies on expensive runtimes like Ruby, Python, or PHP.
We think of Hugo as the ideal website creation tool with nearly instant build times, able to rebuild whenever a change is made.
## How Fast is Hugo?
{{< youtube "CdiDYZ51a2o" >}}
## What Does Hugo Do?
In technical terms, Hugo takes a source directory of files and templates and uses these as input to create a complete website.
## Who Should Use Hugo?
Hugo is for people that prefer writing in a text editor over a browser.
Hugo is for people who want to hand code their own website without worrying about setting up complicated runtimes, dependencies and databases.
Hugo is for people building a blog, a company site, a portfolio site, documentation, a single landing page, or a website with thousands of pages.
[@spf13]: https://twitter.com/@spf13
[Aerobatic]: https://www.aerobatic.com/
[Amazon S3]: http://aws.amazon.com/s3/
[Azure]: https://blogs.msdn.microsoft.com/acoat/2016/01/28/publish-a-static-web-site-using-azure-web-apps/
[CloudFront]: http://aws.amazon.com/cloudfront/ "Amazon CloudFront"
[contributing to it]: https://github.com/gohugoio/hugo
[DreamHost]: http://www.dreamhost.com/
[Firebase]: https://firebase.google.com/docs/hosting/ "Firebase static hosting"
[GitHub Pages]: https://pages.github.com/
[GitLab]: https://about.gitlab.com
[Go language]: https://golang.org/
[GoDaddy]: https://www.godaddy.com/ "Godaddy.com Hosting"
[Google Cloud Storage]: http://cloud.google.com/storage/
[Heroku]: https://www.heroku.com/
[Jekyll]: http://jekyllrb.com/
[Jekyll]: https://jekyllrb.com/
[Middleman]: https://middlemanapp.com/
[Middleman]: https://middlemanapp.com/
[Nanoc]: http://nanoc.ws/
[Nanoc]: https://nanoc.ws/
[Netlify]: https://netlify.com
[rackspace]: https://www.rackspace.com/cloud/files
[static site generator]: /about/benefits/
[Rackspace]: https://www.rackspace.com/cloud/files
[static site generator]: /about/benefits/
[Surge]: https://surge.sh

View file

@ -0,0 +1,22 @@
---
title: Command Line Reference
linktitle: CLI Overview
description: Comprehensive list of Hugo templating functions, including basic and advanced usage examples.
date: 2017-02-01
publishdate: 2017-02-01
lastmod: 2017-02-01
categories: [commands]
#tags: [cli,command line]
menu:
docs:
parent: "commands"
weight: 1
weight: 01 #rem
draft: false
aliases: [/cli/]
---
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

View file

@ -1,5 +1,5 @@
---
date: 2017-06-29T08:42:09+02:00
date: 2017-07-16T23:23:14+02:00
title: "hugo"
slug: hugo
url: /commands/hugo/
@ -74,7 +74,7 @@ hugo [flags]
* [hugo list](/commands/hugo_list/) - Listing out various types of content
* [hugo new](/commands/hugo_new/) - Create new content for your site
* [hugo server](/commands/hugo_server/) - A high performance webserver
* [hugo undraft](/commands/hugo_undraft/) - Undraft changes the content's draft status from 'True' to 'False'
* [hugo undraft](/commands/hugo_undraft/) - Undraft resets the content's draft status
* [hugo version](/commands/hugo_version/) - Print the version number of Hugo
###### Auto generated by spf13/cobra on 29-Jun-2017
###### Auto generated by spf13/cobra on 16-Jul-2017

View file

@ -1,5 +1,5 @@
---
date: 2017-06-29T08:42:09+02:00
date: 2017-07-16T23:23:14+02:00
title: "hugo benchmark"
slug: hugo_benchmark
url: /commands/hugo_benchmark/
@ -69,4 +69,4 @@ hugo benchmark [flags]
### SEE ALSO
* [hugo](/commands/hugo/) - hugo builds your site
###### Auto generated by spf13/cobra on 29-Jun-2017
###### Auto generated by spf13/cobra on 16-Jul-2017

View file

@ -1,5 +1,5 @@
---
date: 2017-06-29T08:42:09+02:00
date: 2017-07-16T23:23:14+02:00
title: "hugo check"
slug: hugo_check
url: /commands/hugo_check/
@ -34,4 +34,4 @@ Contains some verification checks
* [hugo](/commands/hugo/) - hugo builds your site
* [hugo check ulimit](/commands/hugo_check_ulimit/) - Check system ulimit settings
###### Auto generated by spf13/cobra on 29-Jun-2017
###### Auto generated by spf13/cobra on 16-Jul-2017

View file

@ -1,5 +1,5 @@
---
date: 2017-06-29T08:42:09+02:00
date: 2017-07-16T23:23:14+02:00
title: "hugo check ulimit"
slug: hugo_check_ulimit
url: /commands/hugo_check_ulimit/
@ -38,4 +38,4 @@ hugo check ulimit [flags]
### SEE ALSO
* [hugo check](/commands/hugo_check/) - Contains some verification checks
###### Auto generated by spf13/cobra on 29-Jun-2017
###### Auto generated by spf13/cobra on 16-Jul-2017

View file

@ -1,5 +1,5 @@
---
date: 2017-06-29T08:42:09+02:00
date: 2017-07-16T23:23:14+02:00
title: "hugo config"
slug: hugo_config
url: /commands/hugo_config/
@ -37,4 +37,4 @@ hugo config [flags]
### SEE ALSO
* [hugo](/commands/hugo/) - hugo builds your site
###### Auto generated by spf13/cobra on 29-Jun-2017
###### Auto generated by spf13/cobra on 16-Jul-2017

View file

@ -1,5 +1,5 @@
---
date: 2017-06-29T08:42:09+02:00
date: 2017-07-16T23:23:14+02:00
title: "hugo convert"
slug: hugo_convert
url: /commands/hugo_convert/
@ -41,4 +41,4 @@ See convert's subcommands toJSON, toTOML and toYAML for more information.
* [hugo convert toTOML](/commands/hugo_convert_totoml/) - Convert front matter to TOML
* [hugo convert toYAML](/commands/hugo_convert_toyaml/) - Convert front matter to YAML
###### Auto generated by spf13/cobra on 29-Jun-2017
###### Auto generated by spf13/cobra on 16-Jul-2017

View file

@ -1,5 +1,5 @@
---
date: 2017-06-29T08:42:09+02:00
date: 2017-07-16T23:23:14+02:00
title: "hugo convert toJSON"
slug: hugo_convert_toJSON
url: /commands/hugo_convert_tojson/
@ -41,4 +41,4 @@ hugo convert toJSON [flags]
### SEE ALSO
* [hugo convert](/commands/hugo_convert/) - Convert your content to different formats
###### Auto generated by spf13/cobra on 29-Jun-2017
###### Auto generated by spf13/cobra on 16-Jul-2017

View file

@ -1,5 +1,5 @@
---
date: 2017-06-29T08:42:09+02:00
date: 2017-07-16T23:23:14+02:00
title: "hugo convert toTOML"
slug: hugo_convert_toTOML
url: /commands/hugo_convert_totoml/
@ -41,4 +41,4 @@ hugo convert toTOML [flags]
### SEE ALSO
* [hugo convert](/commands/hugo_convert/) - Convert your content to different formats
###### Auto generated by spf13/cobra on 29-Jun-2017
###### Auto generated by spf13/cobra on 16-Jul-2017

View file

@ -1,5 +1,5 @@
---
date: 2017-06-29T08:42:09+02:00
date: 2017-07-16T23:23:14+02:00
title: "hugo convert toYAML"
slug: hugo_convert_toYAML
url: /commands/hugo_convert_toyaml/
@ -41,4 +41,4 @@ hugo convert toYAML [flags]
### SEE ALSO
* [hugo convert](/commands/hugo_convert/) - Convert your content to different formats
###### Auto generated by spf13/cobra on 29-Jun-2017
###### Auto generated by spf13/cobra on 16-Jul-2017

View file

@ -1,5 +1,5 @@
---
date: 2017-06-29T08:42:09+02:00
date: 2017-07-16T23:23:14+02:00
title: "hugo env"
slug: hugo_env
url: /commands/hugo_env/
@ -37,4 +37,4 @@ hugo env [flags]
### SEE ALSO
* [hugo](/commands/hugo/) - hugo builds your site
###### Auto generated by spf13/cobra on 29-Jun-2017
###### Auto generated by spf13/cobra on 16-Jul-2017

View file

@ -1,5 +1,5 @@
---
date: 2017-06-29T08:42:09+02:00
date: 2017-07-16T23:23:14+02:00
title: "hugo gen"
slug: hugo_gen
url: /commands/hugo_gen/
@ -36,4 +36,4 @@ A collection of several useful generators.
* [hugo gen doc](/commands/hugo_gen_doc/) - Generate Markdown documentation for the Hugo CLI.
* [hugo gen man](/commands/hugo_gen_man/) - Generate man pages for the Hugo CLI
###### Auto generated by spf13/cobra on 29-Jun-2017
###### Auto generated by spf13/cobra on 16-Jul-2017

View file

@ -1,5 +1,5 @@
---
date: 2017-06-29T08:42:09+02:00
date: 2017-07-16T23:23:14+02:00
title: "hugo gen autocomplete"
slug: hugo_gen_autocomplete
url: /commands/hugo_gen_autocomplete/
@ -55,4 +55,4 @@ hugo gen autocomplete [flags]
### SEE ALSO
* [hugo gen](/commands/hugo_gen/) - A collection of several useful generators.
###### Auto generated by spf13/cobra on 29-Jun-2017
###### Auto generated by spf13/cobra on 16-Jul-2017

View file

@ -1,5 +1,5 @@
---
date: 2017-06-29T08:42:09+02:00
date: 2017-07-16T23:23:14+02:00
title: "hugo gen doc"
slug: hugo_gen_doc
url: /commands/hugo_gen_doc/
@ -44,4 +44,4 @@ hugo gen doc [flags]
### SEE ALSO
* [hugo gen](/commands/hugo_gen/) - A collection of several useful generators.
###### Auto generated by spf13/cobra on 29-Jun-2017
###### Auto generated by spf13/cobra on 16-Jul-2017

View file

@ -1,5 +1,5 @@
---
date: 2017-06-29T08:42:09+02:00
date: 2017-07-16T23:23:14+02:00
title: "hugo gen man"
slug: hugo_gen_man
url: /commands/hugo_gen_man/
@ -40,4 +40,4 @@ hugo gen man [flags]
### SEE ALSO
* [hugo gen](/commands/hugo_gen/) - A collection of several useful generators.
###### Auto generated by spf13/cobra on 29-Jun-2017
###### Auto generated by spf13/cobra on 16-Jul-2017

View file

@ -1,5 +1,5 @@
---
date: 2017-06-29T08:42:09+02:00
date: 2017-07-16T23:23:14+02:00
title: "hugo import"
slug: hugo_import
url: /commands/hugo_import/
@ -36,4 +36,4 @@ Import requires a subcommand, e.g. `hugo import jekyll jekyll_root_path target_p
* [hugo](/commands/hugo/) - hugo builds your site
* [hugo import jekyll](/commands/hugo_import_jekyll/) - hugo import from Jekyll
###### Auto generated by spf13/cobra on 29-Jun-2017
###### Auto generated by spf13/cobra on 16-Jul-2017

View file

@ -1,5 +1,5 @@
---
date: 2017-06-29T08:42:09+02:00
date: 2017-07-16T23:23:14+02:00
title: "hugo import jekyll"
slug: hugo_import_jekyll
url: /commands/hugo_import_jekyll/
@ -40,4 +40,4 @@ hugo import jekyll [flags]
### SEE ALSO
* [hugo import](/commands/hugo_import/) - Import your site from others.
###### Auto generated by spf13/cobra on 29-Jun-2017
###### Auto generated by spf13/cobra on 16-Jul-2017

View file

@ -1,5 +1,5 @@
---
date: 2017-06-29T08:42:09+02:00
date: 2017-07-16T23:23:14+02:00
title: "hugo list"
slug: hugo_list
url: /commands/hugo_list/
@ -39,4 +39,4 @@ List requires a subcommand, e.g. `hugo list drafts`.
* [hugo list expired](/commands/hugo_list_expired/) - List all posts already expired
* [hugo list future](/commands/hugo_list_future/) - List all posts dated in the future
###### Auto generated by spf13/cobra on 29-Jun-2017
###### Auto generated by spf13/cobra on 16-Jul-2017

View file

@ -1,5 +1,5 @@
---
date: 2017-06-29T08:42:09+02:00
date: 2017-07-16T23:23:14+02:00
title: "hugo list drafts"
slug: hugo_list_drafts
url: /commands/hugo_list_drafts/
@ -38,4 +38,4 @@ hugo list drafts [flags]
### SEE ALSO
* [hugo list](/commands/hugo_list/) - Listing out various types of content
###### Auto generated by spf13/cobra on 29-Jun-2017
###### Auto generated by spf13/cobra on 16-Jul-2017

View file

@ -1,5 +1,5 @@
---
date: 2017-06-29T08:42:09+02:00
date: 2017-07-16T23:23:14+02:00
title: "hugo list expired"
slug: hugo_list_expired
url: /commands/hugo_list_expired/
@ -39,4 +39,4 @@ hugo list expired [flags]
### SEE ALSO
* [hugo list](/commands/hugo_list/) - Listing out various types of content
###### Auto generated by spf13/cobra on 29-Jun-2017
###### Auto generated by spf13/cobra on 16-Jul-2017

View file

@ -1,5 +1,5 @@
---
date: 2017-06-29T08:42:09+02:00
date: 2017-07-16T23:23:14+02:00
title: "hugo list future"
slug: hugo_list_future
url: /commands/hugo_list_future/
@ -39,4 +39,4 @@ hugo list future [flags]
### SEE ALSO
* [hugo list](/commands/hugo_list/) - Listing out various types of content
###### Auto generated by spf13/cobra on 29-Jun-2017
###### Auto generated by spf13/cobra on 16-Jul-2017

View file

@ -1,5 +1,5 @@
---
date: 2017-06-29T08:42:09+02:00
date: 2017-07-16T23:23:14+02:00
title: "hugo new"
slug: hugo_new
url: /commands/hugo_new/
@ -47,4 +47,4 @@ hugo new [path] [flags]
* [hugo new site](/commands/hugo_new_site/) - Create a new site (skeleton)
* [hugo new theme](/commands/hugo_new_theme/) - Create a new theme
###### Auto generated by spf13/cobra on 29-Jun-2017
###### Auto generated by spf13/cobra on 16-Jul-2017

View file

@ -1,5 +1,5 @@
---
date: 2017-06-29T08:42:09+02:00
date: 2017-07-16T23:23:14+02:00
title: "hugo new site"
slug: hugo_new_site
url: /commands/hugo_new_site/
@ -42,4 +42,4 @@ hugo new site [path] [flags]
### SEE ALSO
* [hugo new](/commands/hugo_new/) - Create new content for your site
###### Auto generated by spf13/cobra on 29-Jun-2017
###### Auto generated by spf13/cobra on 16-Jul-2017

View file

@ -1,5 +1,5 @@
---
date: 2017-06-29T08:42:09+02:00
date: 2017-07-16T23:23:14+02:00
title: "hugo new theme"
slug: hugo_new_theme
url: /commands/hugo_new_theme/
@ -41,4 +41,4 @@ hugo new theme [name] [flags]
### SEE ALSO
* [hugo new](/commands/hugo_new/) - Create new content for your site
###### Auto generated by spf13/cobra on 29-Jun-2017
###### Auto generated by spf13/cobra on 16-Jul-2017

View file

@ -1,5 +1,5 @@
---
date: 2017-06-29T08:42:09+02:00
date: 2017-07-16T23:23:14+02:00
title: "hugo server"
slug: hugo_server
url: /commands/hugo_server/
@ -55,6 +55,7 @@ hugo server [flags]
-l, --layoutDir string filesystem path to layout directory
--meminterval string interval to poll memory usage (requires --memstats), valid time units are "ns", "us" (or "µs"), "ms", "s", "m", "h". (default "100ms")
--memstats string log memory usage to this file
--navigateToChanged navigate to changed content file on live browser reload
--noChmod don't sync permission mode of files
--noTimes don't sync modification time of files
--pluralizeListTitles pluralize titles in lists using inflect (default true)
@ -83,4 +84,4 @@ hugo server [flags]
### SEE ALSO
* [hugo](/commands/hugo/) - hugo builds your site
###### Auto generated by spf13/cobra on 29-Jun-2017
###### Auto generated by spf13/cobra on 16-Jul-2017

View file

@ -1,17 +1,17 @@
---
date: 2017-06-29T08:42:09+02:00
date: 2017-07-16T23:23:14+02:00
title: "hugo undraft"
slug: hugo_undraft
url: /commands/hugo_undraft/
---
## hugo undraft
Undraft changes the content's draft status from 'True' to 'False'
Undraft resets the content's draft status
### Synopsis
Undraft changes the content's draft status from 'True' to 'False'
Undraft resets the content's draft status
and updates the date to the current date and time.
If the content's draft status is 'False', nothing is done.
@ -39,4 +39,4 @@ hugo undraft path/to/content [flags]
### SEE ALSO
* [hugo](/commands/hugo/) - hugo builds your site
###### Auto generated by spf13/cobra on 29-Jun-2017
###### Auto generated by spf13/cobra on 16-Jul-2017

View file

@ -1,5 +1,5 @@
---
date: 2017-06-29T08:42:09+02:00
date: 2017-07-16T23:23:14+02:00
title: "hugo version"
slug: hugo_version
url: /commands/hugo_version/
@ -37,4 +37,4 @@ hugo version [flags]
### SEE ALSO
* [hugo](/commands/hugo/) - hugo builds your site
###### Auto generated by spf13/cobra on 29-Jun-2017
###### Auto generated by spf13/cobra on 16-Jul-2017

View file

@ -1,111 +0,0 @@
---
aliases:
- /doc/contributing/
- /meta/contributing/
lastmod: 2015-02-12
date: 2013-07-01
menu:
main:
parent: community
next: /tutorials/automated-deployments
prev: /community/mailing-list
title: Contributing to Hugo
weight: 30
---
All contributions to Hugo are welcome. Whether you want to scratch an itch or simply contribute to the project, feel free to pick something from the [roadmap]({{< relref "meta/roadmap.md" >}}) or contact the dev team via the [Forums](https://discourse.gohugo.io/) or [Gitter](https://gitter.im/gohugoio/hugo) about what may make sense to do next.
You should fork the project and make your changes. *We encourage pull requests to discuss code changes.*
When you're ready to create a pull request, be sure to:
* Have test cases for the new code. If you have questions about how to do it, please ask in your pull request.
* Run `go fmt`.
* Squash your commits into a single commit. `git rebase -i`. It's okay to force update your pull request.
* Run `make check` and ensure it succeeds. [Travis CI](https://travis-ci.org/gohugoio/hugo) and [Appveyor](https://ci.appveyor.com/project/gohugoio/hugo) will runs these checks and fail the build if `make check` fails.
## Contribution Overview
We wrote a [detailed guide]({{< relref "tutorials/how-to-contribute-to-hugo.md" >}}) for newcomers that guides you step by step to your first contribution. If you are more experienced, follow the guide below.
# Building from source
## Vendored Dependencies
Hugo uses [govendor][] to vendor dependencies, but we don't commit the vendored packages themselves to the Hugo git repository.
Therefore, a simple `go get` is not supported since `go get` is not vendor-aware.
You **must use govendor** to fetch Hugo's dependencies.
## Fetch the Sources
go get github.com/kardianos/govendor
govendor get github.com/gohugoio/hugo
## Running Hugo
cd $HOME/go/src/github.com/gohugoio/hugo
go run main.go
## Building Hugo
cd $HOME/go/src/github.com/gohugoio/hugo
make build
# or to install to $HOME/go/bin:
make install
# Showcase additions
You got your new website running and it's powered by Hugo? Great. You can add your website with a few steps to the [showcase](/showcase/).
First, make sure that you created a [fork](https://help.github.com/articles/fork-a-repo/) of the [`hugoDocs`](https://github.com/gohugoio/hugodocs) repository on GitHub and cloned your fork on your local computer. **Next, create a separate branch for your additions**:
```
# You can choose a different descriptive branch name if you like
git checkout -b showcase-addition
```
Let's create a new document that contains some metadata of your homepage. Replace `example` in the following examples with something unique like the name of your website. Inside the terminal enter the following commands:
```
cd docs
hugo new showcase/example.md
```
You should find the new file at `content/showcase/example.md`. Open it in an editor. The file should contain a frontmatter with predefined variables like below:
```
---
date: 2016-02-12T21:01:18+01:00
description: ""
license: ""
licenseLink: ""
sitelink: http://spf13.com/
sourceLink: https://github.com/spf13/spf13.com
tags:
- personal
- blog
thumbnail: /img/spf13-tn.jpg
title: example
---
```
Add at least values for `sitelink`, `title`, `description` and a path for `thumbnail`.
Furthermore, we need to create the thumbnail of your website. **It's important that the thumbnail has the required dimensions of 600px by 400px.** Give your thumbnail a name like `example-tn.png`. Save it under `static/img/`.
Check a last time that everything works as expected. Start Hugo's built-in server in order to inspect your local copy of the showcase in the browser:
hugo server
If everything looks fine, we are ready to commit your additions. For the sake of best practices, please make sure that your commit follows our [code contribution guideline](https://github.com/gohugoio/hugo#code-contribution-guideline).
git commit -m"Add example.com to the showcase"
Last but not least, we're ready to create a [pull request](https://github.com/gohugoio/hugoDocs/compare).
Don't forget to accept the contributor license agreement. Click on the yellow badge in the automatically added comment in the pull request.
[govendor]: https://github.com/kardianos/govendor

View file

@ -1,51 +0,0 @@
---
lastmod: 2015-05-25
date: 2013-07-01
menu:
main:
parent: community
next: /community/contributing
prev: /extras/urls
title: Mailing List
weight: 10
---
## Discussion Forum
Hugo has its own [discussion forum](https://discourse.gohugo.io/) powered by [Discourse](http://www.discourse.org/).
Please use this for all discussions, questions, etc.
### Twitter
Get the latest bite-sized news and themes from the Hugo community on Twitter by following [@gohugoio](http://twitter.com/gohugoio).
## Mailing List
Hugo has two mailing lists:
### Announcements
Very low traffic. Only releases will be emailed here.
https://groups.google.com/forum/#!forum/hugo-announce
### Discussion (Archive)
**This has been replaced with the [Hugo discussion forum](https://discourse.gohugo.io/).**
It is available for archival purposes.
https://groups.google.com/forum/#!forum/hugo-discuss
## Other Resources
### GoNuts
For general Go questions or discussion please refer to the Go mailing list.
https://groups.google.com/forum/#!forum/golang-nuts
### GitHub Issues
https://github.com/gohugoio/hugo/issues

View file

@ -1,141 +0,0 @@
---
lastmod: 2017-03-02
date: 2014-03-24T20:00:00Z
linktitle: Press
notoc: true
title: Press, Blogs and Media Coverage
weight: 20
---
### Help keep this list up to date
Know of a post, article or tutorial on Hugo? [Add it to this list](https://github.com/gohugoio/hugo/edit/master/docs/content/community/press.md).
## Press and Articles
Hugo has been featured in the following Blog Posts, Press and Media.
| Title | Author | Date |
| ------ | ------ | -----: |
| [Build, Test, And Deploy Statically Generated Websites With Hugo & CircleCI](https://circleci.com/blog/build-test-deploy-hugo-sites/)| Ricardo N Feliciano | 2017-05-31 |
| [Hugo Easy Gallery - Automagical PhotoSwipe image gallery with a one-line shortcode](https://www.liwen.id.au/heg/)| Li-Wen Yip | 2017-03-25 |
| [Hugo Tutorial: How to Build & Host a (Very Fast) Static E-Commerce Site](https://snipcart.com/blog/hugo-tutorial-static-site-ecommerce) | Snipcart | 2017-03-12 |
| [Automagical image gallery in Hugo with PhotoSwipe and jQuery](https://www.liwen.id.au/photoswipe/)| Li-Wen Yip | 2017-03-04 |
| [Adding Isso Comments to Hugo](https://stiobhart.net/2017-02-24-isso-comments/) | Stíobhart Matulevicz | 2017-02-24 |
| [Zero to HTTP/2 with AWS and Hugo](https://habd.as/zero-to-http-2-aws-hugo/) | Josh Habdas | 2017-02-16 |
| [How to Password Protect a Hugo Site](https://www.aerobatic.com/blog/password-protect-a-hugo-site/) | Aerobatic | 2017-02-19 |
| [Switching from Wordpress to Hugo](http://schnuddelhuddel.de/switching-from-wordpress-to-hugo/) | Mario Martelli | 2017-02-19 | ]
| [Deploy a Hugo site to Aerobatic with CircleCI ](https://www.aerobatic.com/blog/hugo-github-circleci/) | Aerobatic | 2017-02-14 |
| [NPM scripts for building and deploying Hugo site](https://www.aerobatic.com/blog/hugo-npm-buildtool-setup/) | Aerobatic | 2017-02-12 |
| [Getting started with Hugo and the plain-blog theme, on NearlyFreeSpeech.Net](https://www.penwatch.net/cms/get_started_plain_blog/) | Li-aung “Lewis” Yip | 2017-02-12 |
| [Build a Hugo site using Cloud9 IDE and host on App Engine](https://loyall.ch/lab/2017/01/build-a-static-website-with-cloud9-hugo-and-app-engine/)| Pascal Aubort | 2017-02-05 |
| [Hugo Continuous Deployment with Bitbucket Pipelines and Aerobatic](https://www.aerobatic.com/blog/hugo-bitbucket-pipelines/) | Aerobatic | 2017-02-04 |
| [How to use Firebase to host a Hugo site](https://www.m0d3rnc0ad.com/post/static-site-firebase/) | Andrew Cuga | 2017-02-04 |
| [A publishing workflow for teams using static site generators](https://www.keybits.net/post/publishing-workflow-for-teams-using-static-site-generators/) | Tom Atkins | 2017-01-02 |
| [How To Dynamically Use Google Fonts In A Hugo Website](https://stoned.io/web-development/hugo/How-To-Dynamically-Use-Google-Fonts-In-A-Hugo-Website/) | Hash Borgir | 2016-10-27 |
| [Embedding Facebook In A Hugo Template](https://stoned.io/web-development/hugo/Embedding-Facebook-In-A-Hugo-Template/) | Hash Borgir | 2016-10-22 |
| [通过 Gitlab-cl 将 Hugo blog 自动部署至 GitHub](https://zetaoyang.github.io/post/2016/10/17/gitlab-cl.html) <small>(Chinese, Continious integration)</small> | Zetao Yang | 2016-10-17 |
| [A Step-by-Step Guide: Hugo on Netlify](https://www.netlify.com/blog/2016/09/21/a-step-by-step-guide-hugo-on-netlify/) | Eli Williamson | 2016-09-21 |
| [Building our site: From Django & Wordpress to a static generator (Part I)](https://tryolabs.com/blog/2016/09/20/building-our-site-django-wordpress-to-static-part-i/) | Alan Descoins | 2016-09-20 |
| [Webseitenmaschine - Statische Websites mit Hugo erzeugen](http://www.heise.de/ct/ausgabe/2016-12-Statische-Websites-mit-Hugo-erzeugen-3211704.html) <small>(German, $)</small> | Christian Helmbold | 2016-05-27 |
| [Cómo hacer sitios web estáticos con Hugo y Go - Platzi](https://www.youtube.com/watch?v=qaXXpdiCHXE) <small>(Video tutorial)</small> | Verónica López | 2016-04-06 |
| [CDNOverview: A CDN comparison site made with Hugo](https://www.cloakfusion.com/cdnoverview-cdn-comparison-site-made-hugo/) | Thijs de Zoete | 2016-02-23 |
| [Hugo: A Modern WebSite Engine That Just Works](https://github.com/shekhargulati/52-technologies-in-2016/blob/master/07-hugo/README.md) | Shekhar Gulati | 2016-02-14 |
| [Minify Hugo Generated HTML](http://ratson.name/blog/minify-hugo-generated-html/) | Ratson | 2016-02-02 |
| [<span lang="ja">HugoのデプロイをWerckerからCircle CIに変更した</span> - log](http://log.deprode.net/logs/2016-01-17/) | Deprode | 2016-01-17 |
| [Static site generators: el futuro de las webs estáticas<br>(Hugo, Jekyll, Flask y otros)](http://sitelabs.es/static-site-generators-futuro-las-webs-estaticas/) | Eneko Sarasola | 2016-01-09 |
| [Writing a Lambda Function for Hugo](https://blog.jolexa.net/post/writing-a-lambda-function-for-hugo/) | Jeremy Olexa | 2016-01-01 |
| [Ein Blog mit Hugo erstellen - Tutorial](http://privat.albicker.org/tags/hugo.html) <small>(Deutsch/German)</small> | Bernhard Albicker | 2015-12-30 |
| [How to host Hugo static website generator on AWS Lambda](http://bezdelev.com/post/hugo-aws-lambda-static-website/) | Ilya Bezdelev | 2015-12-15 |
| [Migrating from Pelican to Hugo](http://www.softinio.com/post/migrating-from-pelican-to-hugo/) | Salar Rahmanian | 2015-11-29 |
| [Static Website Generators Reviewed: Jekyll, Middleman, Roots, Hugo](http://www.smashingmagazine.com/2015/11/static-website-generators-jekyll-middleman-roots-hugo-review/) | Mathias Biilmann Christensen | 2015-11-16 |
| [How To Deploy a Hugo Site to Production with Git Hooks on Ubuntu 14.04](https://www.digitalocean.com/community/tutorials/how-to-deploy-a-hugo-site-to-production-with-git-hooks-on-ubuntu-14-04) | Justin Ellingwood | 2015-11-12 |
| [How To Install and Use Hugo, a Static Site Generator, on Ubuntu 14.04](https://www.digitalocean.com/community/tutorials/how-to-install-and-use-hugo-a-static-site-generator-on-ubuntu-14-04) | Justin Ellingwood | 2015-11-09 |
| [Switching from Wordpress to Hugo](http://justinfx.com/2015/11/08/switching-from-wordpress-to-hugo/) | Justin Israel | 2015-11-08 |
| [Hands-on Experience with Hugo as a Static Site Generator](http://usersnap.com/blog/hands-on-experience-with-hugo-static-site-generator/) | Thomas Peham | 2015 -10-15 |
| [Statische Webseites mit Hugo erstellen/Vortrag mit Foliensatz (deutsch)](http://sfd.koelnerlinuxtreffen.de/2015/HaraldWeidner/) | Harald Weidner | 2015-09-19 |
| [Moving from WordPress to Hugo](http://abhipandey.com/2015/09/moving-to-hugo/) | Abhishek Pandey | 2015-09-15 |
| [<span lang="zh-CN">通过webhook将Hugo自动部署至GitHub Pages和GitCafe Pages</span> <small>(Automated&nbsp;deployment)</small>](http://blog.coderzh.com/2015/09/13/use-webhook-automated-deploy-hugo/) | CoderZh | 2015-09-13 |
| [<span lang="zh-CN">使用hugo搭建个人博客站点</span> <small>(Using Hugo to build a personal blog site)</small>](http://blog.coderzh.com/2015/08/29/hugo/) | CoderZh | 2015-08-29 |
| [Good-Bye Wordpress, Hello Hugo!](http://blog.arminhanisch.de/2015/08/blog-migration-zu-hugo/) <small>(German)</small> | Armin Hanisch | 2015-08-18 |
| [Générer votre site web statique avec Hugo <small>(Generate your static site with Hugo)<small>](http://www.linux-pratique.com/?p=191) | Benoît Benedetti | 2015-06-26 |
| [<span lang="ja">Hugo向けの新しいテーマを作った</span> <small>(I created a new theme for Hugo)<small>](https://yet.unresolved.xyz/blog/2016/10/03/how-to-make-of-hugo-theme/) | Daisuke Tsuji | 2015-06-20 |
| [Hugo - Gerando um site com conteúdo estático. (Portuguese Brazil)](http://blog.ffrizzo.com/posts/hugo/) | Fabiano Frizzo | 2015-06-02 |
| [An Introduction to Static Site Generators](http://davidwalsh.name/introduction-static-site-generators) | Eduardo Bouças | 2015-05-20 |
| [Hugo Still Rules](http://cheekycoder.com/2015/05/hugo-still-rules/) | Cheeky Coder | 2015-05-18 |
| [hugo - Static Site Generator](http://gscacco.github.io/post/hugo/) | G Scaccoio | 2015-05-04 |
| [<span lang="ja">WindowsでHugoを使う</span>](http://ureta.net/2015/05/hugo-on-windows/) | <span lang="ja">うれ太郎</span> | 2015-05-01 |
| [<span lang="ja">Hugoのshortcodesを用いてサイトにスライドなどを埋め込む</span>](http://blog.yucchiy.com/2015/04/29/hugo-shortcode/) | Yucchiy | 2015-04-29 |
| [<span lang="ja">HugoとCircleCIでGitHub PagesにBlogを公開してみたら超簡単だった</span>](http://hori-ryota.github.io/blog/create-blog-with-hugo-and-circleci/) | Hori Ryota | 2015-04-17 |
| [10 Best Static Site Generators](http://beebom.com/2015/04/best-static-site-generators) | Aniruddha Mysore | 2015-04-06 |
| [Goodbye WordPress; Hello Hugo](http://willwarren.com/2015/04/05/goodbye-wordpress-hello-hugo/) | Will Warren | 2015-04-05 |
| [Static Websites with Hugo on Google Cloud Storage](http://www.moxie.io/post/static-websites-with-hugo-on-google-cloud-storage/) | Moxie Input/Output | 2015-04-02 |
| [De nuevo iniciando un blog](https://alvarolizama.net/) | Alvaro Lizama | 2015-03-29 |
| [We moved our blog from Posthaven to Hugo after only three posts. Why?](http://blog.hypriot.com/post/moved-from-posthaven-to-hugo/) | Hypriot | 2015-03-27 |
| [Top Static Site Generators in 2015](http://superdevresources.com/static-site-generators-2015/) | Kanishk Kunal | 2015-03-12 |
| [Moving to Hugo](http://abiosoft.com/moving-to-hugo/) | Abiola Ibrahim | 2015-03-08 |
| [Migrating a blog (yes, this one!) from Wordpress to Hugo](http://justindunham.net/migrating-from-wordpress-to-hugo/) | Justin Dunham | 2015-02-13 |
| [<span lang="ja">blogをoctopressからHugoに乗り換えたメモ</span>](http://blog.jigyakkuma.org/2015/02/11/hugo/) | jigyakkuma | 2015-02-11 |
| [<span lang="ja">Hugoでブログをつくった</span>](http://porgy13.github.io/post/new-hugo-blog/) | porgy13 | 2015-02-07 |
| [<span lang="ja">Hugoにブログを移行した</span>](http://keichi.net/post/first/) | Keichi Takahashi | 2015-02-04 |
| [<span lang="zh-CN">Hugo静态网站生成器中文教程</span>](http://nanshu.wang/post/2015-01-31/) | Nanshu Wang | 2015-01-31 |
| [<span lang="ja">Hugo + GitHub Pages + Wercker CI = ¥0無料<br>でコマンド 1 発(自動化)でサイト<br>・ブログを公開・運営・分析・収益化</span>](http://qiita.com/yoheimuta/items/8a619cac356bed89a4c9) | Yohei Yoshimuta | 2015-01-31 |
| [Running Hugo websites on anynines](http://blog.anynines.com/running-hugo-websites-on-anynines/) | Julian Weber | 2015-01-30 |
| [MiddlemanからHugoへ移行した](http://re-dzine.net/2015/01/hugo/) | Haruki Konishi | 2015-01-21 |
| [WordPress から Hugo に乗り換えました](http://rakuishi.com/archives/wordpress-to-hugo/) | rakuishi | 2015-01-20 |
| [HUGOを使ってサイトを立ち上げる方法](http://qiita.com/syui/items/869538099551f24acbbf) | Syui | 2015-01-17 |
| [<span lang="ja">Jekyllが許されるのは小学生までだよね</span>](http://t32k.me/mol/log/hugo/) | Ishimoto Koji | 2015-01-16 |
| [Getting started with Hugo](http://anthonyfok.org/post/getting-started-with-hugo/) | Anthony Fok | 2015-01-12 |
| [<span lang="zh-CN">把这个博客静态化了</span> <small>(Migrate to Hugo)</small>](http://lich-eng.com/2015/01/03/migrate-to-hugo/)| Li Cheng | 2015-01-03 |
| [Porting my blog with Hugo](http://blog.srackham.com/posts/porting-my-blog-with-hugo/) | Stuart Rackham | 2014-12-30 |
| [Hugoを使ってみたときのメモ](http://machortz.github.io/posts/usinghugo/) | Machortz | 2014-12-29 |
| [OctopressからHugoへ移行した](http://deeeet.com/writing/2014/12/25/hugo/) | Taichi Nakashima | 2014-12-25 |
| [Migrating to Hugo From Octopress](http://nathanleclaire.com/blog/2014/12/22/migrating-to-hugo-from-octopress/) | Nathan LeClaire | 2014-12-22 |
| [Dynamic Pages with GoHugo.io](http://cyrillschumacher.com/2014/12/21/dynamic-pages-with-gohugo.io/) | Cyrill Schumacher | 2014-12-21 |
| [6 Static Blog Generators That Arent Jekyll](http://www.sitepoint.com/6-static-blog-generators-arent-jekyll/) | David Turnbull | 2014-12-08 |
| [Travel Blogging Setup](http://www.stou.dk/2014/11/travel-blogging-setup/) | Rasmus Stougaard | 2014-11-23 |
| [Hosting A Hugo Website Behind Nginx](http://www.bigbeeconsultants.co.uk/blog/hosting-hugo-website-behind-nginx) | Rick Beton | 2014-11-20 |
| [<span lang="zh-CN">使用Hugo搭建免费个人Blog</span> <small>(How to use Hugo)</small>](http://ulricqin.com/post/how-to-use-hugo/) | Ulric Qin <span lang="zh-CN">秦晓辉</span> | 2014-11-11 |
| [Built in Speed and Built for Speed by Hugo](http://cheekycoder.com/2014/10/built-for-speed-by-hugo/) | Cheeky Coder | 2014-10-30 |
| [Hugo para crear sitios web estáticos](http://www.webbizarro.com/noticias/1076/hugo-para-crear-sitios-web-estaticos/) | Web Bizarro | 2014-08-19 |
| [Going with hugo](http://www.markuseliasson.se/article/going-with-hugo/) | Markus Eliasson | 2014-08-18 |
| [Benchmarking Jekyll, Hugo and Wintersmith](http://fredrikloch.me/post/2014-08-12-Jekyll-and-its-alternatives-from-a-site-generation-point-of-view/) | Fredrik Loch | 2014-08-12 |
| [Goodbye Octopress, Hello Hugo!](http://andreimihu.com/blog/2014/08/11/goodbye-octopress-hello-hugo/) | Andrei Mihu | 2014-08-11 |
| [Beautiful sites for Open Source projects](http://beautifulopen.com/2014/08/09/hugo/) | Beautiful Open | 2014-08-09 |
| [Hugo: Beyond the Defaults](http://npf.io/2014/08/hugo-beyond-the-defaults/) | Nate Finch | 2014-08-08 |
| [First Impressions of Hugo](https://peteraba.com/blog/first-impressions-of-hugo/) | Peter Aba | 2014-06-06 |
| [New Site Workflow](http://vurt.co.uk/post/new_website/) | Giles Paterson | 2014-08-05 |
| [How I Learned to Stop Worrying and Love the (Static) Web](http://cognition.ca/post/about-hugo/) | Joshua McKenty | 2014-08-04 |
| [Hugo - Static Site Generator](http://kenwoo.io/blog/hugo---static-site-generator/) | Kenny Woo | 2014-08-03 |
| [Hugo Is Friggin' Awesome](http://npf.io/2014/08/hugo-is-awesome/) | Nate Finch | 2014-08-01 |
| [<span lang="zh-CN">再次搬家</span> <small>(Move from WordPress to Hugo)</small>](http://www.chingli.com/misc/move-from-wordpress-to-hugo/) | <span lang="zh-CN">青砾</span> (chingli) | 2014-07-12 |
| [Embedding Gists in Hugo](http://danmux.com/posts/embedded_gists/) | Dan Mull | 2014-07-05 |
| [An Introduction To Hugo](http://www.cirrushosting.com/web-hosting-blog/an-introduction-to-hugo/) | Dan Silber | 2014-07-01 |
| [Moving to Hugo](http://danmux.com/posts/hugo_based_blog/) | Dan Mull | 2014-05-29 |
| [<span lang="zh-CN">开源之静态站点生成器排行榜</span><br><small>(Leaderboard of open-source static website generators)</small>](http://code.csdn.net/news/2819909) | CSDN.net | 2014-05-23 |
| [Finally, a satisfying and effective blog setup](http://michaelwhatcott.com/now-powered-by-hugo/) | Michael Whatcott | 2014-05-20 |
| [Hugo from scratch](http://zackofalltrades.com/notes/2014/05/hugo-from-scratch/) | Zack Williams | 2014-05-18 |
| [Why I switched away from Jekyll](http://www.jakejanuzelli.com/why-I-switched-away-from-jekyll/) | Jake Januzelli | 2014-05-10 |
| [Welcome our new blog](http://blog.ninya.io/posts/welcome-our-new-blog/) | Ninya.io | 2014-04-11 |
| [Mission Not Accomplished](http://johnsto.co.uk/blog/mission-not-accomplished/) | Dave Johnston | 2014-04-03 |
| [Hugo - A Static Site Builder in Go](http://deepfriedcode.com/post/hugo/) | Deep Fried Code | 2014-03-30 |
| [Adventures in Angular Podcast](http://devchat.tv/adventures-in-angular/003-aia-gdes) | Matias Niemela | 2014-03-28 |
| [Hugo](http://bra.am/post/hugo/) | bra.am | 2014-03-23 |
| [Converting Blogger To Markdown](http://trishagee.github.io/project/atom-to-hugo/) | Trisha Gee | 2014-03-20 |
| [Moving to Hugo Static Web Pages](http://tepid.org/tech/hugo-web/) | Tobias Weingartner | 2014-03-16 |
| [New Blog Engine: Hugo](https://blog.afoolishmanifesto.com/posts/hugo/) | fREW Schmidt | 2014-03-15 |
| [Hugo + gulp.js = Huggle](http://ktmud.github.io/huggle/en/intro/) ([English](http://ktmud.github.io/huggle/en/intro/), [<span lang="zh-CN">中文</span>](http://ktmud.github.io/huggle/zh/intro/)) | Jesse Yang <span lang="zh-CN">杨建超</span> | 2014-03-08 |
| [Powered by Hugo](http://kieranhealy.org/blog/archives/2014/02/24/powered-by-hugo/) | Kieran Healy | 2014-02-24 |
| [<span lang="ja">静的サイトを素早く構築するために<br>GoLangで作られたジェネレータHugo</span>](http://hamasyou.com/blog/2014/02/21/hugo/)| <div lang="ja" style="line-height: 1.1;">Shogo Hamada<br>濱田章吾</div> | 2014-02-21 |
| [Latest Roundup of Useful Tools For Developers](http://codegeekz.com/latest-roundup-of-useful-tools-for-developers/) | CodeGeekz | 2014-02-13 |
| [Hugo: Static Site Generator written in Go](http://www.braveterry.com/2014/02/06/hugo-static-site-generator-written-in-go/) | Brave Terry | 2014-02-06 |
| [10 Useful HTML5 Tools for Web Designers and Developers](http://designdizzy.com/10-useful-html5-tools-for-web-designers-and-developers/) | Design Dizzy | 2014-02-04 |
| [Hugo Fast, Flexible Static Site Generator](http://cube3x.com/hugo-fast-flexible-static-site-generator/) | Joby Joseph | 2014-01-18 |
| [Hugo: A new way to build static website](http://www.w3update.com/opensource/hugo-a-new-way-to-build-static-website.html) | w3update | 2014-01-17 |
| [Xaprb now uses Hugo](http://xaprb.com/blog/2014/01/15/using-hugo/) | Baron Schwartz | 2014-01-15 |
| [New jQuery Plugins And Resources That Web Designers Need](http://www.designyourway.net/blog/resources/new-jquery-plugins-and-resources-that-web-designers-need/) | Design Your Way | 2014-01-01 |
| [On Blog Construction](http://alexla.sh/post/on-blog-construction/) | Alexander Lash | 2013-12-27 |
| [Hugo](http://onethingwell.org/post/69070926608/hugo) | One Thing Well | 2013-12-05 |
| [In Praise Of Hugo](http://sound-guru.com/blog/post/hello-world/) | sound-guru.com | 2013-10-19 |
| [Hosting a blog on S3 and Cloudfront](http://www.danesparza.net/2013/07/hosting-a-blog-on-s3-and-cloudfront/) | Dan Esparza | 2013-07-24 |

View file

@ -0,0 +1,20 @@
---
title: Content Management
linktitle: Content Management Overview
description: Hugo makes managing large static sites easy with support for archetypes, content types, menus, cross references, summaries, and more.
date: 2017-02-01
publishdate: 2017-02-01
lastmod: 2017-02-01
menu:
docs:
parent: "content-management"
weight: 1
#tags: [source, organization]
categories: [content management]
weight: 01 #rem
draft: false
aliases: [/content/,/content/organization]
toc: false
---
A static site generator needs to extend beyond front matter and a couple templates to be both scalable and *manageable*. Hugo was designed with not only developers in mind, but also content managers and authors.

View file

@ -0,0 +1,208 @@
---
title: Archetypes
linktitle: Archetypes
description: Archetypes allow you to create new instances of content types and set default parameters from the command line.
date: 2017-02-01
publishdate: 2017-02-01
lastmod: 2017-02-01
#tags: [archetypes,generators,metadata,front matter]
categories: ["content management"]
menu:
docs:
parent: "content-management"
weight: 70
quicklinks:
weight: 70 #rem
draft: false
aliases: [/content/archetypes/]
toc: true
---
{{% note %}}
This section is outdated, see https://github.com/gohugoio/hugoDocs/issues/11
{{% /note %}}
{{% todo %}}
See above
{{% /todo %}}
## What are Archetypes?
**Archetypes** are content files in the [archetypes directory][] of your project that contain preconfigured [front matter][] for your website's [content types][]. Archetypes facilitate consistent metadata across your website content and allow content authors to quickly generate instances of a content type via the `hugo new` command.
The `hugo new` generator for archetypes assumes your working directory is the content folder at the root of your project. Hugo is able to infer the appropriate archetype by assuming the content type from the content section passed to the CLI command:
```bash
hugo new <content-section>/<file-name.md>
```
We can use this pattern to create a new `.md` file in the `posts` section:
{{% code file="archetype-example.sh" %}}
```bash
hugo new posts/my-first-post.md
```
{{% /code %}}
{{% note "Override Content Type in a New File" %}}
To override the content type Hugo infers from `[content-section]`, add the `--kind` flag to the end of the `hugo new` command.
{{% /note %}}
Running this command in a new site that does not have default or custom archetypes will create the following file:
{{% output file="content/posts/my-first-post.md" %}}
```toml
+++
date = "2017-02-01T19:20:04-07:00"
title = "my first post"
draft = true
+++
```
{{% /output %}}
{{% note %}}
In this example, if you do not already have a `content/posts` directory, Hugo will create both `content/posts/` and `content/posts/my-first-post.md` for you.
{{% /note %}}
The auto-populated fields are worth examining:
* `title` is generated from the new content's filename (i.e. in this case, `my-first-post` becomes `"my first post"`)
* `date` and `title` are the variables that ship with Hugo and are therefore included in *all* content files created with the Hugo CLI. `date` is generated in [RFC 3339 format][] by way of Go's [`now()`][] function, which returns the current time.
* The third variable, `draft = true`, is *not* inherited by your default or custom archetypes but is included in Hugo's automatically scaffolded `default.md` archetype for convenience.
Three variables per content file are often not enough for effective content management of larger websites. Luckily, Hugo provides a simple mechanism for extending the number of variables through custom archetypes, as well as default archetypes to keep content creation DRY.
## Lookup Order for Archetypes
Similar to the [lookup order for templates][lookup] in your `layouts` directory, Hugo looks for a section- or type-specific archetype, then a default archetype, and finally an internal archetype that ships with Hugo. For example, Hugo will look for an archetype for `content/posts/my-first-post.md` in the following order:
1. `archetypes/posts.md`
2. `archetypes/default.md`
3. `themes/<THEME>/archetypes/posts.md`
4. `themes/<THEME>/archetypes/default.md` (Auto-generated with `hugo new site`)
{{% note "Using a Theme Archetype" %}}
If you wish to use archetypes that ship with a theme, the `theme` field must be specified in your [configuration file](/getting-started/configuration/).
{{% /note %}}
## Choose Your Archetype's Front Matter Format
By default, `hugo new` content files include front matter in the TOML format regardless of the format used in `archetypes/*.md`.
You can specify a different default format in your site [configuration file][] file using the `metaDataFormat` directive. Possible values are `toml`, `yaml`, and `json`.
## Default Archetypes
Default archetypes are convenient if your content's front matter stays consistent across multiple [content sections][sections].
### Create the Default Archetype
When you create a new Hugo project using `hugo new site`, you'll notice that Hugo has already scaffolded a file at `archetypes/default.md`.
The following examples are from a site that's using `tags` and `categories` as [taxonomies][]. If we assume that all content files will require these two key-values, we can create a `default.md` archetype that *extends* Hugo's base archetype. In this example, we are including "golang" and "hugo" as tags and "web development" as a category.
{{% code file="archetypes/default.md" %}}
```toml
+++
tags = ["golang", "hugo"]
categories = ["web development"]
+++
```
{{% /code %}}
{{% warning "EOL Characters in Text Editors"%}}
If you get an `EOF error` when using `hugo new`, add a carriage return after the closing `+++` or `---` for your TOML or YAML front matter, respectively. (See the [troubleshooting article on EOF errors](/troubleshooting/eof-error/) for more information.)
{{% /warning %}}
### Use the Default Archetype
With an `archetypes/default.md` in place, we can use the CLI to create a new post in the `posts` content section:
{{% code file="new-post-from-default.sh" %}}
```bash
$ hugo new posts/my-new-post.md
```
{{% /code %}}
Hugo then creates a new markdown file with the following front matter:
{{% output file="content/posts/my-new-post.md" %}}
```toml
+++
categories = ["web development"]
date = "2017-02-01T19:20:04-07:00"
tags = ["golang", "hugo"]
title = "my new post"
+++
```
{{% /output %}}
We see that the `title` and `date` key-values have been added in addition to the `tags` and `categories` key-values from `archetypes/default.md`.
{{% note "Ordering of Front Matter" %}}
You may notice that content files created with `hugo new` do not respect the order of the key-values specified in your archetype files. This is a [known issue](https://github.com/gohugoio/hugo/issues/452).
{{% /note %}}
## Custom Archetypes
Suppose your site's `posts` section requires more sophisticated front matter than what has been specified in `archetypes/default.md`. You can create a custom archetype for your posts at `archetypes/posts.md` that includes the full set of front matter to be added to the two default archetypes fields.
### Create a Custom Archetype
{{% code file="archetypes/posts.md"%}}
```toml
+++
description = ""
tags = ""
categories = ""
+++
```
{{% /code %}}
### Use a Custom Archetype
With an `archetypes/posts.md` in place, you can use the Hugo CLI to create a new post with your preconfigured front matter in the `posts` content section:
{{% code file="new-post-from-custom.sh" %}}
```bash
$ hugo new posts/post-from-custom.md
```
{{% /code %}}
This time, Hugo recognizes our custom `archetypes/posts.md` archetype and uses it instead of `archetypes/default.md`. The generated file will now include the full list of front matter parameters, as well as the base archetype's `title` and `date`:
{{% output file="content/posts/post-from-custom-archetype.md" %}}
```toml
+++
categories = ""
date = 2017-02-13T17:24:43-08:00
description = ""
tags = ""
title = "post from custom archetype"
+++
```
{{% /output %}}
### Hugo Docs Custom Archetype
As an example of archetypes in practice, the following is the `functions` archetype from the Hugo docs:
{{% code file="archetypes/functions.md" %}}
```yaml
{{< readfile file="/themes/gohugoioTheme/archetypes/functions.md" >}}
```
{{% /code %}}
{{% note %}}
The preceding archetype is kept up to date with every Hugo build by using Hugo's [`readFile` function](/functions/readfile/). For similar examples, see [Local File Templates](/templates/files/).
{{% /note %}}
[archetypes directory]: /getting-started/directory-structure/
[`now()`]: http://golang.org/pkg/time/#Now
[configuration file]: /getting-started/configuration/
[sections]: /content-management/sections/
[content types]: /content-management/types/
[front matter]: /content-management/front-matter/
[RFC 3339 format]: https://www.ietf.org/rfc/rfc3339.txt
[taxonomies]: /content-management/taxonomies/
[lookup]: /templates/lookup/
[templates]: /templates/

View file

@ -0,0 +1,193 @@
---
title: Authors
linktitle: Authors
description:
date: 2016-08-22
publishdate: 2017-03-12
lastmod: 2017-03-12
#tags: [authors]
categories: ["content management"]
menu:
docs:
parent: "content-management"
weight: 55
weight: 55 #rem
draft: true
aliases: [/content/archetypes/]
toc: true
comments: Before this page is published, need to also update both site- and page-level variables documentation.
---
Larger sites often have multiple content authors. Hugo provides standardized author profiles to organize relationships between content and content creators for sites operating under a distributed authorship model.
## Author Profiles
You can create a profile containing metadata for each author on your website. These profiles have to be saved under `data/_authors/`. The filename of the profile will later be used as an identifier. This way Hugo can associate content with one or multiple authors. An author's profile can be defined in the JSON, YAML, or TOML format.
### Example: Author Profile
Let's suppose Alice Allison is a blogger. A simple unique identifier would be `alice`. Now, we have to create a file called `alice.toml` in the `data/_authors/` directory. The following example is the standardized template written in TOML:
{{% code file="data/_authors/alice.toml" %}}
```toml
givenName = "Alice" # or firstName as alias
familyName = "Allison" # or lastName as alias
displayName = "Alice Allison"
thumbnail = "static/authors/alice-thumb.jpg"
image = "static/authors/alice-full.jpg"
shortBio = "My name is Alice and I'm a blogger."
bio = "My name is Alice and I'm a blogger... some other stuff"
email = "alice.allison@email.com"
weight = 10
[social]
facebook = "alice.allison"
twitter = "alice"
googleplus = "aliceallison1"
website = "www.example.com"
[params]
random = "whatever you want"
```
{{% /code %}}
All variables are optional but it's advised to fill all important ones (e.g. names and biography) because themes can vary in their usage.
You can store files for the `thumbnail` and `image` attributes in the `static` folder. Then add the path to the photos relative to `static`; e.g., `/static/path/to/thumbnail.jpg`.
`weight` allows you to define the order of an author in an `.Authors` list and can be accessed on list or via the `.Site.Authors` variable.
The `social` section contains all the links to the social network accounts of an author. Hugo is able to generate the account links for the most popular social networks automatically. This way, you only have to enter your username. You can find a list of all supported social networks [here](#linking-social-network-accounts-automatically). All other variables, like `website` in the example above remain untouched.
The `params` section can contain arbitrary data much like the same-named section in the config file. What it contains is up to you.
## Associate Content Through Identifiers
Earlier it was mentioned that content can be associated with an author through their corresponding identifier. In our case, blogger Alice has the identifier `alice`. In the front matter of a content file, you can create a list of identifiers and assign it to the `authors` variable. Here are examples for `alice` using YAML and TOML, respectively.
```yaml
---
title: Why Hugo is so Awesome
date: 2016-08-22T14:27:502:00
authors: ["alice"]
---
Nothing to read here. Move along...
```
```toml
+++
title = Why Hugo is so Awesome
date = "2016-08-22T14:27:502:00"
authors: ["alice"]
+++
Nothing to read here. Move along...
```
Future authors who might work on this blog post can append their identifiers to the `authors` array in the front matter as well.
## Work with Templates
After a successful setup it's time to give some credit to the authors by showing them on the website. Within the templates Hugo provides a list of the author's profiles if they are listed in the `authors` variable within the front matter.
The list is accessible via the `.Authors` template variable. Printing all authors of a the blog post is straight forward:
```
{{ range .Authors }}
{{ .DisplayName }}
{{ end }}
=> Alice Allison
```
Even if there are co-authors you may only want to show the main author. For this case you can use the `.Author` template variable **(note the singular form)**. The template variable contains the profile of the author that is first listed with his identifier in the front matter.
{{% note %}}
You can find a list of all template variables to access the profile information in [Author Variables](/variables/authors/).
{{% /note %}}
### Link Social Network Accounts
As aforementioned, Hugo is able to generate links to profiles of the most popular social networks. The following social networks with their corrersponding identifiers are supported: `github`, `facebook`, `twitter`, `googleplus`, `pinterest`, `instagram`, `youtube` and `linkedin`.
This is can be done with the `.Social.URL` function. Its only parameter is the name of the social network as they are defined in the profile (e.g. `facebook`, `googleplus`). Custom variables like `website` remain as they are.
Most articles feature a small section with information about the author at the end. Let's create one containing the author's name, a thumbnail, a (summarized) biography and links to all social networks:
{{% code file="layouts/partials/author-info.html" download="author-info.html" %}}
```html
{{ with .Author }}
<h3>{{ .DisplayName }}</h3>
<img src="{{ .Thumbnail | absURL }}" alt="{{ .DisplayName }}">
<p>{{ .ShortBio }}</p>
<ul>
{{ range $network, $username := .Social }}
<li><a href="{{ $.Author.Social.URL $network }}">{{ $network }}</a></li>
{{ end }}
</ul>
{{ end }}
```
{{% /code %}}
## Who Published What?
That question can be answered with a list of all authors and another list containing all articles that they each have written. Now we have to translate this idea into templates. The [taxonomy][] feature allows us to logically group content based on information that they have in common; e.g. a tag or a category. Well, many articles share the same author, so this should sound familiar, right?
In order to let Hugo know that we want to group content based on their author, we have to create a new taxonomy called `author` (the name corresponds to the variable in the front matter). Here is the snippet in a `config.yaml` and `config.toml`, respectively:
```yaml
taxonomies:
author: authors
```
```toml
[taxonomies]
author = "authors"
```
### List All Authors
In the next step we can create a template to list all authors of your website. Later, the list can be accessed at `www.example.com/authors/`. Create a new template in the `layouts/taxonomy/` directory called `authors.term.html`. This template will be exclusively used for this taxonomy.
{{% code file="layouts/taxonomy/author.term.html" download="author.term.html" %}}
```html
<ul>
{{ range $author, $v := .Data.Terms }}
{{ $profile := $.Authors.Get $author }}
<li>
<a href="{{ printf "%s/%s/" $.Data.Plural $author | absURL }}">
{{ $profile.DisplayName }} - {{ $profile.ShortBio }}
</a>
</li>
{{ end }}
</ul>
```
{{% /code %}}
`.Data.Terms` contains the identifiers of all authors and we can range over it to create a list with all author names. The `$profile` variable gives us access to the profile of the current author. This allows you to generate a nice info box with a thumbnail, a biography and social media links, like at the [end of a blog post](#linking-social-network-accounts-automatically).
### List Each Author's Publications
Last but not least, we have to create the second list that contains all publications of an author. Each list will be shown in its own page and can be accessed at `www.example.com/authors/<IDENTIFIER>`. Replace `<IDENTIFIER>` with a valid author identifier like `alice`.
The layout for this page can be defined in the template `layouts/taxonomy/author.html`.
{{% code file="layouts/taxonomy/author.html" download="author.html" %}}
```html
{{ range .Data.Pages }}
<h2><a href="{{ .Permalink }}">{{ .Title }}</a></h2>
<span>written by {{ .Author.DisplayName }}</span>
{{ .Summary }}
{{ end }}
```
{{% /code %}}
The example above generates a simple list of all posts written by a single author. Inside the loop you've access to the complete set of [page variables][pagevars]. Therefore, you can add additional information about the current posts like the publishing date or the tags.
With a lot of content this list can quickly become very long. Consider to use the [pagination][] feature. It splits the list into smaller chunks and spreads them over multiple pages.
[pagevars]: /variables/page/
[pagination]: /templates/pagination/

View file

@ -0,0 +1,84 @@
---
title: Comments
linktitle: Comments
description: Hugo ships with an internal Disqus template, but this isn't the only commenting system that will work with your new Hugo website.
date: 2017-02-01
publishdate: 2017-02-01
lastmod: 2017-03-09
#tags: [sections,content,organization]
categories: [project organization, fundamentals]
menu:
docs:
parent: "content-management"
weight: 140
weight: 140 #rem
draft: false
aliases: [/extras/comments/]
toc: true
---
Hugo ships with support for [Disqus](https://disqus.com/), a third-party service that provides comment and community capabilities to websites via JavaScript.
Your theme may already support Disqus, but if not, it is easy to add to your templates via [Hugo's built-in Disqus partial][disquspartial].
## Add Disqus
Hugo comes with all the code you need to load Disqus into your templates. Before adding Disqus to your site, you'll need to [set up an account][disqussetup].
### Configure Disqus
Disqus comments require you set a single value in your [site's configuration file][configuration]. The following show the configuration variable in a `config.toml` and `config.yml`, respectively:
```toml
disqusShortname = "yourdiscussshortname"
```
```yaml
disqusShortname: "yourdiscussshortname"
```
For many websites, this is enough configuration. However, you also have the option to set the following in the [front matter][] of a single content file:
* `disqus_identifier`
* `disqus_title`
* `disqus_url`
### Render Hugo's Built-in Disqus Partial Template
See [Partial Templates][partials] to learn how to add the Disqus partial to your Hugo website's templates.
## Comments Alternatives
There are a few alternatives to commenting on static sites for those who do not want to use Disqus:
* [Static Man](https://staticman.net/)
* [txtpen](https://txtpen.com)
* [IntenseDebate](http://intensedebate.com/)
* [Graph Comment][]
* [Muut](http://muut.com/)
* [isso](http://posativ.org/isso/) (Self-hosted, Python)
* [Tutorial on Implementing Isso with Hugo][issotutorial]
<!-- I don't think this is worth including in the documentation since it seems that Steve is no longer supporting or developing this project. rdwatters - 2017-02-29.-->
<!-- * [Kaiju](https://github.com/spf13/kaiju) -->
<!-- ## Kaiju
[Kaiju](https://github.com/spf13/kaiju) is an open-source project started by [spf13](http://spf13.com/) (Hugos author) to bring easy and fast real time discussions to the web.
Written using Go, Socket.io, and [MongoDB][], Kaiju is very fast and easy to deploy.
It is in early development but shows promise. If you have interest, please help by contributing via pull request, [opening an issue in the Kaiju GitHub repository][kaijuissue], or [Tweeting about it][tweet]. Every bit helps. -->
[configuration]: /getting-started/configuration/
[disquspartial]: /templates/partials/#disqus
[disqussetup]: https://disqus.com/profile/signup/
[forum]: https://discourse.gohugo.io
[front matter]: /content-management/front-matter/
[Graph Comment]: https://graphcomment.com/
[kaijuissue]: https://github.com/spf13/kaiju/issues/new
[issotutorial]: https://stiobhart.net/2017-02-24-isso-comments/
[partials]: /templates/partials/
[MongoDB]: https://www.mongodb.com/
[tweet]: https://twitter.com/spf13

View file

@ -0,0 +1,125 @@
---
title: Cross References
description: Hugo makes it easy to link documents together.
date: 2017-02-01
publishdate: 2017-02-01
lastmod: 2017-03-31
categories: [content management]
#tags: ["cross references","references", "anchors", "urls"]
menu:
docs:
parent: "content-management"
weight: 100
weight: 100 #rem
aliases: [/extras/crossreferences/]
toc: true
---
The `ref` and `relref` shortcodes link documents together, both of which are [built-in Hugo shortcodes][]. These shortcodes are also used to 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/`), respectively.
## Use `ref` and `relref`
```md
{{</* ref "document" */>}}
{{</* ref "#anchor" */>}}
{{</* ref "document#anchor" */>}}
{{</* relref "document" */>}}
{{</* relref "#anchor" */>}}
{{</* relref "document#anchor" */>}}
```
The single parameter to `ref` is a string with a content `documentname` (e.g., `about.md`) with or without an appended in-document `anchor` (`#who`) without spaces.
### Document Names
The `documentname` is the name of a document, including the format extension; this may be just the filename, or the relative path from the `content/` directory. With a document `content/blog/post.md`, either format will produce the same result:
```md
{{</* relref "blog/post.md" */>}} => `/blog/post/`
{{</* relref "post.md" */>}} => `/blog/post/`
```
If you have the same filename used across multiple sections, you should only use the relative path format; otherwise, the behavior will be `undefined`. This is best illustrated with an example `content` directory:
```bash
.
└── content
├── events
│   └── my-birthday.md
├── galleries
│   └── my-birthday.md
├── meta
│   └── my-article.md
└── posts
└── my-birthday.md
```
To be sure to get the correct reference in this case, use the full path:
{{% code file="content/meta/my-article.md" copy="false" %}}
```md
{{</* relref "events/my-birthday.md" */>}} => /events/my-birthday/
```
{{% /code %}}
{{< todo >}}Remove this warning when https://github.com/gohugoio/hugo/issues/3703 is released.{{< /todo >}}
A relative document name must *not* begin with a slash (`/`).
```md
{{</* relref "/events/my-birthday.md" */>}} => ""
```
### With Multiple Output Formats
If the page exists in multiple [output formats][], `ref` or `relref` can be used with a output format name:
```
[Neat]({{</* ref "blog/neat.md" "amp" */>}})
```
### Anchors
When an `anchor` is provided by itself, the current pages unique identifier will be appended; when an `anchor` is provided appended to `documentname`, the found page's unique identifier will be appended:
```md
{{</* relref "#anchors" */>}} => #anchors:9decaf7
{{</* relref "about-hugo/hugo-features.md#content" */>}} => /blog/post/#who:badcafe
```
The above examples render as follows for this very page as well as a reference to the "Content" heading in the Hugo docs features pageyoursite
```md
{{</* relref "#who" */>}} => #who:9decaf7
{{</* relref "blog/post.md#who" */>}} => /blog/post/#who:badcafe
```
More information about document unique identifiers and headings can be found [below]({{< ref "#hugo-heading-anchors" >}}).
### Examples
* `{{</* ref "blog/post.md" */>}}` => `http://yoursite.com/blog/post/`
* `{{</* ref "post.md#tldr" */>}}` => `http://yoursite.com/blog/post/#tldr:caffebad`
* `{{</* relref "post.md" */>}}` => `/blog/post/`
* `{{</* relref "blog/post.md#tldr" */>}}` => `/blog/post/#tldr:caffebad`
* `{{</* ref "#tldr" */>}}` => `#tldr:badcaffe`
* `{{</* relref "#tldr" */>}}` => `#tldr:badcaffe`
## Hugo Heading Anchors
When using Markdown document types, Hugo generates heading anchors automatically. The generated anchor for this section is `hugo-heading-anchors`. Because the heading anchors are generated automatically, Hugo takes some effort to ensure that heading anchors are unique both inside a document and across the entire site.
Ensuring heading uniqueness across the site is accomplished with a unique identifier for each document based on its path. Unless a document is renamed or moved between sections *in the filesystem*, the unique identifier for the document will not change: `blog/post.md` will always have a unique identifier of `81df004c333b392d34a49fd3a91ba720`.
`ref` and `relref` were added so you can make these reference links without having to know the documents unique identifier. (The links in document tables of contents are automatically up-to-date with this value.)
```md
{{</* relref "content-management/cross-references.md#hugo-heading-anchors" */>}}
/content-management/cross-references/#hugo-heading-anchors:77cd9ea530577debf4ce0f28c8dca242
```
[built-in Hugo shortcodes]: /content-management/shortcodes/#using-the-built-in-shortcodes
[lists]: /templates/lists/
[output formats]: /templates/output-formats/
[shortcode]: /content-management/shortcodes/

View file

@ -0,0 +1,249 @@
---
title: Supported Content Formats
linktitle: Supported Content Formats
description: Markdown and Emacs Org-Mode have native support, and additional formats (e.g. Asciidoc) come via external helpers.
date: 2017-01-10
publishdate: 2017-01-10
lastmod: 2017-04-06
categories: [content management]
#tags: [markdown,asciidoc,mmark,content format]
menu:
docs:
parent: "content-management"
weight: 20
weight: 20 #rem
draft: false
aliases: [/content/markdown-extras/,/content/supported-formats/,/doc/supported-formats/,/tutorials/mathjax/]
toc: true
---
**Markdown is the main content format** and comes in two flavours: The excellent [Blackfriday project][blackfriday] (name your files `*.md` or set `markup = "markdown"` in front matter) or its fork [Mmark][mmark] (name your files `*.mmark` or set `markup = "mmark"` in front matter), both very fast markdown engines written in Go.
For Emacs users, [goorgeous](https://github.com/chaseadamsio/goorgeous) provides built-in native support for Org-mode (name your files `*.org` or set `markup = "org"` in front matter)
{{% note "Deeply Nested Lists" %}}
Before you begin writing your content in markdown, Blackfriday has a known issue [(#329)](https://github.com/russross/blackfriday/issues/329) with handling deeply nested lists. Luckily, there is an easy workaround. Use 4-spaces (i.e., <kbd>tab</kbd>) rather than 2-space indentations.
{{% /note %}}
## Configure BlackFriday Markdown Rendering
You can configure multiple aspects of Blackfriday as show in the following list. See the docs on [Configuration][config] for the full list of explicit directions you can give to Hugo when rendering your site.
{{< readfile file="/content/readfiles/bfconfig.md" markdown="true" >}}
## Extend Markdown
Hugo provides some convenient methods for extending markdown.
### Task Lists
Hugo supports [GitHub-styled task lists (i.e., TODO lists)][gfmtasks] for the Blackfriday markdown renderer. If you do not want to use this feature, you can disable it in your configuration.
#### Example Task List Input
{{% code file="content/my-to-do-list.md" %}}
```markdown
- [ ] a task list item
- [ ] list syntax required
- [ ] incomplete
- [x] completed
```
{{% /code %}}
#### Example Task List Output
The preceding markdown produces the following HTML in your rendered website:
```html
<ul class="task-list">
<li><input type="checkbox" disabled="" class="task-list-item"> a task list item</li>
<li><input type="checkbox" disabled="" class="task-list-item"> list syntax required</li>
<li><input type="checkbox" disabled="" class="task-list-item"> incomplete</li>
<li><input type="checkbox" checked="" disabled="" class="task-list-item"> completed</li>
</ul>
```
#### Example Task List Display
The following shows how the example task list will look to the end users of your website. Note that visual styling of lists is up to you. This list has been styled according to [the Hugo Docs stylesheet][hugocss].
- [ ] a task list item
- [ ] list syntax required
- [ ] incomplete
- [x] completed
### Emojis
To add emojis directly to content, set `enableEmoji` to `true` in your [site configuration][config]. To use emojis in templates or shortcodes, see [`emojify` function][].
For a full list of emojis, see the [Emoji cheat sheet][emojis].
### Shortcodes
If you write in Markdown and find yourself frequently embedding your content with raw HTML, Hugo provides built-in shortcodes functionality. This is one of the most powerful features in Hugo and allows you to create your own Markdown extensions very quickly.
See [Shortcodes][sc] for usage, particularly for the built-in shortcodes that ship with Hugo, and [Shortcode Templating][sct] to learn how to build your own.
### Code Blocks
Hugo supports GitHub-flavored markdown's use of triple back ticks, as well as provides a special [`highlight` nested shortcode][hlsc] to render syntax highlighting via [Pygments][]. For usage examples and a complete explanation, see the [syntax highlighting documentation][hl] in [developer tools][].
## Mmark
Mmark is a [fork of BlackFriday][mmark] and markdown superset that is well suited for writing [IETF documentation][ietf]. You can see examples of the syntax in the [Mmark GitHub repository][mmarkgh] or the full syntax on [Miek Gieben's website][].
### Use Mmark
As Hugo ships with Mmark, using the syntax is as easy as changing the extension of your content files from `.md` to `.mmark`.
In the event that you want to only use Mmark in specific files, you can also define the Mmark syntax in your content's front matter:
```yaml
---
title: My Post
date: 2017-04-01
markdown: mmark
---
```
{{% warning %}}
Thare are some features not available in Mmark; one example being that shortcodes are not translated when used in an included `.mmark` file ([#3131](https://github.com/gohugoio/hugo/issues/3137)), and `EXTENSION_ABBREVIATION` ([#1970](https://github.com/gohugoio/hugo/issues/1970)) and the aforementioned GFM todo lists ([#2270](https://github.com/gohugoio/hugo/issues/2270)) are not fully supported. Contributions are welcome.
{{% /warning %}}
## MathJax with Hugo
[MathJax](http://www.mathjax.org/) is a JavaScript library that allows the display of mathematical expressions described via a LaTeX-style syntax in the HTML (or Markdown) source of a web page. As it is a pure a JavaScript library, getting it to work within Hugo is fairly straightforward, but does have some oddities that will be discussed here.
This is not an introduction into actually using MathJax to render typeset mathematics on your website. Instead, this page is a collection of tips and hints for one way to get MathJax working on a website built with Hugo.
### Enable MathJax
The first step is to enable MathJax on pages that you would like to have typeset math. There are multiple ways to do this (adventurous readers can consult the [Loading and Configuring](http://docs.mathjax.org/en/latest/configuration.html) section of the MathJax documentation for additional methods of including MathJax), but the easiest way is to use the secure MathJax CDN by include a `<script>` tag for the officially recommended secure CDN ([cdn.js.com](https://cdnjs.com)):
{{% code file="add-mathjax-to-page.html" %}}
```html
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.1/MathJax.js?config=TeX-AMS-MML_HTMLorMML">
</script>
```
{{% /code %}}
One way to ensure that this code is included in all pages is to put it in one of the templates that live in the `layouts/partials/` directory. For example, I have included this in the bottom of my template `footer.html` because I know that the footer will be included in every page of my website.
### Options and Features
MathJax is a stable open-source library with many features. I encourage the interested reader to view the [MathJax Documentation](http://docs.mathjax.org/en/latest/index.html), specifically the sections on [Basic Usage](http://docs.mathjax.org/en/latest/index.html#basic-usage) and [MathJax Configuration Options](http://docs.mathjax.org/en/latest/index.html#mathjax-configuration-options).
### Issues with Markdown
{{% note %}}
The following issues with Markdown assume you are using `.md` for content and BlackFriday for parsing. Using [Mmark](#mmark) as your content format will obviate the need for the following workarounds.
When using Mmark with MathJax, use `displayMath: [['$$','$$'], ['\\[','\\]']]`. See the [Mmark `README.md`](https://github.com/miekg/mmark/wiki/Syntax#math-blocks) for more information. In addition to MathJax, Mmark has been shown to work well with [KaTeX](https://github.com/Khan/KaTeX). See this [related blog post from a Hugo user](http://nosubstance.me/post/a-great-toolset-for-static-blogging/).
{{% /note %}}
After enabling MathJax, any math entered between proper markers (see the [MathJax documentation][mathjaxdocs]) will be processed and typeset in the web page. One issue that comes up, however, with Markdown is that the underscore character (`_`) is interpreted by Markdown as a way to wrap text in `emph` blocks while LaTeX (MathJax) interprets the underscore as a way to create a subscript. This "double speak" of the underscore can result in some unexpected and unwanted behavior.
### Solution
There are multiple ways to remedy this problem. One solution is to simply escape each underscore in your math code by entering `\_` instead of `_`. This can become quite tedious if the equations you are entering are full of subscripts.
Another option is to tell Markdown to treat the MathJax code as verbatim code and not process it. One way to do this is to wrap the math expression inside a `<div>` `</div>` block. Markdown would ignore these sections and they would get passed directly on to MathJax and processed correctly. This works great for display style mathematics, but for inline math expressions the line break induced by the `<div>` is not acceptable. The syntax for instructing Markdown to treat inline text as verbatim is by wrapping it in backticks (`` ` ``). You might have noticed, however, that the text included in between backticks is rendered differently than standard text (on this site these are items highlighted in red). To get around this problem, we could create a new CSS entry that would apply standard styling to all inline verbatim text that includes MathJax code. Below I will show the HTML and CSS source that would accomplish this (note this solution was adapted from [this blog post](http://doswa.com/2011/07/20/mathjax-in-markdown.html)---all credit goes to the original author).
{{% code file="mathjax-markdown-solution.html" %}}
```js
<script type="text/x-mathjax-config">
MathJax.Hub.Config({
tex2jax: {
inlineMath: [['$','$'], ['\\(','\\)']],
displayMath: [['$$','$$'], ['\[','\]']],
processEscapes: true,
processEnvironments: true,
skipTags: ['script', 'noscript', 'style', 'textarea', 'pre'],
TeX: { equationNumbers: { autoNumber: "AMS" },
extensions: ["AMSmath.js", "AMSsymbols.js"] }
}
});
</script>
<script type="text/x-mathjax-config">
MathJax.Hub.Queue(function() {
// Fix <code> tags after MathJax finishes running. This is a
// hack to overcome a shortcoming of Markdown. Discussion at
// https://github.com/mojombo/jekyll/issues/199
var all = MathJax.Hub.getAllJax(), i;
for(i = 0; i < all.length; i += 1) {
all[i].SourceElement().parentNode.className += ' has-jax';
}
});
</script>
```
{{% /code %}}
As before, this content should be included in the HTML source of each page that will be using MathJax. The next code snippet contains the CSS that is used to have verbatim MathJax blocks render with the same font style as the body of the page.
{{% code file="mathjax-style.css" %}}
```css
code.has-jax {
font: inherit;
font-size: 100%;
background: inherit;
border: inherit;
color: #515151;
}
```
{{% /code %}}
In the CSS snippet, notice the line `color: #515151;`. `#515151` is the value assigned to the `color` attribute of the `body` class in my CSS. In order for the equations to fit in with the body of a web page, this value should be the same as the color of the body.
### Usage
With this setup, everything is in place for a natural usage of MathJax on pages generated using Hugo. In order to include inline mathematics, just put LaTeX code in between `` `$ TeX Code $` `` or `` `\( TeX Code \)` ``. To include display style mathematics, just put LaTeX code in between `<div>$$TeX Code$$</div>`. All the math will be properly typeset and displayed within your Hugo generated web page!
## Additional Formats Through External Helpers
Hugo has new concept called _external helpers_. It means that you can write your content using [Asciidoc][ascii], [reStructuredText][rest]. If you have files with associated extensions, Hugo will call external commands to generate the content. ([See the Hugo source code for external helpers][helperssource].)
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. ([See the Asciidoctor docs for installation instructions](http://asciidoctor.org/docs/install-toolchain/)).
To use these formats, just use the standard extension and the front matter exactly as you would do with natively supported `.md` files.
{{% warning "Performance of External Helpers" %}}
Because additional formats are external commands generation performance will rely heavily on the performance of the external tool you are using. As this feature is still in its infancy, feedback is welcome.
{{% /warning %}}
## Learn Markdown
Markdown syntax is simple enough to learn in a single sitting. The following are excellent resources to get you up and running:
* [Daring Fireball: Markdown, John Gruber (Creator of Markdown)][fireball]
* [Markdown Cheatsheet, Adam Pritchard][mdcheatsheet]
* [Markdown Tutorial (Interactive), Garen Torikian][mdtutorial]
[`emojify` function]: /functions/emojify/
[ascii]: http://asciidoc.org/
[bfconfig]: /getting-started/configuration/#configuring-blackfriday-rendering
[blackfriday]: https://github.com/russross/blackfriday
[mmark]: https://github.com/miekg/mmark
[config]: /getting-started/configuration/
[developer tools]: /tools/
[emojis]: https://www.webpagefx.com/tools/emoji-cheat-sheet/
[fireball]: https://daringfireball.net/projects/markdown/
[gfmtasks]: https://guides.github.com/features/mastering-markdown/#syntax
[helperssource]: https://github.com/gohugoio/hugo/blob/77c60a3440806067109347d04eb5368b65ea0fe8/helpers/general.go#L65
[hl]: /tools/syntax-highlighting/
[hlsc]: /content-management/shortcodes/#highlight
[hugocss]: /css/style.css
[ietf]: https://tools.ietf.org/html/
[mathjaxdocs]: https://docs.mathjax.org/en/latest/
[mdcheatsheet]: https://github.com/adam-p/markdown-here/wiki/Markdown-Cheatsheet
[mdtutorial]: http://www.markdowntutorial.com/
[Miek Gieben's website]: https://miek.nl/2016/March/05/mmark-syntax-document/
[mmark]: https://github.com/miekg/mmark
[mmarkgh]: https://github.com/miekg/mmark/wiki/Syntax
[org]: http://orgmode.org/
[Pygments]: http://pygments.org/
[rest]: http://docutils.sourceforge.net/rst.html
[sc]: /content-management/shortcodes/
[sct]: /templates/shortcode-templates/

View file

@ -0,0 +1,198 @@
---
title: Front Matter
linktitle:
description: Hugo allows you to add front matter in yaml, toml, or json to your content files.
date: 2017-01-09
publishdate: 2017-01-09
lastmod: 2017-02-24
categories: [content management]
#tags: ["front matter", "yaml", "toml", "json", "metadata", "archetypes"]
menu:
docs:
parent: "content-management"
weight: 30
weight: 30 #rem
draft: false
aliases: [/content/front-matter/]
toc: true
---
**Front matter** allows you to keep metadata attached to an instance of a [content type][]---i.e., embedded inside a content file---and is one of the many features that gives Hugo its strength.
## Front Matter Formats
Hugo supports three formats for front matter, each with their own identifying tokens.
TOML
: identified by opening and closing `+++`.
YAML
: identified by opening and closing `---`.
JSON
: a single JSON object surrounded by '`{`' and '`}`', followed by a new line.
### TOML Example
```toml
+++
title = "spf13-vim 3.0 release and new website"
description = "spf13-vim is a cross platform distribution of vim plugins and resources for Vim."
tags = [ ".vimrc", "plugins", "spf13-vim", "vim" ]
date = "2012-04-06"
categories = [
"Development",
"VIM"
]
slug = "spf13-vim-3-0-release-and-new-website"
+++
```
### YAML Example
```yaml
---
title: "spf13-vim 3.0 release and new website"
description: "spf13-vim is a cross platform distribution of vim plugins and resources for Vim."
#tags: [ ".vimrc", "plugins", "spf13-vim", "vim" ]
lastmod: 2015-12-23
date: "2012-04-06"
categories:
- "Development"
- "VIM"
slug: "spf13-vim-3-0-release-and-new-website"
---
```
### JSON Example
```json
{
"title": "spf13-vim 3.0 release and new website",
"description": "spf13-vim is a cross platform distribution of vim plugins and resources for Vim.",
"tags": [ ".vimrc", "plugins", "spf13-vim", "vim" ],
"date": "2012-04-06",
"categories": [
"Development",
"VIM"
],
"slug": "spf13-vim-3-0-release-and-new-website"
}
```
## Front Matter Variables
### Predefined
There are a few predefined variables that Hugo is aware of. See [Page Variables][pagevars] for how to call many of these predefined variables in your templates.
`aliases`
: an array of one or more aliases (e.g., old published paths of renamed content) that will be created in the output directory structure . See [Aliases][aliases] for details.
`date`
: the datetime at which the content was created; note this value is auto-populated according to Hugo's built-in [archetype][].
`description`
: the description for the content.
`draft`
: if `true`, the content will not be rendered unless the `--buildDrafts` flag is passed to the `hugo` command.
`expiryDate`
: the datetime at which the content should no longer be published by Hugo; expired content will not be rendered unless the `--buildExpired` flag is passed to the `hugo` command.
`isCJKLanguage`
: if `true`, Hugo will explicitly treat the content as a CJK language; both `.Summary` and `.WordCount` work properly in CJK languages.
`keywords`
: the meta keywords for the content.
`layout`
: the layout Hugo should select from the [lookup order][lookup] when rendering the content. If a `type` is not specified in the front matter, Hugo will look for the layout of the same name in the layout directory that corresponds with a content's section. See ["Defining a Content Type"][definetype]
`lastmod`
: the datetime at which the content was last modified.
`linkTitle`
: used for creating links to content; if set, Hugo defaults to using the `linktitle` before the `title`. Hugo can also [order lists of content by `linktitle`][bylinktitle].
`markup`
: **experimental**; specify `"rst"` for reStructuredText (requires`rst2html`) or `"md"` (default) for Markdown.
`outputs`
: allows you to specify output formats specific to the content. See [output formats][outputs].
`publishDate`
: if in the future, content will not be rendered unless the `--buildFuture` flag is passed to `hugo`.
`slug`
: appears as the tail of the output URL. A value specified in front matter will override the segment of the URL based on the filename.
`taxonomies`
: these will use the field name of the plural form of the index; see the `tags` and `categories` in the above front matter examples.
`title`
: the title for the content.
`type`
: the type of the content; this value will be automatically derived from the directory (i.e., the [section][]) if not specified in front matter.
`url`
: the full path to the content from the web root. It makes no assumptions about the path of the content file. It also ignores any language prefixes of
the multilingual feature.
`weight`
: used for [ordering your content in lists][ordering].
{{% note "Hugo's Default URL Destinations" %}}
If neither `slug` nor `url` is present and [permalinks are not configured otherwise in your site `config` file](/content-management/urls/#permalinks), Hugo will use the filename of your content to create the output URL. See [Content Organization](/content-management/organization) for an explanation of paths in Hugo and [URL Management](/content-management/urls/) for ways to customize Hugo's default behaviors.
{{% /note %}}
### User-Defined
You can add fields to your front matter arbitrarily to meet your needs. These user-defined key-values are placed into a single `.Params` variable for use in your templates.
The following fields can be accessed via `.Params.include_toc` and `.Params.show_comments`, respectively. The [Variables][] section provides more information on using Hugo's page- and site-level variables in your templates.
```yaml
include_toc: true
show_comments: false
```
These two user-defined fields can then be accessed via `.Params.include_toc` and `.Params.show_comments`, respectively. The [Variables][variables] section provides more information on using Hugo's page- and site-level variables in your templates.
## Order Content Through Front Matter
You can assign content-specific `weight` in the front matter of your content. These values are especially useful for [ordering][ordering] in list views. You can use `weight` for ordering of content and the convention of [`<TAXONOMY>_weight`][taxweight] for ordering content within a taxonomy. See [Ordering and Grouping Hugo Lists][lists] to see how `weight` can be used to organize your content in list views.
## Override Global Markdown Configuration
It's possible to set some options for Markdown rendering in a content's front matter as an override to the [BlackFriday rendering options set in your project configuration][config].
## Front Matter Format Specs
* [TOML Spec][toml]
* [YAML Spec][yaml]
* [JSON Spec][json]
[variables]: /variables/
[aliases]: /content-management/urls/#aliases/
[archetype]: /content-management/archetypes/
[bylinktitle]: /templates/lists/#by-link-title
[config]: /getting-started/configuration/ "Hugo documentation for site configuration"
[content type]: /content-management/types/
[contentorg]: /content-management/organization/
[definetype]: /content-management/types/#defining-a-content-type "Learn how to specify a type and a layout in a content's front matter"
[json]: /documents/ecma-404-json-spec.pdf "Specification for JSON, JavaScript Object Notation"
[lists]: /templates/lists/#ordering-content "See how to order content in list pages; for example, templates that look to specific _index.md for content and front matter."
[lookup]: /templates/lookup-order/ "Hugo traverses your templates in a specific order when rendering content to allow for DRYer templating."
[ordering]: /templates/lists/ "Hugo provides multiple ways to sort and order your content in list templates"
[outputs]: /templates/output-formats/ "With the release of v22, you can output your content to any text format using Hugo's familiar templating"
[pagevars]: /variables/page/
[section]: /content-management/sections/
[taxweight]: /content-management/taxonomies/
[toml]: https://github.com/toml-lang/toml "Specification for TOML, Tom's Obvious Minimal Language"
[urls]: /content-management/urls/
[variables]: /variables/
[yaml]: http://yaml.org/spec/ "Specification for YAML, YAML Ain't Markup Language"

View file

@ -0,0 +1,183 @@
---
title: Menus
linktitle: Menus
description: Hugo has a simple yet powerful menu system.
date: 2017-02-01
publishdate: 2017-02-01
lastmod: 2017-03-31
categories: [content management]
#tags: [menus]
draft: false
menu:
docs:
parent: "content-management"
weight: 120
weight: 120 #rem
aliases: [/extras/menus/]
toc: true
---
{{% note "Lazy Blogger"%}}
If all you want is a simple menu for your sections, see the ["Section Menu for Lazy Bloggers" in Menu Templates](/templates/menu-templates/#section-menu-for-lazy-blogger).
{{% /note %}}
You can do this:
* Place content in one or many menus
* Handle nested menus with unlimited depth
* Create menu entries without being attached to any content
* Distinguish active element (and active branch)
## What is a Menu in Hugo?
A **menu** is a named array of menu entries accessible by name via the [`.Site.Menus` site variable][sitevars]. For example, you can access your site's `main` menu via `.Site.Menus.main`.
{{% note "Menus on Multilingual Sites" %}}
If you make use of the [multilingual feature](/content-management/multilingual/), you can define language-independent menus.
{{% /note %}}
A menu entry has the following properties (i.e., variables) available to it:
`.URL`
: string
`.Name`
: string
`.Menu`
: string
`.Identifier`
: string
`.Pre`
: template.HTML
`.Post`
: template.HTML
`.Weight`
: int
`.Parent`
: string
`.Children`
: Menu
Note that menus also have the following functions available as well:
`.HasChildren`
: boolean
Additionally, there are some relevant functions available to menus on a page:
`.IsMenuCurrent`
: (menu string, menuEntry *MenuEntry ) boolean
`.HasMenuCurrent`
: (menu string, menuEntry *MenuEntry) boolean
## Add content to menus
Hugo allows you to add content to a menu via the content's [front matter](/content-management/front-matter/).
### Simple
If all you need to do is add an entry to a menu, the simple form works well.
#### A Single Menu
```yaml
---
menu: "main"
---
```
#### Multiple Menus
```yaml
---
menu: ["main", "footer"]
---
```
#### Advanced
```yaml
---
menu:
docs:
parent: 'extras'
weight: 20
---
```
## Add Non-content Entries to a Menu
You can also add entries to menus that arent attached to a piece of content. This takes place in your Hugo project's [`config` file][config].
Heres an example snippet pulled from a `config.toml`:
{{% code file="config.toml" %}}
```toml
[[menu.main]]
name = "about hugo"
pre = "<i class='fa fa-heart'></i>"
weight = -110
identifier = "about"
url = "/about/"
[[menu.main]]
name = "getting started"
pre = "<i class='fa fa-road'></i>"
weight = -100
url = "/getting-started/"
```
{{% /code %}}
Here's the equivalent snippet in a `config.yaml`:
{{% code file="config.yml" %}}
```yaml
---
menu:
docs:
- Name: "about hugo"
Pre: "<i class='fa fa-heart'></i>"
Weight: -110
Identifier: "about"
URL: "/about/"
- Name: "getting started"
Pre: "<i class='fa fa-road'></i>"
Weight: -100
URL: "/getting-started/"
---
```
{{% /code %}}
{{% note %}}
The URLs must be relative to the context root. If the `baseURL` is `http://example.com/mysite/`, then the URLs in the menu must not include the context root `mysite`. Using an absolute URL will overide the baseURL. If the value used for `URL` in the above example is `http://subdomain.example.com/`, the output will be `http://subdomain.example.com`.
{{% /note %}}
## Nesting
All nesting of content is done via the `parent` field.
The parent of an entry should be the identifier of another entry. The identifier should be unique (within a menu).
The following order is used to determine an Identifier:
`.Name > .LinkTitle > .Title`
This means that `.Title` will be used unless `.LinkTitle` is present, etc. In practice, `.Name` and `.Identifier` are only used to structure relationships and therefore never displayed.
In this example, the top level of the menu is defined in your [site `config` file][config]). All content entries are attached to one of these entries via the `.Parent` field.
## Render Menus
See [Menu Templates](/templates/menu-templates/) for information on how to render your site menus within your templates.
[config]: /getting-started/configuration/
[multilingual]: /content-management/multilingual/
[sitevars]: /variables/

View file

@ -0,0 +1,300 @@
---
title: Multilingual Mode
linktitle: Multilingual and i18n
description: Hugo supports the creation of websites with multiple languages side by side.
date: 2017-01-10
publishdate: 2017-01-10
lastmod: 2017-01-10
categories: [content management]
#tags: [multilingual,i18n, internationalization]
menu:
docs:
parent: "content-management"
weight: 150
weight: 150 #rem
draft: false
aliases: [/content/multilingual/,/content-management/multilingual/]
toc: true
---
You should define the available languages in a `Languages` section in your site configuration.
## Configure Languages
The following is an example of a TOML site configuration for a multilingual Hugo project:
{{% code file="config.toml" download="config.toml" %}}
```toml
DefaultContentLanguage = "en"
copyright = "Everything is mine"
[params.navigation]
help = "Help"
[Languages]
[Languages.en]
title = "My blog"
weight = 1
[Languages.en.params]
linkedin = "english-link"
[Languages.fr]
copyright = "Tout est à moi"
title = "Mon blog"
weight = 2
[Languages.fr.params]
linkedin = "lien-francais"
[Languages.fr.navigation]
help = "Aide"
```
{{% /code %}}
Anything not defined in a `[Languages]` block will fall back to the global
value for that key (e.g., `copyright` for the English [`en`] language).
With the configuration above, all content, sitemap, RSS feeds, paginations,
and taxonomy pages will be rendered below `/` in English (your default content language) and then below `/fr` in French.
When working with front matter `Params` in [single page templates][singles], 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`.
Only the obvious non-global options can be overridden per language. Examples of global options are `baseURL`, `buildDrafts`, etc.
## Taxonomies and Blackfriday
Taxonomies and [Blackfriday configuration][config] can also be set per language:
{{% code file="bf-config.toml" %}}
```toml
[Taxonomies]
tag = "tags"
[blackfriday]
angledQuotes = true
hrefTargetBlank = true
[Languages]
[Languages.en]
weight = 1
title = "English"
[Languages.en.blackfriday]
angledQuotes = false
[Languages.fr]
weight = 2
title = "Français"
[Languages.fr.Taxonomies]
plaque = "plaques"
```
{{% /code %}}
## Translate Your Content
Translated articles are identified by the name of the content file.
### Examples of Translated Articles
1. `/content/about.en.md`
2. `/content/about.fr.md`
In this eample, the `about.md` will be assigned the configured `defaultContentLanguage`.
1. `/content/about.md`
2. `/content/about.fr.md`
This way, you can slowly start to translate your current content without having to rename everything. If left unspecified, the default value for `defaultContentLanguage` is `en`.
By having the same *base filename*, the content pieces are linked together as translated pieces.
If you need distinct URLs per language, you can set the slug in the non-default language file. For example, you can define a custom slug for a French translation in the front matter of `content/about.fr.md` as follows:
```yaml
slug: "a-propos"
```
At render, Hugo will build both `/about/` and `/a-propos/` as properly linked translated pages.
{{%note %}}
Hugo currently uses the base filename as the translation key, which can be an issue with identical filenames in different sections.
We will fix this in https://github.com/gohugoio/hugo/issues/2699
{{% /note %}}
{{< todo >}}Rewrite/remove the above one issue is fixed.{{< /todo >}}
## Link to Translated Content
To create a list of links to translated content, use a template similar to the following:
{{% code file="layouts/partials/i18nlist.html" %}}
```html
{{ if .IsTranslated }}
<h4>{{ i18n "translations" }}</h4>
<ul>
{{ range .Translations }}
<li>
<a href="{{ .Permalink }}">{{ .Lang }}: {{ .Title }}{{ if .IsPage }} ({{ i18n "wordCount" . }}){{ end }}</a>
</li>
{{ end}}
</ul>
{{ end }}
```
{{% /code %}}
The above can be put in a `partial` (i.e., inside `layouts/partials/`) and included in any template, be it for a [single content page][contenttemplate] or the [homepage][]. It will not print anything if there are no translations for a given page, or if there are translations---in the case of the homepage, section listing, etc.---a site with only render one language.
The above also uses the [`i18n` function][i18func] described in the next section.
## Translation of Strings
Hugo uses [go-i18n][] to support string translations. [See the project's source repository][go-i18n-source] to find tools that will help you manage your translation workflows.
Translations are collected from the `themes/<THEME>/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.toml`, `fr.toml`, etc.
From within your templates, use the `i18n` function like this:
```
{{ i18n "home" }}
```
This uses a definition like this one in `i18n/en-US.toml`:
```
[home]
other = "Home"
```
Often you will want to use to the page variables in the translations strings. To do that, pass on the "." context when calling `i18n`:
```
{{ i18n "wordCount" . }}
```
This uses a definition like this one in `i18n/en-US.toml`:
```
[wordCount]
other = "This article has {{ .WordCount }} words."
```
An example of singular and plural form:
```
[readingTime]
one = "One minute read"
other = "{{.Count}} minutes read"
```
And then in the template:
```
{{ i18n "readingTime" .ReadingTime }}
```
To track down missing translation strings, run Hugo with the `--i18n-warnings` flag:
```bash
hugo --i18n-warnings | grep i18n
i18n|MISSING_TRANSLATION|en|wordCount
```
## Customize Dates
At the time of this writing, Golang does not yet have support for internationalized locales, but if you do some work, you can simulate it. For example, if you want to use French month names, you can add a data file like ``data/mois.yaml`` with this content:
~~~yaml
1: "janvier"
2: "février"
3: "mars"
4: "avril"
5: "mai"
6: "juin"
7: "juillet"
8: "août"
9: "septembre"
10: "octobre"
11: "novembre"
12: "décembre"
~~~
... then index the non-English date names in your templates like so:
~~~html
<time class="post-date" datetime="{{ .Date.Format "2006-01-02T15:04:05Z07:00" | safeHTML }}">
Article publié le {{ .Date.Day }} {{ index $.Site.Data.mois (printf "%d" .Date.Month) }} {{ .Date.Year }} (dernière modification le {{ .Lastmod.Day }} {{ index $.Site.Data.mois (printf "%d" .Lastmod.Month) }} {{ .Lastmod.Year }})
</time>
~~~
This technique extracts the day, month and year by specifying ``.Date.Day``, ``.Date.Month``, and ``.Date.Year``, and uses the month number as a key, when indexing the month name data file.
## Menus
You can define your menus for each language independently. The [creation of a menu][menus] works analogous to earlier versions of Hugo, except that they have to be defined in their language-specific block in the configuration file:
```toml
defaultContentLanguage = "en"
[languages.en]
weight = 0
languageName = "English"
[[languages.en.menu.main]]
url = "/"
name = "Home"
weight = 0
[languages.de]
weight = 10
languageName = "Deutsch"
[[languages.de.menu.main]]
url = "/"
name = "Startseite"
weight = 0
```
The rendering of the main navigation works as usual. `.Site.Menus` will just contain the menu of the current language. Pay attention to the generation of the menu links. `absLangURL` takes care that you link to the correct locale of your website. Otherwise, both menu entries would link to the English version as the default content language that resides in the root directory.
```html
<ul>
{{- $currentPage := . -}}
{{ range .Site.Menus.main -}}
<li class="{{ if $currentPage.IsMenuCurrent "main" . }}active{{ end }}">
<a href="{{ .URL | absLangURL }}">{{ .Name }}</a>
</li>
{{- end }}
</ul>
```
## 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 website, it can be handy to have a visual indicator of missing translations. The [`enableMissingTranslationPlaceholders` configuration option][config] will flag all untranslated strings with the placeholder `[i18n] identifier`, where `identifier` is the id of the missing translation.
{{% note %}}
Hugo will generate your website with these missing translation placeholders. It might not be suited for production environments.
{{% /note %}}
## Multilingual Themes support
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 meet the following criteria:
* Come from the built-in `.Permalink` or `.URL`
* Be constructed with
* The [`relLangURL` template function][rellangurl] or the [`absLangURL` template function][abslangurl] **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.
[abslangurl]: /functions/abslangurl
[config]: /getting-started/configuration/
[contenttemplate]: /templates/single-page-templates/
[go-i18n-source]: https://github.com/nicksnyder/go-i18n
[go-i18n]: https://github.com/nicksnyder/go-i18n
[homepage]: /templates/homepage/
[i18func]: /functions/i18n/
[menus]: /content-management/menus/
[rellangurl]: /functions/rellangurl
[RFC 5646]: https://tools.ietf.org/html/rfc5646
[singles]: /templates/single-page-templates/

View file

@ -0,0 +1,247 @@
---
title: Content Organization
linktitle: Organization
description: Hugo assumes that the same structure that works to organize your source content is used to organize the rendered site.
date: 2017-02-01
publishdate: 2017-02-01
lastmod: 2017-02-01
categories: [content management,fundamentals]
#tags: [sections,content,organization]
menu:
docs:
parent: "content-management"
weight: 10
weight: 10 #rem
draft: false
aliases: [/content/sections/]
toc: true
---
{{% note %}}
This section is not updated with the new nested sections support in Hugo 0.24, see https://github.com/gohugoio/hugoDocs/issues/36
{{% /note %}}
{{% todo %}}
See above
{{% /todo %}}
## Organization of Content Source
In Hugo, your content should be organized in a manner that reflects the rendered website.
While Hugo supports content nested at any level, the top levels (i.e. `content/<DIRECTORIES>`) are special in Hugo and are considered the content [sections][]. Without any additional configuration, the following will just work:
```
.
└── content
└── about
| └── _index.md // <- http://yoursite.com/about/
├── post
| ├── firstpost.md // <- http://yoursite.com/post/firstpost/
| ├── happy
| | └── ness.md // <- http://yoursite.com/post/happy/ness/
| └── secondpost.md // <- http://yoursite.com/post/secondpost/
└── quote
├── first.md // <- http://yoursite.com/quote/first/
└── second.md // <- http://yoursite.com/quote/second/
```
## Path Breakdown in Hugo
The following demonstrates the relationships between your content organization and the output URL structure for your Hugo website when it renders. These examples assume you are [using pretty URLs][pretty], which is the default behavior for Hugo. The examples also assume a key-value of `baseurl = "http://yoursite.com"` in your [site's configuration file][config].
### Index Pages: `_index.md`
`_index.md` has a special role in Hugo. It allows you to add front matter and content to your [list templates][lists] as of v0.18. These templates include those for [section templates][], [taxonomy templates][], [taxonomy terms templates][], and your [homepage template][]. In your templates, you can grab information from `_index.md` using the [`.Site.GetPage` function][getpage].
You can keep one `_index.md` for your homepage and one in each of your content sections, taxonomies, and taxonomy terms. The following shows typical placement of an `_index.md` that would contain content and front matter for a `posts` section list page on a Hugo website:
```bash
. url
. ⊢--^-⊣
. path slug
. ⊢--^-⊣⊢---^---⊣
. filepath
. ⊢------^------⊣
content/posts/_index.md
```
At build, this will output to the following destination with the associated values:
```bash
url ("/posts/")
⊢-^-⊣
baseurl section ("posts")
⊢--------^---------⊣⊢-^-⊣
permalink
⊢----------^-------------⊣
http://yoursite.com/posts/index.html
```
### Single Pages in Sections
Single content files in each of your sections are going to be rendered as [single page templates][singles]. Here is an example of a single `post` within `posts`:
```bash
path ("posts/my-first-hugo-post.md")
. ⊢-----------^------------⊣
. section slug
. ⊢-^-⊣⊢--------^----------⊣
content/posts/my-first-hugo-post.md
```
At the time Hugo builds your site, the content will be output to the following destination:
```bash
url ("/posts/my-first-hugo-post/")
⊢------------^----------⊣
baseurl section slug
⊢--------^--------⊣⊢-^--⊣⊢-------^---------⊣
permalink
⊢--------------------^---------------------⊣
http://yoursite.com/posts/my-first-hugo-post/index.html
```
### Section with Nested Directories
To continue the example, the following demonstrates destination paths for a file located at `content/events/chicago/lollapalooza.md` in the same site:
```bash
section
⊢--^--⊣
url
⊢-------------^------------⊣
baseURL path slug
⊢--------^--------⊣ ⊢------^-----⊣⊢----^------⊣
permalink
⊢----------------------^-----------------------⊣
http://yoursite.com/events/chicago/lollapalooza/
```
{{% note %}}
As of v0.20, Hugo does not recognize nested sections. While you can nest as many content *directories* as you'd like, any child directory of a section will still be considered the same section as that of its parents. Therefore, in the above example, `{{.Section}}` for `lollapalooza.md` is `events` and *not* `chicago`. See the [related issue on GitHub](https://github.com/gohugoio/hugo/issues/465).
{{% /note %}}
## Paths Explained
The following concepts will provide more insight into the relationship between your project's organization and the default behaviors of Hugo when building the output website.
### `section`
A default content type is determined by a piece of content's section. `section` is determined by the location within the project's `content` directory. `section` *cannot* be specified or overridden in front matter.
### `slug`
A content's `slug` is either `name.extension` or `name/`. The value for `slug` is determined by
* the name of the content file (e.g., `lollapalooza.md`) OR
* front matter overrides
### `path`
A content's `path` is determined by the section's path to the file. The file `path`
* is based on the path to the content's location AND
* does not include the slug
### `url`
The `url` is the relative URL for the piece of content. The `url`
* is based on the content's location within the directory structure OR
* is defined in front matter and *overrides all the above*
## Override Destination Paths via Front Matter
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. As displayed above, the organization of the source content will be mirrored in the destination.
There are times where you may need more control over your content. In these cases, there are fields that can be specified in the front matter to determine the destination of a specific piece of content.
The following items are defined in this order for a specific reason: items explained further down in the list will override earlier items, and not all of these items can be defined in front matter:
### `filename`
This isn't in the front matter, but is the actual name of the file minus the extension. This will be the name of the file in the destination (e.g., `content/posts/my-post.md` becomes `yoursite.com/posts/my-post/`).
### `slug`
When defined in the front matter, the `slug` can take the place of the filename for the destination.
{{% code file="content/posts/old-post.md" %}}
```yaml
---
title: New Post
slug: "new-post"
---
```
{{% /code %}}
This will render to the following destination according to Hugo's default behavior:
```
yoursite.com/posts/new-post/
```
### `section`
`section` is determined by a content's location on disk and *cannot* be specified in the front matter. See [sections][] for more information.
### `type`
A content's `type` is also determined by its location on disk but, unlike `section`, it *can* be specified in the front matter. See [types][]. This can come in especially handy when you want a piece of content to render using a different layout. In the following example, you can create a layout at `layouts/new/mylayout.html` that Hugo will use to render this piece of content, even in the midst of many other posts.
{{% code file="content/posts/my-post.md" %}}
```yaml
---
title: My Post
type: new
layout: mylayout
---
```
{{% /code %}}
<!-- See https://discourse.gohugo.io/t/path-not-works/6387 -->
<!-- ### `path`
`path` can be provided in the front matter. This will replace the actual path to the file on disk. Destination will create the destination with the same path, including the section. -->
### `url`
A complete URL can be provided. This will override all the above as it pertains to the end destination. This must be the path from the baseURL (starting with a `/`). `url` will be used exactly as it provided in the front matter and will ignore the `--uglyURLs` setting in your site configuration:
{{% code file="content/posts/old-url.md" %}}
```yaml
---
title: Old URL
url: /blog/new-url/
---
```
{{% /code %}}
Assuming your `baseURL` is [configured][config] to `https://yoursite.com`, the addition of `url` to the front matter will make `old-url.md` render to the following destination:
```
https://yoursite.com/blog/new-url/
```
You can see more information on how to control output paths in [URL Management][urls].
[config]: /getting-started/configuration/
[formats]: /content-management/formats/
[front matter]: /content-management/front-matter/
[getpage]: /functions/getpage/
[homepage template]: /templates/homepage/
[homepage]: /templates/homepage/
[lists]: /templates/lists/
[pretty]: /content-management/urls/#pretty-urls
[section templates]: /templates/section-templates/
[sections]: /content-management/sections/
[singles]: /templates/single-page-templates/
[taxonomy templates]: /templates/taxonomy-templates/
[taxonomy terms templates]: /templates/taxonomy-templates/
[types]: /content-management/types/
[urls]: /content-management/urls/

View file

@ -0,0 +1,73 @@
---
title: Content Sections
linktitle: Sections
description: Hugo supports content sections, which according to Hugo's default behavior, will reflect the structure of the rendered website.
date: 2017-02-01
publishdate: 2017-02-01
lastmod: 2017-02-01
categories: [content management]
#tags: [lists,sections,content types,organization]
menu:
docs:
parent: "content-management"
weight: 50
weight: 50 #rem
draft: false
aliases: [/content/sections/]
toc: true
---
{{% note %}}
This section is not updated with the new nested sections support in Hugo 0.24, see https://github.com/gohugoio/hugoDocs/issues/36
{{% /note %}}
{{% todo %}}
See above
{{% /todo %}}
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**.
The following example shows a content directory structure for a website that has three sections: "authors," "events," and "posts":
```bash
.
└── content
├── authors
| ├── _index.md // <- yoursite.com/authors/
| ├── john-doe.md // <- yoursite.com/authors/john-doe/
| └── jane-doe.md // <- yoursite.com/authors/jane-doe/
└── events
| ├── _index.md // <- yoursite.com/events/
| ├── event-1.md // <- yoursite.com/events/event-1/
| ├── event-2.md // <- yoursite.com/events/event-2/
| └── event-3.md // <- yoursite.com/events/event-3/
└── posts
| ├── _index.md // <- yoursite.com/posts/
| ├── event-1.md // <- yoursite.com/posts/event-1/
| ├── event-2.md // <- yoursite.com/posts/event-2/
| ├── event-3.md // <- yoursite.com/posts/event-3/
| ├── event-4.md // <- yoursite.com/posts/event-4/
| └── event-5.md // <- yoursite.com/posts/event-5/
```
## Content Section Lists
Hugo will automatically create pages for each section root that list all of the content in that section. See the documentation on [section templates][] for details on customizing the way these pages are rendered.
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`(i.e., without the leading underscore [`_`]) 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 content for your section index pages. **Note:** `_index.md`'s layout, as representative of a section, is a [list page template](/templates/section-templates/) and *not* a [single page template](/templates/single-page-templates/). If you want to alter the new default behavior for `_index.md`, configure `disableKinds` accordingly in your [site's configuration](/getting-started/configuration/).
{{% /warning %}}
## Content *Section* vs Content *Type*
By default, everything created within a section will use the [content type][] that matches the section name. For example, Hugo will assume that `posts/post-1.md` has a `posts` content type. If you are using an [archetype][] for your posts section, Hugo will generate front matter according to what it finds in `archetypes/posts.md`.
[archetype]: /content-management/archetypes/
[content type]: /content-management/types/
[directory structure]: /getting-started/directory-structure/
[section templates]: /templates/section-templates/

View file

@ -0,0 +1,431 @@
---
title: Shortcodes
linktitle:
description: Shortcodes are simple snippets inside your content files calling built-in or custom templates.
godocref:
date: 2017-02-01
publishdate: 2017-02-01
lastmod: 2017-03-31
menu:
docs:
parent: "content-management"
weight: 35
weight: 35 #rem
categories: [content management]
#tags: [markdown,content,shortcodes]
draft: false
aliases: [/extras/shortcodes/]
toc: true
---
## What a Shortcode is
Hugo loves Markdown because of its simple content format, but there are times when Markdown falls short. Often, content authors are forced to add raw HTML (e.g., video `<iframes>`) to Markdown content. We think this contradicts the beautiful simplicity of Markdown's syntax.
Hugo created **shortcodes** to circumvent these limitations.
A shortcode is a simple snippet inside a content file that Hugo will render using a predefined template. Note that shortcodes will not work in template files. If you need the type of drop-in functionality that shortcodes provide but in a template, you most likely want a [partial template][partials] instead.
In addition to cleaner Markdown, shortcodes can be updated any time to reflect new classes, techniques, or standards. At the point of site generation, Hugo shortcodes will easily merge in your changes. You avoid a possibly complicated search and replace operation.
## Use Shortcodes
In your content files, a shortcode can be called by calling `{{%/* shortcodename parameters */%}}`. Shortcode parameters are space delimited, and parameters with internal spaces can be quoted.
The first word in the shortcode declaration is always the name of the shortcode. Parameters follow the name. Depending upon how the shortcode is defined, the parameters may be named, positional, or both, although you can't mix parameter types in a single call. The format for named parameters models that of HTML with the format `name="value"`.
Some shortcodes use or require closing shortcodes. Again like HTML, the opening and closing shortcodes match (name only) with the closing declaration, which is prepended with a slash.
Here are two examples of paired shortcodes:
```md
{{%/* mdshortcode */%}}Stuff to `process` in the *center*.{{%/* /mdshortcode */%}}
```
```md
{{</* highlight go */>}} A bunch of code here {{</* /highlight */>}}
```
The examples above use two different delimiters, the difference being the `%` character in the first and the `<>` characters in the second.
### Shortcodes with Markdown
The `%` character indicates that the shortcode's inner content---called in the [shortcode template][sctemps] with the [`.Inner` variable][scvars]---needs further processing by the page's rendering processor (i.e. markdown via Blackfriday). In the following example, Blackfriday would convert `**World**` to `<strong>World</strong>`:
```md
{{%/* myshortcode */%}}Hello **World!**{{%/* /myshortcode */%}}
```
### Shortcodes Without Markdown
The `<` character indicates that the shortcode's inner content does *not* need further rendering. Often shortcodes without markdown include internal HTML:
```md
{{</* myshortcode */>}}<p>Hello <strong>World!</strong></p>{{</* /myshortcode */>}}
```
### Nested Shortcodes
You can call shortcodes within other shortcodes by creating your own templates that leverage the `.Parent` variable. `.Parent` allows you to check the context in which the shortcode is being called. See [Shortcode templates][sctemps].
## Use Hugo's Built-in Shortcodes
Hugo ships with a set of predefined shortcodes that represent very common usage. These shortcodes are provided for author convenience and to keep your markdown content clean.
### `figure`
`figure` is an extension of the image syntax in markdown, which does not provide a shorthand for the more semantic [HTML5 `<figure>` element][figureelement].
The `figure` shortcode can use the following named parameters:
* `src`
* `link`
* `title`
* `caption`
* `class`
* `attr` (i.e., attribution)
* `attrlink`
* `alt`
#### Example `figure` Input
{{% code file="figure-input-example.md" %}}
```markdown
{{</* figure src="/media/spf13.jpg" title="Steve Francia" */>}}
```
{{% /code %}}
#### Example `figure` Output
{{% output file="figure-output-example.html" %}}
```html
<figure>
<img src="/media/spf13.jpg" />
<figcaption>
<h4>Steve Francia</h4>
</figcaption>
</figure>
```
{{% /output %}}
### `gist`
Bloggers often want to include GitHub gists when writing posts. Let's suppose we want to use the [gist at the following url][examplegist]:
```html
https://gist.github.com/spf13/7896402
```
We can embed the gist in our content via username and gist ID pulled from the URL:
```md
{{</* gist spf13 7896402 */>}}
```
#### Example `gist` Input
If the gist contains several files and you want to quote just one of them, you can pass the filename (quoted) as an optional third argument:
{{% code file="gist-input.md" %}}
```md
{{</* gist spf13 7896402 "img.html" */>}}
```
{{% /code %}}
#### Example `gist` Output
{{% output file="gist-output.html" %}}
```html
{{< gist spf13 7896402 >}}
```
{{% /output %}}
#### Example `gist` Display
To demonstrate the remarkably efficiency of Hugo's shortcode feature, we have embedded the `spf13` `gist` example in this page. The following simulates the experience for visitors to your website. Naturally, the final display will be contingent on your stylesheets and surrounding markup.
{{< gist spf13 7896402 >}}
### `highlight`
This shortcode will convert the source code provided into syntax-highlighted HTML. Read more on [highlighting](/tools/syntax-highlighting/). `highlight` takes exactly one required `language` parameter and requires a closing shortcode.
#### Example `highlight` Input
{{% code file="content/tutorials/learn-html.md" %}}
```html
{{</* highlight html */>}}
<section id="main">
<div>
<h1 id="title">{{ .Title }}</h1>
{{ range .Data.Pages }}
{{ .Render "summary"}}
{{ end }}
</div>
</section>
{{</* /highlight */>}}
```
{{% /code %}}
#### Example `highlight` Output
The `highlight` shortcode example above would produce the following HTML when the site is rendered:
{{% output file="tutorials/learn-html/index.html" %}}
```html
<span style="color: #f92672">&lt;section</span> <span style="color: #a6e22e">id=</span><span style="color: #e6db74">&quot;main&quot;</span><span style="color: #f92672">&gt;</span>
<span style="color: #f92672">&lt;div&gt;</span>
<span style="color: #f92672">&lt;h1</span> <span style="color: #a6e22e">id=</span><span style="color: #e6db74">&quot;title&quot;</span><span style="color: #f92672">&gt;</span>{{ .Title }}<span style="color: #f92672">&lt;/h1&gt;</span>
{{ range .Data.Pages }}
{{ .Render &quot;summary&quot;}}
{{ end }}
<span style="color: #f92672">&lt;/div&gt;</span>
<span style="color: #f92672">&lt;/section&gt;</span>
```
{{% /output %}}
{{% note "More on Syntax Highlighting" %}}
To see even more options for adding syntax-highlighted code blocks to your website, see [Syntax Highlighting in Developer Tools](/tools/syntax-highlighting/).
{{% /note %}}
### `instagram`
If you'd like to embed a photo from [Instagram][], you only need the photo's ID. You can discern an Instagram photo ID from the URL:
```html
https://www.instagram.com/p/BWNjjyYFxVx/
```
#### Example `instagram` Input
{{% code file="instagram-input.md" %}}
```md
{{</* instagram BWNjjyYFxVx */>}}
```
{{% /code %}}
You also have the option to hide the caption:
{{% code file="instagram-input-hide-caption.md" %}}
```md
{{</* instagram BWNjjyYFxVx hidecaption */>}}
```
{{% /code %}}
#### Example `instagram` Output
By adding the preceding `hidecaption` example, the following HTML will be added to your rendered website's markup:
{{% output file="instagram-hide-caption-output.html" %}}
```html
{{< instagram BWNjjyYFxVx hidecaption >}}
```
{{% /output %}}
#### Example `instagram` Display
Using the preceding `instagram` with hidecaption` example above, the following simulates the displayed experience for visitors to your website. Naturally, the final display will be contingent on your stylesheets and surrounding markup.
{{< instagram BWNjjyYFxVx hidecaption >}}
### `ref` and `relref`
These shortcodes will look up the pages by their relative path (e.g., `blog/post.md`) or their logical name (`post.md`) and return the permalink (`ref`) or relative permalink (`relref`) for the found page.
`ref` and `relref` also make it possible to make fragmentary links that work for the header links generated by Hugo.
{{% note "More on Cross References" %}}
Read a more extensive description of `ref` and `relref` in the [cross references](/content-management/cross-references/) documentation.
{{% /note %}}
`ref` and `relref` take exactly one required parameter of _reference_, quoted and in position `0`.
#### Example `ref` and `relref` Input
```md
[Neat]({{</* ref "blog/neat.md" */>}})
[Who]({{</* relref "about.md#who" */>}})
```
#### Example `ref` and `relref` Output
Assuming that standard Hugo pretty URLs are turned on.
```html
<a href="/blog/neat">Neat</a>
<a href="/about/#who:c28654c202e73453784cfd2c5ab356c0">Who</a>
```
### `speakerdeck`
To embed slides from [Speaker Deck][], click on "&lt;&#8239;/&gt;&nbsp;Embed" (under Share right next to the template on Speaker Deck) and copy the URL:
```html
<script async class="speakerdeck-embed" data-id="4e8126e72d853c0060001f97" data-ratio="1.33333333333333" src="//speakerdeck.com/assets/embed.js"></script>
```
#### `speakerdeck` Example Input
Extract the value from the field `data-id` and pass it to the shortcode:
{{% code file="speakerdeck-example-input.md" %}}
```md
{{</* speakerdeck 4e8126e72d853c0060001f97 */>}}
```
{{% /code %}}
#### `speakerdeck` Example Output
{{% output file="speakerdeck-example-input.md" %}}
```html
{{< speakerdeck 4e8126e72d853c0060001f97 >}}
```
{{% /output %}}
#### `speakerdeck` Example Display
For the preceding `speakerdeck` example, the following simulates the displayed experience for visitors to your website. Naturally, the final display will be contingent on your stylesheets and surrounding markup.
{{< speakerdeck 4e8126e72d853c0060001f97 >}}
### `tweet`
You want to include a single tweet into your blog post? Everything you need is the URL of the tweet:
```
https://twitter.com/spf13/status/877500564405444608
```
#### Example `tweet` Input
Pass the tweet's ID from the URL as a parameter to the `tweet` shortcode:
{{% code file="example-tweet-input.md" %}}
```md
{{</* tweet 877500564405444608 */>}}
```
{{% /code %}}
#### Example `tweet` Output
Using the preceding `tweet` example, the following HTML will be added to your rendered website's markup:
{{% output file="example-tweet-output.html" %}}
```html
{{< tweet 877500564405444608 >}}
```
{{% /output %}}
#### Example `tweet` Display
Using the preceding `tweet` example, the following simulates the displayed experience for visitors to your website. Naturally, the final display will be contingent on your stylesheets and surrounding markup.
{{< tweet 877500564405444608 >}}
### `vimeo`
Adding a video from [Vimeo][] is equivalent to the YouTube shortcode above.
```
https://vimeo.com/channels/staffpicks/146022717
```
#### Example `vimeo` Input
Extract the ID from the video's URL and pass it to the `vimeo` shortcode:
{{% code file="example-vimeo-input.md" %}}
```md
{{</* vimeo 146022717 */>}}
```
{{% /code %}}
#### Example `vimeo` Output
Using the preceding `vimeo` example, the following HTML will be added to your rendered website's markup:
{{% output file="example-vimeo-output.html" %}}
```html
{{< vimeo 146022717 >}}
```
{{% /output %}}
{{% tip %}}
If you want to further customize the visual styling of the YouTube or Vimeo output, add a `class` named parameter when calling the shortcode. The new `class` will be added to the `<div>` that wraps the `<iframe>` *and* will remove the inline styles. Note that you will need to call the `id` as a named parameter as well.
```md
{{</* vimeo id="146022717" class="my-vimeo-wrapper-class" */>}}
```
{{% /tip %}}
#### Example `vimeo` Display
Using the preceding `vimeo` example, the following simulates the displayed experience for visitors to your website. Naturally, the final display will be contingent on your stylesheets and surrounding markup.
{{< vimeo 146022717 >}}
### `youtube`
The `youtube` shortcode embeds a responsive video player for [YouTube videos][]. Only the ID of the video is required, e.g.:
```
https://www.youtube.com/watch?v=w7Ft2ymGmfc
```
#### Example `youtube` Input
Copy the YouTube video ID that follows `v=` in the video's URL and pass it to the `youtube` shortcode:
{{% code file="example-youtube-input.md" %}}
```md
{{</* youtube w7Ft2ymGmfc */>}}
```
{{% /code %}}
Furthermore, you can automatically start playback of the embedded video by setting the `autoplay` parameter to `true`. Remember that you can't mix named an unnamed parameters, so you'll need to assign the yet unnamed video id to the parameter `id`:
{{% code file="example-youtube-input-with-autoplay.md" %}}
```md
{{</* youtube id="w7Ft2ymGmfc" autoplay="true" */>}}
```
{{% /code %}}
#### Example `youtube` Output
Using the preceding `youtube` example, the following HTML will be added to your rendered website's markup:
{{% code file="example-youtube-output.html" %}}
```html
{{< youtube id="w7Ft2ymGmfc" autoplay="true" >}}
```
{{% /code %}}
#### Example `youtube` Display
Using the preceding `youtube` example (without `autoplay="true"`), the following simulates the displayed experience for visitors to your website. Naturally, the final display will be contingent on your stylesheets and surrounding markup. The video is also include in the [Quick Start of the Hugo documentation][quickstart].
{{< youtube w7Ft2ymGmfc >}}
## Create Custom Shortcodes
To learn more about creating custom shortcodes, see the [shortcode template documentation][].
[`figure` shortcode]: #figure
[contentmanagementsection]: /content-management/formats/
[examplegist]: https://gist.github.com/spf13/7896402
[figureelement]: http://html5doctor.com/the-figure-figcaption-elements/ "An article from HTML5 doctor discussing the fig and figcaption elements."
[Instagram]: https://www.instagram.com/
[pagevariables]: /variables/page/
[partials]: /templates/partials/
[Pygments]: http://pygments.org/
[quickstart]: /getting-started/quick-start/
[sctemps]: /templates/shortcode-templates/
[scvars]: /variables/shortcodes/
[shortcode template documentation]: /templates/shortcode-templates/
[Speaker Deck]: https://speakerdeck.com/
[templatessection]: /templates/
[Vimeo]: https://vimeo.com/
[YouTube Videos]: https://www.youtube.com/

View file

@ -0,0 +1,83 @@
---
title: Content Summaries
linktitle: Summaries
description: Hugo generates summaries of your content.
date: 2017-01-10
publishdate: 2017-01-10
lastmod: 2017-01-10
categories: [content management]
#tags: [summaries,abstracts,read more]
menu:
docs:
parent: "content-management"
weight: 90
weight: 90 #rem
draft: false
aliases: [/content/summaries/,/content-management/content-summaries/]
toc: true
---
With the use of the `.Summary` [page variable][pagevariables], Hugo generates summaries of content to use as a short version in summary views.
## Summary Splitting Options
* Hugo-defined Summary Split
* User-defined Summary Split
It is natural to accompany the summary with links to the original content, and a common design pattern is to see this link in the form of a "Read More ..." button. See the `.RelPermalink`, `.Permalink`, and `.Truncated` [page variables][pagevariables].
### 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 put into one paragraph.
{{% note %}}
The Hugo-defined summaries are set to use word count calculated by splitting the text by one or more consecutive white space characters. If you are creating content in a `CJK` language and want to use Hugo's automatic summary splitting, set `hasCJKLanguage` to `true` in you [site configuration](/getting-started/configuration/).
{{% /note %}}
### User-defined: Manual Summary Splitting
Alternatively, you may add the <code>&#60;&#33;&#45;&#45;more&#45;&#45;&#62;</code> summary divider where you want to split the article. For [org content][org], use `# more` 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>&#60;&#33;&#45;&#45;more&#45;&#45;&#62;</code> (or `# more` for [org content][org]) in each content file. This can be automated by adding the summary divider below the front matter of an [archetype](/content-management/archetypes/).
{{% warning "Be Precise with the Summary Divider" %}}
Be careful to enter <code>&#60;&#33;&#45;&#45;more&#45;&#45;&#62;</code> exactly; i.e., all lowercase and with no whitespace.
{{% /warning %}}
## Example: First 10 Articles with Summaries
You can show content summaries with the following code. You could use the following snippet, for example, in a [section template][].
{{% code file="page-list-with-summaries.html" %}}
```html
{{ range first 10 .Data.Pages }}
<article>
<!-- this <div> includes the title summary -->
<div>
<h2><a href="{{ .RelPermalink }}">{{ .Title }}</a></h2>
{{ .Summary }}
</div>
{{ if .Truncated }}
<!-- This <div> includes a read more link, but only if the summary is truncated... -->
<div>
<a href="{{ .RelPermalink }}">Read More…</a>
</div>
{{ end }}
</article>
{{ end }}
```
{{% /code %}}
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/formats/
[pagevariables]: /variables/page/
[section template]: /templates/section-templates/

View file

@ -0,0 +1,238 @@
---
title: Taxonomies
linktitle:
description: Hugo includes support for user-defined taxonomies to help you demonstrate logical relationships between content for the end users of your website.
date: 2017-02-01
publishdate: 2017-02-01
lastmod: 2017-02-01
#tags: [taxonomies,metadata,front matter,terms]
categories: [content management]
menu:
docs:
parent: "content-management"
weight: 80
weight: 80 #rem
draft: false
aliases: [/taxonomies/overview/,/taxonomies/usage/,/indexes/overview/,/doc/indexes/,/extras/indexes]
toc: true
---
## What is a Taxonomy?
Hugo includes support for user-defined groupings of content called **taxonomies**. Taxonomies are classifications of logical relationships between content.
### Definitions
Taxonomy
: a categorization that can be used to classify content
Term
: a key within the taxonomy
Value
: a piece of content assigned to a term
## Example Taxonomy: Movie Website
Let's assume you are making a website about movies. You may want to include the following taxonomies:
* Actors
* Directors
* Studios
* Genre
* Year
* Awards
Then, in each of the movies, you would specify terms for each of these taxonomies (i.e., in the [front matter][] of each of your movie content files). From these terms, Hugo would automatically create pages for each Actor, Director, Studio, Genre, Year, and Award, with each listing all of the Movies that matched that specific Actor, Director, Studio, Genre, Year, and Award.
### Movie Taxonomy Organization
To continue with the example of a movie site, the following demonstrates content relationships from the perspective of the taxonomy:
```
Actor <- Taxonomy
Bruce Willis <- Term
The Six Sense <- Content
Unbreakable <- Content
Moonrise Kingdom <- Content
Samuel L. Jackson <- Term
Unbreakable <- Content
The Avengers <- Content
xXx <- Content
```
From the perspective of the content, the relationships would appear differently, although the data and labels used are the same:
```
Unbreakable <- Content
Actors <- Taxonomy
Bruce Willis <- Term
Samuel L. Jackson <- Term
Director <- Taxonomy
M. Night Shyamalan <- Term
...
Moonrise Kingdom <- Content
Actors <- Taxonomy
Bruce Willis <- Term
Bill Murray <- Term
Director <- Taxonomy
Wes Anderson <- Term
...
```
## Hugo Taxonomy Defaults
Hugo natively supports taxonomies.
Without adding a single line to your site's configuration file, Hugo will automatically create taxonomies for `tags` and `categories`. If you do not want Hugo to create any taxonomies, set `disableKinds` in your site's configuration to the following:
```toml
disableKinds = ["taxonomy","taxonomyTerm"]
```
### Default Destinations
When taxonomies are used---and [taxonomy templates][] are provided---Hugo will automatically create both a page listing all the taxonomy's terms and individual pages with lists of content associated with each term. For example, a `categories` taxonomy declared in your your configuration and used in your content front matter will create the following pages:
* A single page at `yoursite.com/categories/` that lists all the [terms within the taxonomy][]
* [Individual taxonomy list pages][taxonomy templates] (e.g., `/categories/development/`) for each of the terms that shows a listing of all pages marked as part of that taxonomy within any content file's [front matter][]
## Configure Taxonomies
Taxonomies must be defined in your [website configuration][config] before they can be used throughout the site. You need to provide both the plural and singular labels for each taxonomy. For example, `singular key = "plural value"` for TOML and `singular key: "plural value"` for YAML.
### Example: TOML Taxonomy Configuration
```toml
[taxonomies]
tag = "tags"
category = "categories"
series = "series"
```
### Example: YAML Taxonomy Configuration
```yaml
taxonomies:
tag: "tags"
category: "categories"
series: "series"
```
### Preserve Taxonomy Values
By default, taxonomy names are normalized.
Therefore, if you want to have a taxonomy term with special characters such as `Gérard Depardieu` instead of `Gerard Depardieu`, set the value for `preserveTaxonomyNames` to `true` in your [site configuration][config]. Hugo will then preserve special characters in taxonomy values but will still title-ize the values for titles and normalize them in URLs.
Note that if you use `preserveTaxonomyNames` and intend to manually construct URLs to the archive pages, you will need to pass the taxonomy values through the [`urlize` template function][].
{{% note %}}
You can add content and front matter to your taxonomy list and taxonomy terms pages. See [Content Organization](/content-management/organization/) for more information on how to add an `_index.md` for this purpose.
Note also that taxonomy [permalinks](/content-management/urls/) are *not* configurable.
{{% /note %}}
## Add Taxonomies to Content
Once a taxonomy is defined at the site level, any piece of content can be assigned to it, regardless of [content type][] or [content section][].
Assigning content to a taxonomy is done in the [front matter][]. Simply create a variable with the *plural* name of the taxonomy and assign all terms you want to apply to the instance of the content type.
{{% note %}}
If you would like the ability to quickly generate content files with preconfigured taxonomies or terms, read the docs on [Hugo archetypes](/content-management/archetypes/).
{{% /note %}}
### Example: TOML Front Matter with Taxonomies
```toml
+++
title = "Hugo: A fast and flexible static site generator"
tags = [ "Development", "Go", "fast", "Blogging" ]
categories = [ "Development" ]
series = [ "Go Web Dev" ]
slug = "hugo"
project_url = "https://github.com/gohugoio/hugo"
+++
```
### Example: YAML Front Matter with Taxonomies
```yaml
---
title: "Hugo: A fast and flexible static site generator"
#tags: ["Development", "Go", "fast", "Blogging"]
categories: ["Development"]
categories: ["Go Web Dev"]
slug: "hugo"
project_url: "https://github.com/gohugoio/hugo"
---
```
### Example: JSON Front Matter with Taxonomies
```json
{
"title": "Hugo: A fast and flexible static site generator",
"tags": [
"Development",
"Go",
"fast",
"Blogging"
],
"categories" : [
"Development"
],
"series" : [
"Go Web Dev"
],
"slug": "hugo",
"project_url": "https://github.com/gohugoio/hugo"
}
```
## Order Taxonomies
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.
### Example: TOML Taxonomic `weight`
```toml
+++
title = "foo"
tags = [ "a", "b", "c" ]
tags_weight = 22
categories = ["d"]
categories_weight = 44
+++
```
### Example: YAML Taxonomic `weight`
```yaml
---
title: foo
#tags: [ "a", "b", "c" ]
tags_weight: 22
categories: ["d"]
categories_weight: 44
---
```
By using taxonomic weight, the same piece of content can appear in different positions in different taxonomies.
{{% note "Limits to Ordering Taxonomies" %}}
Currently taxonomies only support the [default `weight => date` ordering of list content](/templates/lists/#default-weight-date). For more information, see the documentation on [taxonomy templates](/templates/taxonomy-templates/).
{{% /note %}}
[`urlize` template function]: /functions/urlize/
[content section]: /content-management/sections/
[content type]: /content-management/types/
[documentation on archetypes]: /content-management/archetypes/
[front matter]: /content-management/front-matter/
[taxonomy list templates]: /templates/taxonomy-templates/#taxonomy-page-templates
[taxonomy templates]: /templates/taxonomy-templates/
[terms within the taxonomy]: /templates/taxonomy-templates/#taxonomy-terms-templates "See how to order terms associated with a taxonomy"
[config]: /getting-started/configuration/

View file

@ -0,0 +1,95 @@
---
title: Table of Contents
linktitle:
description: Hugo can automatically parse Markdown content and create a Table of Contents you can use in your templates.
date: 2017-02-01
publishdate: 2017-02-01
lastmod: 2017-02-01
categories: [content management]
#tags: [table of contents, toc]
menu:
docs:
parent: "content-management"
weight: 130
weight: 130 #rem
draft: false
aliases: [/extras/toc/,/content-management/toc/]
toc: true
---
{{% note "TOC Heading Levels are Fixed" %}}
Currently, the `{{.TableOfContents}}` [page variable](/variables/page/) does not allow you to specify which heading levels you want the TOC to render. [See the related GitHub discussion (#1778)](https://github.com/gohugoio/hugo/issues/1778). As such, the resulting `<nav id="TableOfContents"><ul></ul></nav>` is going to start at `<h1>` when pulling from `{{.Content}}`.
{{% /note %}}
## Usage
Create your markdown the way you normally would with the appropriate headings. Here is some example content:
```md
<!-- Your front matter up here -->
## Introduction
One morning, when Gregor Samsa woke from troubled dreams, he found himself transformed in his bed into a horrible vermin.
## My Heading
He lay on his armour-like back, and if he lifted his head a little he could see his brown belly, slightly domed and divided by arches into stiff sections. The bedding was hardly able to cover it and seemed ready to slide off any moment.
### My Subheading
A collection of textile samples lay spread out on the table - Samsa was a travelling salesman - and above it there hung a picture that he had recently cut out of an illustrated magazine and housed in a nice, gilded frame. It showed a lady fitted out with a fur hat and fur boa who sat upright, raising a heavy fur muff that covered the whole of her lower arm towards the viewer. Gregor then turned to look out the window at the dull weather. Drops
```
Hugo will take this Markdown and create a table of contents from `## Introduction`, `## My Heading`, and `### My Subheading` and then store it in the [page variable][pagevars]`.TableOfContents`.
The built-in `.TableOfContents` variables outputs a `<nav id="TableOfContents">` element with a child `<ul>`, whose child `<li>` elements begin with any `<h1>`'s (i.e., `#` in markdown) inside your content.'
## Template Example: Basic TOC
The following is an example of a very basic [single page template][]:
{{% code file="layout/_default/single.html" download="single.html" %}}
```html
{{ define "main" }}
<main>
<article>
<header>
<h1>{{ .Title }}</h1>
</header>
{{ .Content }}
</article>
<aside>
{{ .TableOfContents }}
</aside>
</main>
{{ end }}
```
{{% /code %}}
## Template Example: TOC Partial
The following is a [partial template][partials] that adds slightly more logic for page-level control over your table of contents. It assumes you are using a `toc` field in your content's [front matter][] that, unless specifically set to `false`, will add a TOC to any page with a `.WordCount` (see [Page Variables][pagevars]) greater than 400. This example also demonstrates how to use [conditionals][] in your templating:
{{% code file="layouts/partials/toc.html" download="toc.html" %}}
```html
{{ if and (gt .WordCount 400 ) (ne .Params.toc "false") }}
<aside>
<header>
<h2>{{.Title}}</h2>
</header>
{{.TableOfContents}}
</aside>
{{ end }}
```
{{% /code %}}
{{% note %}}
With the preceding example, even pages with > 400 words *and* `toc` not set to `false` will not render a table of contents if there are no headings in the page for the `{{.TableOfContents}}` variable to pull from.
{{% /note %}}
[conditionals]: /templates/introduction/#conditionals
[front matter]: /content-management/table-of-contents/
[pagevars]: /variables/page/
[partials]: /templates/partials/
[single page template]: /templates/single-page-templates/

View file

@ -0,0 +1,101 @@
---
title: Content Types
linktitle: Types
description: Hugo supports sites with multiple content types and assumes your site will be organized into sections, where each section represents the corresponding type.
date: 2017-02-01
publishdate: 2017-02-01
lastmod: 2017-02-01
categories: [content management]
#tags: [lists,sections,content types,types,organization]
menu:
docs:
parent: "content-management"
weight: 60
weight: 60 #rem
draft: false
aliases: [/content/types]
toc: true
---
A **content type** can have a unique set of metadata (i.e., [front matter][]) or customized [template][] and can be created by the `hugo new` command via [archetypes][].
## What is a Content Type
[Tumblr][] is a good example of a website with multiple content types. A piece of "content" could be a photo, quote, or a post, each with different sets of metadata and different visual rendering.
## Assign a Content Type
Hugo assumes that your site will be organized into [sections][] and each section represents a corresponding type. This is to reduce the amount of configuration necessary for new Hugo projects.
If you are taking advantage of this default behavior, each new piece of content you place into a section will automatically inherit the type. Therefore a new file created at `content/posts/new-post.md` will automatically be assigned the type `posts`. Alternatively, you can set the content type in a content file's [front matter][] in the field "`type`".
## Create New Content of a Specific Type
You can manually add files to your content directories, but Hugo can create and populate a new content file with preconfigured front matter via [archetypes][].
## Define a Content Type
Creating a new content type is easy. You simply define the templates and archetype unique to your new content type, or Hugo will use defaults.
{{% 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 assume the content type from the file path and section. (See [Content Sections](/content-management/sections/) for more information.)
{{% /note %}}
The following examples take you stepwise through creating a new type layout for a content file that contains the following front matter:
{{% code file="content/events/my-first-event.md" copy="false" %}}
```toml
+++
title = My First Event
date = "2016-06-24T19:20:04-07:00"
description = "Today is my 36th birthday. How time flies."
type = "event"
layout = "birthday"
+++
```
{{% /code %}}
By default, Hugo assumes `*.md` under `events` is of the `events` content type. However, we have specified that this particular file at `content/events/ my-first-event.md` is of type `event` and should render using the `birthday` layout.
### Create a Type Layout Directory
Create a directory with the name of the type in `/layouts`. For creating these custom layouts, **type is always singular**; e.g., `events => event` and `posts => post`.
For this example, you need to create `layouts/event/birthday.html`.
{{% note %}}
If you have multiple content files in your `events` directory that are of the `special` type and you don't want to define the `layout` specifically for each piece of content, you can create a layout at `layouts/special/single.html` to observe the [single page template lookup order](/templates/single-page-templates/).
{{% /note %}}
{{% warning %}}
With the "everything is a page" data model introduced in v0.18 (see [Content Organization](/content-management/organization/)), you can use `_index.md` in content directories to add both content and front matter to [list pages](/templates/lists/). However, `type` and `layout` declared in the front matter of `_index.md` are *not* currently respected at build time as of v0.19. This is a known issue [(#3005)](https://github.com/gohugoio/hugo/issues/3005).
{{% /warning %}}
### Create Views
Many sites support rendering content in a few different ways; e.g., a single page view and a summary view to be used when displaying a [list of section contents][sectiontemplates].
Hugo limits assumptions about how you want to display your content to an intuitive set of sane defaults 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.
### Custom Content Type Template Lookup Order
The lookup order for the `content/events/my-first-event.md` templates would be as follows:
* `layouts/event/birthday.html`
* `layouts/event/single.html`
* `layouts/events/single.html`
* `layouts/_default/single.html`
### Create a Corresponding Archetype
We can then create a custom archetype with preconfigured front matter at `event.md` in the `/archetypes` directory; i.e. `archetypes/event.md`.
Read [Archetypes][archetypes] for more information on archetype usage with `hugo new`.
[archetypes]: /content-management/archetypes/
[front matter]: /content-management/front-matter/
[sectiontemplates]: /templates/section-templates/
[sections]: /content-management/sections/
[template]: /templates/
[Tumblr]: https://www.tumblr.com/

View file

@ -0,0 +1,285 @@
---
title: URL Management
linktitle: URL Management
description: Hugo supports permalinks, aliases, link canonicalization, and multiple options for handling relative vs absolute URLs.
date: 2017-02-01
publishdate: 2017-02-01
lastmod: 2017-03-09
#tags: [aliases,redirects,permalinks,urls]
categories: [content management]
menu:
docs:
parent: "content-management"
weight: 110
weight: 110 #rem
draft: false
aliases: [/extras/permalinks/,/extras/aliases/,/extras/urls/,/doc/redirects/,/doc/alias/,/doc/aliases/]
toc: true
---
## Permalinks
The default Hugo target directory for your built website is `public/`. However, you can change this value by specifying a different `publishDir` in your [site configuration][config]. The directories created at build time for a section reflect the position of the content's directory within the `content` folder and namespace matching its layout within the `contentdir` hierarchy.
The `permalinks` option in your [site configuration][config] allows you to adjust the directory paths (i.e., the URLs) on a per-section basis. This will change where the files are written to and will change the page's internal "canonical" location, such that template references to `.RelPermalink` will honor the adjustments made as a result of the mappings in this option.
{{% note "Default Publish and Content Folders" %}}
These examples use the default values for `publishDir` and `contentDir`; i.e., `publish` and `content`, respectively. You can override the default values in your [site's `config` file](/getting-started/configuration/).
{{% /note %}}
For example, if one of your [sections][] is called `post` and you want to adjust the canonical path to be hierarchical based on the year, month, and post title, you could set up the following configurations in YAML and TOML, respectively.
### YAML Permalinks Configuration Example
{{% code file="config.yml" copy="false" %}}
```yaml
permalinks:
post: /:year/:month/:title/
```
{{% /code %}}
### TOML Permalinks Configuration Example
{{% code file="config.toml" copy="false" %}}
```toml
[permalinks]
post = "/:year/:month/:title/"
```
{{% /code %}}
Only the content under `post/` will have the new URL structure. For example, the file `content/post/sample-entry.md` with `date: 2017-02-27T19:20:00-05:00` in its front matter will render to `public/2017/02/sample-entry/index.html` at build time and therefore be reachable at `http://yoursite.com/2013/11/sample-entry/`.
### Permalink Configuration Values
The following is a list of values that can be used in a `permalink` definition in your site `config` file. All references to time are dependent on the content's date.
`:year`
: the 4-digit year
`:month`
: the 2-digit month
`:monthname`
: the name of the month
`:day`
: the 2-digit day
`:weekday`
: the 1-digit day of the week (Sunday = 0)
`:weekdayname`
: the name of the day of the week
`:yearday`
: the 1- to 3-digit day of the year
`:section`
: the content's section
`:title`
: the content's title
`:slug`
: the content's slug (or title if no slug is provided in the front matter)
`:filename`
: the content's filename (without extension)
## 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: Aliases
Let's assume you create a new piece of content at `content/posts/my-awesome-blog-post.md`. The content is a revision of your previous post at `content/posts/my-original-url.md`. You can create an `aliases` field in the front matter of your new `my-awesome-blog-post.md` where you can add previous paths. The following examples show how to create this filed in TOML and YAML front matter, respectively.
#### TOML Front Matter
{{% code file="content/posts/my-awesome-post.md" copy="false" %}}
```toml
+++
aliases = [
"/posts/my-original-url/",
"/2010/01/01/even-earlier-url.html"
]
+++
```
{{% /code %}}
#### YAML Front Matter
{{% code file="content/posts/my-awesome-post.md" copy="false" %}}
```yaml
---
aliases:
- /posts/my-original-url/
- /2010/01/01/even-earlier-url.html
---
```
{{% /code %}}
Now when you visit any of the locations specified in aliases---i.e., *assuming the same site domain*---you'll be redirected to the page they are specified on. For example, a visitor to `yoursite.com/posts/my-original-url/` will be immediately redirected to `yoursite.com/posts/my-awesome-blog-post/`.
### Example: Aliases in Multilingual
On [multilingual sites][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 directory to match the alias entry. Inside the directory, Hugo creates an `.html` file specifying the canonical URL for the page and the new redirect target.
For example, a content file at `posts/my-intended-url.md` with the following in the front matter:
```yaml
---
title: My New post
aliases: [/posts/my-old-url/]
---
```
Assuming a `baseURL` of `yoursite.com`, the contents of the auto-generated alias `.html` found at `https://yoursite.com/posts/my-old-url/ will contain the following:`
```html
<!DOCTYPE html>
<html>
<head>
<title>http://yoursite.com/posts/my-intended-url</title>
<link rel="canonical" href="http://yoursite.com/posts/my-intended-url"/>
<meta name=\"robots\" content=\"noindex\">
<meta http-equiv="content-type" content="text/html; charset=utf-8"/>
<meta http-equiv="refresh" content="0; url=http://yoursite.com/posts/my-intended-url"/>
</head>
</html>
```
The `http-equiv="refresh"` line is what performs the redirect, in 0 seconds in this case. If an end user of your website goes to `https://yoursite.com/posts/my-old-url`, they will now be automatically redirected to the newer, correct URL. The addition of `<meta name=\"robots\" content=\"noindex\">` lets search engine bots know they they should not crawl and index your new alias page.
### Customize
You may customize this alias page by creating an `alias.html` template in the
layouts folder of your site (i.e., `layouts/alias.html`). 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
### Important Behaviors of Aliases
1. Hugo makes no assumptions about aliases. They also do not change based
on your UglyURLs setting. You need to provide absolute paths to your web root
and the complete filename or directory.
2. Aliases are rendered *before* any content are rendered and therefore will be overwritten by any content with the same location.
## Pretty URLs
Hugo's default behavior is to render your content with "pretty" URLs. No non-standard server-side configuration is required for these pretty URLs to work.
The following demonstrates the concept:
```bash
content/posts/_index.md
=> yoursite.com/posts/index.html
content/posts/post-1.md
=> yoursite.com/posts/post-1/
```
## Ugly URLs
If you would like to have are often referred to as "ugly URLs" (e.g., yoursite.com/urls.html), set `uglyurls = true` or `uglyurls: true` in your site's `config.toml` or `config.yaml`, respectively. You can also use the `--uglyURLs=true` [flag from the command line][usage] with `hugo` or `hugo server`..
If you want a specific piece of content to have an exact URL, you can specify this in the [front matter][] under the `url` key. The following are examples of the same content directory and what the eventual URL structure will be when Hugo runs with its default behavior.
See [Content Organization][contentorg] for more details on paths.
```bash
.
└── content
└── about
| └── _index.md // <- http://yoursite.com/about/
├── post
| ├── firstpost.md // <- http://yoursite.com/post/firstpost/
| ├── happy
| | └── ness.md // <- http://yoursite.com/post/happy/ness/
| └── secondpost.md // <- http://yoursite.com/post/secondpost/
└── quote
├── first.md // <- http://yoursite.com/quote/first/
└── second.md // <- http://yoursite.com/quote/second/
```
Here's the same organization run with `hugo --uglyURLs`:
```bash
.
└── content
└── about
| └── _index.md // <- http://yoursite.com/about/index.html
├── post
| ├── firstpost.md // <- http://yoursite.com/post/firstpost.html
| ├── happy
| | └── ness.md // <- http://yoursite.com/post/happy/ness.html
| └── secondpost.md // <- http://yoursite.com/post/secondpost.html
└── quote
├── first.md // <- http://yoursite.com/quote/first.html
└── second.md // <- http://yoursite.com/quote/second.html
```
## Canonicalization
By default, all relative URLs encountered in the input are left unmodified, e.g. `/css/foo.css` would stay as `/css/foo.css`. The `canonifyURLs` field in your site `config` has a default value of `false`.
By setting `canonifyURLs` to `true`, all relative URLs would instead be *canonicalized* using `baseURL`. For example, assuming you have `baseURL = https://yoursite.com/`, the relative URL `/css/foo.css` would be turned into the absolute URL `http://yoursite.com/css/foo.css`.
Benefits of canonicalization include fixing all URLs to be absolute, which may aid with some parsing tasks. Note, however, that all modern browsers handle this on the client without issue.
Benefits of non-canonicalization include being able to have scheme-relative resource inclusion; e.g., so that `http` vs `https` can be decided according to how the page was retrieved.
{{% note "`canonifyURLs` default change" %}}
In the May 2014 release of Hugo v0.11, the default value of `canonifyURLs` was switched from `true` to `false`, which we think is the better default and should continue to be the case going forward. Please verify and adjust your website accordingly if you are upgrading from v0.10 or older versions.
{{% /note %}}
To find out the current value of `canonifyURLs` for your website, you may use the handy `hugo config` command added in v0.13.
```bash
hugo config | grep -i canon
```
Or, if you are on Windows and do not have `grep` installed:
```
hugo config | FINDSTR /I canon
```
## Override URLS with Front Matter
In addition to specifying permalink values in your site configuration for different content sections, Hugo provides even more granular control for individual pieces of content.
Both `slug` and `url` can be defined in individual front matter. For more information on content destinations at build time, see [Content Organization][contentorg].
## Relative URLs
By default, all relative URLs are left unchanged by Hugo, which can be problematic when you want to make your site browsable from a local file system.
Setting `relativeURLs` to `true` in your [site configuration][config] will cause Hugo to rewrite all relative URLs to be relative to the current content.
For example, if your `/post/first/` page contains a link to `/about/`, Hugo will rewrite the URL to `../../about/`.
[config]: /getting-started/configuration/
[contentorg]: /content-management/organization/
[front matter]: /content-management/front-matter/
[multilingual]: /content-management/multilingual/
[sections]: /content-management/sections/
[usage]: /getting-started/usage/

View file

@ -1,330 +0,0 @@
---
lastmod: 2016-10-01
date: 2014-05-14T02:13:50Z
menu:
main:
parent: content
next: /content/ordering
prev: /content/types
title: Archetypes
weight: 50
toc: true
---
Typically, each piece of content you create within a Hugo project will have [front matter](/content/front-matter/) that follows a consistent structure. If you write blog posts, for instance, you might use the following front matter for the vast majority of those posts:
```toml
+++
title = ""
date = ""
slug = ""
tags = [
""
]
categories = [
""
]
draft = true
+++
```
You can always add non-typical front matter to any piece of content, but since it takes extra work to develop a theme that handles unique metadata, consistency is simpler.
With this in mind, Hugo has a convenient feature known as *archetypes* that allows users to define default front matter for new pieces of content.
By using archetypes, we can:
1. **Save time**. Stop writing the same front matter over and over again.
2. **Avoid errors**. Reduce the odds of typos, improperly formatted syntax, and other simple mistakes.
3. **Focus on more important things**. Avoid having to remember all of the fields that need to be associated with each piece of content. (This is particularly important for larger projects with complex front matter and a variety of content types.)
Let's explore how they work.
## Built-in Archetypes
If you've been using Hugo for a while, there's a decent chance you've come across archetypes without even realizing it. This is because Hugo includes a basic, built-in archetype that is used by default whenever it generates a content file.
To see this in action, open the command line, navigate into your project's directory, and run the following command:
```bash
hugo new hello-world.md
```
This `hugo new` command creates a new content file inside the project's `content` directory — in this case, a file named `hello-world.md` and if you open this file, you'll notice it contains the following front matter:
```toml
+++
date = "2017-05-31T15:18:11+10:00"
draft = true
title = "hello world"
+++
```
Here, we can see that three fields have been added to the document: a `title` field that is based on the file name we defined, a `draft` field that ensures this content won't be published by default, and a `date` field that is auto-populated with the current date and time in the [RFC 3339](https://stackoverflow.com/questions/522251/whats-the-difference-between-iso-8601-and-rfc-3339-date-formats) format.
This, in its most basic form, is an example of an archetype. To understand how useful they can be though, it's best if we create our own.
## Creating Archetypes
In this section, we're going to create an archetype that will override the built-in archetype, allowing us to define custom front matter that will be included in any content files that we generate with the `hugo new` command.
To achieve this, create a file named `default.md` inside the `archetypes` folder of a Hugo project. (If the folder doesn't exist, create it.)
Then, inside this file, define the following front matter:
```toml
+++
slug = ""
tags = []
categories = []
draft = true
+++
```
You'll notice that we haven't defined a `title` or `date` field. This is because Hugo will automatically add these fields to the beginning of the front matter. We do, however, need to define the `draft` field if we want it to exist in our front matter.
You'll also notice that we're writing the front matter in the TOML format. It's possible to define archetype front matter in other formats, but a setting needs to be changed in the configuration file for this to be possible. See the "[Archetype Formats](#archetype-formats)" section of this article for more details.
Next, run the following command:
```bash
hugo new my-archetype-example.md
```
This command will generate a file named `my-archetype-example.md` inside the `content` directory, and this file will contain the following output:
```toml
+++
categories = []
date = "2017-05-31T15:21:13+10:00"
draft = true
slug = ""
tags = []
title = "my archetype example"
+++
```
As we can see, the file contains the `title` and `date` property that Hugo created for us, along with the front matter that we defined in the `archetypes/default.md` file.
You'll also notice that the fields have been sorted into alphabetical order. This is an unintentional side-effect that stems from the underlying code libraries that Hugo relies upon. It is, however, [a known issue that is actively being discussed](https://github.com/gohugoio/hugo/issues/452).
## Section Archetypes
By creating the `archetypes/default.md` file, we've created a default archetype that is more useful than the built-in archetype, but since Hugo encourages us to [organize our content into sections](/content/sections/), each of which will likely have different front matter requirements, a "one-size-fits-all" archetype isn't necessarily the best approach.
To accommodate for this, Hugo allows us to create archetypes for each section of our project. This means, whenever we generate content for a certain section, the appropriate front matter for that section will be automatically included in the generated file.
To see this in action, create a "photo" section by creating a directory named "photo" inside the `content` directory.
Then create a file named `photo.md` inside the `archetypes` directory and include the following front matter inside this file:
```toml
+++
image_url = ""
camera = ""
lens = ""
aperture = ""
iso = ""
draft = true
+++
```
Here, the critical detail is that the `photo.md` file in the `archetypes` directory is named after the `photo` section that we just created. By sharing a name, Hugo can understand that there's a relationship between them.
Next, run the following command:
```bash
hugo new photo/my-pretty-cat.md
```
This command will generate a file named `my-pretty-cat.md` inside the `content/photo` directory, and this file will contain the following output:
```toml
+++
aperture = ""
camera = ""
date = "2017-05-31T15:25:18+10:00"
draft = true
image_url = ""
iso = ""
lens = ""
title = "my pretty cat"
+++
```
As we can see, the `title` and `date` fields are still included by Hugo, but the rest of the front matter is being generated from the `photo.md` archetype instead of the `default.md` archetype.
### Tip: Default Values
To make archetypes more useful, define default values for any fields that will always be set to a range of limited options. In the case of the `photo.md` archetype, for instance, you could include lists of the various cameras and lenses that you own:
```toml
+++
image_url = ""
camera = [
"Sony RX100 Mark IV",
"Canon 5D Mark III",
"iPhone 6S"
]
lens = [
"Canon EF 50mm f/1.8",
"Rokinon 14mm f/2.8"
]
aperture = ""
iso = ""
draft = true
+++
```
Then, after generating a content file, simply remove the values that aren't relevant. This saves you from typing out the same options over and over again while ensuring consistency in how they're written.
## Scaffolding Content
Archetypes aren't limited to defining default front matter. They can also be used to define a default structure for the body of Markdown documents.
For example, imagine creating a `review.md` archetype for the purpose of writing camera reviews. This is what the front matter for such an archetype might look like:
```toml
+++
manufacturer = ""
model = ""
price = ""
releaseDate = ""
rating = ""
+++
```
But reviews tend to follow strict formats and need to answer specific questions, and it's with these expectations of precise structure that archetypes can prove to be even more useful.
For the sake of writing reviews, for instance, we could define the structure of a review beneath the front matter of the `review.md` file:
```markdown
+++
manufacturer = ""
model = ""
price = ""
releaseDate = ""
rating = ""
+++
## Introduction
## Sample Photos
## Conclusion
```
Then, whenever we use the `hugo new` command to create a new review, not only will the default front matter be copied into the newly created Markdown document, but the body of the `review.md` archetype will also be copied.
To take this further though — and to ensure authors on multi-author websites are on the same page about how content should be written — we could include notes and reminders within the archetype:
```markdown
+++
manufacturer = ""
model = ""
price = ""
releaseDate = ""
rating = ""
+++
## Introduction
<!--
What is the selling point of the camera?
What has changed since last year's model?
Include a bullet-point list of key features.
-->
## Sample Photos
<!-- TODO: Take at least 12 photos in a variety of situations. -->
## Conclusion
<!--
Is this camera worth the money?
Does it accomplish what it set out to achieve?
Are there any specific groups of people who should/shouldn't buy it?
Would you recommend it to a friend?
Are there alternatives on the horizon?
-->
```
That way, each time we generate a new content file, we have a series of handy notes to push us closer to a piece of writing that's suitable for publishing.
(If you're wondering why the notes are wrapped in the HTML comment syntax, it's to ensure they won't appear inside the preview window of whatever Markdown editor the author happens to be using. They're not strictly necessary though.)
This is still a fairly simple example, but if your content usually contains a variety of components — headings, bullet-points, images, [short-codes](/extras/shortcodes/), etc — it's not hard to see the time-saving benefits of placing these components in the body of an archetype file.
## Theme Archetypes
Whenever you generate a content file with the `hugo new` command, Hugo will start by searching for archetypes in the `archetypes` directory, initially looking for an archetype that matches the content's section and falling-back on the `default.md` archetype (if one is present). If no archetypes are found in this directory, Hugo will continue its search in the `archetypes` directory of the currently active theme. In other words, it's possible for themes to come packaged with their own archetypes, ensuring that users of that theme format their content files with correctly structured front matter.
To allow Hugo to use archetypes from a theme, [that theme must be activated via the project's configuration file](/themes/usage/):
```toml
theme = "ThemeNameGoesHere"
```
If an archetype doesn't exist in the `archetypes` directory at the top-level of a project or inside the `archetypes` directory of an active theme, the built-in archetype will be used.
{{< figure src="/img/content/archetypes/archetype-hierarchy.png" alt="How Hugo Decides Which Archetype To Use" >}}
## Archetype Formats
By default, the `hugo new` command will generate front matter in the TOML format. This means, even if we define the front matter in our archetype files as YAML or JSON, it will be converted to the TOML format before it ends up in our content files.
Fortunately, this functionality can be overwritten.
Inside the project's configuration file, simply define a `metaDataFormat` property:
```toml
metaDataFormat = ""
```
Then set this property to any of the following values:
* toml
* yaml
* json
By defining this option, any front matter will be generated in your preferred format.
It's worth noting, however, that when generating front matter in the TOML format, you might encounter the following error:
```bash
Error: cannot convert type <nil> to TomlTree
```
This is because, to generate TOML, all of the fields in the front matter need to have a default value, even if that default value is just an empty string.
For example, this YAML would *not* successfully compile into the TOML format:
```yaml
---
slug:
tags:
categories:
draft:
---
```
But this YAML *would* successfully compile:
```yaml
---
slug: ""
tags:
-
categories:
-
draft: true
---
```
It's a subtle yet important detail to remember.
## Notes
* Prior to Hugo v0.13, some users received [an "EOF" error when using archetypes](https://github.com/gohugoio/hugo/issues/776), related to what text editor they used to create the archetype. As of Hugo v0.13, this error has been [resolved](https://github.com/gohugoio/hugo/pull/785).

View file

@ -1,91 +0,0 @@
---
aliases:
- /doc/example/
lastmod: 2015-12-23
date: 2013-07-01
linktitle: Example
menu:
main:
parent: content
prev: /content/multilingual
next: /content/using-index-md
notoc: true
title: Example Content File
weight: 70
---
Some things are better shown than explained. The following is a very basic example of a content file written in [Markdown](https://help.github.com/articles/github-flavored-markdown/):
**mysite/content/project/nitro.md → http://mysite.com/project/nitro.html**
With TOML front matter:
<pre><code class="language-toml">+++
date = "2013-06-21T11:27:27-04:00"
title = "Nitro: A quick and simple profiler for Go"
description = "Nitro is a simple profiler for your Golang applications"
tags = [ "Development", "Go", "profiling" ]
topics = [ "Development", "Go" ]
slug = "nitro"
project_url = "https://github.com/spf13/nitro"
+++
</code><code class="language-markdown"># Nitro
Quick and easy performance analyzer library for [Go](http://golang.org/).
## Overview
Nitro is a quick and easy performance analyzer library for Go.
It is useful for comparing A/B against different drafts of functions
or different functions.
## Implementing Nitro
Using Nitro is simple. First, use `go get` to install the latest version
of the library.
$ go get github.com/spf13/nitro
Next, include nitro in your application.
</code></pre>
You may also use the equivalent YAML front matter:
```yaml
---
lastmod: 2015-12-23
date: "2013-06-21T11:27:27-04:00"
title: "Nitro: A quick and simple profiler for Go"
description: "Nitro is a simple profiler for your Go lang applications"
tags: [ "Development", "Go", "profiling" ]
topics: [ "Development", "Go" ]
slug: "nitro"
project_url: "https://github.com/spf13/nitro"
---
```
`nitro.md` would be rendered as follows:
> # Nitro
>
> Quick and easy performance analyzer library for [Go](http://golang.org/).
>
> ## Overview
>
> Nitro is a quick and easy performance analyzer library for Go.
> It is useful for comparing A/B against different drafts of functions
> or different functions.
>
> ## Implementing Nitro
>
> Using Nitro is simple. First, use `go get` to install the latest version
> of the library.
>
> $ go get github.com/spf13/nitro
>
> Next, include nitro in your application.
The source `nitro.md` file is converted to HTML by the excellent
[Blackfriday](https://github.com/russross/blackfriday) Markdown processor,
which supports extended features found in the popular
[GitHub Flavored Markdown](https://help.github.com/articles/github-flavored-markdown/).

View file

@ -1,119 +0,0 @@
---
aliases:
- /doc/front-matter/
lastmod: 2015-12-23
date: 2013-07-01
menu:
main:
parent: content
next: /content/sections
prev: /content/organization
title: Front Matter
weight: 20
toc: true
---
The **front matter** is one of the features that gives Hugo its strength. It enables
you to include the meta data of the content right with it. Hugo supports a few
different formats, each with their own identifying tokens.
Supported formats:
* **[TOML][]**, identified by '`+++`'.
* **[YAML][]**, identified by '`---`'.
* **[JSON][]**, a single JSON object which is surrounded by '`{`' and '`}`', followed by a newline.
[TOML]: https://github.com/toml-lang/toml "Tom's Obvious, Minimal Language"
[YAML]: http://www.yaml.org/ "YAML Ain't Markup Language"
[JSON]: http://www.json.org/ "JavaScript Object Notation"
## TOML Example
<pre><code class="language-toml">+++
title = "spf13-vim 3.0 release and new website"
description = "spf13-vim is a cross platform distribution of vim plugins and resources for Vim."
tags = [ ".vimrc", "plugins", "spf13-vim", "vim" ]
date = "2012-04-06"
categories = [
"Development",
"VIM"
]
slug = "spf13-vim-3-0-release-and-new-website"
+++
</code><code class="language-markdown">Content of the file goes Here
</code></pre>
## YAML Example
```yaml
---
title: "spf13-vim 3.0 release and new website"
description: "spf13-vim is a cross platform distribution of vim plugins and resources for Vim."
tags: [ ".vimrc", "plugins", "spf13-vim", "vim" ]
lastmod: 2015-12-23
date: "2012-04-06"
categories:
- "Development"
- "VIM"
slug: "spf13-vim-3-0-release-and-new-website"
---
Content of the file goes Here
```
## JSON Example
```json
{
"title": "spf13-vim 3.0 release and new website",
"description": "spf13-vim is a cross platform distribution of vim plugins and resources for Vim.",
"tags": [ ".vimrc", "plugins", "spf13-vim", "vim" ],
"date": "2012-04-06",
"categories": [
"Development",
"VIM"
],
"slug": "spf13-vim-3-0-release-and-new-website"
}
Content of the file goes Here
```
## Variables
There are a few predefined variables that Hugo is aware of and utilizes. The user can also create
any variable they want. These will be placed into the `.Params` variable available to the templates.
Field names are always normalized to lowercase (e.g. `camelCase: true` is available as `.Params.camelcase`).
### Required variables
* **title** The title for the content
* **description** The description for the content
* **date** The date the content will be sorted by
* **taxonomies** These will use the field name of the plural form of the index (see tags and categories above)
### Optional variables
* **aliases** An array of one or more aliases
(e.g. old published path of a renamed content)
that would be created to redirect to this content.
See [Aliases]({{< relref "extras/aliases.md" >}}) for details.
* **draft** If true, the content will not be rendered unless `hugo` is called with `--buildDrafts`
* **publishdate** If in the future, content will not be rendered unless `hugo` is called with `--buildFuture`
* **expirydate** Content already expired will not be rendered unless `hugo` is called with `--buildExpired`
* **type** The type of the content (will be derived from the directory automatically if unset)
* **isCJKLanguage** If true, explicitly treat the content as CJKLanguage (`.Summary` and `.WordCount` can work properly in CJKLanguage)
* **weight** Used for sorting
* **markup** *(Experimental)* Specify `"rst"` for reStructuredText (requires
`rst2html`) or `"md"` (default) for Markdown
* **slug** appears as tail of the url. It can be used to change the part of the url that is based on the filename.
* **url** The full path to the content from the web root. It makes no assumptions about the path of the content file. It also ignores any language prefixes of the multilingual feature.
*If neither `slug` or `url` is present, the filename will be used.*
## Configure Blackfriday rendering
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 [Configuration]({{< ref "overview/configuration.md#configure-blackfriday-rendering" >}}) for more.

View file

@ -1,49 +0,0 @@
---
aliases:
- /doc/supported-formats/
lastmod: 2016-07-22
date: 2016-07-22
menu:
main:
parent: content
prev: /content/summaries
next: /content/multilingual
title: Markdown Extras
weight: 66
toc: false
---
Hugo provides some convenient markdown extensions.
## Task lists
Hugo supports GitHub styled task lists (TODO lists) for the Blackfriday renderer (md-files). See [Blackfriday config](/overview/configuration/#configure-blackfriday-rendering) for how to turn it off.
Example:
```markdown
- [ ] a task list item
- [ ] list syntax required
- [ ] incomplete
- [x] completed
```
Renders as:
- [ ] a task list item
- [ ] list syntax required
- [ ] incomplete
- [x] completed
And produces this HTML:
```html
<ul class="task-list">
<li><input type="checkbox" disabled="" class="task-list-item"> a task list item</li>
<li><input type="checkbox" disabled="" class="task-list-item"> list syntax required</li>
<li><input type="checkbox" disabled="" class="task-list-item"> incomplete</li>
<li><input type="checkbox" checked="" disabled="" class="task-list-item"> completed</li>
</ul>
```

View file

@ -1,232 +0,0 @@
---
date: 2016-01-02T21:21:00Z
menu:
main:
parent: content
prev: /content/markdown-extras
next: /content/example
title: Multilingual Mode
weight: 68
toc: true
---
Hugo supports multiple languages side-by-side (added in `Hugo 0.17`). Define the available languages in a `Languages` section in your top-level `config.toml` (or equivalent).
Example:
```
DefaultContentLanguage = "en"
copyright = "Everything is mine"
[params.navigation]
help = "Help"
[Languages]
[Languages.en]
title = "My blog"
weight = 1
[Languages.en.params]
linkedin = "english-link"
[Languages.fr]
copyright = "Tout est à moi"
title = "Mon blog"
weight = 2
[Languages.fr.params]
linkedin = "lien-francais"
[Languages.fr.navigation]
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).
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.
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]
tag = "tags"
[blackfriday]
angledQuotes = true
hrefTargetBlank = true
[Languages]
[Languages.en]
weight = 1
title = "English"
[Languages.en.blackfriday]
angledQuotes = false
[Languages.fr]
weight = 2
title = "Français"
[Languages.fr.Taxonomies]
plaque = "plaques"
```
### Translating your content
Translated articles are identified by the name of the content file.
Example of translated articles:
1. `/content/about.en.md`
2. `/content/about.fr.md`
You can also have:
1. `/content/about.md`
2. `/content/about.fr.md`
In which case the config variable `defaultContentLanguage` will be used to affect the default language `about.md`. This way, you can
slowly start to translate your current content without having to rename everything.
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.
If you need distinct URLs per language you can set the slug in the non-default language file. Just define the custom slug for the french translation in your `/content/about.fr.md` file:
```
---
slug: "a-propos"
---
```
You will get both `/about/` and `/a-propos/` URLs in your build, properly linked as translated pieces.
### Link to translated content
To create a list of links to translated content, use a template similar to this:
```
{{ if .IsTranslated }}
<h4>{{ i18n "translations" }}</h4>
<ul>
{{ range .Translations }}
<li>
<a href="{{ .Permalink }}">{{ .Lang }}: {{ .Title }}{{ if .IsPage }} ({{ i18n "wordCount" . }}){{ end }}</a>
</li>
{{ end}}
</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.
The above also uses the `i18n` func, see [Translation of strings](#translation-of-strings).
### Translation of strings
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.
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.toml`, `fr.toml`, etc.
From within your templates, use the `i18n` function like this:
```
{{ i18n "home" }}
```
This uses a definition like this one in `i18n/en-US.toml`:
```
[home]
other = "Home"
```
Often you will want to use to the page variables in the translations strings. To do that, pass on the "." context when calling `i18n`:
```
{{ i18n "wordCount" . }}
```
This uses a definition like this one in `i18n/en-US.toml`:
```
[wordCount]
other = "This article has {{ .WordCount }} words."
```
An example of singular and plural form:
```
[readingTime]
one = "One minute read"
other = "{{.Count}} minutes read"
```
And then in the template:
```
{{ i18n "readingTime" .ReadingTime }}
```
To track down missing translation strings, run Hugo with the `--i18n-warnings` flag:
```bash
hugo --i18n-warnings | grep i18n
i18n|MISSING_TRANSLATION|en|wordCount
```
### Menus
You can define your menus for each language independently. The [creation of a menu]({{< relref "extras/menus.md" >}}) works analogous to earlier versions of Hugo, except that they have to be defined in their language-specific block in the configuration file:
```toml
defaultContentLanguage = "en"
[languages.en]
weight = 0
languageName = "English"
[[languages.en.menu.main]]
url = "/"
name = "Home"
weight = 0
[languages.de]
weight = 10
languageName = "Deutsch"
[[languages.de.menu.main]]
url = "/"
name = "Startseite"
weight = 0
```
The rendering of the main navigation works as usual. `.Site.Menus` will just contain the menu of the current language. Pay attention to the generation of the menu links. `absLangURL` takes care that you link to the correct locale of your website. Otherwise, both menu entries would link to the English version because it's the default content language that resides in the root directory.
```html
<ul>
{{- $currentPage := . -}}
{{ range .Site.Menus.main -}}
<li class="{{ if $currentPage.IsMenuCurrent "main" . }}active{{ end }}">
<a href="{{ .URL | absLangURL }}">{{ .Name }}</a>
</li>
{{- end }}
</ul>
```
### 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.
**Remember: Hugo will generate your website with these placeholders. It might not be suited for production environments.**
### 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 }}`.
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.

View file

@ -1,41 +0,0 @@
---
lastmod: 2015-12-23
date: 2014-03-06
linktitle: Ordering
menu:
main:
parent: content
next: /content/summaries
prev: /content/archetypes
title: Ordering Content
weight: 60
---
Hugo provides you with all the flexibility you need to organize how your content is ordered.
By default, content is ordered by weight, then by date with the most
recent date first, but alternative sorting (by `title` and `linktitle`) is
also available. The order the content would appear is specified in
the [list template](/templates/list/).
_Both the `date` and `weight` fields are optional._
Unweighted pages appear at the end of the list. If no weights are provided (or
if weights are the same), `date` will be used to sort. If neither is provided,
content will be ordered based on how it's read off the disk, and no order is
guaranteed.
## Assigning weight to content
```toml
+++
weight = 4
title = "Three"
date = "2012-04-06"
+++
Front Matter with Ordered Pages 3
```
## Ordering Content Within Taxonomies
Please see the [Taxonomy Ordering Documentation](/taxonomies/ordering/).

View file

@ -1,175 +0,0 @@
---
aliases:
- /doc/organization/
lastmod: 2015-09-27
date: 2013-07-01
linktitle: Organization
menu:
main:
parent: content
next: /content/supported-formats
prev: /overview/source-directory
title: Content Organization
weight: 10
toc: true
---
Hugo uses files (see [supported formats](/content/supported-formats/)) with headers commonly called the *front matter*. Hugo
respects the organization that you provide for your content to minimize any
extra configuration, though this can be overridden by additional configuration
in the front matter.
## Organization
In Hugo, the content should be arranged in the same way they are intended for
the rendered website. Without any additional configuration, the following will
just work. Hugo supports content nested at any level. The top level is special
in Hugo and is used as the [section](/content/sections/).
.
└── content
└── about
| └── _index.md // <- http://1.com/about/
├── post
| ├── firstpost.md // <- http://1.com/post/firstpost/
| ├── happy
| | └── ness.md // <- http://1.com/post/happy/ness/
| └── secondpost.md // <- http://1.com/post/secondpost/
└── quote
├── first.md // <- http://1.com/quote/first/
└── second.md // <- http://1.com/quote/second/
**Here's the same organization run with `hugo --uglyURLs`**
.
└── content
└── about
| └── _index.md // <- http://1.com/about/
├── post
| ├── firstpost.md // <- http://1.com/post/firstpost.html
| ├── happy
| | └── ness.md // <- http://1.com/post/happy/ness.html
| └── secondpost.md // <- http://1.com/post/secondpost.html
└── quote
├── first.md // <- http://1.com/quote/first.html
└── second.md // <- http://1.com/quote/second.html
## Destinations
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. As displayed above, the organization of the source content will be
mirrored in the destination.
Notice that the first level `about/` page URL was created using a directory
named "about" with a single `_index.md` file inside. Find out more about `_index.md` specifically in [content for the homepage and other list pages](https://gohugo.io/overview/source-directory#content-for-home-page-and-other-list-pages).
There are times when one would need more control over their content. In these
cases, there are a variety of things that can be specified in the front matter
to determine the destination of a specific piece of content.
The following items are defined in order; latter items in the list will override
earlier settings.
### filename
This isn't in the front matter, but is the actual name of the file minus the
extension. This will be the name of the file in the destination.
### slug
Defined in the front matter, the `slug` can take the place of the filename for the
destination.
### filepath
The actual path to the file on disk. Destination will create the destination
with the same path. Includes [section](/content/sections/).
### section
`section` is determined by its location on disk and *cannot* be specified in the front matter. See [section](/content/sections/).
### type
`type` is also determined by its location on disk but, unlike `section`, it *can* be specified in the front matter. See [type](/content/types/).
### path
`path` can be provided in the front matter. This will replace the actual
path to the file on disk. Destination will create the destination with the same
path. Includes [section](/content/sections/).
### url
A complete URL can be provided. This will override all the above as it pertains
to the end destination. This must be the path from the baseURL (starting with a "/").
When a `url` is provided, it will be used exactly. Using `url` will ignore the
`--uglyURLs` setting.
## Path breakdown in Hugo
### Content
. path slug
. ⊢-------^----⊣ ⊢------^-------⊣
content/extras/indexes/category-example/index.html
. section slug
. ⊢--^--⊣ ⊢------^-------⊣
content/extras/indexes/category-example/index.html
. section slug
. ⊢--^--⊣⊢--^--⊣
content/extras/indexes/index.html
### Destination
permalink
⊢--------------^-------------⊣
http://spf13.com/projects/hugo
baseURL section slug
⊢-----^--------⊣ ⊢--^---⊣ ⊢-^⊣
http://spf13.com/projects/hugo
baseURL section slug
⊢-----^--------⊣ ⊢--^--⊣ ⊢--^--⊣
http://spf13.com/extras/indexes/example
baseURL path slug
⊢-----^--------⊣ ⊢------^-----⊣ ⊢--^--⊣
http://spf13.com/extras/indexes/example
baseURL url
⊢-----^--------⊣ ⊢-----^-----⊣
http://spf13.com/projects/hugo
baseURL url
⊢-----^--------⊣ ⊢--------^-----------⊣
http://spf13.com/extras/indexes/example
**section** = which type the content is by default
* based on content location
* front matter overrides
**slug** = name.ext or name/
* based on content-name.md
* front matter overrides
**path** = section + path to file excluding slug
* based on path to content location
**url** = relative URL
* defined in front matter
* overrides all the above

View file

@ -1,54 +0,0 @@
---
lastmod: 2015-12-23
date: 2013-07-01
menu:
main:
parent: content
next: /content/types
notoc: true
prev: /content/front-matter
title: Sections
weight: 30
---
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 [Organization](/content/organization/)). Following this pattern Hugo
uses the top level of your content organization as **the Section**.
The following example site uses two sections, "post" and "quote".
{{< nohighlight >}}.
└── content
├── post
| ├── firstpost.md // <- http://1.com/post/firstpost/
| ├── happy
| | └── ness.md // <- http://1.com/post/happy/ness/
| └── secondpost.md // <- http://1.com/post/secondpost/
└── quote
├── first.md // <- http://1.com/quote/first/
└── second.md // <- http://1.com/quote/second/
{{< /nohighlight >}}
## Section Lists
Hugo will automatically create pages for each section root that list all
of the content in that section. See [List Templates](/templates/list/)
for details on customizing the way they appear.
Section pages can also have a content file and frontmatter, see [Source Organization]({{< relref "overview/source-directory.md#content-for-home-page-and-other-list-pages" >}}).
## Sections and Types
By default everything created within a section will use the content type
that matches the section name.
Section defined in the front matter have the same impact.
To change the type of a given piece of content, simply define the type
in the front matter.
If a layout for a given type hasn't been provided, a default type template will
be used instead provided it exists.

View file

@ -1,54 +0,0 @@
---
lastmod: 2015-01-27
date: 2013-07-01
menu:
main:
parent: content
notoc: true
prev: /content/ordering
next: /content/markdown-extras
title: Summaries
weight: 65
---
With the use of the `.Summary` [page variable](/templates/variables/), Hugo can generate summaries of content to show snippets in summary views. The summary view snippets are automatically generated by Hugo. Where a piece of content is split for the content summary depends on whether the split is Hugo-defined or user-defined.
Content summaries may also provide links to the original content, usually in the form of a "Read More..." link, with the help of the `.RelPermalink` or `.Permalink` variable, as well as the `.Truncated` boolean variable to determine whether such "Read More..." link is necessary.
## Hugo-defined: automatic summary split
By default, Hugo automatically takes the first 70 words of your content as its summary and stores it into the `.Summary` variable, which you may use in your templates.
* 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. Some people like it, but some people don't.
## User-defined: manual summary split:
Alternatively, you may add the <code>&#60;&#33;&#45;&#45;more&#45;&#45;&#62;</code> summary divider[^1] (for org content, use <code># more</code>) where you want to split the article. Content prior to the summary divider will be used as that content's summary, and stored into the `.Summary` variable with all HTML formatting intact.
[^1]: The **summary divider** is also called "more tag", "excerpt separator", etc. in other literature.
* Pros: Freedom, precision, and improved rendering. All formatting is preserved.
* Cons: Need to remember to type <code>&#60;&#33;&#45;&#45;more&#45;&#45;&#62;</code> (or <code># more</code> for org content) in your content file. :-)
Be careful to enter <code>&#60;&#33;&#45;&#45;more&#45;&#45;&#62;</code> (or <code># more</code> for org content) exactly, i.e. all lowercase with no whitespace, otherwise it would be treated as regular comment and ignored.
If there is nothing but spaces and newlines after the summary divider then `.Truncated` will be false.
## Showing Summaries
You can show content summaries with the following code. You could do this, for example, on a [list](/templates/list/) page.
{{ range first 10 .Data.Pages }}
<div class="summary">
<h4><a href="{{ .RelPermalink }}">{{ .Title }}</a></h4>
{{ .Summary }}
</div>
{{ if .Truncated }}
<div class="read-more-link">
<a href="{{ .RelPermalink }}">Read More…</a>
</div>
{{ end }}
{{ end }}
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.

View file

@ -1,27 +0,0 @@
---
aliases:
- /doc/supported-formats/
lastmod: 2015-08-01
date: 2015-08-01
menu:
main:
parent: content
next: /content/front-matter
prev: /content/organization
title: Supported Formats
weight: 15
toc: true
---
Since 0.14, Hugo has defined a new concept called _external helpers_. It means that you can write your content using Asciidoc[tor], reStructuredText or Org-Mode. If you have files with associated extensions ([details](https://github.com/gohugoio/hugo/blob/77c60a3440806067109347d04eb5368b65ea0fe8/helpers/general.go#L65)), then Hugo will call external commands to generate the content (the exception being Org-Mode content, which is parsed natively).
This means that you will have to install the associated tool on your machine to be able to use those formats.
For example, for Asciidoc files, Hugo will try to call __asciidoctor__ or __asciidoc__ command.
To use those formats, just use the standard extension and the front matter exactly as you would do with natively supported _.md_ files.
Notes:
* as these are external commands, generation performance for that content will heavily depend on the performance of those external tools.
* this feature is still in early stage, hence feedback is even more welcome.

View file

@ -1,80 +0,0 @@
---
lastmod: 2015-09-28
date: 2013-07-01
linktitle: Types
menu:
main:
parent: content
next: /content/archetypes
prev: /content/sections
title: Content Types
weight: 40
toc: true
---
Hugo has full support for different types of content. A content type can have a
unique set of meta data, template and can be automatically created by the `hugo new`
command through using content [archetypes](/content/archetypes/).
A good example of when multiple types are needed is to look at [Tumblr](https://www.tumblr.com/). A piece
of content could be a photo, quote or post, each with different meta data and
rendered differently.
## Assigning a content type
Hugo assumes that your site will be organized into [sections](/content/sections/)
and each section will use the corresponding type. If you are taking advantage of
this, then each new piece of content you place into a section will automatically
inherit the type.
Alternatively, you can set the type in the meta data under the key "`type`".
## Creating new content of a specific type
Hugo has the ability to create a new content file and populate the front matter
with the data set corresponding to that type. Hugo does this by utilizing
[archetypes](/content/archetypes/).
To create a new piece of content, use:
hugo new relative/path/to/content.md
For example, if I wanted to create a new post inside the post section, I would type:
hugo new post/my-newest-post.md
## Defining a content type
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.
*Remember, all of the following are optional:*
### Create Type Directory
Create a directory with the name of the type in `/layouts`. Type is always singular. *E.g. `/layouts/post`*.
### Create single template
Create a file called `single.html` inside your directory. *E.g. `/layouts/post/single.html`*.
### Create list template
Create a file called `post.html` inside the section lists template directory, `/layouts/section`. *E.g. `/layouts/section/post.html`*.
### 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](/templates/list).
Hugo makes no assumptions here 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
Create a file called <code><em>type</em>.md</code> in the `/archetypes` directory. *E.g. `/archetypes/post.md`*.
More details about archetypes can be found at the [archetypes docs](/content/archetypes/).

View file

@ -1,118 +0,0 @@
---
aliases:
- /doc/using-index-md/
lastmod: 2017-02-22
date: 2017-02-22
linktitle: Using _index.md
menu:
main:
parent: content
prev: /content/example
next: /themes/overview
notoc: true
title: Using _index.md
weight: 70
---
# \_index.md and 'Everything is a Page'
As of version v0.18 Hugo now treats '[everything as a page](http://bepsays.com/en/2016/12/19/hugo-018/)'. This allows you to add content and frontmatter to any page - including List pages like [Sections](/content/sections/), [Taxonomies](/taxonomies/overview/), [Taxonomy Terms pages](/templates/terms/) and even to potential 'special case' pages like the [Home page](/templates/homepage/).
In order to take advantage of this behaviour you need to do a few things.
1. Create an \_index.md file that contains the frontmatter and content you would like to apply.
2. Place the \_index.md file in the correct place in the directory structure.
3. Ensure that the respective template is configured to display `{{ .Content }}` if you wish for the content of the \_index.md file to be rendered on the respective page.
## How \_index.md pages work
Before continuing it's important to know that this page must reference certain templates to describe how the \_index.md page will be rendered. Hugo has a multitude of possible templates that can be used and placed in various places (think theme templates for instance). For simplicity/brevity the default/top level template location will be used to refer to the entire range of places the template can be placed.
If this is confusing or you are unfamiliar with Hugo's template hierarchy, visit the various template pages listed below. You may need to find the 'active' template responsible for any particular page on your own site by going through the template hierarchy and matching it to your particular setup/theme you are using.
- [Home page template](/templates/homepage/)
- [Content List templates](/templates/list/)
- [Single Content templates](/templates/content/)
- [Taxonomy Terms templates](/templates/terms/)
Now that you've got a handle on templates lets recap some Hugo basics to understand how to use an \_index.md file with a List page.
1. Sections and Taxonomies are 'List' pages, NOT single pages.
2. List pages are rendered using the template hierarchy found in the [Content - List Template](/templates/list/) docs.
3. The Home page, though technically a List page, can have [its own template](/templates/homepage/) at layouts/index.html rather than \_default/list.html. Many themes exploit this behaviour so you are likely to encounter this specific use case.
4. Taxonomy terms pages are 'lists of metadata' not lists of content, so [have their own templates](/templates/terms/).
Let's put all this information together:
> **\_index.md files used in List pages, Terms pages or the Home page are NOT rendered as single pages or with Single Content templates.**
> **All pages, including List pages, can have frontmatter and frontmatter can have markdown content - meaning \_index.md files are the way to _provide_ frontmatter and content to the respective List/Terms/Home page.**
Here are a couple of examples to make it clearer...
| \_index.md location | Page affected | Rendered by |
| ------------------- | ------------ | ----------- |
| /content/post/\_index.md | site.com/post/ | /layouts/section/post.html |
| /content/categories/hugo/\_index.md | site.com/categories/hugo/ | /layouts/taxonomy/hugo.html |
## Why \_index.md files are used
With a Single page such as a post it's possible to add the frontmatter and content directly into the .md page itself. With List/Terms/Home pages this is not possible so \_index.md files can be used to provide that frontmatter/content to them.
## How to display content from \_index.md files
From the information above it should follow that content within an \_index.md file won't be rendered in its own Single Page, instead it'll be made available to the respective List/Terms/Home page.
To **_actually render that content_** you need to ensure that the relevant template responsible for rendering the List/Terms/Home page contains (at least) `{{ .Content }}`.
This is the way to actually display the content within the \_index.md file on the List/Terms/Home page.
A very simple/naive example of this would be:
```html
{{ partial "header.html" . }}
<main>
{{ .Content }}
{{ range .Paginator.Pages }}
{{ partial "summary.html" . }}
{{ end }}
{{ partial "pagination.html" . }}
</main>
{{ partial "sidebar.html" . }}
{{ partial "footer.html" . }}
```
You can see `{{ .Content }}` just after the `<main>` element. For this particular example, the content of the \_index.md file will show before the main list of summaries.
## Where to organise an \_index.md file
To add content and frontmatter to the home page, a section, a taxonomy or a taxonomy terms listing, add a markdown file with the base name \_index on the relevant place on the file system.
```bash
└── content
├── _index.md
├── categories
│   ├── _index.md
│   └── photo
│   └── _index.md
├── post
│   ├── _index.md
│   └── firstpost.md
└── tags
├── _index.md
└── hugo
└── _index.md
```
In the above example \_index.md pages have been added to each section/taxonomy.
An \_index.md file has also been added in the top level 'content' directory.
### Where to place \_index.md for the Home page
Hugo themes are designed to use the 'content' directory as the root of the website, so adding an \_index.md file here (like has been done in the example above) is how you would add frontmatter/content to the home page.

View file

@ -0,0 +1,23 @@
---
title: Contributing to the Hugo Project
linktitle: Contributing to Hugo
description: Contribute to Hugo development and documentation.
date: 2017-02-01
publishdate: 2017-02-01
lastmod: 2017-02-01
categories: [contribute]
#tags: []
menu:
docs:
parent: "contribute"
weight: 01
weight: 01 #rem
draft: false
slug:
aliases: [/tutorials/how-to-contribute-to-hugo/,/community/contributing/]
toc: false
---
Hugo relies heavily on the enthusiasm and participation of the open-source community. We need your support in both its development and documentation.
Hugo's contribution guidelines are [detailed in a `CONTRIBUTING.md`](https://github.com/gohugoio/hugo/blob/master/CONTRIBUTING.md) in the Hugo source repository on GitHub.

View file

@ -1,46 +1,92 @@
---
date: 2016-04-03T13:21:56+02:00
linktitle: How to contribute
title: Contribute to Hugo Development
linktitle: Development
description: Hugo relies heavily on contributions from the open source community.
date: 2017-02-01
publishdate: 2017-02-01
lastmod: 2017-02-01
categories: [contribute]
#tags: [dev,open source]
authors: [digitalcraftsman]
menu:
main:
parent: tutorials
next: /tutorials/installing-on-mac/
prev: /tutorials/github-pages-blog/
title: How to contribute to Hugo
docs:
parent: "contribute"
weight: 10
weight: 10
sections_weight: 10
draft: false
aliases: [/contribute/development/]
toc: true
---
## Introduction
Hugo is an open source project and lives by the work of its [contributors](https://github.com/gohugoio/hugo/graphs/contributors). Help to make Hugo even more awesome. There are plenty of [open issues](https://github.com/gohugoio/hugo/issues) on GitHub and we need your help.
Hugo is an open-source project and lives by the work of its [contributors][]. There are plenty of [open issues][issues], and we need your help to make Hugo even more awesome. You don't need to be a Go guru to contribute to the project's development.
This tutorial is intended for people who are new to Git, GitHub or open source projects in general. It should help to overcome most of the barriers that newcomers encounter. It describes step by step what you need to do.
## Assumptions
For any kind of questions please take a look at our [forum](https://discourse.gohugo.io/).
This contribution guide takes a step-by-step approach in hopes of helping newcomers. Therefore, we only assume the following:
* You are new to Git or open-source projects in general
* You are a fan of Hugo and enthusiastic about contributing to the project
{{% note "Additional Questions?" %}}
If you're struggling at any point in this contribution guide, reach out to the Hugo community in [Hugo's Discussion forum](https://discourse.gohugo.io).
{{% /note %}}
## Install Go
The installation of Go should take only a few minutes. [Download](https://golang.org/dl/) the latest stable version of Go and follow the official [installation guide](https://golang.org/doc/install).
The installation of Go should take only a few minutes. You have more than one option to get Go up and running on your machine.
Let's confirm the correct installation of Go. Open a terminal (or command line under Windows). Execute `go version` and you should see the version number of your Go installation. Next, make sure that you setup the `GOPATH` as described in the installation guide.
If you are having trouble following the installation guides for go, check out [Go Bootcamp, which contains setups for every platform][gobootcamp] or reach out to the Hugo community in the [Hugo Discussion Forums][forums].
You can print the `GOPATH` with `echo $GOPATH`. You should see a non-empty string containing a valid path to your Go workspace.
### Install Go From Source
### GVM as alternative
[Download the latest stable version of Go][godl] and follow the official [Golang installation guide][goinstall].
More experienced users can use the [Go Version Manager](https://github.com/moovweb/gvm), or GVM for short. It allows you to switch between different Go versions *on the same machine*. Probably you don't need this feature. But you can easily upgrade to a new released Go version with a few commands.
Once you're finished installing Go, let's confirm everything is working correctly. Open a terminal---or command line under Windows--and type the following:
This is handy if you follow the developement of Hugo over a longer period of time. Future versions of Hugo will usually be compiled with the latest version of Go. Sooner or later you have to upgrade if you want to keep up.
```bash
go version
```
You should see something similar to the following written to the console. Note that the version here reflects the most recent version of Go as of the last update for this page:
## Create an account on GitHub
```bash
go version go1.8 darwin/amd64
```
Next, make sure that you set up your `GOPATH` [as described in the installation guide][setupgopath].
You can print the `GOPATH` with `echo $GOPATH`. You should see a non-empty string containing a valid path to your Go workspace; .e.g.:
```bash
/Users/<yourusername>/Code/go
```
### Install Go with Homebrew
If you are a macOS user and have [Homebrew](https://brew.sh/) installed on your machine, installing Go is as simple as the following command:
{{% code file="install-go.sh" %}}
```bash
brew install go
```
{{% /code %}}
### Install Go via GVM
More experienced users can use the [Go Version Manager][gvm] (GVM). GVM allows you to switch between different Go versions *on the same machine*. If you're a beginner, you probably don't need this feature. However, GVM makes it easy to upgrade to a new released Go version with just a few commands.
GVM comes in especially handy if you follow the development of Hugo over a longer period of time. Future versions of Hugo will usually be compiled with the latest version of Go. Sooner or later, you will have to upgrade if you want to keep up.
## Create a GitHub Account
If you're going to contribute code, you'll need to have an account on GitHub. Go to [www.github.com/join](https://github.com/join) and set up a personal account.
## Install Git on Your System
## Install Git on your system
You will need to install Git. This tutorial assumes basic knowledge about Git. Refer to this excellent [Git book](https://git-scm.com/) if you are not sure where to begin. The used terminology will be explained with annotations.
You will need to have Git installed on your computer to contribute to Hugo development. Teaching git is outside the scope of the Hugo docs, but if you're looking for an excellent reference to learn the basics of Git, we recommend the [Git book][gitbook] if you are not sure where to begin. The used terminology will be explained with annotations.
Git is a [version control system](https://en.wikipedia.org/wiki/Version_control) to track the changes of source code. Hugo depends on smaller third-party packages that are used to extend the functionality. We use them because we don't want to reinvent the wheel.
@ -54,17 +100,17 @@ Finally, check again with `git version` if Git was installed successfully.
There are several [GUI clients](https://git-scm.com/downloads/guis) that help you to operate Git. Not all are available for all operating systems and maybe differ in their usage. Thus, so we will use the command line since the commands are everywhere the same.
### Install Hub on your system (optional)
### Install Hub on Your System (Optional)
Hub is a great tool for working with GitHub. The main site for it is [www.hub.github.com](https://hub.github.com/). Feel free to install this little Git wrapper.
On a Mac, install Hub using brew:
On a Mac, you can install [Hub](https://github.com/github/hub) using [Homebrew](https://brew.sh):
```sh
brew install hub
```
Create an alias (in Bash) so that typing git actually runs Hub:
Now we'll create an [alias in Bash](http://tldp.org/LDP/abs/html/aliases.html) so that typing `git` actually runs `Hub`:
```sh
echo "alias git='hub'" >> ~/.bash_profile
@ -77,22 +123,11 @@ git version 2.6.3
hub version 2.2.2
```
## Set up your working copy
The working copy is set up locally on your computer. It's what you'll edit, compile, and end up pushing back to GitHub. The main steps are cloning the repository and creating your fork as a remote.
### Vendored Dependencies
Hugo uses [govendor](https://github.com/kardianos/govendor) to vendor dependencies, but we don't commit the vendored packages themselves to the Hugo git repository.
Therefore, a simple `go get` is not supported since `go get` is not vendor-aware.
You **must use govendor** to fetch and manage Hugo's dependencies.
```sh
go get -v -u github.com/kardianos/govendor
```
### Fetch the Sources from GitHub
### Clone the repository
We assume that you've set up your `GOPATH` (see the section above if you're unsure about this). You should now copy the Hugo repository down to your computer. You'll hear this called "clone the repo". GitHub's [help pages](https://help.github.com/articles/cloning-a-repository/) give us a short explanation:
@ -100,15 +135,15 @@ We assume that you've set up your `GOPATH` (see the section above if you're unsu
We're going to clone the [master Hugo repository](https://github.com/gohugoio/hugo). That seems counter-intuitive, since you won't have commit rights on it. But it's required for the Go workflow. You'll work on a copy of the master and push your changes to your own repository on GitHub.
So, let's clone that master repository with govendor:
So, let's clone that master repository:
```sh
govendor get -v github.com/gohugoio/hugo
go get -v -u github.com/gohugoio/hugo
```
### Fork the repository
If you're not familiar with this term, GitHub's [help pages](https://help.github.com/articles/fork-a-repo/) provide again a simple explanation:
If you're not fimiliar with this term, GitHub's [help pages](https://help.github.com/articles/fork-a-repo/) provide again a simple explanation:
> A fork is a copy of a repository. Forking a repository allows you to freely experiment with changes without affecting the original project.
@ -116,11 +151,11 @@ If you're not familiar with this term, GitHub's [help pages](https://help.github
Open the [Hugo repository](https://github.com/gohugoio/hugo) on GitHub and click on the "Fork" button in the top right.
![Fork button](/img/tutorials/how-to-contribute-to-hugo/forking-a-repository.png)
![Fork button](/images/contribute/development/forking-a-repository.png)
Now open your fork repository on GitHub and copy the remote url of your fork. You can choose between HTTPS and SSH as protocol that Git should use for the following operations. HTTPS works always [if you're not sure](https://help.github.com/articles/which-remote-url-should-i-use/).
![Copy remote url](/img/tutorials/how-to-contribute-to-hugo/copy-remote-url.png)
![Copy remote url](/images/contribute/development/copy-remote-url.png)
Switch back to the terminal and move into the directory of the cloned master repository from the last step.
@ -155,14 +190,13 @@ git remote -v
The output should look similar:
```sh
digitalcraftsman git@github.com:digitalcraftsman/hugo.git (fetch)
digitalcraftsman git@github.com:digitalcraftsman/hugo.git (push)
origin https://github.com/gohugoio/hugo (fetch)
origin https://github.com/gohugoio/hugo (push)
digitalcraftsman git@github.com:digitalcraftsman/hugo.git (fetch)
digitalcraftsman git@github.com:digitalcraftsman/hugo.git (push)
origin https://github.com/gohugoio/hugo (fetch)
origin https://github.com/gohugoio/hugo (push)
```
## The contribution workflow
## The Hugo Git Contribution Workflow
### Create a new branch
@ -183,34 +217,32 @@ git checkout -b <BRANCH-NAME>
You can check on which branch your are with `git branch`. You should see a list of all local branches. The current branch is indicated with a little asterisk.
### Contributing to the documentation
### Contribute to Documentation
Perhaps you want to start contributing to the docs. Then you can ignore most of the following steps. You can find the documentation within the cloned repository in the subfolder `docs`. Change the directory with `cd docs`. Install the [latest release]({{< relref "overview/installing.md" >}}). Or read on and build Hugo from source.
Perhaps you want to start contributing to the Hugo docs. If so, you can ignore most of the following steps and focus on the `/docs` directory within your newly cloned repository. You can change directories into the Hugo docs using `cd docs`.
You can start Hugo's built-in server via `hugo server`. Browse the documentation by entering [http://localhost:1313](http://localhost:1313) in the address bar of your browser. The server automatically updates the page if you change its content.
You can start Hugo's built-in server via `hugo server`. Browse the documentation by entering [http://localhost:1313](http://localhost:1313) in the address bar of your browser. The server automatically updates the page whenever you change content.
### Building Hugo
We have developed a [separate Hugo documentation contribution guide][docscontrib] for more information on how the Hugo docs are built, organized, and improved by the generosity of people like you.
### Build Hugo
While making changes in the codebase it's a good idea to build the binary to test them:
```sh
make hugo
go build -o hugo main.go
```
### Testing
### Test
Sometimes changes on the codebase can cause unintended side effects. Or they don't work as expected. Most functions have their own test cases. You can find them in files ending with `_test.go`.
```sh
make check
```
Make sure the commands `go test ./...` passes, and `go build` completes.
### Formatting
The Go code styleguide maybe is opinionated but it ensures that the codebase looks the same, regardless who wrote the code. Go comes with its own formatting tool. Let's apply the styleguide to our additions:
### Formatting
The Go code styleguide maybe is opiniated but it ensures that the codebase looks the same, regardless who wrote the code. Go comes with its own formatting tool. Let's apply the styleguide to our addtions:
```sh
govendor fmt +local
go fmt ./...
```
Once you made your additions commit your changes. Make sure that you follow our [code contribution guidelines](https://github.com/gohugoio/hugo/blob/master/CONTRIBUTING.md):
@ -229,7 +261,7 @@ You noticed some commit messages don't fulfill the code contribution guidelines
If you are unsure what a command does leave the commit as it is. We can fix your commits later in the pull request.
#### Modifying the last commit
#### Modify the last commit
Let's say you want to modify the last commit message. Run the following command and replace the current message:
@ -251,9 +283,13 @@ git add --all
git commit --amend
```
#### Modifying multiple commits
#### Modify multiple commits
This is a bit more advanced. Git allows you to [rebase](https://git-scm.com/docs/git-rebase) commits interactively. In other words: it allows you to rewrite the commit history. **Take care of your actions. They can cause unintended changes. Skip this section if you're not sure!**
{{% warning "Be Careful Modifying Multiple Commits"%}}
Modifications such as those described in this section can have serious unintended consequences. Skip this section if you're not sure!
{{% /warning %}}
This is a bit more advanced. Git allows you to [rebase](https://git-scm.com/docs/git-rebase) commits interactively. In other words: it allows you to rewrite the commit history.
```sh
git rebase --interactive @~6
@ -274,7 +310,6 @@ In the case above we should merge the last to commits in the commit of this tuto
All operations are written before the commit message. Replace "pick" with an operation. In this case `squash` or `s` for short:
```sh
pick 80d02a1 tpl: Add hasPrefix to the template funcs' "smoke test"
pick aaee038 tpl: Sort the smoke tests
@ -297,7 +332,7 @@ squash 33c8973 Begin workflow
squash 3502f2e Refactoring and typo fixes
```
Close the editor. It should open again with a new tab. A text is instructing you to define a new commit message for the last two commits that should be merged (a.k.a. squashed). Save the file (<kbd>CTRL</kbd>+<kbd>S</kbd>) and close the editor again.
Close the editor. It should open again with a new tab. A text is instructing you to define a new commit message for the last two commits that should be merged (aka "squashed"). Save the file with <kbd>CTRL</kbd>+<kbd>S</kbd> and close the editor again.
A last time a new tab opens. Enter a new commit message and save again. Your terminal should contain a status message. Hopefully this one:
@ -309,7 +344,7 @@ Check the commit log if everything looks as expected. Should an error occur you
### Push commits
To push our commits to the fork on GitHub we need to specify a destination. A destination is defined by the remote and a branch name. Earlier, the defined that the remote url of our fork is the same as our GitHub handle, in my case `digitalcraftsman`. The branch should have the same as our local one. This makes it easy to identify corresponding branches.
To push our commits to the fork on GitHub we need to speficy a destination. A destination is defined by the remote and a branch name. Earlier, the defined that the remote url of our fork is the same as our GitHub handle, in my case `digitalcraftsman`. The branch should have the same as our local one. This makes it easy to identify corresponding branches.
```sh
git push --set-upstream <YOUR-GITHUB-USERNAME> <BRANCHNAME>
@ -319,14 +354,13 @@ Now Git knows the destination. Next time when you to push commits you just need
If you modified your commit history in the last step GitHub will reject your try to push. This is a safety-feature because the commit history isn't the same and new commits can't be appended as usual. You can enforce this push explicitly with `git push --force`.
## Open a pull request
We made a lot of progress. Good work. In this step we finally open a pull request to submit our additions. Open the [Hugo master repository](https://github.com/gohugoio/hugo/) on GitHub in your browser.
You should find a green button labeled with "New pull request". But GitHub is clever and probably suggests you a pull request like in the beige box below:
You should find a green button labeld with "New pull request". But GitHub is clever and probably suggests you a pull request like in the beige box below:
<img src="/img/tutorials/how-to-contribute-to-hugo/open-pull-request.png" alt="Open a pull request">
![Open a pull request](/images/contribute/development/open-pull-request.png)
The new page summaries the most important information of your pull request. Scroll down and you find the additions of all your commits. Make sure everything looks as expected and click on "Create pull request".
@ -334,19 +368,45 @@ The new page summaries the most important information of your pull request. Scro
Last but not least you should accept the contributor license agreement (CLA). A new comment should be added automatically to your pull request. Click on the yellow badge, accept the agreement and authenticate yourself with your GitHub account. It just takes a few clicks and only needs to be done once.
<img src="/img/tutorials/how-to-contribute-to-hugo/accept-cla.png" alt="Accept the CLA">
![Accept the CLA](/images/contribute/development/accept-cla.png)
### Automatic builds
We use the [Travis CI loop](https://travis-ci.org/gohugoio/hugo) (Linux and OS&nbsp;X) and [AppVeyor](https://ci.appveyor.com/project/gohugoio/hugo/branch/master) (Windows) to compile Hugo with your additions. This should ensure that everything works as expected before merging your pull request. This in most cases only relevant if you made changes to the codebase of Hugo.
<img src="/img/tutorials/how-to-contribute-to-hugo/ci-errors.png" alt="Automic builds and their status">
![Automic builds and their status](/images/contribute/development/ci-errors.png)
Above you can see that Travis wasn't able to compile the changes in this pull request. Click on "Details" and try to investigate why the build failed. But it doesn't have to be your fault. Mostly, the `master` branch that we used as foundation for your pull request should build without problems.
If you have questions leave a comment in the pull request. We are willing to assist you.
If you have questions, leave a comment in the pull request. We are willing to assist you.
## Where to start?
Thank you for reading this tutorial. Hopefully, we see you again on GitHub. There are plenty of [open issues](https://github.com/gohugoio/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.
Thank you for reading through this contribution guide. Hopefully, we will see you again soon on GitHub. There are plenty of [open issues][issues] for you to help with.
Feel free to [open an issue][newissue] if you think you found a bug or you have a new idea to improve Hugo. We are happy to hear from you.
## Additional References for Learning Git and Golang
* [Codecademy's Free "Learn Git" Course][codecademy] (Free)
* [Code School and GitHub's "Try Git" Tutorial][trygit] (Free)
* [The Git Book][gitbook] (Free)
* [Go Bootcamp][gobootcamp]
* [GitHub Pull Request Tutorial, Thinkful][thinkful]
[codecademy]: https://www.codecademy.com/learn/learn-git
[contributors]: https://github.com/gohugoio/hugo/graphs/contributors
[docscontrib]: /contribute/documentation/
[forums]: https://discourse.gohugo.io
[gitbook]: https://git-scm.com/
[gobootcamp]: http://www.golangbootcamp.com/book/get_setup
[godl]: https://golang.org/dl/
[goinstall]: https://golang.org/doc/install
[gvm]: https://github.com/moovweb/gvm
[issues]: https://github.com/gohugoio/hugo/issues
[newissue]: https://github.com/gohugoio/hugo/issues/new
[releases]: /getting-started/
[setupgopath]: https://golang.org/doc/code.html#Workspaces
[thinkful]: https://www.thinkful.com/learn/github-pull-request-tutorial/
[trygit]: https://try.github.io/levels/1/challenges/1

View file

@ -0,0 +1,376 @@
---
title: Contribute to the Hugo Docs
linktitle: Documentation
description: Documentation is an integral part of any open source project. The Hugo docs are as much a work in progress as the source it attempts to cover.
date: 2017-02-01
publishdate: 2017-02-01
lastmod: 2017-02-01
categories: [contribute]
#tags: [docs,documentation,community, contribute]
menu:
docs:
parent: "contribute"
weight: 20
weight: 20
sections_weight: 20
draft: false
aliases: [/contribute/docs/]
toc: true
---
## Create Your Fork
It's best to make changes to the Hugo docs on your local machine to check for consistent visual styling. Make sure you've created a fork of [hugoDocs](https://github.com/gohugoio/hugoDocs) on GitHub and cloned the repository locally on your machine. For more information, you can see [GitHub's documentation on "forking"][ghforking] or follow along with [Hugo's development contribution guide][hugodev].
You can then create a separate branch for your additions. Be sure to choose a descriptive branch name that best fits the type of content. The following is an example of a branch name you might use for adding a new website to the showcase:
```git
git checkout -b jon-doe-showcase-addition
```
## Add New Content
The Hugo docs make heavy use of Hugo's [archetypes][] feature. All content sections in Hugo documentation have an assigned archetype.
Adding new content to the Hugo docs follows the same pattern, regardless of the content section:
```
hugo new <DOCS-SECTION>/<new-content-lowercase>.md
```
{{% note "`title:`, `date:`, and Field Order" %}}
`title` and `date` fields are added automatically when using archetypes via `hugo new`. Do not be worried if the order of the new file's front matter fields on your local machine is different than that of the examples provided in the Hugo docs. This is a known issue [(#452)](https://github.com/gohugoio/hugo/issues/452).
{{% /note %}}
### Add a New Function
Once you have cloned the Hugo repository, you can create a new function via the following command. Keep the file name lowercase.
```
hugo new functions/newfunction.md
```
The archetype for `functions` according to the Hugo theme is as follows:
{{% code file="archetypes/functions.md" %}}
```yaml
{{< readfile file="/themes/gohugoioTheme/archetypes/functions.md">}}
```
{{% /code %}}
#### New Function Required Fields
Here is a review of the front matter fields automatically generated for you using `hugo new functions/*`:
***`title`***
: this will be auto-populated in all lowercase when you use `hugo new` generator.
***`linktitle`***
: the function's actual casing (e.g., `replaceRE` rather than `replacere`).
***`description`***
: a brief description used to populate the [Functions Quick Reference](/functions/).
`categories`
: currently auto-populated with 'functions` for future-proofing and portability reasons only; ignore this field.
`tags`
: only if you think it will help end users find other related functions
`signature`
: this is a signature/syntax definition for calling the function (e.g., `apply SEQUENCE FUNCTION [PARAM...]`).
`workson`
: acceptable values include `lists`,`taxonomies`, `terms`, `groups`, and `files`.
`hugoversion`
: the version of Hugo that will ship with this new function.
`relatedfuncs`
: other [templating functions][] you feel are related to your new function to help fellow Hugo users.
`{{.Content}}`
: an extended description of the new function; examples are not only welcomed but encouraged.
In the body of your function, expand the short description used in the front matter. Include as many examples as possible, and leverage the Hugo docs [`code` shortcode](#adding-code-blocks). If you are unable to add examples but would like to solicit help from the Hugo community, add `needsexample: true` to your front matter.
### Add a New Tutorial
Once you have cloned the Hugo repository, you can create a new tutorial via the following command. Name the markdown file accordingly:
```
hugo new tutorials/my-new-tutorial.md
```
The archetype for the `tutorials` content type is as follows:
{{% code file="archetypes/tutorials.md" %}}
```yaml
{{< readfile file="/themes/gohugoioTheme/archetypes/tutorials.md">}}
```
{{% /code %}}
## Add Code Blocks
Code blocks are crucial for providing examples of Hugo's new features to end users of the Hugo docs. Whenever possible, create examples that you think Hugo users will be able to implement in their own projects.
### Standard Syntax
Across all pages on the Hugo docs, the typical triple-back-tick markdown syntax is used. If you do not want to take the extra time to implement the following code block shortcodes, please use standard GitHub-flavored markdown. The Hugo docs use a version of [highlight.js](https://highlightjs.org/) with a specific set of languages.
Your options for languages are `xml`/`html`, `go`/`golang`, `md`/`markdown`/`mkd`, `handlebars`, `apache`, `toml`, `yaml`, `json`, `css`, `asciidoc`, `ruby`, `powershell`/`ps`, `scss`, `sh`/`zsh`/`bash`/`git`, `http`/`https`, and `javascript`/`js`.
````html
```html
<h1>Hello world!</h1>
```
````
### Code Block Shortcode
The Hugo documentation comes with a very robust shortcode for adding interactive code blocks.
{{% note %}}
With the `code` shortcodes, *you must include triple back ticks and a language declaration*. This was done by design so that the shortcode wrappers were easily added to legacy documentation and will be that much easier to remove if needed in future versions of the Hugo docs.
{{% /note %}}
### `code`
`code` is the Hugo docs shortcode you'll use most often. `code` requires has only one named parameter: `file`. Here is the pattern:
````markdown
{{%/* code file="smart/file/name/with/path.html" download="download.html" copy="true" */%}}
```language
A whole bunch of coding going on up in here!
```
{{%/* /code */%}}
````
The following are the arguments passed into `code`:
***`file`***
: the only *required* argument. `file` is needed for styling but also plays an important role in helping users create a mental model around Hugo's directory structure. Visually, this will be displayed as text in the top left of the code block.
`download`
: if omitted, this will have no effect on the rendered shortcode. When a value is added to `download`, it's used as the filename for a downloadable version of the code block.
`copy`
: a copy button is added automatically to all `code` shortcodes. If you want to keep the filename and styling of `code` but don't want to encourage readers to copy the code (e.g., a "Do not do" snippet in a tutorial), use `copy="false"`.
#### Example `code` Input
This example HTML code block tells Hugo users the following:
1. This file *could* live in `layouts/_default`, as demonstrated by `layouts/_default/single.html` as the value for `file`.
2. This snippet is complete enough to be downloaded and implemented in a Hugo project, as demonstrated by `download="single.html"`.
````md
{{%/* code file="layouts/_default/single.html" download="single.html" */%}}
```html
{{ define "main" }}
<main>
<article>
<header>
<h1>{{.Title}}</h1>
{{with .Params.subtitle}}
<span>{{.}}</span>
</header>
<div>
{{.Content}}
</div>
<aside>
{{.TableOfContents}}
</aside>
</article>
</main>
{{ end }}
```
{{%/* /code */%}}
````
##### Example 'code' Display
The output of this example will render to the Hugo docs as follows:
{{% code file="layouts/_default/single.html" download="single.html" %}}
```html
{{ define "main" }}
<main>
<article>
<header>
<h1>{{.Title}}</h1>
{{with .Params.subtitle}}
<span>{{.}}</span>
</header>
<div>
{{.Content}}
</div>
<aside>
{{.TableOfContents}}
</aside>
</article>
</main>
{{ end }}
```
{{% /code %}}
<!-- #### Output Code Block
The `output` shortcode is almost identical to the `code` shortcode but only takes and requires `file`. The purpose of `output` is to show *rendered* HTML and therefore almost always follows another basic code block *or* and instance of the `code` shortcode:
````html
{{%/* output file="post/my-first-post/index.html" */%}}
```html
<h1>This is my First Hugo Blog Post</h1>
<p>I am excited to be using Hugo.</p>
```
{{%/* /output */%}}
````
The preceding `output` example will render as follows to the Hugo docs:
{{% output file="post/my-first-post/index.html" %}}
```html
<h1>This is my First Hugo Blog Post</h1>
<p>I am excited to be using Hugo.</p>
```
{{% /output %}} -->
## Blockquotes
Blockquotes can be added to the Hugo documentation using [typical Markdown blockquote syntax][bqsyntax]:
```markdown
> Without the threat of punishment, there is no joy in flight.
```
The preceding blockquote will render as follows in the Hugo docs:
> Without the threat of punishment, there is no joy in flight.
However, you can add a quick and easy `<cite>` element (added on the client via JavaScript) by separating your main blockquote and the citation with a hyphen with a single space on each side:
```markdown
> Without the threat of punishment, there is no joy in flight. - [Kobo Abe](https://en.wikipedia.org/wiki/Kobo_Abe)
```
Which will render as follows in the Hugo docs:
> Without the threat of punishment, there is no joy in flight. - [Kobo Abe][abe]
{{% note "Blockquotes `!=` Admonitions" %}}
Previous versions of Hugo documentation used blockquotes to draw attention to text. This is *not* the [intended semantic use of `<blockquote>`](http://html5doctor.com/cite-and-blockquote-reloaded/). Use blockquotes when quoting. To note or warn your user of specific information, use the admonition shortcodes that follow.
{{% /note %}}
## Admonitions
**Admonitions** are common in technical documentation. The most popular is that seen in [reStructuredText 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]
The Hugo docs contain three admonitions: `note`, `tip`, and `warning`.
### `note` Admonition
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` Input
{{% code file="note-with-heading.md" %}}
```markdown
{{%/* note */%}}
Here is a piece of information I would like to draw your **attention** to.
{{%/* /note */%}}
```
{{% /code %}}
#### Example `note` Output
{{% output file="note-with-heading.html" %}}
```html
{{% note %}}
Here is a piece of information I would like to draw your **attention** to.
{{% /note %}}
```
{{% /output %}}
#### Example `note` Display
{{% note %}}
Here is a piece of information I would like to draw your **attention** to.
{{% /note %}}
### `tip` Admonition
Use the `tip` shortcode when you want to give the reader advice. `tip`, like `note`, is intended to be less of an interruption in content than is `warning`.
#### Example `tip` Input
{{% code file="using-tip.md" %}}
```markdown
{{%/* tip */%}}
Here's a bit of advice to improve your productivity with Hugo.
{{%/* /tip */%}}
```
{{% /code %}}
#### Example `tip` Output
{{% output file="tip-output.html" %}}
```html
{{% tip %}}
Here's a bit of advice to improve your productivity with Hugo.
{{% /tip %}}
```
{{% /output %}}
#### Example `tip` Display
{{% tip %}}
Here's a bit of advice to improve your productivity with Hugo.
{{% /tip %}}
### `warning` Admonition
Use the `warning` shortcode when you want to draw the user's attention to something important. A good usage example is for articulating breaking changes in Hugo versions, known bugs, or templating "gotchas."
#### Example `warning` Input
{{% code file="warning-admonition-input.md" %}}
```markdown
{{%/* warning */%}}
This is a warning, which should be reserved for *important* information like breaking changes.
{{%/* /warning */%}}
```
{{% /code %}}
#### Example `warning` Output
{{% output file="warning-admonition-output.html" %}}
```html
{{% warning %}}
This is a warning, which should be reserved for *important* information like breaking changes.
{{% /warning %}}
```
{{% /output %}}
#### Example `warning` Display
{{% warning %}}
This is a warning, which should be reserved for *important* information like breaking changes.
{{% /warning %}}
{{% note "Pull Requests and Branches" %}}
Similar to [contributing to Hugo development](/contribute/development/), the Hugo team expects you to create a separate branch/fork when you make your contributions to the Hugo docs.
{{% /note %}}
[abe]: https://en.wikipedia.org/wiki/Kobo_Abe
[archetypes]: /content-management/archetypes/
[bqsyntax]: https://github.com/adam-p/markdown-here/wiki/Markdown-Cheatsheet#blockquotes
[charcount]: http://www.lettercount.com/
[`docs/static/images/showcase/`]: https://github.com/gohugoio/hugo/tree/master/docs/static/images/showcase/
[ghforking]: https://help.github.com/articles/fork-a-repo/
[hugodev]: /contribute/development/
[shortcodeparams]: content-management/shortcodes/#shortcodes-without-markdown
[sourceforge]: http://docutils.sourceforge.net/docs/ref/rst/directives.html#admonitions
[templating function]: /functions/

View file

@ -0,0 +1,154 @@
---
title: Add Your Hugo Theme to the Showcase
linktitle: Themes
description: If you've built a Hugo theme and want to contribute back to the Hugo Community, add your theme to the Hugo Showcase.
date: 2017-02-01
publishdate: 2017-02-01
lastmod: 2017-02-27
categories: [contribute]
#tags: [contribute,themes,design]
authors: [digitalcraftsman]
menu:
docs:
parent: "contribute"
weight: 30
weight: 30
sections_weight: 30
draft: false
aliases: [/contribute/theme/]
wip: true
toc: true
---
A collection of all themes created by the Hugo community, including screenshots and demos, can be found at <https://themes.gohugo.io>. Every theme in this list will automatically be added to the theme site. Theme updates aren't scheduled but usually happen at least once a week.
## tl;dr
1. Create your theme using `hugo new theme <THEMENAME>`;
2. Test your theme against <https://github.com/spf13/HugoBasicExample> \*
3. Add a `theme.toml` file to the root of the theme with all required metadata
4. Add a descriptive `README.md` to the root of the theme source
5. Add `/images/screenshot.png` and `/images/tn.png`
\* If your theme doesn't fit into the `Hugo Basic Example` site, we encourage theme authors to supply a self-contained Hugo site in `/exampleSite`.
{{% note %}}
The folder name here---`exampleSite`---is important, as this folder will be picked up and used by the script that generates the Hugo Theme Site. It mirrors the root directory of a Hugo website and allows you to add custom content, assets, and a `config` file with preset values.
{{% /note %}}
See the [Hugo Artist theme's exampleSite][artistexample] for a good example.
{{% note %}}
Please make your example site's content is as neutral as possible. We hope this goes without saying.
{{% /note %}}
## Theme Requirements
In order to add your theme to the Hugo Themes Showcase, the following requirements need to be met:
1. `theme.toml` with all required fields
2. Images for thumbnail and screenshot
3. A good README file instructions for users
4. Addition to the hugoThemes GitHub repository
### Add Your Theme to the Repo
The easiest way to add your theme is to [open up a new issue in the theme repository][themeissuenew] with a link to the theme's repository on GitHub.
### Create a `theme.toml` File
`theme.toml` contains metadata about the theme and its creator and should be created automatically when running the `hugo new theme`. The auto-generated file is provided here as well for easy downloading:
{{% code file="theme.toml" download="theme.toml" %}}
```toml
name = ""
license = "MIT"
licenselink = "https://github.com/<YOURNAME>/<YOURTHEME>/blob/master/LICENSE.md"
description = ""
homepage = "http://yoursite.com/"
tags = []
features = []
min_version = 0.19
[author]
name = ""
homepage = ""
# If porting an existing theme
[original]
name = ""
homepage = ""
repo = ""
```
{{% /code %}}
The following fields are required:
```toml
name = "Hyde"
license = "MIT"
licenselink = "https://github.com/spf13/hyde/blob/master/LICENSE.md"
description = "An elegant open source and mobile first theme"
homepage = "http://siteforthistheme.com/"
tags = ["blog", "company"]
features = ["blog"]
min_version = 0.13
[author]
name = "spf13"
homepage = "http://spf13.com/"
# If porting an existing theme
[original]
author = "mdo"
homepage = "http://hyde.getpoole.com/"
repo = "https://www.github.com/mdo/hyde"
```
{{% note %}}
1. This is different from the `theme.toml` file created by `hugo new theme` in Hugo versions before v0.14.
2. Only `theme.toml` is accepted; ie. not `theme.yaml` andnot `theme.json`.
{{% /note %}}
### Images
Screenshots are used for previews in the Hugo Theme Gallery. Make sure that they have the right dimensions:
* Thumbnail should be 900px × 600px
* Screenshot should be 1500px × 1000px
* Media must be located in
* <THEMEDIR>/images/screenshot.png</code>
* <THEMEDIR>/images/tn.png</code>
Additional media may be provided in the same directory.
### Create a README File
Your theme's README file should be written in markdown and saved at the root of your theme's directory structure. Your `README.md` serves as
1. Content for your theme's details page at <https://themes.gohugo.io>
2. General information about the theme in your GitHub repository (i.e., it's usual purpose)
#### Example `README.md`
You can download the following `README.md` as an outline:
{{% code file="README.md" download="README.md" %}}
```markdown
# Theme Title
**Need input from @digitalcraftsman on what could be added to this file.**
```
{{% /code %}}
{{% note "Screenshots in your `README.md`"%}}
If you add screenshots to the README, please make use of absolute file paths instead of relative ones like `/images/screenshot.png`. Relative paths work great on GitHub but they don't correspond to the directory structure of [themes.gohugo.io](http://themes.gohugo.io/). Therefore, browsers will not be able to display screenshots on the theme site under the given (relative) path.
{{% /note %}}
[artistexample]: https://github.com/digitalcraftsman/hugo-artists-theme/tree/master/exampleSite
[themeissuenew]: https://github.com/gohugoio/hugoThemes/issues/new

19
content/documentation.md Normal file
View file

@ -0,0 +1,19 @@
---
title: Hugo Documentation
linktitle: Hugo
description: Hugo is the world's fastest static website engine. It's written in Go (aka Golang) and developed by bep, spf13 and friends.
date: 2017-02-01
publishdate: 2017-02-01
lastmod: 2017-02-01
menu:
main:
parent: "section name"
weight: 01
weight: 01 #rem
draft: false
slug:
aliases: []
toc: false
layout: documentation-home
---
Hugo is the **world's fastest static website engine.** It's written in Go (aka Golang) and developed by [bep](https://github.com/bep), [spf13](https://github.com/spf13) and [friends](https://github.com/gohugoio/hugo/graphs/contributors). Below you will find some of the most common and helpful pages from our documentation.

View file

@ -1,103 +0,0 @@
---
aliases:
- /doc/redirects/
- /doc/alias/
- /doc/aliases/
lastmod: 2015-12-23
date: 2013-07-09
menu:
main:
parent: extras
next: /extras/analytics
prev: /taxonomies/methods
title: 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]({{< relref "content/multilingual.md" >}}), 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

View file

@ -1,28 +0,0 @@
---
date: 2016-02-06
linktitle: Analytics
menu:
main:
parent: extras
next: /extras/builders
prev: /extras/aliases
title: Analytics in Hugo
---
Hugo ships with prebuilt internal templates for Google Analytics tracking, including both synchronous and asynchronous tracking codes.
## Configuring Google Analytics
Provide your tracking id in your configuration file, e.g. config.yaml.
googleAnalytics = "UA-123-45"
## Example
Include the internal template in your templates like so:
{{ template "_internal/google_analytics.html" . }}
For async include the async template:
{{ template "_internal/google_analytics_async.html" . }}

View file

@ -1,56 +0,0 @@
---
lastmod: 2015-12-24
date: 2014-05-26
linktitle: Builders
menu:
main:
parent: extras
next: /extras/comments
prev: /extras/analytics
title: Hugo Builders
---
Hugo provides the functionality to quickly get a site, theme or page
started.
## New Site
Want to get a site built quickly?
{{< nohighlight >}}$ hugo new site <i>path/to/site</i>
{{< /nohighlight >}}
Hugo will create all the needed directories and files to get started
quickly.
Hugo will only touch the files and create the directories (in the right
places), [configuration](/overview/configuration/) and content are up to
you... but luckily we have builders for content (see below).
## New Theme
Want to design a new theme?
$ hugo new theme THEME_NAME
Run from your working directory, this will create a new theme with all
the needed files in your themes directory. Hugo will provide you with a
license and theme.toml file with most of the work done for you.
Follow the [Theme Creation Guide](/themes/creation/) once the builder is
done.
## New Content
You will use this builder the most of all. Every time you want to create
a new piece of content, the content builder will get you started right.
Leveraging [content archetypes](/content/archetypes/) the content builder
will not only insert the current date and appropriate metadata, but it
will pre-populate values based on the content type.
$ hugo new relative/path/to/content
This assumes it is being run from your working directory and the content
path starts from your content directory. Now, Hugo watches your content directory by default and rebuilds your entire website if any change occurs.

View file

@ -1,99 +0,0 @@
---
lastmod: 2015-08-04
date: 2014-05-26
linktitle: Comments
menu:
main:
parent: extras
next: /extras/crossreferences
prev: /extras/builders
title: Comments in Hugo
---
As Hugo is a static site generator, the content produced is static and doesnt 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 doesnt, it is easy to add.
# Disqus Support
## 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:
{{ template "_internal/disqus.html" . }}
## Configuring Disqus
That template requires you to set a single value in your site config file, e.g. config.yaml.
disqusShortname = "XYW"
Additionally, you can optionally 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 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 your `partials` folder that looks like this:
```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>
```
Notice that there is a simple `if` statement that detects when you are running on localhost and skips the initialization of the Disqus comment injection.
Now, reference the partial template from your page template:
{{ partial "disqus.html" . }}
# Alternatives
A few alternatives exist to [Disqus](https://disqus.com/):
* [txtpen](https://txtpen.com)
* [Discourse](http://www.discourse.org)
* [IntenseDebate](http://intensedebate.com/)
* [Livefyre](http://www.adobe.com/marketing-cloud/enterprise-content-management/ugc-content-platform.html)
* [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/) (Hugos 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.
## txtpen
[txtpen](https://txtpen.com) adds highlighting an in-line commenting similar to Medium to your Hugo blog.
## Discourse
Additionally, you may recognize [Discourse](http://www.discourse.org) as the system that powers the [Hugo Discussion Forum](https://discourse.gohugo.io).

View file

@ -1,153 +0,0 @@
---
lastmod: 2015-12-23
date: 2014-11-25
menu:
main:
parent: extras
next: /extras/robots-txt
prev: /extras/comments
title: Cross-References
toc: true
---
Hugo makes it easy to link documents together with the `ref` and `relref` 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/`).
## Using `ref` and `relref`
```django
{{</* ref "document" */>}}
{{</* ref "#anchor" */>}}
{{</* ref "document#anchor" */>}}
{{</* relref "document" */>}}
{{</* relref "#anchor" */>}}
{{</* relref "document#anchor" */>}}
```
The single parameter to `ref` is a string with a content _document name_ (`about.md`), an in-document _anchor_ (`#who`), or both (`about.md#who`).
### Document Names
The _document name_ is the name of a document including the format extension; this may be just the filename, or the relative path from the `content/` directory. With a document `content/blog/post.md`, either format will produce the same result.
{{</* relref "blog/post.md" */>}} ⇒ `/blog/post/`
{{</* relref "post.md" */>}} ⇒ `/blog/post/`
If you have multiple sections with the same filename, you should only use the relative path format, because the behaviour is _undefined_. So, if I also have a document `link/post.md`, the output of `ref` is unknown for `post.md`.
{{</* relref "blog/post.md" */>}} ⇒ `/blog/post/`
{{</* relref "post.md" */>}} ⇒ `/blog/post/` (maybe)
{{</* relref "post.md" */>}} ⇒ `/link/post/` (maybe)
{{</* relref "link/post.md" */>}} ⇒ `/link/post/`
A relative document name must *not* begin with a slash (`/`).
{{</* relref "/blog/post.md" */>}} ⇒ `""`
### Anchors
When an _anchor_ is provided by itself, the current pages unique identifier will be appended; when an _anchor_ is provided with a document name, the found page's unique identifier will be appended.
{{</* relref "#who" */>}} ⇒ `#who:9decaf7`
{{</* relref "blog/post.md#who" */>}} ⇒ `/blog/post/#who:badcafe`
More information about document unique identifiers and headings can be found [below]({{< ref "#hugo-heading-anchors" >}}).
### Examples
* `{{</* ref "blog/post.md" */>}}``http://1.com/blog/post/`
* `{{</* ref "post.md#tldr" */>}}``http://1.com/blog/post/#tldr:caffebad`
* `{{</* relref "post.md" */>}}``/blog/post/`
* `{{</* relref "blog/post.md#tldr" */>}}``/blog/post/#tldr:caffebad`
* `{{</* ref "#tldr" */>}}``#tldr:badcaffe`
* `{{</* relref "#tldr" */>}}``#tldr:badcaffe`
## Hugo Heading Anchors
When using Markdown document types, Hugo generates heading anchors automatically. The generated anchor for this section is `hugo-heading-anchors`. Because the heading anchors are generated automatically, Hugo takes some effort to ensure that heading anchors are unique both inside a document and across the entire site.
Ensuring heading uniqueness across the site is accomplished with a unique identifier for each document based on its path. Unless a document is renamed or moved between sections *in the filesystem*, the unique identifier for the document will not change: `blog/post.md` will always have a unique identifier of `81df004c333b392d34a49fd3a91ba720`.
`ref` and `relref` were added so you can make these reference links without having to know the documents unique identifier. (The links in document tables of contents are automatically up-to-date with this value.)
{{</* relref "extras/crossreferences.md#hugo-heading-anchors" */>}}
/extras/crossreferences/#hugo-heading-anchors:77cd9ea530577debf4ce0f28c8dca242
> What follows is a deeper discussion of *why* and *how* Hugo generates heading anchors. It is not necessary to know this to use `ref` and `relref`, but it may be useful in understanding how some anchors may not match your expectations.
### How to Generate a Heading Anchor
Convert the text of the heading to lowercase.
Hugo: A Fast & Modern Static Web Engine
hugo: a fast & modern static web engine
Replace anything that isn't an ASCII letter (`a-z`) or number (`0-9`) with a dash (`-`).
hugo: a fast & modern static web engine
hugo--a-fast---modern-static-web-engine
Get rid of extra dashes.
hugo--a-fast---modern-static-web-engine
hugo-a-fast-modern-static-web-engine
You have just converting the text of a heading to a suitable anchor. If your document has unique heading text, all of the anchors will be unique, too.
#### Specifying Heading Anchors
You can also tell Hugo to use a particular heading anchor.
# Hugo: A Fast & Modern Static Web Engine {#hugo-main}
Hugo will use `hugo-main` as the heading anchor.
### What About Duplicate Heading Anchors?
The technique outlined above works well enough, but some documents have headings with identical text, like the [shortcodes](/extras/shortcodes/) page—there are three headings with the text "Example". You can specify heading anchors manually:
### Example {#example-1}
### Example {#example-2}
### Example {#example-3}
Its easy to forget to do that all the time, and Hugo is smart enough to do it for you. It just adds `-x` to the end of each heading it has already seen.
* `### Example``example`
* `### Example``example-1`
* `### Example``example-2`
Sometimes it's a little harder, but Hugo can recover from those, too, by adding more suffixes:
* `# Heading``heading`
* `# Heading 1``heading-1`
* `# Heading``heading-1-1`
* `# Heading``heading-1-2`
* `# Heading 1``heading-2`
This can even affect specified heading anchors that come after a generated heading anchor.
* `# My Heading``my-heading`
* `# My Heading {#my-heading}``my-heading-1`
> This particular collision and override is unfortunate, but unavoidable because Hugo processes each heading for collision detection as it sees it during conversion.
This technique works well for documents rendered on individual pages, like blog posts. What about on Hugo list pages?
### Unique Heading Anchors in Lists
Hugo converts each document from Markdown independently. it doesnt know that `blog/post.md` has an "Example" heading that will collide with the "Example" heading in `blog/post2.md`. Even if it did know this, the addition of `blog/post3.md` should not cause the anchors for the headings in the other blog posts to change.
Enter the documents unique identifier. To prevent this sort of collision on
list pages, Hugo always appends the document's to a generated heading anchor.
So, the "Example" heading in `blog/post.md` actually turns into
`#example:81df004…`, and the "Example" heading in `blog/post2.md` actually
turns into `#example:8cf1599…`. All you have to know is the heading anchor that
was generated, not the document identifier; `ref` and `relref` take care of the
rest for you.
<a href='{{</* relref "blog/post.md#example" */>}}'>Post Example</a>
<a href='/blog/post.md#81df004…'>Post Example</a>
[Post Two Example]({{</* relref "blog/post2.md#example" */>}})
<a href='/blog/post2.md#8cf1599…'>Post Two Example</a>
Now you know.

View file

@ -1,142 +0,0 @@
---
aliases:
- /doc/datadrivencontent/
lastmod: 2016-03-03
date: 2015-02-14
menu:
main:
parent: extras
next: /extras/gitinfo
prev: /extras/datafiles
title: Data-driven Content
toc: true
---
Data-driven content with a static site generator? Yes, it is possible!
In addition to the [data files](/extras/datafiles/) feature, we have also
implemented the feature "Data-driven Content", which lets you load
any [JSON](http://www.json.org/) or
[CSV](http://en.wikipedia.org/wiki/Comma-separated_values) file
from nearly any resource.
"Data-driven Content" currently consists of two functions, `getJSON`
and `getCSV`, which are available in **all template files**.
## Implementation details
### Calling the functions with an URL
In any HTML template or Markdown document, call the functions like this:
{{ $dataJ := getJSON "url" }}
{{ $dataC := getCSV "separator" "url" }}
or, if you use a prefix or postfix for the URL, the functions
accept [variadic arguments](http://en.wikipedia.org/wiki/Variadic_function):
{{ $dataJ := getJSON "url prefix" "arg1" "arg2" "arg n" }}
{{ $dataC := getCSV "separator" "url prefix" "arg1" "arg2" "arg n" }}
The separator for `getCSV` must be put in the first position and can only
be one character long.
All passed arguments will be joined to the final URL; for example:
{{ $urlPre := "https://api.github.com" }}
{{ $gistJ := getJSON $urlPre "/users/GITHUB_USERNAME/gists" }}
will resolve internally to:
{{ $gistJ := getJSON "https://api.github.com/users/GITHUB_USERNAME/gists" }}
Finally, you can range over an array. This example will output the
first 5 gists for a GitHub user:
<ul>
{{ $urlPre := "https://api.github.com" }}
{{ $gistJ := getJSON $urlPre "/users/GITHUB_USERNAME/gists" }}
{{ range first 5 $gistJ }}
{{ if .public }}
<li><a href="{{ .html_url }}" target="_blank">{{ .description }}</a></li>
{{ end }}
{{ end }}
</ul>
### Example for CSV files
For `getCSV`, the one-character long separator must be placed in the
first position followed by the URL.
<table>
<thead>
<tr>
<th>Name</th>
<th>Position</th>
<th>Salary</th>
</tr>
</thead>
<tbody>
{{ $url := "http://a-big-corp.com/finance/employee-salaries.csv" }}
{{ $sep := "," }}
{{ range $i, $r := getCSV $sep $url }}
<tr>
<td>{{ index $r 0 }}</td>
<td>{{ index $r 1 }}</td>
<td>{{ index $r 2 }}</td>
</tr>
{{ end }}
</tbody>
</table>
The expression `{{index $r number}}` must be used to output the nth-column from
the current row.
### Caching of URLs
Each downloaded URL will be cached in the default folder `$TMPDIR/hugo_cache/`.
The variable `$TMPDIR` will be resolved to your system-dependent
temporary directory.
With the command-line flag `--cacheDir`, you can specify any folder on
your system as a caching directory.
You can also set `cacheDir` in the main configuration file.
If you don't like caching at all, you can fully disable caching with the
command line flag `--ignoreCache`.
### Authentication when using REST URLs
Currently, you can only use those authentication methods that can
be put into an URL. [OAuth](http://en.wikipedia.org/wiki/OAuth) or
other authentication methods are not implemented.
### Loading local files
To load local files with the two functions `getJSON` and `getCSV`, the
source files must reside within Hugo's working directory. The file
extension does not matter but the content does.
It applies the same output logic as in the topic: *Calling the functions with an URL*.
## LiveReload
There is no chance to trigger a [LiveReload](/extras/livereload/) when
the content of an URL changes. However, when a local JSON/CSV file changes,
then a LiveReload will be triggered of course. Symlinks are not supported.
**URLs and LiveReload**: If you change any local file and the LiveReload
is triggered, Hugo will either read the URL content from the cache or, if
you have disabled the cache, Hugo will re-download the content.
This can create huge traffic and you may also reach API limits quickly.
As downloading of content takes a while, Hugo stops processing
your Markdown files until the content has been downloaded.
## Examples
- Photo gallery JSON powered: [https://github.com/pcdummy/hugo-lightslider-example](https://github.com/pcdummy/hugo-lightslider-example)
- GitHub Starred Repositories [in a posts](https://github.com/SchumacherFM/blog-cs/blob/master/content%2Fposts%2Fgithub-starred.md) with the related [short code](https://github.com/SchumacherFM/blog-cs/blob/master/layouts%2Fshortcodes%2FghStarred.html).
- More? Please tell us!

View file

@ -1,106 +0,0 @@
---
aliases:
- /doc/datafiles/
lastmod: 2015-08-04
date: 2015-01-22
menu:
main:
parent: extras
next: /extras/datadrivencontent
prev: /extras/robots-txt
title: Data Files
---
In addition to the [built-in variables](/templates/variables/) available from Hugo, you can specify your own custom data that can be accessed via templates or shortcodes.
Hugo supports loading data from [YAML](http://yaml.org/), [JSON](http://www.json.org/), and [TOML](https://github.com/toml-lang/toml) files located in the `data` directory.
**It even works with [LiveReload](/extras/livereload/).**
Data Files can also be used in [themes](/themes/overview/), but note: If the same `key` is used in both the main data folder and in the theme's data folder, the main one will win. So, for theme authors, for theme specific data items that shouldn't be overridden, it can be wise to prefix the folder structure with a namespace, e.g. `mytheme/data/mytheme/somekey/...`. To check if any such duplicate exists, run hugo with the `-v` flag, e.g. `hugo -v`.
## The Data Folder
The `data` folder is where you can store additional data for Hugo to use when generating your site. Data files aren't used to generate standalone pages - rather they're meant to supplement the content files. This feature can extend the content in case your frontmatter would grow immensely. Or perhaps you want to show a larger dataset in a template (see example below). In both cases it's a good idea to outsource the data in their own file.
These files must be YAML, JSON or TOML files (using either the `.yml`, `.yaml`, `.json` or `toml` extension) and the data will be accessible as a `map` in `.Site.Data`.
**The keys in this map will be a dot chained set of _path_, _filename_ and _key_ in file (if applicable).**
This is best explained with an example:
## Example: Jaco Pastorius' Solo Discography
[Jaco Pastorius](http://en.wikipedia.org/wiki/Jaco_Pastorius_discography) was a great bass player, but his solo discography is short enough to use as an example. [John Patitucci](http://en.wikipedia.org/wiki/John_Patitucci) is another bass giant.
The example below is a bit constructed, but it illustrates the flexibility of Data Files. It uses TOML as file format.
Given the files:
* `data/jazz/bass/jacopastorius.toml`
* `data/jazz/bass/johnpatitucci.toml`
`jacopastorius.toml` contains the content below, `johnpatitucci.toml` contains a similar list:
```
discography = [
"1974 Modern American Music … Period! The Criteria Sessions",
"1974 Jaco",
"1976 - Jaco Pastorius",
"1981 - Word of Mouth",
"1981 - The Birthday Concert (released in 1995)",
"1982 - Twins I & II (released in 1999)",
"1983 - Invitation",
"1986 - Broadway Blues (released in 1998)",
"1986 - Honestly Solo Live (released in 1990)",
"1986 - Live In Italy (released in 1991)",
"1986 - Heavy'n Jazz (released in 1992)",
"1991 - Live In New York City, Volumes 1-7.",
"1999 - Rare Collection (compilation)",
"2003 - Punk Jazz: The Jaco Pastorius Anthology (compilation)",
"2007 - The Essential Jaco Pastorius (compilation)"
]
```
The list of bass players can be accessed via `.Site.Data.jazz.bass`, a single bass player by adding the filename without the suffix, e.g. `.Site.Data.jazz.bass.jacopastorius`.
You can now render the list of recordings for all the bass players in a template:
```
{{ range $.Site.Data.jazz.bass }}
{{ partial "artist.html" . }}
{{ end }}
```
And then in `partial/artist.html`:
```
<ul>
{{ range .discography }}
<li>{{ . }}</li>
{{ end }}
</ul>
```
Discover a new favourite bass player? Just add another TOML-file.
## Example: Accessing named values in a Data File
Assuming you have the following YAML structure to your `User0123.yml` Data File located directly in `data/`
```
Name: User0123
"Short Description": "He is a **jolly good** fellow."
Achievements:
- "Can create a Key, Value list from Data File"
- "Learns Hugo"
- "Reads documentation"
```
To render the `Short Description` in your `layout` File following code is required.
```
<div>Short Description of {{.Site.Data.User0123.Name}}: <p>{{ index .Site.Data.User0123 "Short Description" | markdownify }}</p></div>
```
Note the use of the `markdownify` template function. This will send the description through the Blackfriday Markdown rendering engine.

View file

@ -1,54 +0,0 @@
---
aliases:
- /doc/gitinfo/
lastmod: 2016-12-11
date: 2016-12-11
menu:
main:
parent: extras
next: /extras/livereload
prev: /extras/datadrivencontent
title: GitInfo
---
Hugo provides a way to integrate Git data into your site.
## Prerequisites
1. The Hugo site must be in a Git-enabled directory.
1. The Git executable must be installed and in your system `PATH`.
1. Enable the GitInfo feature in Hugo by using `--enableGitInfo` on the command
line or by setting `enableGitInfo` to `true` in your site configuration.
## The GitInfo Object
The `GitInfo` object contains the following fields:
AbbreviatedHash
: abbreviated commit hash, e.g. `866cbcc`
AuthorName
: author name, respecting `.mailmap`
AuthorEmail
: author email address, respecting `.mailmap`
AuthorDate
: the author date
Hash
: commit hash, e.g. `866cbccdab588b9908887ffd3b4f2667e94090c3`
Subject
: commit message subject, e.g. `tpl: Add custom index function`
## Other Considerations
The Git integrations should be fairly performant, but it does add some time to the build, which depends somewhat on the Git history size.
The accuracy of data depends on the underlying local git respository. If the local repository is a *shallow clone*, then any file that hasn't been modified in the truncated history will default to data in the oldest commit. In particular, if the respository has been cloned using `--depth=1` then every file will the exact same `GitInfo` data -- that of the only commit in the repository.
In particular, many CI/CD systems such as [travis-ci.org](https://travis-ci.org) default to a clone depth of 50 which is unlikely to be deep enough. You can explicitly add back the missing history using using `git fetch --unshallow` or [make the initial checkout deeper](https://docs.travis-ci.com/user/customizing-the-build#Git-Clone-Depth).

View file

@ -1,197 +0,0 @@
---
aliases:
- /extras/highlight/
lastmod: 2015-10-27
date: 2013-07-01
menu:
main:
parent: extras
next: /extras/toc
prev: /extras/shortcodes
title: Syntax Highlighting
toc: true
---
Hugo provides the ability for you to highlight source code in _two different ways_ &mdash; either pre-processed server side from your content, or to defer the processing to the client side, using a JavaScript library.
**The advantage of server side** is that it doesnt depend on a JavaScript library and consequently works very well when read from an RSS feed.
**The advantage of client side** is that it doesnt cost anything when building your site and some of the highlighting scripts available cover more languages than Pygments does.
## Server-side
For the pre-processed approach, highlighting is performed by an external Python-based program called [Pygments](http://pygments.org/) and is triggered via an embedded Hugo shortcode (see example below). If Pygments is absent from the path, it will silently simply pass the content along unhighlighted.
### Pygments
If you have never worked with Pygments before, here is a brief primer:
+ Install Python from [python.org](https://www.python.org/downloads/). Version 2.7.x is already sufficient.
+ Run `pip install Pygments` in order to install Pygments. Once installed, Pygments gives you a command `pygmentize`. Make sure it sits in your PATH, otherwise Hugo cannot find it.
On Debian and Ubuntu systems, you may also install Pygments by running `sudo apt-get install python3-pygments`.
Hugo gives you two options that you can set with the variable `pygmentsuseclasses` (default `false`) in `config.toml` (or `config.yaml`).
1. Color-codes for highlighting keywords are directly inserted if `pygmentsuseclasses = false` (default). See in the example below. The color-codes depend on your choice of the `pygmentsstyle` (default `"monokai"`). You can explore the different color styles on [pygments.org](http://pygments.org/) after inserting some example code.
2. If you choose `pygmentsuseclasses = true`, Hugo includes class names in your code instead of color-codes. For class-names to be meaningful, you need to include a `.css`-file in your website representing your color-scheme. You can either generate this `.css`-files according to this [description](http://pygments.org/docs/cmdline/) or download the standard ones from the [GitHub pygments-css repository](https://github.com/richleland/pygments-css).
### Usage
Highlighting is carried out via the in-built shortcode `highlight`. `highlight` takes exactly one required parameter of language, and requires a closing shortcode. Note that `highlight` is _not_ used for client-side javascript highlighting.
### Example
```
{{</* highlight html */>}}
<section id="main">
<div>
<h1 id="title">{{ .Title }}</h1>
{{ range .Data.Pages }}
{{ .Render "summary"}}
{{ end }}
</div>
</section>
{{</* /highlight */>}}
```
### Example Output
```
<span style="color: #f92672">&lt;section</span> <span style="color: #a6e22e">id=</span><span style="color: #e6db74">&quot;main&quot;</span><span style="color: #f92672">&gt;</span>
<span style="color: #f92672">&lt;div&gt;</span>
<span style="color: #f92672">&lt;h1</span> <span style="color: #a6e22e">id=</span><span style="color: #e6db74">&quot;title&quot;</span><span style="color: #f92672">&gt;</span>{{ .Title }}<span style="color: #f92672">&lt;/h1&gt;</span>
{{ range .Data.Pages }}
{{ .Render &quot;summary&quot;}}
{{ end }}
<span style="color: #f92672">&lt;/div&gt;</span>
<span style="color: #f92672">&lt;/section&gt;</span>
```
### Options
Options to control highlighting can be added as a quoted, comma separated key-value list as the second argument in the shortcode. The example below will highlight as language `go` with inline line numbers, with line number 2 and 3 highlighted.
```
{{</* highlight go "linenos=inline,hl_lines=2 3" */>}}
var a string
var b string
var c string
var d string
{{</* / highlight */>}}
```
Supported keywords: `style`, `encoding`, `noclasses`, `hl_lines`, `linenos`. Note that `style` and `noclasses` will override the similar setting in the global config.
The keywords are the same you would using with Pygments from the command line, see the [Pygments doc](http://pygments.org/docs/) for more info.
### Code fences
It is also possible to add syntax highlighting with GitHub flavoured code fences. To enable this, set the `PygmentsCodeFences` to `true` in Hugo's configuration file.
````
``` html
<section id="main">
<div>
<h1 id="title">{{ .Title }}</h1>
{{ range .Data.Pages }}
{{ .Render "summary"}}
{{ end }}
</div>
</section>
```
````
### Disclaimers
* Pygments is relatively slow and _causes a performance hit when building your site_, but Hugo has been designed to cache the results to disk.
* The caching can be turned off by setting the `--ignoreCache` flag to `true`.
* Languages available depends on your Pygments installation.
## Client-side
Alternatively, code highlighting can be done in client-side JavaScript.
Client-side syntax highlighting is very simple to add. You'll need to pick
a library and a corresponding theme. Some popular libraries are:
- [Highlight.js]
- [Prism]
- [Rainbow]
- [Syntax Highlighter]
- [Google Prettify]
### Highlight.js example
This example uses the popular [Highlight.js] library, hosted by [Yandex], a popular Russian search engine.
In your `./layouts/partials/` (or `./layouts/chrome/`) folder, depending on your specific theme, there will be a snippet that will be included in every generated HTML page, such as `header.html` or `header.includes.html`. Simply add the css and js to initialize [Highlight.js]:
~~~
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/highlight.js/9.6.0/styles/default.min.css">
<script src="//cdnjs.cloudflare.com/ajax/libs/highlight.js/9.6.0/highlight.min.js"></script>
<script>hljs.initHighlightingOnLoad();</script>
~~~
### Prism example
Prism is another popular highlighter library, used on some major sites. Similar to Highlight.js, you simply load `prism.css` in your `<head>` via whatever Hugo partial template is creating that part of your pages, like so:
```html
...
<link href="/css/prism.css" rel="stylesheet" />
...
```
... and add `prism.js` near the bottom of your `<body>` tag, again in whatever Hugo partial template is appropriate for your site or theme.
```html
...
<script src="/js/prism.js"></script>
...
</body>
```
In this example, the local paths indicate that your own copy of these files are being added to the site, typically under `./static/`.
### Using Client-side highlighting
To use client-side highlighting, most of these javascript libraries expect your code to be wrapped in semantically correct `<code>` tags, with the language expressed in a class attribute on the `<code>` tag, such as `class="language-abc"`, where the `abc` is the code the highlighter script uses to represent that language.
The script would be looking for classes like `language-go`, `language-html`, or `language-css`. If you look at the page's source, it would be marked up like so:
~~~html
<pre>
<code class="language-css">
body {
font-family: "Noto Sans", sans-serif;
}
</code>
</pre>
~~~
The markup in your content pages (e.g. `my-css-tutorial.md`) needs to look like the following, with the name of the language to be highlighted entered directly after the first "fence", in a fenced code block:
<pre><code class="language-css">&#126;&#126;&#126;css
body {
font-family: "Noto Sans", sans-serif;
}
&#126;&#126;&#126;</code></pre>
When passed through the highlighter script, it would yield something like this output when viewed on your rendered page:
~~~css
body {
font-family: "Noto Sans", sans-serif;
}
~~~
Please see individual libraries' documentation for how to implement each of the JavaScript-based libraries.
[Prism]: http://prismjs.com
[Highlight.js]: http://highlightjs.org/
[Rainbow]: http://craig.is/making/rainbows
[Syntax Highlighter]: http://alexgorbatchev.com/SyntaxHighlighter/
[Google Prettify]: https://github.com/google/code-prettify
[Yandex]: http://yandex.ru/

View file

@ -1,74 +0,0 @@
---
lastmod: 2016-08-09
date: 2014-05-26
menu:
main:
parent: extras
next: /extras/menus
prev: /extras/gitinfo
title: LiveReload
---
Hugo may not be the first static site generator to utilize LiveReload
technology, but its the first to do it right.
The combination of Hugos insane build speed and LiveReload make
crafting your content pure joy. Virtually instantly after you hit save
your rebuilt content will appear in your browser.
## Using LiveReload
Hugo comes with LiveReload built in. There are no additional packages to
install. A common way to use Hugo while developing a site is to have
Hugo run a server and watch for changes:
{{< nohighlight >}}$ hugo server
{{< /nohighlight >}}
This will run a full functioning web server while simultaneously
watching your file system for additions, deletions or changes within
your:
* static files
* content
* data files
* layouts
* current theme
* configuration files
Whenever anything changes, Hugo will rebuild the site while continuing to serve
the content. As soon as the build is finished, it will tell the
browser and silently reload the page. Because most Hugo builds are so
fast they are barely noticeable, you merely need to glance at your open
browser and you will see the change, already there.
This means that keeping the site open on a second monitor (or another
half of your current monitor) allows you to see exactly what your
content looks like, without even leaving your text editor.
## Disabling Watch
If for some reason you don't want the Hugo server's watch functionality,
just do:
{{< nohighlight >}}$ hugo server --watch=false
{{< /nohighlight >}}
## Disabling LiveReload
LiveReload works by injecting JavaScript into the pages Hugo generates,
which creates a connection from the browser web socket client to the
Hugo web socket server.
Awesome for development, but not something you would want to do in
production. Since many people use `hugo server` in production to
instantly display any updated content, weve made it easy to disable the
LiveReload functionality:
{{< nohighlight >}}$ hugo server --disableLiveReload
{{< /nohighlight >}}
## Notes
You must have a closing `</body>` tag for LiveReload to work.
Hugo injects the LiveReload `<script>` before this tag.

View file

@ -1,57 +0,0 @@
---
aliases:
- /doc/localfiles/
lastmod: 2016-09-12
date: 2015-06-12
menu:
main:
parent: extras
next: /extras/urls
notoc: true
prev: /extras/toc
title: Traversing Local Files
---
## Traversing Local Files
Using Hugo's function `readDir`,
you can traverse your web site's files on your server.
## Using _readDir_
The `readDir` function returns an array
of [`os.FileInfo`](https://golang.org/pkg/os/#FileInfo).
It takes a single, string argument: a path.
This path can be to any directory of your web site
(as found on your server's filesystem).
Whether the path is absolute or relative makes no difference,
because&mdash;at least for `readDir`&mdash;the root of your web site (typically `./public/`)
in effect becomes both:
1. The filesystem root; and
1. The current working directory.
## New Shortcode
So, let's create a new shortcode using `readDir`:
**layouts/shortcodes/directoryindex.html**
```html
{{< readfile "layouts/shortcodes/directoryindex.html" >}}
```
For the files in any given directory,
this shortcode usefully lists their basenames and sizes,
while providing links to them.
Already&mdash;actually&mdash;this shortcode
has been included in this very web site.
So, let's list some of its CSS files.
(If you click on their names, you can reveal the contents.)
{{< directoryindex path="/static/css" pathURL="/css" >}}
<br />
This is the call that rendered the above output:
```html
{{</* directoryindex path="/static/css" pathURL="/css" */>}}
```
By the way,
regarding the pathURL argument, the initial slash `/` is important.
Otherwise, it becomes relative to the current web page.

View file

@ -1,393 +0,0 @@
---
lastmod: 2015-08-04
date: 2014-05-14T02:36:37Z
toc: true
menu:
main:
parent: extras
next: /extras/pagination
prev: /extras/livereload
title: Menus
---
Hugo has a simple yet powerful menu system that permits content to be
placed in menus with a good degree of control without a lot of work.
*TIP:* If all you want is a simple menu for your sections, see [Section Menu for "the Lazy Blogger"]({{< relref "#section-menu-for-the-lazy-blogger" >}}).
Some of the features of Hugo Menus:
* Place content in one or many menus
* Handle nested menus with unlimited depth
* Create menu entries without being attached to any content
* Distinguish active element (and active branch)
## What is a menu?
A menu is a named array of menu entries accessible on the site under
`.Site.Menus` by name. For example, if I have a menu called `main`, I would
access it via `.Site.Menus.main`.
If you make use of the [multilingual feature]({{< relref "content/multilingual.md#menus">}}) you can define menus language independent.
A menu entry has the following properties:
* `URL string`
* `Name string`
* `Menu string`
* `Identifier string`
* `Pre template.HTML`
* `Post template.HTML`
* `Weight int`
* `Parent string`
* `Children Menu`
And the following functions:
* `HasChildren() bool`
Additionally, the `Page` object has two functions, which can be used when rendering menus:
* `IsMenuCurrent (menu string, menuEntry *MenuEntry ) bool`
* `HasMenuCurrent** (menu string, menuEntry *MenuEntry) bool`
See [Menu Functions](#menu-functions) for explanations of these functions, and [Rendering Nested Menus](#rendering-nested-menus) for an example of their use.
## Adding content to menus
Hugo supports a couple of different methods of adding a piece of content
to the front matter.
### Simple
If all you need to do is add an entry to a menu, the simple form works
well.
**A single menu:**
---
menu: "main"
---
**Multiple menus:**
---
menu: ["main", "footer"]
---
### Advanced
If more control is required, then the advanced approach gives you the
control you want. All of the menu entry properties listed above are
available.
---
menu:
main:
parent: 'extras'
weight: 20
---
## Adding (non-content) entries to a menu
You can also add entries to menus that arent attached to a piece of
content. This takes place in the sitewide [config file](/overview/configuration/).
Heres an example `config.toml`:
[[menu.main]]
name = "about hugo"
pre = "<i class='fa fa-heart'></i>"
weight = -110
identifier = "about"
url = "/about/"
[[menu.main]]
name = "getting started"
pre = "<i class='fa fa-road'></i>"
weight = -100
url = "/getting-started/"
And the equivalent example `config.yaml`:
---
menu:
main:
- Name: "about hugo"
Pre: "<i class='fa fa-heart'></i>"
Weight: -110
Identifier: "about"
URL: "/about/"
- Name: "getting started"
Pre: "<i class='fa fa-road'></i>"
Weight: -100
URL: "/getting-started/"
---
**NOTE:** The URLs must be relative to the context root. If the `baseURL` is `http://example.com/mysite/`, then the URLs in the menu must not include the context root `mysite`. Using an absolute URL will overide the baseURL. If the `URL` is `http://subdomain.example.com/`, the output will be `http://subdomain.example.com`.
## Nesting
All nesting of content is done via the `parent` field.
The parent of an entry should be the identifier of another entry.
Identifier should be unique (within a menu).
The following order is used to determine an Identifier:
> Name > LinkTitle > Title.
This means that the title will be used unless
linktitle is present, etc. In practice Name and Identifier are never
displayed and only used to structure relationships.
In this example, the top level of the menu is defined in the config file
and all content entries are attached to one of these entries via the
`parent` field.
## Rendering menus
Hugo makes no assumptions about how your rendered HTML will be
structured. Instead, it provides all of the functions you will need to be
able to build your menu however you want.
The following is an example:
<!--sidebar start-->
<aside>
<div id="sidebar" class="nav-collapse">
<!-- sidebar menu start-->
<ul class="sidebar-menu">
{{ $currentPage := . }}
{{ range .Site.Menus.main }}
{{ if .HasChildren }}
<li class="sub-menu{{if $currentPage.HasMenuCurrent "main" . }} active{{end}}">
<a href="javascript:;" class="">
{{ .Pre }}
<span>{{ .Name }}</span>
<span class="menu-arrow arrow_carrot-right"></span>
</a>
<ul class="sub">
{{ range .Children }}
<li{{if $currentPage.IsMenuCurrent "main" . }} class="active"{{end}}><a href="{{.URL}}"> {{ .Name }} </a> </li>
{{ end }}
</ul>
{{else}}
<li>
<a href="{{.URL}}">
{{ .Pre }}
<span>{{ .Name }}</span>
</a>
{{end}}
</li>
{{end}}
<li> <a href="https://github.com/gohugoio/hugo/issues" target="blank">Questions and Issues</a> </li>
<li> <a href="#" target="blank">Edit this Page</a> </li>
</ul>
<!-- sidebar menu end-->
</div>
</aside>
<!--sidebar end-->
> **Note**: use the `absLangURL` or `relLangURL` if your theme makes use of the [multilingual feature]({{< relref "content/multilingual.md" >}}). In contrast to `absURL` and `relURL` it adds the correct language prefix to the url. [Read more]({{< relref "templates/functions.md#urls" >}}).
## Section Menu for "the Lazy Blogger"
To enable this menu, add this to your site config, i.e. `config.toml`:
```
SectionPagesMenu = "main"
```
The menu name can be anything, but take a note of what it is.
This will create a menu with all the sections as menu items and all the sections' pages as "shadow-members". The _shadow_ implies that the pages isn't represented by a menu-item themselves, but this enables you to create a top-level menu like this:
```
<nav class="sidebar-nav">
{{ $currentPage := . }}
{{ range .Site.Menus.main }}
<a class="sidebar-nav-item{{if or ($currentPage.IsMenuCurrent "main" .) ($currentPage.HasMenuCurrent "main" .) }} active{{end}}" href="{{.URL}}">{{ .Name }}</a>
{{ end }}
</nav>
```
In the above, the menu item is marked as active if on the current section's list page or on a page in that section.
The above is all that's needed. But if you want custom menu items, e.g. changing weight or name, you can define them manually in the site config, i.e. `config.toml`:
```
[[menu.main]]
name = "This is the blog section"
weight = -110
identifier = "blog"
url = "/blog/"
```
**Note** that the `identifier` must match the section name.
## Menu Functions
Suppose you have the menu structure shown below.
```
[menu.main]
├───colour
│ │
│ ├───warm
│ │ ├───orange
│ │ ├───red
│ │ └───yellow
│ │
│ └───cool
│ ├───blue
│ ├───green
│ └───purple
└───tool
├───hammer
├───shovel
└───saw
```
For each menu item, you can determine:
* If the menu item has any children: `.HasChildren()`
* If the menu item is a parent of the page you are currently rendering: `.Page.HasMenuCurrent()`
* If the menu item **is** the page you are currently rendering: `.Page.IsMenuCurrent()`
For example, if you are currently rendering the page `/colour/warm`, the values of `.HasChildren`, `HasMenuCurrent`, and `IsMenuCurrent` would be as shown below:
```
[menu.main] | | | |
│ | | | |
├───colour | HasMenuCurrent | | HasChildren |
│ ├───<< WARM >> | | IsMenuCurrent | HasChildren |
│ │ ├───orange | | | |
│ │ ├───red | | | |
│ │ └───yellow | | | |
│ └───cool | | | HasChildren |
│ ├───blue | | | |
│ ├───green | | | |
│ └───purple | | | |
└───tool | | | HasChildren |
├───hammer | | | |
├───shovel | | | |
└───saw | | | |
```
## Rendering nested menus
Hugo supports nested menus with as many levels as you like.
Nested menus can be rendered using a recursive partial template, such as the example below.
```
<!-- layouts/index.html, layouts/_default/single.html, ... -->
<h1>{{ .Title }}</h1>
<!-- Put this line in your main template, at the place where you want to
render the menu. -->
{{ partial "menu_include.html" . }}
```
```
<!-- layouts/partials/menu_include.html -->
{{ partial "menu_recursive.html" (dict "menu" .Site.Menus.main "page" . "site" .Site) }}
```
```
<!-- layouts/partials/menu_recursive.html -->
{{ $page := .page }}
{{ $site := .site }}
<ul>
{{ range .menu }}
{{ $is := $page.IsMenuCurrent "main" . }}
{{ $has := $page.HasMenuCurrent "main" . }}
{{ if .HasChildren }}
<li>
<a href="{{ .URL }}">
{{ .Name }}
{{ if $is }}[Is]{{ end }}
{{ if $has }}[Has]{{ end }}
{{ if .HasChildren }}[Children]{{ end }}
</a>
<!-- If the menu item has children, include this partial template again (recursively) -->
{{ partial "menu_recursive.html" (dict "menu" .Children "page" $page "site" $site) }}
</li>
{{ else }}
<li>
<a href="{{ .URL }}">
{{ .Name }}
{{ if $is }}[Is]{{ end }}
{{ if $has }}[Has]{{ end }}
{{ if .HasChildren }}[Children]{{ end }}
</a>
</li>
{{ end }}
{{ end }}
</ul>
```
This example code renders the words `[Is]`, `[Has]`, and `[Children]` to demonstrate how the `IsMenuCurrent()`, `HasMenuCurrent()`, and `HasChildren()` functions work.
You can customise this example to implement features such as:
* Highlight the current item, by applying a CSS style:
<a href="{{ .URL }}"{{ if $is }} class="active"{{ end }}>
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
* Highlight parents of the current item, by applying a CSS style:
<a href="{{ .URL }}"{{ if $has }} class="parent-active"{{ end }}>
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
* Only render sub-menus for parents of the current menu item, and the current menu item itself:
{{ if or $is $has }}
{{ partial "menu_recursive.html" (dict "menu" .Children "page" $page "site" $site) }}
{{ end }}
A working example, implementing these features, is shown below.
```
<!-- layouts/partials/menu_recursive.html -->
{{ $page := .page }}
{{ $site := .site }}
<ul>
<!-- Menu items sorted alphabetically by name -->
{{ range .menu.ByName }}
{{ $is := $page.IsMenuCurrent "main" . }}
{{ $has := $page.HasMenuCurrent "main" . }}
{{ if .HasChildren }}
<li>
<a href="{{ .URL }}" class="{{ if $is }} active{{ end }}{{ if $has }} parent-active{{ end }}">
{{ .Name }}
<!-- Show a » symbol if there is a sub-menu we haven't rendered -->
{{ if not (or $is $has) }}»{{ end }}
</a>
<!-- Only render sub-menu for parent items and the current item -->
{{ if or $is $has }}
{{ partial "menu_recursive.html" (dict "menu" .Children "page" $page "site" $site) }}
{{ end }}
</li>
{{ else }}
<li>
<a href="{{ .URL }}" class="{{ if $is }}active{{end}}">{{ .Name }}</a>
</li>
{{ end }}
{{ end }}
</ul>
```

View file

@ -1,185 +0,0 @@
---
aliases:
- /doc/output-formats/
- /doc/custom-output/
date: 2017-03-22T08:20:13+01:00
menu:
main:
parent: extras
title: Output Formats
weight: 5
toc: true
---
Hugo `0.20` introduced the powerful feature **Custom Output Formats**; Hugo isn't just that "static HTML with an added RSS feed" anymore. _Say hello_ to calendars, e-book formats, Google AMP, and JSON search indexes, to name a few.
This page describes how to properly configure your site with the media types and output formats you need.
## Media Types
A [media type](https://en.wikipedia.org/wiki/Media_type) (also known as MIME type and content type) is a two-part identifier for file formats and format contents transmitted on the Internet.
This is the full set of built-in media types in Hugo:
{{< datatable "media" "types" "Type" "Suffix" >}}
**Note:**
* It is possible to add custom media types or change the defaults (if you, say, want to change the suffix to `asp` for `text/html`).
* The `Suffix` is the value that will be used for URLs and filenames for that media type in Hugo.
* The `Type` is the identifier that must be used when defining new `Output Formats` (see below).
* The `Delimiter` defaults to ".", but can be changed or even blanked out to support, as an example, Netlify's `_redirect` files.
* The full set of media types will be registered in Hugo's built-in development server to make sure they are recognized by the browser.
To add or modify a media type, define it in a `mediaTypes` section in your site config (either for all sites or for a given language).
Example in `config.toml`:
```toml
[mediaTypes]
[mediaTypes."text/enriched"]
suffix = "enr"
[mediaTypes."text/html"]
suffix = "asp"
```
The above example adds one new media type, `text/enriched`, and changes the suffix for the built-in `text/html` media type.
## Output Formats
Given a media type and some additional configuration, you get an `Output Format`.
This is the full set of built-in output formats in Hugo:
{{< datatable "output" "formats" "Name" "MediaType" "Path" "BaseName" "Rel" "Protocol" "IsPlainText" "IsHTML" "NoUgly" "NotAlternative">}}
**Note:**
* A page can be output in as many output formats as you want, and you can have an infinite amount of output formats defined, as long as _they resolve to a unique path on the file system_. In the table above, the best example of this is `AMP` vs. `HTML`: We have given `AMP` a value for `Path` so it doesn't overwrite the `HTML` version, i.e. we can now have both `/index.html` and `/amp/index.html`.
* The `MediaType` must match the `Type` of an already defined media type (see above).
* You can define new or redefine built-in output formats (if you, as an example, want to put `AMP` pages in a different path).
To add or modify a media type, define it in a `outputFormats` section in your site config (either for all sites or for a given language).
Example in `config.toml`:
```toml
[outputFormats.MyEnrichedFormat]
mediaType = "text/enriched"
baseName = "myindex"
isPlainText = true
protocol = "bep://"
```
The above example is fictional, but if used for the home page on a site with `baseURL` `http://example.org`, it will produce a plain text home page with the URL `bep://example.org/myindex.enr`.
All the available configuration options for output formats and their default values:
Field | Description
--- | ---
**Name** | The output format identifier. This is used to define what output format(s) you want for your pages.
**MediaType**|This must match the `Type` of a defined media type. |
**Path** | Sub path to save the output files.
**BaseName** | The base filename for the list filenames (home page etc.). **Default:** _index_.
**Rel** | Can be used to create `rel` values in `link` tags. **Default:** _alternate_.
**Protocol** | Will replace the "http://" or "https://" in your `baseURL` for this output format.
**IsPlainText** | Use Go's plain text templates parser for the templates. **Default:** _false_.
**IsHTML** | Used in situations only relevant for `HTML` type of formats, page aliases being one example.|
**NoUgly** | If `uglyURLs` is enabled globally, this can be used to turn it off for a given output format. **Default:** _false_.
**NotAlternative** | Enable if it doesn't make sense to include this format in an the `.AlternativeOutputFormats` format listing on `Page`, `CSS` being one good example. Note that we use the term "alternative" and not "alternate" here, as it does not necessarily replace the other format, it is an alternative representation. **Default:** _false_.
## Output Formats for your pages
A `Page` in Hugo can be rendered to multiple representations on the file system: In its default configuration all will get an `HTML` page and some of them will get an `RSS` page (home page, sections etc.).
This can be changed by defining an `outputs` list of output formats in either the `Page` front matter or in the site configuration (either for all sites or per language).
Example from site config in `config.toml`:
```toml
[outputs]
home = [ "HTML", "AMP", "RSS"]
page = [ "HTML"]
```
Note:
* The output definition is per `Page` `Kind`(`page`, `home`, `section`, `taxonomy`, `taxonomyTerm`).
* The names used must match the `Name` of a defined `Output Format`.
* Any `Kind` without a definition will get `HTML`.
* These can be overriden per `Page` in front matter (see below).
* When `outputs` is specified, only the formats defined in outputs will be rendered
A `Page` with `YAML` front matter defining some output formats for that `Page`:
```yaml
---
date: "2016-03-19"
outputs:
- html
- amp
- json
---
```
Note:
* The names used for the output formats are case insensitive.
* The first output format in the list will act as the default.
* The default output format is used when generating links to other pages in menus, etc.
## Link to Output Formats
`Page` has both `.OutputFormats` (all formats including the current) and `.AlternativeOutputFormats`, the latter useful for creating a `link rel` list in your `head` section:
```
{{ range .AlternativeOutputFormats -}}
<link rel="{{ .Rel }}" type="{{ .MediaType.Type }}" href="{{ .Permalink | safeURL }}">
{{ end -}}
```
Note that `.Permalink` on `RelPermalink` on `Page` will return the first output format defined for that page (usually `HTML` if nothing else is defined).
This is how you link to a given output format:
```
{{ with .OutputFormats.Get "json" -}}
<a href="{{ .Permalink }}">{{ .Name }}</a>
{{- end }}
```
From content files, you can use the `ref` or `relref` shortcodes:
```
[Neat]({{</* ref "blog/neat.md" "amp" */>}})
[Who]({{</* relref "about.md#who" "amp" */>}})
```
## Templates for your Output Formats
Of course, for a new Output Format to render anything useful, we need a template for it.
**The fundamental thing to understand about this is that we in `Hugo 0.20` now also look at Output Format´s `Name` and MediaType´s `Suffix` when we choose the templates to use to render a given `Page`.**
And with so many possible variations, this is best explained with some examples:
{{< datatable "output" "layouts" "Example" "OutputFormat" "Suffix" "Template Lookup Order" >}}
**Note:**
* All of the above examples can use a base template, see [Blocks]({{< relref "templates/blocks.md" >}}).
* All of the above examples can also include partials.
Hugo will now also detect the media type and output format of partials, if possible, and use that information to decide if the partial should be parsed as a plain text template or not.
Hugo will look for the name given, so you can name it whatever you want. But if you want it treated as plain text, you should use the file suffix and, if needed, the name of the Output Format (`[partial name].[OutputFormat].[suffix])`.
The partial below is a plain text template (Output Format is `CSV`, and since this is the only output format with the suffix `csv`, we don't need to include the Output Format's `Name`):
```
{{ partial "mytextpartial.csv" . }}
```
Also note that plain text partials can currently only be included in plain text templates, and vice versa. See [this issue](https://github.com/gohugoio/hugo/issues/3273) for some background.

View file

@ -1,106 +0,0 @@
---
aliases:
- /doc/pagination/
lastmod: 2015-07-16
date: 2014-01-01
menu:
main:
parent: extras
next: /extras/permalinks
prev: /extras/menus
title: Pagination
---
Hugo supports pagination for the home page, sections and taxonomies. It's built to be easy use, but with loads of flexibility when needed. The real power shines when you combine it with [`where`](/templates/functions/), with its SQL-like operators, `first` and others --- you can even [order the content](/templates/list/) the way you've become used to with Hugo.
## Configuration
Pagination can be configured in the site configuration (e.g. `config.toml`):
* `Paginate` (default `10`) (this setting can be overridden in the template)
* `PaginatePath` (default `page`)
Setting `Paginate` to a positive value will split the list pages for the home page, sections and taxonomies into chunks of that size. But note that the generation of the pagination pages for sections, taxonomies and home page is *lazy* --- the pages will not be created if not referenced by a `.Paginator` (see below).
`PaginatePath` is used to adapt the `URL` to the pages in the paginator (the default setting will produce URLs on the form `/page/1/`.
## List the pages
**A `.Paginator` is provided to help building a pager menu. This is currently only relevant for the templates for the home page and the list pages (sections and taxonomies).**
There are two ways to configure and use a `.Paginator`:
1. The simplest way is just to call `.Paginator.Pages` from a template. It will contain the pages for *that page* .
2. Select a sub-set of the pages with the available template functions and ordering options, and pass the slice to `.Paginate`, e.g. `{{ range (.Paginate ( first 50 .Data.Pages.ByTitle )).Pages }}`.
For a given **Page**, it's one of the options above. The `.Paginator` is static and cannot change once created.
The global page size setting (`Paginate`) can be overridden by providing a positive integer as the last argument. The examples below will give five items per page:
* `{{ range (.Paginator 5).Pages }}`
* `{{ $paginator := .Paginate (where .Data.Pages "Type" "post") 5 }}`
It is also possible to use the `GroupBy` functions in combination with pagination:
```
{{ range (.Paginate (.Data.Pages.GroupByDate "2006")).PageGroups }}
```
## Build the navigation
The `.Paginator` contains enough information to build a paginator interface.
The easiest way to add this to your pages is to include the built-in template (with `Bootstrap`-compatible styles):
```
{{ template "_internal/pagination.html" . }}
```
**Note:** If you use any filters or ordering functions to create your `.Paginator` **and** you want the navigation buttons to be shown before the page listing, you must create the `.Paginator` before it's used:
```
{{ $paginator := .Paginate (where .Data.Pages "Type" "post") }}
{{ template "_internal/pagination.html" . }}
{{ range $paginator.Pages }}
{{ .Title }}
{{ end }}
```
Without the where-filter, the above is simpler:
```
{{ template "_internal/pagination.html" . }}
{{ range .Paginator.Pages }}
{{ .Title }}
{{ end }}
```
If you want to build custom navigation, you can do so using the `.Paginator` object:
* `PageNumber`: The current page's number in the pager sequence
* `URL`: The relative URL to the current pager
* `Pages`: The pages in the current pager
* `NumberOfElements`: The number of elements on this page
* `HasPrev`: Whether there are page(s) before the current
* `Prev`: The pager for the previous page
* `HasNext`: Whether there are page(s) after the current
* `Next`: The pager for the next page
* `First`: The pager for the first page
* `Last`: The pager for the last page
* `Pagers`: A list of pagers that can be used to build a pagination menu
* `PageSize`: Size of each pager
* `TotalPages`: The number of pages in the paginator
* `TotalNumberOfElements`: The number of elements on all pages in this paginator
## Additional information
The pages are built on the following form (`BLANK` means no value):
```
[SECTION/TAXONOMY/BLANK]/index.html
[SECTION/TAXONOMY/BLANK]/page/1/index.html => redirect to [SECTION/TAXONOMY/BLANK]/index.html
[SECTION/TAXONOMY/BLANK]/page/2/index.html
....
```

View file

@ -1,53 +0,0 @@
---
aliases:
- /doc/permalinks/
lastmod: 2015-01-19
date: 2013-11-18
menu:
main:
parent: extras
next: /extras/scratch
notoc: true
prev: /extras/pagination
title: Permalinks
---
By default, content is laid out into the target `publishdir` (public)
namespace matching its layout within the `contentdir` hierarchy.
The `permalinks` site configuration option allows you to adjust this on a
per-section basis.
This will change where the files are written to and will change the page's
internal "canonical" location, such that template references to
`.RelPermalink` will honour the adjustments made as a result of the mappings
in this option.
For instance, if one of your sections is called `post`, and you want to adjust
the canonical path to be hierarchical based on the year and month, then you
might use:
```yaml
permalinks:
post: /:year/:month/:title/
```
Only the content under `post/` will be so rewritten.
A file named `content/post/sample-entry` which contains a line
`date: 2013-11-18T19:20:00-05:00` might end up with the rendered page
appearing at `public/2013/11/sample-entry/index.html` and be reachable via
the URL <http://yoursite.example.com/2013/11/sample-entry/>.
The following is a list of values that can be used in a permalink definition.
All references to time are dependent on the content's date.
* **:year** the 4-digit year
* **:month** the 2-digit month
* **:monthname** the name of the month
* **:day** the 2-digit day
* **:weekday** the 1-digit day of the week (Sunday = 0)
* **:weekdayname** the name of the day of the week
* **:yearday** the 1- to 3-digit day of the year
* **:section** the content's section
* **:title** the content's title
* **:slug** the content's slug (or title if no slug)
* **:filename** the content's filename (without extension)

View file

@ -1,36 +0,0 @@
---
lastmod: 2016-01-06
date: 2015-12-08
menu:
main:
parent: extras
next: /extras/datafiles
prev: /extras/crossreferences
title: Custom robots.txt
---
Hugo can generate a customized [robots.txt](http://www.robotstxt.org/) in the
[same way as any other templates]({{< ref "templates/go-templates.md" >}}).
To enable it, just set `enableRobotsTXT` option to `true` in the [configuration file]({{< ref "overview/configuration.md" >}}). By default, it generates a robots.txt, which allows everything, with the following content:
```http
User-agent: *
```
Hugo will use the template `robots.txt` according to the following list in descending precedence:
* /layouts/robots.txt
* /themes/`THEME`/layout/robots.txt
An example of a robots.txt layout is:
```http
User-agent: *
{{range .Data.Pages}}
Disallow: {{.RelPermalink}}{{end}}
```
This template disallows and all the pages of the site creating one `Disallow` entry for each one.

View file

@ -1,413 +0,0 @@
---
aliases:
- /doc/shortcodes/
lastmod: 2016-02-03
date: 2013-07-01
menu:
main:
parent: extras
next: /extras/highlighting
prev: /extras/scratch
title: Shortcodes
toc: true
---
Hugo uses Markdown for its simple content format. However, there are a lot
of things that Markdown doesnt support well.
We are unwilling to accept being constrained by our simple format. Also
unacceptable is writing raw HTML in our Markdown every time we want to include
unsupported content such as a video. To do so is in complete opposition to the
intent of using a bare-bones format for our content and utilizing templates to
apply styling for display.
To avoid both of these limitations, Hugo created shortcodes.
A shortcode is a simple snippet inside a content file that Hugo will render
using a predefined template. Note that shortcodes will not work in template
files---if you need a functionality like that in a template, you most likely
want a [partial template](/templates/partials/) instead.
Another benefit is, you can update your shortcode with any related new classes or
techniques, and upon generation, Hugo will easily merge in your changes. You
avoid a possibly complicated search and replace operation.
## Using a shortcode
In your content files, a shortcode can be called by using the `{{%/* name parameters
*/%}}` form. Shortcode parameters are space delimited. Parameters with spaces
can be quoted.
The first word is always the name of the shortcode. Parameters follow the name.
Depending upon how the shortcode is defined, the parameters may be named,
positional or both (although you can't mix parameter types in a single call).
The format for named parameters models that of HTML with the format
`name="value"`.
Some shortcodes use or require closing shortcodes. Like HTML, the opening and closing
shortcodes match (name only), the closing being prepended with a slash.
Example of a paired shortcode:
{{</* highlight go */>}} A bunch of code here {{</* /highlight */>}}
The examples above use two different delimiters, the difference being the `%` and the `<` character:
### Shortcodes with Markdown
The `%` characters indicates that the shortcode's inner content needs further processing by the page's rendering processor (i.e. Markdown), needed to get the **bold** text in the example below:
{{%/* myshortcode */%}}Hello **World!**{{%/* /myshortcode */%}}
### Shortcodes without Markdown
The `<` character indicates that the shortcode's inner content doesn't need any further rendering, this will typically be pure HTML:
{{</* myshortcode */>}}<p>Hello <strong>World!</strong></p>{{</* /myshortcode */>}}
## Built-in Shortcodes
Hugo ships with a set of predefined shortcodes.
### highlight
This shortcode will convert the source code provided into syntax highlighted
HTML. Read more on [highlighting](/extras/highlighting/).
#### Usage
`highlight` takes exactly one required parameter of _language_ and requires a
closing shortcode.
#### Example
{{</* highlight html */>}}
<section id="main">
<div>
<h1 id="title">{{ .Title }}</h1>
{{ range .Data.Pages }}
{{ .Render "summary"}}
{{ end }}
</div>
</section>
{{</* /highlight */>}}
#### Example Output
<span style="color: #f92672">&lt;section</span> <span style="color: #a6e22e">id=</span><span style="color: #e6db74">&quot;main&quot;</span><span style="color: #f92672">&gt;</span>
<span style="color: #f92672">&lt;div&gt;</span>
<span style="color: #f92672">&lt;h1</span> <span style="color: #a6e22e">id=</span><span style="color: #e6db74">&quot;title&quot;</span><span style="color: #f92672">&gt;</span>{{ .Title }}<span style="color: #f92672">&lt;/h1&gt;</span>
{{ range .Data.Pages }}
{{ .Render &quot;summary&quot;}}
{{ end }}
<span style="color: #f92672">&lt;/div&gt;</span>
<span style="color: #f92672">&lt;/section&gt;</span>
### figure
`figure` is simply an extension of the image capabilities present with Markdown.
`figure` provides the ability to add captions, CSS classes, alt text, links etc.
#### Usage
`figure` can use the following named parameters:
* src
* link
* title
* caption
* class
* attr (attribution)
* attrlink
* alt
#### Example
{{</* figure src="/media/spf13.jpg" title="Steve Francia" */>}}
#### Example output
<figure>
<img src="/media/spf13.jpg" />
<figcaption>
<h4>Steve Francia</h4>
</figcaption>
</figure>
### ref, relref
These shortcodes will look up the pages by their relative path (e.g.,
`blog/post.md`) or their logical name (`post.md`) and return the permalink
(`ref`) or relative permalink (`relref`) for the found page.
`ref` and `relref` also make it possible to make fragmentary links that work
for the header links generated by Hugo.
Read more on [cross-references]({{% ref "extras/crossreferences.md" %}}).
#### Usage
`ref` and `relref` take exactly one required parameter of _reference_.
#### Example
[Neat]({{</* ref "blog/neat.md" */>}})
[Who]({{</* relref "about.md#who" */>}})
If the page exists in multiple [output formats]({{< relref "extras/output-formats.md" >}}), `ref` or `relref` can be used with a output format name:
[Neat]({{</* ref "blog/neat.md" "amp" */>}})
#### Example Output
Assuming that standard Hugo pretty URLs are turned on.
<a href="/blog/neat">Neat</a>
<a href="/about/#who:c28654c202e73453784cfd2c5ab356c0">Who</a>
### Twitter
You want to include a single tweet into your blog post? Everything you need is the URL of the tweet, e.g.:
* https://twitter.com/spf13/status/666616452582129664
Pass the tweet's ID from the URL as parameter to the shortcode as shown below:
{{</* tweet 666616452582129664 */>}}
### YouTube
This shortcode embeds a responsive video player for [YouTube](https://www.youtube.com/) videos. Only the ID of the video is required, e.g.:
* https://www.youtube.com/watch?v=w7Ft2ymGmfc
Copy the ID from behind `v=` and pass it to the shortcode:
{{</* youtube w7Ft2ymGmfc */>}}
Furthermore, you can autoplay the embedded video by setting the `autoplay` parameter to true. Remember that you can't mix named and unnamed parameters. Assign the yet unnamed video id to the parameter `id` like below too.
{{</* youtube id="w7Ft2ymGmfc" autoplay="true" */>}}
### Vimeo
Adding a video from [Vimeo](https://vimeo.com/) is equivalent to the YouTube shortcode above. Extract the ID from the URL, e.g.:
* https://vimeo.com/channels/staffpicks/146022717
and pass it to the shortcode:
{{</* vimeo 146022717 */>}}
### GitHub gists
Including code snippets with GitHub gists while writing a tutorial is common situation bloggers face. With a given URL of the gist, e.g.:
* https://gist.github.com/spf13/7896402
pass the owner and the ID of the gist to the shortcode:
{{</* gist spf13 7896402 */>}}
If the gist contains several files and you want to quote just one of them, you can pass the filename (quoted) as an optional third argument:
{{</* gist spf13 7896402 "img.html" */>}}
### Speaker Deck
To embed slides from [Speaker Deck](https://speakerdeck.com/), click on "&lt;&#8239;/&gt;&nbsp;Embed" (under Share right next to the template on Speaker Deck) and copy the URL, e.g.:
<script async class="speakerdeck-embed" data-id="4e8126e72d853c0060001f97" data-ratio="1.33333333333333" src="//speakerdeck.com/assets/embed.js"></script>
Extract the value from the field `data-id` and pass it to the shortcode:
{{</* speakerdeck 4e8126e72d853c0060001f97 */>}}
### Instagram
If you'd like to embed photo from [Instagram](https://www.instagram.com/), all you need is photo ID from the URL, e. g.:
* https://www.instagram.com/p/BMokmydjG-M/
Pass it to the shortcode:
{{</* instagram BMokmydjG-M */>}}
Optionally, hide caption:
{{</* instagram BMokmydjG-M hidecaption */>}}
## Creating your own shortcodes
To create a shortcode, place a template in the layouts/shortcodes directory. The
template name will be the name of the shortcode.
In creating a shortcode, you can choose if the shortcode will use _positional
parameters_, or _named parameters_, or _both_. A good rule of thumb is that if a
shortcode has a single required value in the case of the `youtube` example below,
then positional works very well. For more complex layouts with optional
parameters, named parameters work best. Allowing both types of parameters is
useful for complex layouts where you want to set default values that can be
overridden.
**Inside the template**
To access a parameter by position, the `.Get` method can be used:
{{ .Get 0 }}
To access a parameter by name, the `.Get` method should be utilized:
{{ .Get "class" }}
`with` is great when the output depends on a parameter being set:
{{ with .Get "class"}} class="{{.}}"{{ end }}
`.Get` can also be used to check if a parameter has been provided. This is
most helpful when the condition depends on either one value or another...
or both:
{{ or .Get "title" | .Get "alt" | if }} alt="{{ with .Get "alt"}}{{.}}{{else}}{{.Get "title"}}{{end}}"{{ end }}
If a closing shortcode is used, the variable `.Inner` will be populated with all
of the content between the opening and closing shortcodes. If a closing
shortcode is required, you can check the length of `.Inner` and provide a warning
to the user.
A shortcode with `.Inner` content can be used without the inline content, and without the closing shortcode, by using the self-closing syntax:
{{</* innershortcode /*/>}}
The variable `.Params` contains the list of parameters in case you need to do
more complicated things than `.Get`. It is sometimes useful to provide a
flexible shortcode that can take named or positional parameters. To meet this
need, Hugo shortcodes have a `.IsNamedParams` boolean available that can be used
such as `{{ if .IsNamedParams }}...{{ else }}...{{ end }}`. See the
`Single Flexible Example` below for an example.
You can also use the variable `.Page` to access all the normal [Page Variables](/templates/variables/).
A shortcodes can be nested. In a nested shortcode you can access the parent shortcode context with `.Parent`. This can be very useful for inheritance of common shortcode parameters from the root.
## Single Positional Example: youtube
{{</* youtube 09jf3ow9jfw */>}}
Would load the template /layouts/shortcodes/youtube.html
<div class="embed video-player">
<iframe class="youtube-player" type="text/html" width="640" height="385" src="http://www.youtube.com/embed/{{ index .Params 0 }}" allowfullscreen frameborder="0">
</iframe>
</div>
This would be rendered as:
<div class="embed video-player">
<iframe class="youtube-player" type="text/html"
width="640" height="385"
src="http://www.youtube.com/embed/09jf3ow9jfw"
allowfullscreen frameborder="0">
</iframe>
</div>
## Single Named Example: image with caption
{{</* img src="/media/spf13.jpg" title="Steve Francia" */>}}
Would load the template /layouts/shortcodes/img.html
<!-- image -->
<figure {{ with .Get "class" }}class="{{.}}"{{ end }}>
{{ with .Get "link"}}<a href="{{.}}">{{ end }}
<img src="{{ .Get "src" }}" {{ if or (.Get "alt") (.Get "caption") }}alt="{{ with .Get "alt"}}{{.}}{{else}}{{ .Get "caption" }}{{ end }}"{{ end }} />
{{ if .Get "link"}}</a>{{ end }}
{{ if or (or (.Get "title") (.Get "caption")) (.Get "attr")}}
<figcaption>{{ if isset .Params "title" }}
<h4>{{ .Get "title" }}</h4>{{ end }}
{{ if or (.Get "caption") (.Get "attr")}}<p>
{{ .Get "caption" }}
{{ with .Get "attrlink"}}<a href="{{.}}"> {{ end }}
{{ .Get "attr" }}
{{ if .Get "attrlink"}}</a> {{ end }}
</p> {{ end }}
</figcaption>
{{ end }}
</figure>
<!-- image -->
Would be rendered as:
<figure >
<img src="/media/spf13.jpg" />
<figcaption>
<h4>Steve Francia</h4>
</figcaption>
</figure>
## Single Flexible Example: vimeo with defaults
{{</* vimeo 49718712 */>}}
{{</* vimeo id="49718712" class="flex-video" */>}}
Would load the template /layouts/shortcodes/vimeo.html
{{ if .IsNamedParams }}
<div class="{{ if .Get "class" }}{{ .Get "class" }}{{ else }}vimeo-container{{ end }}">
<iframe src="//player.vimeo.com/video/{{ .Get "id" }}" allowfullscreen></iframe>
</div>
{{ else }}
<div class="{{ if len .Params | eq 2 }}{{ .Get 1 }}{{ else }}vimeo-container{{ end }}">
<iframe src="//player.vimeo.com/video/{{ .Get 0 }}" allowfullscreen></iframe>
</div>
{{ end }}
Would be rendered as:
<div class="vimeo-container">
<iframe src="//player.vimeo.com/video/49718712" allowfullscreen></iframe>
</div>
<div class="flex-video">
<iframe src="//player.vimeo.com/video/49718712" allowfullscreen></iframe>
</div>
## Paired Example: Highlight
*Hugo already ships with the `highlight` shortcode*
{{</* highlight html */>}}
<html>
<body> This HTML </body>
</html>
{{</* /highlight */>}}
The template for this utilizes the following code (already included in Hugo)
{{ .Get 0 | highlight .Inner }}
And will be rendered as:
<div class="highlight" style="background: #272822"><pre style="line-height: 125%"><span style="color: #f92672">&lt;html&gt;</span>
<span style="color: #f92672">&lt;body&gt;</span> This HTML <span style="color: #f92672">&lt;/body&gt;</span>
<span style="color: #f92672">&lt;/html&gt;</span>
</pre></div>
Please notice that this template makes use of a Hugo-specific template function
called `highlight` which uses Pygments to add the highlighting code.
## Simple Single-word Example: Year
Let's assume you would like to have a shortcode to be replaced by the current year in your Markdown content files, for a license or copyright statement. Calling a shortcode like this:
{{</* year */>}}
... would load your one-line template ``/layouts/shortcodes/year.html``, which contains:
{{ .Page.Now.Year }}
More shortcode examples can be found at [spf13.com](https://github.com/spf13/spf13.com/tree/master/layouts/shortcodes).

View file

@ -1,37 +0,0 @@
---
lastmod: 2015-01-27
date: 2013-07-09
menu:
main:
parent: extras
next: /extras/localfiles
prev: /extras/highlighting
title: Table of Contents
---
Hugo will automatically parse the Markdown for your content and create
a Table of Contents you can use to guide readers to the sections within
your content.
## Usage
Simply create content like you normally would with the appropriate
headers.
Hugo will take this Markdown and create a table of contents stored in the
[content variable](/layout/variables/) `.TableOfContents`
## Template Example
This is example code of a [single.html template](/layout/content/).
{{ partial "header.html" . }}
<div id="toc" class="well col-md-4 col-sm-6">
{{ .TableOfContents }}
</div>
<h1>{{ .Title }}</h1>
{{ .Content }}
{{ partial "footer.html" . }}

View file

@ -1,70 +0,0 @@
---
aliases:
- /doc/urls/
lastmod: 2016-05-07
date: 2014-01-03
menu:
main:
parent: extras
next: /community/mailing-list
notoc: true
prev: /extras/localfiles
title: URLs
---
## Pretty URLs
By default, Hugo creates content with 'pretty' URLs. For example,
content created at `/content/extras/urls.md` will be rendered at
`/public/extras/urls/index.html`, thus accessible from the browser
at http://example.com/extras/urls/. No non-standard server-side
configuration is required for these pretty URLs to work.
If you would like to have what we call "ugly URLs",
e.g.&nbsp;http://example.com/extras/urls.html, you are in luck.
Hugo supports the ability to create your entire site with ugly URLs.
Simply add `uglyurls = true` to your site-wide `config.toml`,
or use the `--uglyURLs=true` flag on the command line.
If you want a specific piece of content to have an exact URL, you can
specify this in the front matter under the `url` key. See [Content
Organization](/content/organization/) for more details.
## Canonicalization
By default, all relative URLs encountered in the input are left unmodified,
e.g. `/css/foo.css` would stay as `/css/foo.css`,
i.e. `canonifyURLs` defaults to `false`.
By setting `canonifyURLs` to `true`, all relative URLs would instead
be *canonicalized* using `baseURL`. For example, assuming you have
`baseURL = http://yoursite.example.com/` defined in the site-wide
`config.toml`, the relative URL `/css/foo.css` would be turned into
the absolute URL `http://yoursite.example.com/css/foo.css`.
Benefits of canonicalization include fixing all URLs to be absolute, which may
aid with some parsing tasks. Note though that all real browsers handle this
client-side without issues.
Benefits of non-canonicalization include being able to have resource inclusion
be scheme-relative, so that http vs https can be decided based on how this
page was retrieved.
> Note: In the May 2014 release of Hugo v0.11, the default value of `canonifyURLs` was switched from `true` to `false`, which we think is the better default and should continue to be the case going forward. So, please verify and adjust your website accordingly if you are upgrading from v0.10 or older versions.
To find out the current value of `canonifyURLs` for your website, you may use the handy `hugo config` command added in v0.13:
hugo config | grep -i canon
Or, if you are on Windows and do not have `grep` installed:
hugo config | FINDSTR /I canon
## Relative URLs
By default, all relative URLs are left unchanged by Hugo,
which can be problematic when you want to make your site browsable from a local file system.
Setting `relativeURLs` to `true` in the site configuration will cause Hugo to rewrite all relative URLs to be relative to the current content.
For example, if the `/post/first/` page contained a link with a relative URL of `/about/`, Hugo would rewrite that URL to `../../about/`.

View file

@ -0,0 +1,67 @@
---
title: .GetPage
description: "Gets a `Page` of a given `Kind` and `path`."
godocref:
date: 2017-02-01
publishdate: 2017-02-01
lastmod: 2017-02-01
categories: [functions]
menu:
docs:
parent: "functions"
#tags: [sections,lists,indexes]
signature: [".GetPage TYPE PATH"]
workson: []
hugoversion:
relatedfuncs: []
deprecated: false
aliases: []
---
Every `Page` has a `Kind` attribute that shows what kind of page it is. While this attribute can be used to list pages of a certain `kind` using `where`, often it can be useful to fetch a single page by its path.
`.GetPage` looks up a page of a given `Kind` and `path`.
```
{{ with .Site.GetPage "section" "blog" }}{{ .Title }}{{ end }}
```
This method wil return `nil` when no page could be found, so the above will not print anything if the blog section isn't found.
For a regular page:
```
{{ with .Site.GetPage "page" "blog" "my-post.md" }}{{ .Title }}{{ end }}
```
Note that the path can also be supplied like this:
```
{{ with .Site.GetPage "page" "blog/my-post.md" }}{{ .Title }}{{ end }}
```
The valid page kinds are: *page, home, section, taxonomy and taxonomyTerm.*
## `.GetPage` Example
This code snippet---in the form of a [partial template][partials]---allows you to do the following:
1. Grab the index object of your `tags` [taxonomy][].
2. Assign this object to a variable, `$t`
3. Sort the terms associated with the taxonomy by popularity.
4. Grab the top two most popular terms in the taxonomy (i.e., the two most popular tags assigned to content.
{{% code file="grab-top-two-tags.html" %}}
```html
<ul class="most-popular-tags">
{{ $t := $.Site.GetPage "taxonomyTerm" "tags" }}
{{ range first 2 $t.Data.Terms.ByCount }}
<li>{{.}}</li>
{{ end }}
</ul>
```
{{% /code %}}
[partials]: /templates/partials/
[taxonomy]: /content-management/taxonomies/

View file

@ -0,0 +1,34 @@
---
title: lang.NumFmt
description: "Formats a number with a given precision using the requested `decimal`, `grouping`, and `negative` characters."
godocref: ""
workson: []
date: 2017-02-01
publishdate: 2017-02-01
lastmod: 2017-02-01
categories: [functions]
#tags: [numbers]
menu:
docs:
parent: "functions"
toc: false
signature: ["lang.NumFmt <decimal> <grouping> <negative> <precision> <number>"]
workson: []
hugoversion:
relatedfuncs: []
deprecated: false
draft: false
aliases: []
comments:
---
The default options value is `- . ,`.
Numbers greater than or equal to 5 are rounded up. For example, if precision is set to `0`, `1.5` becomes `2`, and `1.4` becomes `1`.
```
{{ lang.NumFmt "," "." "-" 2 12345.6789 }} → 12.345,68
{{ lang.NumFmt "." "" "-" 6 -12345.6789 }} → -12345.678900
{{ lang.NumFmt "." "," "-" 0 -12345.6789 }} → -12,346
{{ -98765.4321 | lang.NumFmt "." "," "-" 2 }} → -98,765.43
```

View file

@ -0,0 +1,20 @@
---
title: Functions Quick Reference
linktitle: Functions Quick Reference
description: Comprehensive list of Hugo templating functions, including basic and advanced usage examples.
godocref:
date: 2017-02-01
publishdate: 2017-02-01
lastmod: 2017-02-01
#tags: []
menu:
docs:
parent: "functions"
weight: 01 #rem
draft: false
aliases: [/layout/functions/,/templates/functions]
---
Go templates are lightweight but extensible. Go itself supplies built-in functions, including comparison operators and other basic tools. These are listed in the [Go template documentation][gofuncs]. Hugo has added additional functions to the basic template logic.
[gofuncs]: http://golang.org/pkg/text/template/#hdr-Functions

Some files were not shown because too many files have changed in this diff Show more