[16971] | 1 | # Bilberry Hugo Theme |
---|
| 2 | [![GitHub version](https://img.shields.io/github/release/Lednerb/bilberry-hugo-theme/all.svg?style=flat-square)](https://github.com/Lednerb/bilberry-hugo-theme/releases) |
---|
| 3 | [![Hugo Version](https://img.shields.io/badge/Hugo-%5E0.83.0-ff4088?style=flat-square&logo=hugo)](https://gohugo.io/) |
---|
| 4 | [![Hugo Themes](https://img.shields.io/badge/Hugo_Themes-@Bilberry-ff4088)](https://themes.gohugo.io/themes/bilberry-hugo-theme/) |
---|
| 5 | |
---|
| 6 | [![Build GH-Pages](https://github.com/Lednerb/bilberry-hugo-theme/workflows/Update%20GitHub%20Pages/badge.svg)](https://github.com/Lednerb/bilberry-hugo-theme/deployments/activity_log?environment=github-pages) |
---|
| 7 | [![Contributors](https://img.shields.io/badge/contributors-41-orange.svg?style=flat-square)](#contributors) |
---|
| 8 | [![License](https://img.shields.io/github/license/Lednerb/bilberry-hugo-theme.svg?style=flat-square)](https://github.com/Lednerb/bilberry-hugo-theme/blob/master/LICENSE.md) |
---|
| 9 | |
---|
| 10 | **Bilberry** is a premium [Hugo](https://gohugo.io) theme with many great features. |
---|
| 11 | This is an adaptation and further optimization of the [Lingonberry WordPress theme](https://en-ca.wordpress.org/themes/lingonberry/) by Anders Norén. |
---|
| 12 | |
---|
| 13 | Here's a live [demo site](https://lednerb.github.io/bilberry-hugo-theme) to see this theme in action. |
---|
| 14 | |
---|
| 15 | ## Support and Discussions |
---|
| 16 | |
---|
| 17 | Support for this theme is provided through the [Issues](https://github.com/Lednerb/bilberry-hugo-theme/issues) and [Discussions](https://github.com/Lednerb/bilberry-hugo-theme/discussions) sections of the project. |
---|
| 18 | Please use the **Issues** section if you would like to report a defect or bug. For any other requests, use the **Discussions** section. |
---|
| 19 | |
---|
| 20 | Please use the following guidelines if you want to start a discussion: |
---|
| 21 | - For any questions regarding a specific feature, or if you need help using or customizing the theme, use the **Questions & Answers** (**Q&A**) category. |
---|
| 22 | - To propose a new feature or any other improvements, use the **Ideas** category. |
---|
| 23 | - To showcase your blog or website powered by Bilberry theme, use the **Show and tell** category. |
---|
| 24 | - For any other inquiries, please use the **General** type discussion. |
---|
| 25 | |
---|
| 26 | ## Table of Contents |
---|
| 27 | |
---|
| 28 | - [Requirements](#requirements) |
---|
| 29 | - [Quick Start](#quick-start) |
---|
| 30 | - [Site Initial Setup](#site-initial-setup) |
---|
| 31 | - [Theme Installation Options](#theme-installation-options) |
---|
| 32 | - [Option 1 (recommended): Adding the Theme as a Hugo Module](#option-1-recommended-adding-the-theme-as-a-hugo-module) |
---|
| 33 | - [Option 2: Cloning/Copying the Theme Files](#option-2-cloningcopying-the-theme-files) |
---|
| 34 | - [Configuration](#configuration) |
---|
| 35 | - [Webserver](#webserver) |
---|
| 36 | - [Other Tutorials](#other-tutorials) |
---|
| 37 | - [Features](#features) |
---|
| 38 | - [Post Types](#post-types) |
---|
| 39 | - [Top Navigation Bar](#top-navigation-bar) |
---|
| 40 | - [Algolia Search](#algolia-search) |
---|
| 41 | - [Initial Setup](#initial-setup) |
---|
| 42 | - [Update Algolia Index](#update-algolia-index) |
---|
| 43 | - [Manual Upload](#manual-upload) |
---|
| 44 | - [Automated Upload](#automated-upload) |
---|
| 45 | - [Keyboard Shortcuts](#keyboard-shortcuts) |
---|
| 46 | - [Reposted Article/Duplicated Content](#reposted-articleduplicated-content) |
---|
| 47 | - [Calculated Reading Rime](#calculated-reading-time) |
---|
| 48 | - [Summary Splits](#summary-splits) |
---|
| 49 | - [Automatic Summary Split](#automatic-summary-split) |
---|
| 50 | - [Manual Summary Split](#manual-summary-split) |
---|
| 51 | - [Front Matter Summary Split](#front-matter-summary-split) |
---|
| 52 | - [No Summary Split](#no-summary-split) |
---|
| 53 | - [Table of Contents (TOC)](#table-of-contentstoc) |
---|
| 54 | - [Series Taxonomy](#series-taxonomy) |
---|
| 55 | - [Google Analytics](#google-analytics) |
---|
| 56 | - [Comments](#comments) |
---|
| 57 | - [Commento](#commento) |
---|
| 58 | - [Disqus](#disqus) |
---|
| 59 | - [Giscus](#giscus) |
---|
| 60 | - [Utterances](#utterances) |
---|
| 61 | - [Responsive Design](#responsive-design) |
---|
| 62 | - [Automatic Image Resizing](#automatic-image-resizing) |
---|
| 63 | - [Image Modal Zoom](#image-modal-zoom) |
---|
| 64 | - [MathJAX Markup](#mathjax-markup) |
---|
| 65 | - [Disabled Javascript Support](#disabled-javascript-support) |
---|
| 66 | - [Video](#video) |
---|
| 67 | - [Audio](#audio) |
---|
| 68 | - [Raw HTML](#raw-html) |
---|
| 69 | - [Favicons](#favicons) |
---|
| 70 | - [Custom 404 Page](#custom-404-page) |
---|
| 71 | - [Archive Page](#archive-page) |
---|
| 72 | - [Custom Post Types](#custom-post-types) |
---|
| 73 | - [External Images](#external-images) |
---|
| 74 | - [Customizing Individual Posts](#customizing-individual-posts) |
---|
| 75 | - [Custom Colors and Fonts](#custom-colors-and-fonts) |
---|
| 76 | - [CSS and JS modules](#css-and-js-modules) |
---|
| 77 | - [Add Cookie Disclaimer](#add-cookie-disclaimer) |
---|
| 78 | - [Translations](#translations) |
---|
| 79 | - [Credits](#credits) |
---|
| 80 | - [Contributors](#contributors) |
---|
| 81 | - [License](#license) |
---|
| 82 | |
---|
| 83 | ## Requirements |
---|
| 84 | - **Hugo** (version >= 0.83.0), see this [guide](https://gohugo.io/getting-started/installing/) on how to install Hugo. |
---|
| 85 | - **Git**, see this [guide](https://git-scm.com/book/en/v2/Getting-Started-Installing-Git) on how to install Git. |
---|
| 86 | - **Go** (version >= 1.18), optional, required only when the Bilberry theme is used as a Hugo module; see this [guide](https://go.dev/doc/install) on how to install Go. |
---|
| 87 | |
---|
| 88 | ## Quick Start |
---|
| 89 | |
---|
| 90 | ### Site Initial Setup |
---|
| 91 | - Clone the Bilberry Hugo theme repository to your local computer: |
---|
| 92 | ```shell |
---|
| 93 | git clone https://github.com/Lednerb/bilberry-hugo-theme.git |
---|
| 94 | ``` |
---|
| 95 | Alternatively, you can download it as a [ZIP](https://github.com/Lednerb/bilberry-hugo-theme/archive/master.zip) file and extract into the `bilberry-hugo-theme` directory. |
---|
| 96 | |
---|
| 97 | - Create a new site: |
---|
| 98 | ```shell |
---|
| 99 | hugo new site my-new-blog |
---|
| 100 | ``` |
---|
| 101 | |
---|
| 102 | - Delete the default archetype: |
---|
| 103 | ```shell |
---|
| 104 | rm my-new-blog/archetypes/default.md |
---|
| 105 | ``` |
---|
| 106 | |
---|
| 107 | - Copy the example site content including the `config.toml` file: |
---|
| 108 | ```shell |
---|
| 109 | cp -r bilberry-hugo-theme/exampleSite/* my-new-blog |
---|
| 110 | ``` |
---|
| 111 | |
---|
| 112 | |
---|
| 113 | ### Theme Installation Options |
---|
| 114 | #### Option 1 (recommended): Adding the Theme as a Hugo Module |
---|
| 115 | Use this option if you want to pull in the theme files from the main Bilberry Hugo theme repository. |
---|
| 116 | This option makes it easy to keep the theme up to date in your site. |
---|
| 117 | |
---|
| 118 | - Initialize your website as a Hugo module from the site's root: |
---|
| 119 | ```shell |
---|
| 120 | cd my-new-blog |
---|
| 121 | hugo mod init github.com/<your-user>/my-new-blog |
---|
| 122 | ``` |
---|
| 123 | |
---|
| 124 | Following the Hugo module initialization, you may have the following warning: module " |
---|
| 125 | github.com/Lednerb/bilberry-hugo-theme/v3" not found, which should be ignored. |
---|
| 126 | |
---|
| 127 | - Pull theme files to add new content to your website: |
---|
| 128 | |
---|
| 129 | ```shell |
---|
| 130 | hugo mod vendor |
---|
| 131 | ``` |
---|
| 132 | |
---|
| 133 | If you need more details on how to use Hugo modules, please read |
---|
| 134 | the [Hugo documentation](https://gohugo.io/hugo-modules/use-modules/). |
---|
| 135 | |
---|
| 136 | #### Option 2: Cloning/Copying the Theme Files |
---|
| 137 | Use this option if you want to directly customize and maintain your own copy of the theme. |
---|
| 138 | |
---|
| 139 | - In the `my-new-blog/config.toml` file, uncomment the `theme` property for **Option 2**, and |
---|
| 140 | comment out the `theme` property for **Option 1**: |
---|
| 141 | ```toml |
---|
| 142 | # Option 1 (recommended): adding the theme as a hugo module |
---|
| 143 | # theme = "github.com/Lednerb/bilberry-hugo-theme/v3" |
---|
| 144 | |
---|
| 145 | # Option 2: cloning/copying the theme files |
---|
| 146 | theme = "bilberry-hugo-theme" |
---|
| 147 | ``` |
---|
| 148 | |
---|
| 149 | - Copy cloned (or unzipped) theme files in previous step to the `my-new-blog/themes` directory: |
---|
| 150 | ```shell |
---|
| 151 | cp -r bilberry-hugo-theme my-new-blog/themes/bilberry-hugo-theme |
---|
| 152 | ``` |
---|
| 153 | **Important:** Do NOT change the name of the `themes/bilberry-hugo-theme` folder in your site's root. |
---|
| 154 | Renaming this folder will break your site. |
---|
| 155 | |
---|
| 156 | ### Configuration |
---|
| 157 | |
---|
| 158 | To customize website according to your needs, edit the `config.toml` file in the site's root |
---|
| 159 | directory by adjusting the settings. All parameters that need to be configured are commented out or |
---|
| 160 | disabled. |
---|
| 161 | |
---|
| 162 | The Algolia Search is enabled in the `config.toml` file that comes with the example site; therefore, |
---|
| 163 | if you don't plan to use it, disable it by setting the `algolia_search` property to `false`. |
---|
| 164 | |
---|
| 165 | ### Webserver |
---|
| 166 | - To build and serve the site, execute the following command from the site's root: |
---|
| 167 | ```shell |
---|
| 168 | cd my-new-blog |
---|
| 169 | hugo server |
---|
| 170 | ``` |
---|
| 171 | |
---|
| 172 | ### Other Tutorials |
---|
| 173 | - [Start Blogging With Hugo, GitHub, and Netlify](https://www.kiroule.com/article/start-blogging-with-github-hugo-and-netlify/) |
---|
| 174 | - [Configure Custom Domain and HTTPS on Netlify](https://www.kiroule.com/article/configure-custom-domain-and-https-in-netlify/) |
---|
| 175 | - [Manage Environment-Specific Settings for Hugo-Based Website](https://www.kiroule.com/article/manage-environment-specific-settings-for-hugo-based-website/) |
---|
| 176 | |
---|
| 177 | ## Features |
---|
| 178 | |
---|
| 179 | ### Post Types |
---|
| 180 | Bilberry theme comes with a set of predefined post types, namely `article`, `audio`, `code`, `gallery`, `link`, `page`, `quote`, `status`, and `video` where the `article` type is the default one. |
---|
| 181 | |
---|
| 182 | To create a new content, use the `hugo new` command. Content can be created in two ways: a single page or a [page bundle](https://gohugo.io/content-management/page-bundles/). |
---|
| 183 | |
---|
| 184 | To create new content as a single page, you can use the following command: |
---|
| 185 | ```shell |
---|
| 186 | hugo new <content-type>/my-single-page-content.md |
---|
| 187 | ``` |
---|
| 188 | Or, new page bundle content can be created as follows: |
---|
| 189 | ```shell |
---|
| 190 | hugo new <content-type>/my-page-bundle-content/index.md |
---|
| 191 | ``` |
---|
| 192 | |
---|
| 193 | For example, you can create a new article as a single page and a new gallery as a page bundle using the following commands respectively: |
---|
| 194 | ```shell |
---|
| 195 | hugo new article/my-single-page-article.md |
---|
| 196 | hugo new gallery/my-page-bundle-gallery/index.md |
---|
| 197 | ``` |
---|
| 198 | |
---|
| 199 | The `page` post type is the only one that can be used in the top navigation bar. |
---|
| 200 | Pages can be ordered using the `weight` front matter variable, which should be set to a non-zero value. |
---|
| 201 | A page with a lower `weight` will be displayed first. |
---|
| 202 | |
---|
| 203 | The `page` content can be a static page, such as an **About** page, or a link to another page, internal or external. |
---|
| 204 | |
---|
| 205 | The `link` post type always links to an external site and can be used with or without a background image. |
---|
| 206 | |
---|
| 207 | |
---|
| 208 | ### Top Navigation Bar |
---|
| 209 | If you want to permanently display the top navigation bar with the search text field and `page` items, set the `permanentTopNav` parameter to `true` in the `config.toml` file. |
---|
| 210 | |
---|
| 211 | Please note that the top navigation bar is minimized by default on mobile devices. |
---|
| 212 | |
---|
| 213 | |
---|
| 214 | ### Algolia Search |
---|
| 215 | Bilberry theme includes built-in content search via [Algolia SAAS](https://www.algolia.com/). |
---|
| 216 | You can see this in action on the [demo site](https://lednerb.github.io/bilberry-hugo-theme) by clicking on "hamburger" and typing something in the search text field, such as "support." |
---|
| 217 | |
---|
| 218 | #### Initial Setup |
---|
| 219 | To enable and configure search functionality for your site, follow these steps: |
---|
| 220 | |
---|
| 221 | 1. Register for a free Algolia Search account on https://www.algolia.com/. |
---|
| 222 | 2. Add a `New Application`. You can choose the `COMMUNITY` plan. |
---|
| 223 | 3. Switch over to `Indices` and create a new index. |
---|
| 224 | 4. Switch over to `API Keys` and copy your `Application ID`, `Search-Only API Key` and chosen `Index name` to your `config.toml` file. |
---|
| 225 | 5. Make sure that the `algolia_search` parameter is set to `true`. |
---|
| 226 | 6. Follow instructions in the section [Update Algolia Index](#update-algolia-index) and proceed to the next step. |
---|
| 227 | 7. To complete the initial setup, go to the tab `Configuration` of your newly created indices, select the `Facets` in the section `FILTERING AND FACETING` and add the `language` attribute with the `filter only` modifier in the `Attributes for faceting` option. If, after adding the `language` attribute, the `Unknown attribute` error is shown, ignore it. |
---|
| 228 | |
---|
| 229 | #### Update Algolia Index |
---|
| 230 | You have to repeat this step every time you change a post or publish a new one to update the search index. |
---|
| 231 | |
---|
| 232 | Execute the `hugo` command in the site's root directory to generate the index file. |
---|
| 233 | |
---|
| 234 | ##### Manual Upload |
---|
| 235 | 1. Head over to the `public/index.json` file and copy its content. |
---|
| 236 | 2. Login to your Algolia account, open your index and click at `Add records manually`. |
---|
| 237 | 3. Paste the copied text from the `index.json` file. |
---|
| 238 | 4. Verify in the `Browse` tab of your index that the index records were uploaded correctly. |
---|
| 239 | 5. In case you have a multi-language setup, make sure that you repeat the steps above for all `public/{LANG}/index.json` files. |
---|
| 240 | |
---|
| 241 | ##### Automated Upload |
---|
| 242 | 1. Switch to the `algolia` directory and install required dependencies by executing the following command: |
---|
| 243 | ```shell script |
---|
| 244 | cd algolia |
---|
| 245 | npm install |
---|
| 246 | ``` |
---|
| 247 | 2. Run the `data-upload.js` from from the `algolia` directory as follows: |
---|
| 248 | ```shell script |
---|
| 249 | npm run data-upload -- -f ../public/index.json -a <algolia-app-id> -k <algolia-admin-api-key> -n <algolia-index-name> |
---|
| 250 | ``` |
---|
| 251 | 3. The `algolia-admin-api-key` argument, namely your Algolia account's `Admin API Key`, is used to create, update, and delete indices, and it should be kept secret. |
---|
| 252 | 4. Add the `-c` or `--clear-index` option if you want to clear the corresponding Algolia index before starting a new upload. |
---|
| 253 | 5. Login to your Algolia account and verify in the `Browse` tab of your index that the index records were uploaded correctly. |
---|
| 254 | 6. In case you have a multi-language setup, make sure that you repeat the steps above for all `public/{LANG}/index.json` files. |
---|
| 255 | |
---|
| 256 | Also, you can read this [write-up](https://www.kiroule.com/article/automate-data-upload-to-algolia-index-revisited/) on how to automate |
---|
| 257 | data upload to Algolia index if you host your Bilberry theme-based website on Netlify, or this [write-up](https://www.kiroule.com/article/automate-data-upload-to-algolia-index-with-github-actions/) using GitHub Actions. |
---|
| 258 | |
---|
| 259 | |
---|
| 260 | ### Keyboard Shortcuts |
---|
| 261 | Type `s` to open the navigation bar and set focus to the search input field. |
---|
| 262 | To remove focus, press the `Esc` key. |
---|
| 263 | |
---|
| 264 | |
---|
| 265 | ### Reposted Article/Duplicated Content |
---|
| 266 | If you need to repost an article from another website or duplicate content on your site, you should link it to the original URL so it's correctly processed by SEO. |
---|
| 267 | To do so, define the `original_url` front matter variable in your post, for example: |
---|
| 268 | ``` |
---|
| 269 | original_url: "https://example.org/path/to/content" |
---|
| 270 | ``` |
---|
| 271 | |
---|
| 272 | |
---|
| 273 | ### Calculated Reading Time |
---|
| 274 | To override the automatically calculated reading time for a post, you can use the `readingTime` front matter variable, for example: |
---|
| 275 | ``` |
---|
| 276 | readingTime: 7 # integer value in minutes |
---|
| 277 | ``` |
---|
| 278 | |
---|
| 279 | |
---|
| 280 | ### Summary Splits |
---|
| 281 | There are three options for how Hugo can generate summaries of content which will be used as a short version in summary views, such as a home page and tags or categories pages. |
---|
| 282 | |
---|
| 283 | #### Automatic Summary Split |
---|
| 284 | Using first 70 words of your content, Hugo automatically generates the summary followed by the _Continue reading_ link. |
---|
| 285 | |
---|
| 286 | #### Manual Summary Split |
---|
| 287 | Add the `<!--more-->` summary divider to your content. |
---|
| 288 | Any content before the divider will be used by Hugo as a summary of that content. |
---|
| 289 | The generated summary will also be followed by the _Continue reading_ link. |
---|
| 290 | |
---|
| 291 | #### Front Matter Summary Split |
---|
| 292 | To define a summary that differs from the text that starts your article, use the `summary` front matter variable, for example, `summary: "Here goes my summary"`. |
---|
| 293 | This summary will also be followed by the _Continue reading_ link. |
---|
| 294 | |
---|
| 295 | #### No Summary Split |
---|
| 296 | If you want to display the entire article without the _Continue Reading_ link, set the `noSummary` variable to `true` in your content file. |
---|
| 297 | |
---|
| 298 | |
---|
| 299 | ### Table of Contents (TOC) |
---|
| 300 | To enable the automatic creation of a table of contents (TOC), set the `toc` front matter variable to `true` in your article. |
---|
| 301 | If the article's markdown contains appropriate headings, Hugo will generate a table of content at the beginning of the article. |
---|
| 302 | |
---|
| 303 | By default, a TOC is generated if the content's word count is greater than **400**. |
---|
| 304 | The `tocMinWordCount` parameter defines this value in the `config.toml` configuration file. |
---|
| 305 | |
---|
| 306 | The headings that are taken into account for a TOC are from _H2_ (##) to _H5_ (#####) inclusive. |
---|
| 307 | Also, if you want to display a TOC at a specific point in your article, set the `toc` front matter variable to `false`, and use the `toc` shortcode like this: |
---|
| 308 | ```markdown |
---|
| 309 | {{< toc >}} |
---|
| 310 | ``` |
---|
| 311 | |
---|
| 312 | |
---|
| 313 | ### Series Taxonomy |
---|
| 314 | In case you want to group some articles as a series, you have to add the `series` front matter variable to each article and set its value to the name of the series, for example, `series: "My New Super Series"`. |
---|
| 315 | |
---|
| 316 | The page at `<site-base-url>/series/` will list all the series. To list all articles for a particular series within markdown, you can use the `series` shortcode with the series name in question, for instance: |
---|
| 317 | ```markdown |
---|
| 318 | {{< series "My New Super Series" >}} |
---|
| 319 | ``` |
---|
| 320 | |
---|
| 321 | ### Google Analytics |
---|
| 322 | Bilberry theme comes with built-in support for both v3 and v4 of [Google Analytics](https://analytics.google.com/analytics/web/). |
---|
| 323 | You should set the value of the `googleAnalytics` property in the `config.toml` file to enable it. |
---|
| 324 | |
---|
| 325 | Such value for Universal Analytics v3 is prefixed with the `UA` letters. |
---|
| 326 | So, suppose you migrate your existing website to the Bilberry theme, and your website is already tracked in Universal Analytics, given that the corresponding property was created before October 14, 2020. |
---|
| 327 | In that case, you should continue using the v3 value in the `config.toml` file. |
---|
| 328 | But given that Universal Analytics will no longer process new data in standard properties beginning July 1, 2023, you will have to create a Google Analytics v4 property linked to your v3 property. |
---|
| 329 | |
---|
| 330 | If you created your property after October 14, 2020, you're likely using a Google Analytics v4 property already, and the value for such property is prefixed with the `G` letter. |
---|
| 331 | In that case, you should use the v4 value in the `config.toml` file. |
---|
| 332 | |
---|
| 333 | ### Comments |
---|
| 334 | To allow readers to comment under your articles, you can use either [Commento](https://commento.io/), [Disqus](https://disqus.com/), [Giscus](https://giscus.app/), or [Utterances](https://utteranc.es/). |
---|
| 335 | |
---|
| 336 | #### Commento |
---|
| 337 | Follow this [guide](https://docs.commento.io/installation/cloud-service/) if you want to use Commento Cloud Service which is not free of cost. |
---|
| 338 | |
---|
| 339 | In case you want to use Self-hosting Commento, follow these [instructions](https://docs.commento.io/installation/self-hosting/). |
---|
| 340 | |
---|
| 341 | Then uncomment the `commentoJsURL` parameter in the `config.toml` file: |
---|
| 342 | ```toml |
---|
| 343 | #[...] |
---|
| 344 | [params] |
---|
| 345 | #[...] |
---|
| 346 | |
---|
| 347 | # Commento |
---|
| 348 | commentoJsURL = "http://localhost:8080/js/commento.js" |
---|
| 349 | ``` |
---|
| 350 | |
---|
| 351 | #### Disqus |
---|
| 352 | To allow readers to leave comments under your articles, sign up for free on [Disqus](https://disqus.com) website. |
---|
| 353 | Then create a new site and set the `disqusShortname` parameter to your site's short name in the `config.toml` file: |
---|
| 354 | ```toml |
---|
| 355 | #[...] |
---|
| 356 | [params] |
---|
| 357 | #[...] |
---|
| 358 | |
---|
| 359 | # Disqus |
---|
| 360 | disqusShortname = "lednerb" |
---|
| 361 | ``` |
---|
| 362 | |
---|
| 363 | You can manage and moderate the comments either on your website or using the Disqus management panel. |
---|
| 364 | |
---|
| 365 | #### Giscus |
---|
| 366 | Follow instructions on [Giscus](https://giscus.app/) website. |
---|
| 367 | Once you complete the prerequisites for your GitHub repository and select a discussion category, values for `giscusRepositoryId` and `giscusCategoryId` will be automatically generated. |
---|
| 368 | Then, in the `config.toml` file, set the `giscus` parameter to `true` and the properties mentioned above, respectively: |
---|
| 369 | ```toml |
---|
| 370 | #[...] |
---|
| 371 | [params] |
---|
| 372 | #[...] |
---|
| 373 | |
---|
| 374 | # Giscus |
---|
| 375 | giscus = true |
---|
| 376 | giscusJsUrl = "https://giscus.app/client.js" |
---|
| 377 | giscusRepository = "Lednerb/bilberry-hugo-theme" |
---|
| 378 | giscusRepositoryId = "R_kgDOGX153A" # generated by Giscus website |
---|
| 379 | giscusMapping = "pathname" |
---|
| 380 | giscusCategory = "General" |
---|
| 381 | giscusCategoryId = "DIC_kwDOGX153M4B_2Vz" # generated by Giscus website |
---|
| 382 | giscusTheme = "light" |
---|
| 383 | giscusReactions = "1" |
---|
| 384 | giscusEmitMetadata = "0" |
---|
| 385 | giscusLanguage = "en" |
---|
| 386 | giscusCrossOrigin = "anonymous" |
---|
| 387 | ``` |
---|
| 388 | |
---|
| 389 | #### Utterances |
---|
| 390 | Follow instructions on [Utterances](https://utteranc.es/) website. |
---|
| 391 | Once you complete the prerequisites for your GitHub repository, set the `utterances` parameter to `true` in the `config.toml` file: |
---|
| 392 | ```toml |
---|
| 393 | #[...] |
---|
| 394 | [params] |
---|
| 395 | #[...] |
---|
| 396 | |
---|
| 397 | # Utterances |
---|
| 398 | utterances = true |
---|
| 399 | utterancesJsUrl = "https://utteranc.es/client.js" |
---|
| 400 | utterancesRepository = "Lednerb/bilberry-hugo-theme" |
---|
| 401 | utterancesIssueTerm = "pathname" |
---|
| 402 | utterancesLabel = "Comment" |
---|
| 403 | utterancesTheme = "github-light" |
---|
| 404 | utterancesCrossOrigin = "anonymous" |
---|
| 405 | ``` |
---|
| 406 | |
---|
| 407 | ### Responsive Design |
---|
| 408 | Bilberry theme is optimized to look good on all devices, namely desktops, tablets and smartphones. |
---|
| 409 | |
---|
| 410 | ### Automatic Image Resizing |
---|
| 411 | Bilberry theme includes built-in automatic cropping and resizing only for **featured** and **gallery** images, activated by default. |
---|
| 412 | However, if you want to disable it, set the `resizeImages` parameter to `false` in the `config.toml` file. |
---|
| 413 | Also, this feature can be disabled at the post level by setting the `resizeImages` front matter variable to `false`. |
---|
| 414 | |
---|
| 415 | For a featured image to be cropped and resized, it should be named `featuredImage.*` where the `*` is the image file extension, e.g., `jpg`, `png`, etc. |
---|
| 416 | Also, it should be placed within the page bundle in question, for example: |
---|
| 417 | ```shell |
---|
| 418 | content |
---|
| 419 | └── article |
---|
| 420 | └── my-post-with-featured-image |
---|
| 421 | ├── featuredImage.png |
---|
| 422 | └── index.md |
---|
| 423 | ``` |
---|
| 424 | **NOTE**: a featured image defined via the `featuredImage` front matter parameter will **NOT** be cropped and resized. |
---|
| 425 | |
---|
| 426 | ### Image Modal Zoom |
---|
| 427 | When you include an image that is larger than the content area, the image becomes interactive and a larger version can be opened in a lightbox. |
---|
| 428 | |
---|
| 429 | |
---|
| 430 | ### MathJAX Markup |
---|
| 431 | To enable the [MathJAX](https://www.mathjax.org) markup support, set the `enable_mathjax` parameter to `true` in the `config.toml` file. |
---|
| 432 | |
---|
| 433 | |
---|
| 434 | ### Disabled Javascript Support |
---|
| 435 | Although this theme has a lot of features that only work with enabled JavaScript, it also fully supports disabled JavaScript. |
---|
| 436 | Disabled Javascript will not break any styling or essential functionalities of your website. |
---|
| 437 | |
---|
| 438 | You can test the behavior of the [demo site](https://lednerb.github.io/bilberry-hugo-theme) by disabling JavaScript in your browser. |
---|
| 439 | |
---|
| 440 | |
---|
| 441 | ### Video |
---|
| 442 | The following video hosting providers are supported: [YouTube](https://www.youtube.com/), [Vimeo](https://vimeo.com/), [Prezi](https://prezi.com/), [Bilibili](https://www.bilibili.com), and [PeerTube](https://joinpeertube.org). |
---|
| 443 | Videos in the `MP4` format, either stored externally or within the site's `static` folder, are also supported. |
---|
| 444 | There are two options to display video embeds. |
---|
| 445 | |
---|
| 446 | The first option is to use a post of the `video` type. Use the following command to create your video post: |
---|
| 447 | ```bash |
---|
| 448 | hugo new video/<post-name>.md |
---|
| 449 | ``` |
---|
| 450 | |
---|
| 451 | Then set the appropriate front matter variable while removing the others: |
---|
| 452 | ```markdown |
---|
| 453 | youtube: "<youtube-video-id>" # https://www.youtube.com/watch?v=M7IjJiZUutk -> "M7IjJiZUutk" |
---|
| 454 | vimeo: "<vimeo-video-id>" # https://vimeo.com/239830182 -> "239830182" |
---|
| 455 | prezi: "<prezi-video-id>" # https://prezi.com/v/5z9shnq7jzxs/what-to-study/ -> "5z9shnq7jzxs" |
---|
| 456 | bilibili: "<bilibili-video-id>" # https://www.bilibili.com/video/BV1Sx411T7QQ -> "BV1Sx411T7QQ" |
---|
| 457 | peertube: "<peertube-video-id>" # https://vids.tekdmn.me/w/w7WGHX7Lb6mCrbrpF3Xb8V (entire URL) |
---|
| 458 | mp4video: "<video-file-url>" # location of video file (only mp4) |
---|
| 459 | mp4videoImage: "<image-video-file-url>" # location of poster image |
---|
| 460 | ``` |
---|
| 461 | |
---|
| 462 | For example, if an `MP4` video and its image are stored in the `static` folder, you can set corresponding front matter variables as follows: |
---|
| 463 | ```markdown |
---|
| 464 | mp4video: "/<video-file-name>.mp4" |
---|
| 465 | mp4videoImage: "/<image-video-file-name>.png" |
---|
| 466 | ``` |
---|
| 467 | |
---|
| 468 | The second option is to use the `video` shortcode within markdown content in a post of the `article` type as follows: |
---|
| 469 | ```markdown |
---|
| 470 | <!-- YouTube --> |
---|
| 471 | {{< video type="youtube" id="<youtube-video-id>" >}} |
---|
| 472 | |
---|
| 473 | <!-- Vimeo --> |
---|
| 474 | {{< video type="vimeo" id="<vimeo-video-id>" >}} |
---|
| 475 | |
---|
| 476 | <!-- Prezi --> |
---|
| 477 | {{< video type="prezi" id="<prezi-video-id>" >}} |
---|
| 478 | |
---|
| 479 | <!-- bilibili --> |
---|
| 480 | {{< video type="bilibili" id="<bilibili-video-id>" >}} |
---|
| 481 | |
---|
| 482 | <!-- PeerTube --> |
---|
| 483 | {{< video type="peertube" id="<peertube-video-id>" >}} |
---|
| 484 | |
---|
| 485 | <!-- MP4 external --> |
---|
| 486 | {{< video type="mp4" url="<video-file-url>" imageUrl="<image-video-file-url>" >}} |
---|
| 487 | |
---|
| 488 | <!-- MP4 in site's static folder --> |
---|
| 489 | {{< video type="mp4" url="/<video-file-name>.mp4" imageUrl="/<image-video-file-name>.png" >}} |
---|
| 490 | |
---|
| 491 | ``` |
---|
| 492 | |
---|
| 493 | #### PeerTube Configuration |
---|
| 494 | Because there is no *one* PeerTube site, you need to indicate which ones your videos use, meaning you can't use just the video ID. |
---|
| 495 | Instead, copy in the entire watch URL, and it'll be transformed into the correct embed URL to use. |
---|
| 496 | |
---|
| 497 | There is an [instance finder](https://joinpeertube.org/instances#instances-list) if you want to start hosting your videos on PeerTube but don't know which instance to join. |
---|
| 498 | |
---|
| 499 | ### Audio |
---|
| 500 | The following audio streaming providers are supported: [Mixcloud](https://www.mixcloud.com/), [SoundCloud](https://soundcloud.com/), [Spotify](https://www.spotify.com/), and [TuneIn](https://tunein.com/). |
---|
| 501 | Audio files in the `Ogg`, `MP3`, or `WAV` formats, either stored externally or within the site's `static` folder, are also supported. |
---|
| 502 | There are two options to display audio embeds. |
---|
| 503 | |
---|
| 504 | The first option is to use a post of the `audio` type. Use the following command to create your audio post: |
---|
| 505 | ```bash |
---|
| 506 | hugo new audio/<post-name>.md |
---|
| 507 | ``` |
---|
| 508 | |
---|
| 509 | Then set the appropriate front matter variable while removing the others: |
---|
| 510 | ```markdown |
---|
| 511 | spotify: "<spotify-track-id>" # https://open.spotify.com/track/3W2lz1sg6m4sEzjmoTjmdE?si=0659fd12179840dd --> 3W2lz1sg6m4sEzjmoTjmdE |
---|
| 512 | soundcloud: "<soundcloud-track-url>" # https://soundcloud.com/lightbooks/alchemist-08-new-world-order-snip |
---|
| 513 | tunein: "<tunein-track-id>" # https://tunein.com/embed/player/t117894382/" --> t117894382 |
---|
| 514 | mixcloud: "<mixcloud-track-id>" # https://www.mixcloud.com/scienceforthepeople/445-ai-ant-intelligence/ --> scienceforthepeople/445-ai-ant-intelligence |
---|
| 515 | audiofile: "<audio-file-url>" # location of audio file (only ogg, mp3, or wav formats) |
---|
| 516 | ``` |
---|
| 517 | |
---|
| 518 | For example, if an `MP3` audio file is stored in the `static` folder, you can set the `audiofile` front matter variable as follows: |
---|
| 519 | ```markdown |
---|
| 520 | audiofile: "/<audio-file-name>.mp3" |
---|
| 521 | ``` |
---|
| 522 | |
---|
| 523 | The second option is to use the `audio` shortcode within markdown content in a post of the `article` type as follows: |
---|
| 524 | ```markdown |
---|
| 525 | <!-- Mixcloud --> |
---|
| 526 | {{< audio type="mixcloud" id="<mixcloud-track-id>" >}} |
---|
| 527 | |
---|
| 528 | <!-- SoundCloud --> |
---|
| 529 | {{< audio type="soundcloud" id="<soundcloud-track-url>" >}} |
---|
| 530 | |
---|
| 531 | <!-- Spotify --> |
---|
| 532 | {{< audio type="spotify" id="<spotify-track-id>" >}} |
---|
| 533 | |
---|
| 534 | <!-- TuneIn --> |
---|
| 535 | {{< audio type="tunein" id="<tunein-track-id>" >}} |
---|
| 536 | |
---|
| 537 | <!-- MP3 external --> |
---|
| 538 | {{< audio type="audiofile" url="<audio-file-url>" >}} |
---|
| 539 | |
---|
| 540 | <!-- MP3 in site's static folder --> |
---|
| 541 | {{< audio type="audiofile" url="/<audio-file-name>.mp3" >}} |
---|
| 542 | ``` |
---|
| 543 | |
---|
| 544 | ### Raw HTML |
---|
| 545 | If you want to include raw HTML in your markdown content, set the `unsafe` setting in the `config.toml` file to `true`: |
---|
| 546 | ```toml |
---|
| 547 | [markup.goldmark] |
---|
| 548 | [markup.goldmark.renderer] |
---|
| 549 | unsafe = true |
---|
| 550 | ``` |
---|
| 551 | |
---|
| 552 | ## Favicons |
---|
| 553 | To add favicons, proceed with the following steps: |
---|
| 554 | 1. Visit https://realfavicongenerator.net/ website, and generate favicons according to your needs. |
---|
| 555 | 2. Copy and paste the generated files into your site's `/static` folder. |
---|
| 556 | 3. Edit the `/layouts/partials/favicon.html` file, then copy and paste the HTML code from the generated instruction. |
---|
| 557 | |
---|
| 558 | **Important:** You have to follow the [Quick Start](#Quick-Start) instructions or manually copy the `/layouts/partials/favicon.html` file from the theme to your site's `/layouts` directory. |
---|
| 559 | |
---|
| 560 | Also, check out this [tutorial](https://www.kiroule.com/article/add-favicon-to-hugo-based-website/) on how to add favicons to Bilberry theme-based website. |
---|
| 561 | |
---|
| 562 | |
---|
| 563 | ## Custom 404 Page |
---|
| 564 | To customize your 404 page, copy the `themes/bilberry-hugo-theme/layouts/404.html` file to your site's `layouts/404.html` and edit the file according to your needs, for example, change the message, icon class etc. |
---|
| 565 | |
---|
| 566 | ## Archive Page |
---|
| 567 | The archive page will be available at `<site-base-url>/archive/` as soon as you copy the `themes/bilberry-hugo-theme/exampleSite/content/archive.md` file to `content` directory of your site. |
---|
| 568 | By default, the published content is grouped by year. |
---|
| 569 | To group the content by year and month, set the `archiveDateGrouping` parameter to the `2006-01` value. |
---|
| 570 | |
---|
| 571 | To display the archive link in the footer, set the `showArchive` parameter to `true`. |
---|
| 572 | |
---|
| 573 | To add the archive link to the top navigation bar, create a new page with the following command: |
---|
| 574 | ```shell |
---|
| 575 | hugo new page/archive.md |
---|
| 576 | ``` |
---|
| 577 | |
---|
| 578 | Then, in the newly created `content/page/archive.md` file, set the `link` front matter variable to the `/archive/` value and completely remove the `target` variable. |
---|
| 579 | |
---|
| 580 | |
---|
| 581 | ## Custom Post Types |
---|
| 582 | With Bilberry theme, you can create new post types easily. |
---|
| 583 | For example, suppose you want to create a new type named `book`. |
---|
| 584 | Then you should do the following: |
---|
| 585 | |
---|
| 586 | 1. Copy the default `themes/bilberry-hugo-theme/layouts/partials/content-type/article.html` to your site's `layouts/partials/content-type/` folder. |
---|
| 587 | 2. Rename the file to your custom post type, namely `book.html`. |
---|
| 588 | 3. Customize the newly created file, for instance, change the icon in the bubble to `fa-book` that is available on [Font Awesome Icon](http://fontawesome.io/icons/) website: |
---|
| 589 | ```html |
---|
| 590 | <i class="fas fa-fw fa-book"></i> |
---|
| 591 | ``` |
---|
| 592 | 4. To create new posts, use the `book` post type prefix: |
---|
| 593 | ```shell |
---|
| 594 | hugo new book/my-favorite-book.md` |
---|
| 595 | ``` |
---|
| 596 | If you want to use custom front matter variables, create a `book.md` archetype in your site's `archetypes/` directory. |
---|
| 597 | |
---|
| 598 | ## External Images |
---|
| 599 | If you would like to use external images, such as those stored on another server or in the cloud, as a featured image for your article or in the `gallery` post type, you can use them by setting the appropriate front matter variables with the full-path URL values: |
---|
| 600 | |
---|
| 601 | ```markdown |
---|
| 602 | # /content/article/my-external-featured-image-post.md |
---|
| 603 | featuredImage: "https://example.org/images/my-image.jpg" |
---|
| 604 | ``` |
---|
| 605 | |
---|
| 606 | ```markdown |
---|
| 607 | # /content/gallery/my-external-gallery-post.md |
---|
| 608 | gallery: [ |
---|
| 609 | "https://example.org/images/gallery-image1.jpg", |
---|
| 610 | "https://example.org/images/gallery-image2.jpg", |
---|
| 611 | "https://example.org/images/gallery-image3.jpg" |
---|
| 612 | ] |
---|
| 613 | ``` |
---|
| 614 | |
---|
| 615 | ## Individual Posts Customization |
---|
| 616 | You can customize your posts as follows: |
---|
| 617 | |
---|
| 618 | 1. To exclude posts from your blog's index but still show up in categories, add `excludeFromIndex: true` to your post's front matter. |
---|
| 619 | |
---|
| 620 | 2. To pin one or more posts to the top of the index page, uncomment the `pinnedPost` parameter in the `config.toml` file. |
---|
| 621 | Then set its value to the post's relative URL, for example, `/article/installing-bilberry-theme/`. |
---|
| 622 | When pinning multiple posts, the relative URL values should be separated by a comma. |
---|
| 623 | The `pinOnlyToFirstPage` parameter allows you to choose whether to display pinned posts on the index page only or on all pages. |
---|
| 624 | |
---|
| 625 | 3. A custom icon can be declared per post, by specifying a font-awesome icon in the post's front matter, such as `icon: fa-thumb-tack` for a pinned post. |
---|
| 626 | |
---|
| 627 | 4. If you want to change the default post types(e.g., replace the pencil icon for the `article` post type another one) copy the original content type file to your site's `layouts/partials/content-type/` directory and edit it there. |
---|
| 628 | Otherwise, your changes will be overwritten when you update the theme to the latest version. |
---|
| 629 | |
---|
| 630 | |
---|
| 631 | ## Custom Colors and Fonts |
---|
| 632 | Bilberry uses SCSS for styling and NPM with [Laravel Mix](https://laravel-mix.com/) for the dependency management. |
---|
| 633 | |
---|
| 634 | To change any colors or fonts, you have to follow these steps: |
---|
| 635 | |
---|
| 636 | 1. In your site's `cd themes/bilberry-hugo-theme` directory, execute `npm install`. |
---|
| 637 | 2. Modify the `assets/sass/_variables.scss` file to customize your colors. |
---|
| 638 | If you want to change the header's color, only edit the `$base-color` variable. |
---|
| 639 | 3. Use `npm run dev` for development and preview purposes and `npm run production` when you're done with the changes. |
---|
| 640 | |
---|
| 641 | |
---|
| 642 | ## CSS and JS modules |
---|
| 643 | This theme supports hot-swappable CSS and JavaScript extensions. |
---|
| 644 | Modules can be specified using the `(css|js)_modules` list parameter. |
---|
| 645 | Modules can be specified either relative to the `static` directory (e.g. `exampleSite/static/css/custom.css`) or as a URL. |
---|
| 646 | |
---|
| 647 | Modules are imported in the order they appear in the list, and immediately after the default Bilberry CSS and JS files are imported. |
---|
| 648 | |
---|
| 649 | ## Add Cookie Disclaimer |
---|
| 650 | You can use the [cookie consent](https://cookieconsent.insites.com/) solution to add cookie consent information by loading the needed resources as external CSS and JS modules. |
---|
| 651 | |
---|
| 652 | Use the configurator on the [cookie consent website](https://cookieconsent.insites.com/) to generate the required initialization code and add it to a local `static/init-cookieconsent.js` file, for example: |
---|
| 653 | |
---|
| 654 | ```javascript |
---|
| 655 | // https://cookieconsent.insites.com/download/# |
---|
| 656 | window.addEventListener('load', function () { |
---|
| 657 | window.cookieconsent.initialise({ |
---|
| 658 | 'palette': { |
---|
| 659 | 'popup': { |
---|
| 660 | 'background': '#cc0033' |
---|
| 661 | }, |
---|
| 662 | 'button': { |
---|
| 663 | 'background': '#fff' |
---|
| 664 | } |
---|
| 665 | } |
---|
| 666 | }) |
---|
| 667 | }) |
---|
| 668 | ``` |
---|
| 669 | |
---|
| 670 | Then you only need to modify the `config.toml` file to load the local init script and the libraries. |
---|
| 671 | You can either download the files and put them in your site's `/static` directory or reference them directly using a CDN. |
---|
| 672 | Storing these files on your website reduces external dependencies, increases privacy, and allows you to develop your website in an offline environment. |
---|
| 673 | |
---|
| 674 | ```toml |
---|
| 675 | css_modules = ["..", "//cdnjs.cloudflare.com/ajax/libs/cookieconsent2/3.1.0/cookieconsent.min.css"] |
---|
| 676 | js_modules = ["..", "//cdnjs.cloudflare.com/ajax/libs/cookieconsent2/3.1.0/cookieconsent.min.js", "init-cookieconsent.js"] |
---|
| 677 | ``` |
---|
| 678 | |
---|
| 679 | |
---|
| 680 | ## Translations |
---|
| 681 | Bilberry theme has built-in support for multi-language sites, and currently supports translations for more than 20 languages. |
---|
| 682 | |
---|
| 683 | Feel free to submit a request for a new language translation or improve existing ones! |
---|
| 684 | |
---|
| 685 | ## Credits |
---|
| 686 | Bilberry theme was inspired by the [WordPress theme Lingonberry](https://en-ca.wordpress.org/themes/lingonberry/) created by Anders Norén. |
---|
| 687 | |
---|
| 688 | Bilberry is a theme for the great [HUGO static site generator](https://gohugo.io). |
---|
| 689 | |
---|
| 690 | Special thank-you goes to [@Ipstenu](https://github.com/Ipstenu) for his help in [this thread](https://discourse.gohugo.io/t/search-index-json-file-for-lunr-js/6286/5?u=lednerb) that helped to create the `index.json` for the Algolia index. |
---|
| 691 | |
---|
| 692 | ## Contributors |
---|
| 693 | |
---|
| 694 | Many thanks go to these wonderful people ([emoji key](https://github.com/kentcdodds/all-contributors#emoji-key)): |
---|
| 695 | |
---|
| 696 | <!-- ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section --> |
---|
| 697 | <!-- prettier-ignore --> |
---|
| 698 | | [<img src="https://avatars1.githubusercontent.com/u/2056876?v=4" width="100px;"/><br /><sub><b>Sascha Brendel</b></sub>](https://sascha-brendel.de)<br />[💬](#question-Lednerb "Answering Questions") [📝](#blog-Lednerb "Blogposts") [💻](https://github.com/Lednerb/bilberry-hugo-theme/commits?author=Lednerb "Code") [🎨](#design-Lednerb "Design") [📖](https://github.com/Lednerb/bilberry-hugo-theme/commits?author=Lednerb "Documentation") [🌍](#translation-Lednerb "Translation") | [<img src="https://anna-brendel.de/images/background1.jpg" width="100px;"/><br /><sub><b>Anna Brendel</b></sub>](https://anna-brendel.de)<br />[🤔](#ideas "Ideas, Planning, & Feedback") [🌍](#translation "Translation") | [<img src="https://avatars2.githubusercontent.com/u/1560404?v=4" width="100px;"/><br /><sub><b>Givi Khojanashvili</b></sub>](https://www.linkedin.com/in/khojanashvili/)<br />[💻](https://github.com/Lednerb/bilberry-hugo-theme/commits?author=gigovich "Code") | [<img src="https://avatars2.githubusercontent.com/u/28822504?v=4" width="100px;"/><br /><sub><b>Chung Tran Anh</b></sub>](https://github.com/anhchungite)<br />[💻](https://github.com/Lednerb/bilberry-hugo-theme/commits?author=anhchungite "Code") [🌍](#translation-anhchungite "Translation") | [<img src="https://avatars0.githubusercontent.com/u/3048682?v=4" width="100px;"/><br /><sub><b>Minke Zhang</b></sub>](http://blogzhang.com)<br />[💻](https://github.com/Lednerb/bilberry-hugo-theme/commits?author=cripplet "Code") | |
---|
| 699 | | :---: | :---: | :---: | :---: | :---: | |
---|
| 700 | | [<img src="https://avatars1.githubusercontent.com/u/16353578?v=4" width="100px;"/><br /><sub><b>Pavel Kanyshev</b></sub>](https://github.com/aerohub)<br />[💻](https://github.com/Lednerb/bilberry-hugo-theme/commits?author=aerohub "Code") [🌍](#translation-aerohub "Translation") | [<img src="https://avatars3.githubusercontent.com/u/3541050?v=4" width="100px;"/><br /><sub><b>Marcel Kraus</b></sub>](https://www.marcelkraus.de)<br />[💻](https://github.com/Lednerb/bilberry-hugo-theme/commits?author=marcelkraus "Code") | [<img src="https://avatars2.githubusercontent.com/u/280825?v=4" width="100px;"/><br /><sub><b>Nick Busey</b></sub>](http://nickbusey.com/)<br />[💻](https://github.com/Lednerb/bilberry-hugo-theme/commits?author=NickBusey "Code") | [<img src="https://avatars1.githubusercontent.com/u/4789253?v=4" width="100px;"/><br /><sub><b>lkorzen</b></sub>](https://github.com/lkorzen)<br />[🌍](#translation-lkorzen "Translation") | [<img src="https://avatars1.githubusercontent.com/u/12019608?v=4" width="100px;"/><br /><sub><b>Chris Stayte</b></sub>](http://www.chrisstayte.com)<br />[🐛](https://github.com/Lednerb/bilberry-hugo-theme/issues?q=author%3AChrisStayte "Bug reports") | |
---|
| 701 | | [<img src="https://avatars0.githubusercontent.com/u/405277?v=4" width="100px;"/><br /><sub><b>Dmitry Matrosov</b></sub>](https://twitter.com/amidos_me)<br />[💻](https://github.com/Lednerb/bilberry-hugo-theme/commits?author=meAmidos "Code") | [<img src="https://avatars2.githubusercontent.com/u/8802277?v=4" width="100px;"/><br /><sub><b>Marc-Antoine</b></sub>](https://marca.finch4.xyz/)<br />[💻](https://github.com/Lednerb/bilberry-hugo-theme/commits?author=Embraser01 "Code") [🐛](https://github.com/Lednerb/bilberry-hugo-theme/issues?q=author%3AEmbraser01 "Bug reports") | [<img src="https://avatars1.githubusercontent.com/u/2030983?v=4" width="100px;"/><br /><sub><b>Nina Zakharenko</b></sub>](http://nnja.io)<br />[💻](https://github.com/Lednerb/bilberry-hugo-theme/commits?author=nnja "Code") [🐛](https://github.com/Lednerb/bilberry-hugo-theme/issues?q=author%3Annja "Bug reports") [📖](https://github.com/Lednerb/bilberry-hugo-theme/commits?author=nnja "Documentation") | [<img src="https://avatars1.githubusercontent.com/u/7719018?v=4" width="100px;"/><br /><sub><b>Nisarga</b></sub>](https://github.com/nisargap)<br />[💻](https://github.com/Lednerb/bilberry-hugo-theme/commits?author=nisargap "Code") | [<img src="https://avatars2.githubusercontent.com/u/2817480?v=4" width="100px;"/><br /><sub><b>Pablo Domingo Rojo</b></sub>](https://github.com/pdoro)<br />[💻](https://github.com/Lednerb/bilberry-hugo-theme/commits?author=pdoro "Code") | |
---|
| 702 | | [<img src="https://avatars3.githubusercontent.com/u/4433144?v=4" width="100px;"/><br /><sub><b>Rob Baruch</b></sub>](https://github.com/rabarar)<br />[💻](https://github.com/Lednerb/bilberry-hugo-theme/commits?author=rabarar "Code") | [<img src="https://avatars0.githubusercontent.com/u/9339576?v=4" width="100px;"/><br /><sub><b>Taoshi</b></sub>](https://github.com/GMpet)<br />[🌍](#translation-GMpet "Translation") | [<img src="https://avatars1.githubusercontent.com/u/11535575?v=4" width="100px;"/><br /><sub><b>nonumeros</b></sub>](https://github.com/nonumeros)<br />[💻](https://github.com/Lednerb/bilberry-hugo-theme/commits?author=nonumeros "Code") | [<img src="https://avatars3.githubusercontent.com/u/56372?v=4" width="100px;"/><br /><sub><b>Marcelo Gonçalves</b></sub>](http://marcelogoncalves.com.br)<br />[🌍](#translation-marcelocg "Translation") | [<img src="https://avatars0.githubusercontent.com/u/9111944?v=4" width="100px;"/><br /><sub><b>Dávid Sárkány</b></sub>](https://sarkanydavid.com)<br />[🌍](#translation-davidsarkany "Translation") | |
---|
| 703 | | [<img src="https://avatars3.githubusercontent.com/u/43414238?v=4" width="100px;"/><br /><sub><b>meonamz</b></sub>](https://github.com/meonamz)<br />[🌍](#translation-meonamz "Translation") | [<img src="https://avatars3.githubusercontent.com/u/32282514?v=4" width="100px;"/><br /><sub><b>Hamza Yusuf Çakır</b></sub>](https://github.com/hycakir)<br />[🌍](#translation-hycakir "Translation") | [<img src="https://avatars3.githubusercontent.com/u/15079172?s=460&v=4" width="100px;"/><br /><sub><b>Niclas Roßberger</b></sub>](https://github.com/nidomiro)<br />[💻](https://github.com/Lednerb/bilberry-hugo-theme/commits?author=nidomiro "Code") [🐛](https://github.com/Lednerb/bilberry-hugo-theme/issues?q=author:nidomiro "Bug reports") [🚧](https://github.com/Lednerb/bilberry-hugo-theme/commits?author=nidomiro "maintenance") | [<img src="https://www.kiroule.com/avatar.png" width="100px;"/><br/><sub><b>Igor Baiborodine</b></sub>](https://kiroule.com)<br />[💻](https://github.com/Lednerb/bilberry-hugo-theme/commits?author=igor-baiborodine "Code") [🐛](https://github.com/Lednerb/bilberry-hugo-theme/issues/created_by/igor-baiborodine "Bug reports") [📖](https://github.com/Lednerb/bilberry-hugo-theme/commits?author=igor-baiborodine "Documentation") |
---|
| 704 | <!-- ALL-CONTRIBUTORS-LIST:END --> |
---|
| 705 | |
---|
| 706 | This project follows the [all-contributors](https://github.com/kentcdodds/all-contributors) specification. Contributions of any kind welcome! |
---|
| 707 | |
---|
| 708 | |
---|
| 709 | ## License |
---|
| 710 | The Bilberry Hugo theme is licensed under the MIT license. |
---|