# Hello Friend ![Hello Friend](https://github.com/panr/hugo-theme-hello-friend/blob/master/images/screenshot.png?raw=true) ### DEMO - https://hugo-hello-friend.now.sh/ --- - [Hello Friend](#hello-friend) - [DEMO - https://hugo-hello-friend.now.sh/](#demo) - [Features](#features) - [Built-in shortcodes](#built-in-shortcodes) - [Code highlighting](#code-highlighting) - [Improved RSS Feed](#improved-rss-feed) - [How to start](#how-to-start) - [How to run your site](#how-to-run-your-site) - [How to configure](#how-to-configure) - [How to add a cover image to your posts](#how-to-add-a-cover-image-to-your-posts) - [How to display the Last Modified Date in your posts](#how-to-display-the-last-modified-date-in-your-posts) - [How to hide "Read more" button](#how-to-hide-read-more-button) - [Add-ons](#add-ons) - [How to edit the theme](#how-to-edit) - [Found a bug?](#bug) - [New cool idea or feature](#feature) - [`Hello Friend` theme user?](#hello-friend-theme-user) - [License](#license) ## Features - **dark/light mode**, depending on your preferences (the theme of your operating system is default, but you can change it) - great reading experience thanks to [**Inter font**](https://rsms.me/inter/), made by [Rasmus Andersson](https://rsms.me/about/) - nice code highlighting thanks to [**PrismJS**](https://prismjs.com) - fully responsive #### Built-in shortcodes - **`image`** (prop required: **`src`**; props optional: **`alt`**, **`position`** (**left** is default | center | right), **`style`**) - eg: `{{< image src="/img/hello.png" alt="Hello Friend" position="center" style="border-radius: 8px;" >}}` - **`figure`** (same as `image`, plus few optional props: **`caption`**, **`captionPosition`** (left | **center** is default | right), **`captionStyle`** - eg: `{{< figure src="/img/hello.png" alt="Hello Friend" position="center" style="border-radius: 8px;" caption="Hello Friend!" captionPosition="right" captionStyle="color: red;" >}}` - **`imgproc`** Hugo shortcode for image processing, plus additional **`position`** param [ left | center | right ] (optional). - eg: `{{< imgproc "img/hello.png" Resize "250x" center />}}` - More detailed info on processing commands at [https://gohugo.io/content-management/image-processing/](https://gohugo.io/content-management/image-processing/) - **`code`** (prop required: **`language`**; props optional: **`title`**, **`id`**, **`expand`** (default "△"), **`collapse`** (default "▽"), **`isCollapsed`**) - eg: ```go {{< code language="css" title="Really cool snippet" id="1" expand="Show" collapse="Hide" isCollapsed="true" >}} pre { background: #1a1a1d; padding: 20px; border-radius: 8px; font-size: 1rem; overflow: auto; @media ($phone) { white-space: pre-wrap; word-wrap: break-word; } code { background: none !important; color: #ccc; padding: 0; font-size: inherit; } } {{< /code >}} ``` #### Code highlighting By default the theme is using PrismJS to color your code syntax. All you need to do is to wrap you code like this:
```html
  // your code here
```
**Supported languages**: bash/shell, css, clike, javascript, apacheconf, actionscript, applescript, c, csharp, cpp, coffeescript, ruby, csp, css-extras, diff, django, docker, elixir, elm, markup-templating, erlang, fsharp, flow, git, go, graphql, less, handlebars, haskell, http, java, json, kotlin, latex, markdown, makefile, objectivec, ocaml, perl, php, php-extras, r, sql, processing, scss, python, jsx, typescript, toml, reason, textile, rust, sass, stylus, scheme, pug, swift, yaml, haml, twig, tsx, vim, visual-basic, wasm. #### Improved RSS Feed Some enhancements have been made to Hugo's [internal RSS](https://github.com/gohugoio/hugo/blob/25a6b33693992e8c6d9c35bc1e781ce3e2bca4be/tpl/tplimpl/embedded/templates/_default/rss.xml) generation code. **A page's cover image now appears at the top of its feed display**. This image is set manually using [the cover params](#how-to-add-a-cover-image-to-your-posts). If unset, the RSS generator searches for the first image file in the page bundle whose name includes 'featured', 'cover', or 'thumbnail'. **You can optionally display the full page content in your RSS feed** (default is Description or Summary data from Front Matter). Set `rssFullText = true` in your `config.toml` file to enable this option. **You can choose a site image to be displayed when searching for your RSS feed.** Set `rssImage = "image/url/here"` in your `config.toml` file to enable this option. ## How to start You can download the theme manually by going to [https://github.com/panr/hugo-theme-hello-friend.git](https://github.com/panr/hugo-theme-hello-friend.git) and pasting it to `themes/hello-friend` in your root directory. You can also choose **one of the 3 possibilities** to install the theme: 1. as Hugo Module 2. as a standalone local directory 3. as a git submodule ⚠️ **The theme needs at least Hugo **Extended** v0.90.x**. ### Install theme as Hugo Module ```bash # If this is the first time you're using Hugo Modules # in your project. You have to initiate your own module before # you fetch the theme module. # # hugo mod init [your website/module name] hugo mod get github.com/panr/hugo-theme-hello-friend ``` and in your config file add: ```toml [module] # this is needed when you fetch the theme as a submodule to your repo. # replacements = "github.com/panr/hugo-theme-hello-friend -> themes/hello-friend" [[module.imports]] path = 'github.com/panr/hugo-theme-hello-friend' ``` Keep in mind that the theme by default won't show up in the `themes` directory. This means that you are using the theme as it was on the repository at the moment you fetched it. Your local `go.sum` file keeps all the references. Read more about Hugo Modules in the [official documentation](https://gohugo.io/hugo-modules/). ⚠️ If you encounter any issues with: ```bash Error: module "hello-friend" not found; either add it as a Hugo Module or store it in "[...your custom path]/themes".: module does not exist ``` then please try to remove `theme = "hello-friend"` from your config file. ### Install theme locally ```bash git clone https://github.com/panr/hugo-theme-hello-friend.git themes/hello-friend ``` This will clone the repository directly to the `themes/hello-friend` directory. ### Install theme as a submodule ```bash git submodule add -f https://github.com/panr/hugo-theme-hello-friend.git themes/hello-friend ``` This will install the repository as a sumbodule in the `themes/hello-friend` directory. ## How to run your site From your Hugo root directory run: ``` hugo server -t hello-friend ``` and go to `localhost:1313` in your browser. From now on all the changes you make will go live, so you don't need to refresh your browser every single time. ## How to configure The theme doesn't require any advanced configuration. Just copy: ```toml baseurl = "/" languageCode = "en-us" # Add it only if you keep the theme in the `themes` directory. # Remove it if you use the theme as a remote Hugo Module. theme = "hello-friend" paginate = 5 [params] # dir name of your blog content (default is `content/posts`). # the list of set content will show up on your index page (baseurl). contentTypeName = "posts" # OS theme is default when not provided, but you can force it to "light" or "dark" defaultTheme = "dark" # if you set this to 0, only submenu trigger will be visible showMenuItems = 2 # Show reading time in minutes for posts showReadingTime = false # Show table of contents at the top of your posts (defaults to false) # Alternatively, add this param to post front matter for specific posts # toc = true # Show full page content in RSS feed items #(default is Description or Summary metadata in the front matter) # rssFullText = true [languages] [languages.en] title = "Hello Friend" subtitle = "A simple theme for Hugo" keywords = "" copyright = "" menuMore = "Show more" writtenBy = "Written by" readMore = "Read more" readOtherPosts = "Read other posts" newerPosts = "Newer posts" olderPosts = "Older posts" minuteReadingTime = "min read" dateFormatSingle = "2006-01-02" dateFormatList = "2006-01-02" # leave empty to disable, enter display text to enable # lastModDisplay = "" [languages.en.params.logo] logoText = "hello friend" logoHomeLink = "/" # or # # path = "/img/your-example-logo.svg" # alt = "Your example logo alt text" [languages.en.menu] [[languages.en.menu.main]] identifier = "about" name = "About" url = "/about" [[languages.en.menu.main]] identifier = "showcase" name = "Showcase" url = "/showcase" ``` to `config.toml` file in your Hugo root directory and change params fields. In case you need, here's [a YAML version](https://gist.github.com/panr/8f9b363e358aaa33f6d353c77feee959). **NOTE:** Please keep in mind that currently main menu doesn't support nesting. ## How to add a cover image to your posts Adding a cover image to your post is simple and there are two options when you edit your `index.md` file in `content/posts/blog-entry-xy/index.md`: * Use `cover = "/path/to/absolute/img.jpg"` to link an absolute image * Resulting in `https://www.yourpage.com/path/to/absolute/img.jpg` * Use `cover = "img.jpg"` and `useRelativeCover = true` to link the image relative to the blog post folder * Resulting in `https://www.yourpage.com/posts/blog-entry-xy/img.jpg` * Use `coverAlt = "description of image"` to add custom alt text to the cover image (defaults to post or page title as alt text) * Use `coverCaption = "Image Credit to [Barry Bluejeans](https://unsplash.com/)"` to add a caption for the cover image. ## How to display the Last Modified Date in your posts Add `lastModDisplay = "[your display text]"` to `config.toml` to enable last modified date on your posts. Note - an empty string value `""` does not display anything. Example: `lastModDisplay = "Modified:"` --> "Modified: Jan 01, 0001" :octocat: Hugo's `enableGitInfo` option is a nice complement to this feature. ## How to hide "Read more" button In a post's front matter you have to add `hideReadMore` param set to `true`. This will result in that the post won't have "Read more" button in the list view. ## Add-ons - **Archive** — Theme has built-in `archive` page for main content (see `contentTypeName` variable in config). If you need archive on your blog just copy https://github.com/panr/hugo-theme-hello-friend/blob/master/exampleSite/content/archive.md to your `content` dir. If you need multilangual archives, duplicate `content/archive.md` and add `.Lang` variable, eg: `content/archive.pl.md` (remember to change `url` in duplicated file). - **Comments** — for adding comments to your blog posts please take a look at `layouts/partials/comments.html` https://github.com/panr/hugo-theme-terminal/blob/master/layouts/partials/comments.html. - **Prepended ``** — if you need to add something inside `` element, and before any of the theme's `