English |
[简体中文](https://github.com/reuixiy/hugo-theme-meme/blob/master/README.zh-cn.md) |
[繁體中文](https://github.com/reuixiy/hugo-theme-meme/blob/master/README.zh-tw.md)

<div align="center"><img src="https://raw.githubusercontent.com/reuixiy/hugo-theme-meme/master/static/icons/apple-touch-icon.png" /></div>

# <div align="center">MemE</div>

## Description

MemE is a powerful and highly customizable [GoHugo](https://github.com/gohugoio/hugo) theme for personal blogs. MemE focuses on elegance, simplicity, modernity, and code correctness. Also, I hope you would enjoy MemE like a meme and share MemE like a meme! Just like what your blog and articles do! 😝

## Preview

[![tn.png](https://raw.githubusercontent.com/reuixiy/hugo-theme-meme/master/images/tn.png)](https://io-oi.me/hugo-theme-meme/)

### Browser support

MemE uses [CSS variables](https://developer.mozilla.org/en-US/docs/Web/CSS/Using_CSS_custom_properties) and [let statements](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/let) extensively. These features are supported by the following browsers:

- Chrome 49+
- Firefox 44+
- Edge 15+
- Opera 36+
- Safari 10+

Internet Explorer does not support CSS variables.

## Quick Start

https://gohugo.io/getting-started/quick-start/

### Install Hugo (`extended` version)

For Arch Linux users:

```sh
~ $ sudo pacman -S hugo
~ $ hugo new site blog
```

For users of other systems, see: https://gohugo.io/getting-started/installing/

### Install MemE

```sh
~ $ cd blog
~/blog $ git init
~/blog $ git submodule add --depth 1 https://github.com/reuixiy/hugo-theme-meme.git themes/meme
```

### Blogging

1. Replace `config.toml` with [config examples](https://github.com/reuixiy/hugo-theme-meme/blob/master/config-examples/en/config.toml).

   ```sh
   ~/blog $ rm config.toml && cp themes/meme/config-examples/en/config.toml config.toml
   ```

2. Create a new post and the about page:

   ```sh
   ~/blog $ hugo new "posts/hello-world.md"
   ~/blog $ hugo new "about/_index.md"
   ```

3. Now:

   ```sh
   ~/blog $ hugo server -D
   ```

## Customize MemE

MemE uses SCSS via [Hugo Pipes](https://gohugo.io/hugo-pipes/introduction/) to generate CSS instead of static CSS file and provides a [`_custom.scss`](https://github.com/reuixiy/hugo-theme-meme/blob/master/assets/scss/custom/_custom.scss) for customization.

Just create a `~/blog/assets/scss/custom/_custom.scss` and add your own styles into this file. Your `_custom.scss` will override `~/blog/themes/meme/assets/scss/custom/_custom.scss` and your custom CSS will be applied correctly.

Actually, you can override any template of theme in Hugo, see this _unofficial mirror_ page: https://gohugobrasil.netlify.com/themes/customizing/

## Update MemE

```sh
~/blog $ git submodule update --rebase --remote
```

If failed, try:

1. Delete `meme` folder, e.g.

   ```sh
   ~/blog $ rm -rf themes/meme
   ```

2. Clone MemE again

   ```sh
   ~/blog $ git clone --depth 1 https://github.com/reuixiy/hugo-theme-meme.git themes/meme
   ```

**Note that** MemE makes some brand new features or _breaking changes_ sometimes, so please be sure to check [the modification history of `config.toml`](https://github.com/reuixiy/hugo-theme-meme/commits/master/config-examples) and update the related items after the update!

## Awesome MemE

See [#2](https://github.com/reuixiy/hugo-theme-meme/issues/2).

## Supported Front Matter

<details>
  <summary>Click to expand!</summary>

  | Name                                        | Description                                                                                              | Notes                                                                        |
  | ------------------------------------------- | -------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------- |
  | title                                       | \*                                                                                                       | string                                                                       |
  | linkTitle                                   | \*                                                                                                       | string                                                                       |
  | subtitle                                    | displayed below the title                                                                                | string, Markdown supported                                                   |
  | date                                        | \*                                                                                                       | string                                                                       |
  | lastmod                                     | \*                                                                                                       | string                                                                       |
  | publishDate                                 | \*                                                                                                       | string                                                                       |
  | expiryDate                                  | \*                                                                                                       | string                                                                       |
  | `<taxonomies>` eg: categories, tags, series | \*                                                                                                       | array                                                                        |
  | description                                 | \*                                                                                                       | string, Markdown supported                                                   |
  | summary                                     | \*                                                                                                       | string, Markdown supported                                                   |
  | images                                      | \*                                                                                                       | array                                                                        |
  | slug                                        | \*                                                                                                       | string                                                                       |
  | url                                         | \*                                                                                                       | string                                                                       |
  | draft                                       | \*                                                                                                       | boolean                                                                      |
  | isCJKLanguage                               | \*                                                                                                       | boolean                                                                      |
  | weight                                      | \*                                                                                                       | integer                                                                      |
  | type                                        | \*                                                                                                       | string, if equal to "poetry", will use a special layout for it               |
  | layout                                      | \*                                                                                                       | string                                                                       |
  | outputs                                     | \*                                                                                                       | array                                                                        |
  | aliases                                     | \*                                                                                                       | array                                                                        |
  | markup                                      | \*                                                                                                       | string                                                                       |
  | meta                                        | set `false` to disable post-meta                                                                         | boolean                                                                      |
  | toc                                         | display TOC                                                                                              | boolean, override `enableTOC` in `config.toml`                               |
  | tocNum                                      | display TOC number                                                                                       | boolean, override `displayTOCNum` in `config.toml`                           |
  | anchor                                      | enable headings anchor                                                                                   | boolean, override `enableHeadingsAnchor` in `config.toml`                    |
  | displayCopyright                            | display post-copyright                                                                                   | boolean, override `displayPostCopyright` in `config.toml`                    |
  | badge                                       | display updated-badge                                                                                    | boolean, override `displayUpdatedBadge` in `config.toml`                     |
  | gitinfo                                     | display post-gitinfo                                                                                     | boolean, override `displayPostGitInfo` in `config.toml`                      |
  | share                                       | display post-share                                                                                       | boolean, override `displayPostShare` in `config.toml`                        |
  | related                                     | display related-posts                                                                                    | boolean, override `displayRelatedPosts` in `config.toml`                     |
  | katex                                       | add KaTeX support                                                                                        | boolean, override `enableKaTeX` in `config.toml`                             |
  | mathjax                                     | add MathJax support                                                                                      | boolean, override `enableMathJax` in `config.toml`                           |
  | mermaid                                     | add Mermaid support                                                                                      | boolean, override `enableMermaid` in `config.toml`                           |
  | comments                                    | set `false` to disable comments in mainSections or set `true` to enable comments in non-mainSections     | boolean                                                                      |
  | smallCaps                                   | small caps?                                                                                              | boolean, override `enableSmallCaps` in `config.toml`                         |
  | dropCap                                     | drop cap?                                                                                                | boolean, override `enableDropCap` in `config.toml`                           |
  | dropCapAfterHr                              | drop cap after every horizontal rule tag?                                                                | boolean, override `enableDropCapAfterHr` in `config.toml`                    |
  | deleteHrBeforeDropCap                       | delete horizontal rule tag before drop cap?                                                              | boolean, override `deleteHrBeforeDropCap` in `config.toml`                   |
  | indent                                      | indent instead of margin?                                                                                | boolean, override `paragraphStyle` in `config.toml`                          |
  | indentFirstParagraph                        | indent the first paragraph?                                                                              | boolean, override `indentFirstParagraph` in `config.toml`                    |
  | align                                       | normal, justify, center                                                                                  | string, if equal to "normal", will override `enableJustify` in `config.toml` |
  | original                                    | original? You can add the following 8 terms if you set `false`. The `author` is required, other optional | boolean, override `original` in `config.toml`                                |
  | author                                      | author of original post                                                                                  | string                                                                       |
  | link                                        | link of original post                                                                                    | string, URL                                                                  |
  | copyright                                   | license of the post                                                                                      | string, Markdown supported                                                   |
  | website                                     | author’s website                                                                                         | string                                                                       |
  | email                                       | author’s email                                                                                           | string                                                                       |
  | motto                                       | author’s description                                                                                     | string                                                                       |
  | avatar                                      | author’s avatar                                                                                          | string, URL                                                                  |
  | twitter                                     | author’s twitter id                                                                                      | string                                                                       |
  | disqus_url                                  | \*                                                                                                       | string, if not set, will use `Permalink` as default                          |
  | disqus_identifier                           | \*                                                                                                       | string, if not set, will use `RelPermalink` as default                       |
  | disqus_title                                | \*                                                                                                       | string, if not set, will use `Title` as default                              |

  \*: see https://gohugo.io/content-management/front-matter/  
      and https://gohugo.io/templates/internal/#configure-disqus
</details>