# Zzo theme for Hugo **Zzo** theme made for bloggers. It uses HTML5 with a modern CSS grid and flex layout. Recent versions of all the mayor browsers support it, see [Can I use css grid](http://caniuse.com/#search=grid). ## Table of contents * [Features](#features) * [Reference](#reference) * [Dependency](#dependency) * [Minimum Hugo version](#minimum-hugo-version) * [Installation](#installation) * [Updating](#updating) * [Run example site](#run-example-site) * [Configuration](#configuration) * [Layout](#layout) * [Gallery](#gallery) * [Multi Language](#multi-language) * [Sub Theme](#sub-theme) * [Shortcodes](#shortcodes) ## Features * Multiple sub themes(dark, light, solarized, hacker) * A mobile menu * CSS grid and flex for layout * HTML5 * Hugo Pipes for js and sass * jQuery * Simple blog * Minify css * Meta tags and JSON-LD * Multilingual (i18n) * Responsive design * RSS and JSON feeds with full content * Search with Lunr * Gallery with Masonry, Photoswipe * Prism.js for highlight code * Lazy image load with lazysizes ## Reference I have referenced: * [zen theme](https://github.com/frjo/hugo-theme-zen) * [docdock theme](https://github.com/vjeantet/hugo-theme-docdock) * [learn theme](https://github.com/matcornic/hugo-theme-learn/) * [overreacted.io](https://github.com/gaearon/overreacted.io) ## Dependency Zzo theme is using this library. * jquery@3.4.1 * mark.js * clipboard.js * fetch-inject * lazysizes * masonry * lunr * jquery.toc * photoswipe * prism * shave.js * perfect-scrollbar ## Minimum Hugo version Hugo version 0.58.0 or higher is required. ## Installation First of all, You need to add config files. Follow the [Configuration](#configuration) step. You can download and unpack the theme manually from Github but it's easier to use git to clone the repo. From the root of your site: ```bash $ git clone https://github.com/zzossig/hugo-theme-zzo.git themes/zzo ``` If you use git to version control your site, highly recommended, it's best to add the zzo theme as a submodule. From the root of your site: ```bash git submodule add https://github.com/zzossig/hugo-theme-zzo.git themes/zzo ``` ## Updating From the root of your site: ```bash git submodule update --remote --merge ``` ## Run example site From the root of themes/zen/exampleSite: ```bash hugo server --themesDir ../.. ``` ## Configuration 1. config folder structure ```bash root ├── config │ ├── _default │ │ ├── config.toml │ │ ├── languages.toml │ │ ├── menus.en.toml │ │ ├── menus.ko.toml │ │ ├── params.toml ``` 2. config.toml ```bash baseURL = "http://example.org/" title = "Hugo Zzo Theme" theme = "zzo" defaultContentLanguage = "en" defaultContentLanguageInSubdir = false hasCJKLanguage = false summaryLength = 70 googleAnalytics = "" copyright = "MIT©zzossig" timeout = 10000 enableEmoji = true paginate = 7 rssLimit = 100 [outputs] home = [ "HTML", "RSS", "JSON" ] [taxonomies] category = "categories" tag = "tags" series = "series" ``` 3. languages.toml ```bash [en] title = "Hugo Zzo Theme" languageName = "English" weight = 1 [ko] title = "Hugo Zzo Theme" languageName = "한국어" weight = 2 ``` 4. menus.en.toml You shoud make your own menu. ```bash [[main]] identifier = "home" name = "home" url = "/" weight = 0 ... ``` 5. params.toml ```bash description = "The Zzo theme for Hugo example site." # body enableToc = true enableBreadcrumb = true enableCustomScrollbar = true enablePhotoSwipe = true enableSearch = true enableMark = true # sidebar enableSidebarTags = true enableSidebarSeries = true enableSidebarCategories = true # footer showPoweredBy = true showFeedLinks = true showSocialLinks = true enableLangChange = true enableThemeChange = true themeOptions = ["dark", "light", "hacker", "solarized"] [socialOptions] facebook = "http://example.org/" twitter = "http://example.org/" github = "http://example.org/" stack-overflow = "" instagram = "" google-plus = "" youtube = "" medium = "" tumblr = "" linkedin = "" pinterest = "http://example.org/" stack-exchange = "" ``` ## Layout ### CSS grid for layout Modern CSS grid is the easiest and cleanest way to layout your pages. The CSS grid layout are in `assets/sass/layout/_grid.scss`. A lot can be done by just reordering "grid-template-rows". #### grid structure | left | right | |--- |--- | | 1 | 2 | | 3 | 4 | | 5 | 6 | | 7 | 8 | * left, right column width ratio => 5 : 2 * 1 => .navbar-main * 2 => .navbar-side * 1 + 2 => .navbar * 3 => .header-main * 4 => .header-side * 3 + 4 => .header * 5 => .main-main * 6 => .main-side * 5 + 6 => .main * 7 => .footer-main * 8 => .footer-side * 7 + 8 => .footer ### grid structure example applied in home page ```html