hugo-theme-zzo

Make a blog with hugo zzo theme!

MIT License

Stars
737
Committers
28

Zzo theme for Hugo

English | ํ•œ๊ตญ์–ด

๐Ÿ”ฅ๐Ÿ”ฅ๐Ÿ”ฅ zzo theme์„ ์—…๋ฐ์ดํŠธํ•œ ํ›„ config.toml ํŒŒ์ผ์—์„œ page ๋ณ€์ˆ˜๋ฅผ ์‚ญ์ œํ•ด์ฃผ์„ธ์š”

[outputs]
  <del>page = ["HTML", "SearchIndex"]</del>

๊ฒ€์ƒ‰ ๊ด€๋ จ ์ธ๋ฑ์Šค ์ƒ์„ฑ์œ„์น˜๋ฅผ ๋ณ€๊ฒฝํ–ˆ์Šต๋‹ˆ๋‹ค ๐Ÿ”ฅ๐Ÿ”ฅ๐Ÿ”ฅ

ํด๋ฆญํ•ด ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. Zzo theme์€ ๋งŽ์€ ๊ธฐ๋Šฅ์„ ์ง€์›ํ•˜๊ณ ์žˆ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ธฐ์ˆ  ๋ธ”๋กœ๊ทธ๋ฅผ ์šด์˜ํ•˜๊ธฐ์— ์ตœ์ ํ™” ๋˜์–ด์žˆ์Šต๋‹ˆ๋‹ค!(์ ์–ด๋„ ์ œ์ƒ๊ฐ์—”...) Zzo theme์„ ์ด์šฉํ•  ์‹œ ๊ฐ€์žฅ ๋งค๋ ฅ์ ์ธ ํฌ์ธํŠธ ํ•œ๊ฐ€์ง€๋Š”, ํ•œ๊ธ€๋กœ ์ €์™€ ์†Œํ†ตํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์ ? ์ž…๋‹ˆ๋‹ค.

Documentation

์˜๋ฌธ๋ฒ„์ „ ๋„ํ๋จผํŠธ https://zzo-docs.vercel.app/zzo

Table of contents

Features

  • ๋‹ค์–‘ํ•œ ์Šคํ‚จ ์ง€์›(dark, light, solarized, ...)
  • ๋ชจ๋ฐ”์ผ ๋ฉ”๋‰ด
  • ์ตœ์‹  HTML5, CSS ๊ธฐ์ˆ  ์ด์šฉ
  • ์‹ฌํ”Œํ•œ ๋ธ”๋กœ๊ทธ
  • ๊ฒ€์ƒ‰ ์—”์ง„ ์ตœ์ ํ™” (SEO)
  • ๋‹ค๊ตญ์–ด ์ง€์› (i18n)
  • ๋ฐ˜์‘ํ˜• ๋””์ž์ธ
  • RSS feed ์ง€์›
  • ๊ฒ€์ƒ‰ (์ง€์› ์˜ˆ์ •)
  • ๊ฐค๋Ÿฌ๋ฆฌ ์ง€์›
  • ์ฝ”๋“œ ํ•˜์ด๋ผ์ดํŠธ
  • ํ† ํฌ ํŽ˜์ด์ง€
  • ์‡ผ์ผ€์ด์Šค ํŽ˜์ด์ง€

Minimum Hugo version

์ตœ์†Œ ์š”๊ตฌ Hugo ๋ฒ„์ „์€ 0.60.0 ์ž…๋‹ˆ๋‹ค.

Installation

์šฐ์„  ์„ค์ • ํŒŒ์ผ์„ ๋งŒ๋“œ์…”์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์„ค์ •ํŒŒ์ผ์ด ์—†๊ฑฐ๋‚˜ ์„ค์ •๊ฐ’์ด ์ž˜๋ชป ๋  ๊ฒฝ์šฐ, ์‹คํ–‰์ด ์•ˆ๋˜์‹ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์„ค์ • ๋งํฌ๋ฅผ ์ฐธ์กฐํ•˜์—ฌ ์„ค์ •ํŒŒ์ผ์„ ๋งŒ๋“ค์–ด์ฃผ์„ธ์š”.

์„ค์ • ํŒŒ์ผ์„ ๋‹ค ๋งŒ๋“œ์…จ์œผ๋ฉด, theme ํด๋”์— zzo ํด๋”๋ฅผ ๋งŒ๋“ค๊ณ , ๊ทธ๊ณณ์— ์ด ๋ ˆํฌ์ง€ํ† ๋ฆฌ๋ฅผ ๋‹ค์šด๋กœ๋“œ ํ•˜์‹  ํŒŒ์ผ์„ ๋ณต์‚ฌ ๋ถ™์—ฌ๋„ฃ๊ธฐ ํ•˜์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ํŒŒ์ผ์„ ๋ณต์‚ฌ ๋ถ™์—ฌ๋„ฃ๊ธฐ ํ•˜์‹œ๋ฉด, ๋‚˜์ค‘์— ์ œ๊ฐ€ ์—ฌ๋Ÿฌ๊ฐ€์ง€ ๋ฒ„๊ทธ๋‚˜ ์ด์Šˆ๋ฅผ ์—…๋ฐ์ดํŠธ ํ–ˆ์„ ๋•Œ, ๋‹˜์ด ๋งŒ๋“œ์‹  ๋ธ”๋กœ๊ทธ๋ฅผ ์ตœ์‹  Zzo theme์œผ๋กœ ์—…๋ฐ์ดํŠธ ํ•˜๊ณ  ์‹ถ์œผ์‹œ๋ฉด ํ•ด๋‹น Zzo theme์„ ์ง€์šฐ๊ณ  ๋‹ค์‹œ ๋‹ค์šด๋กœ๋“œ ํ•œ ๋‹ค์Œ, ๋ณต๋ถ™ํ•˜์‹œ๋ฉด ๋˜๊ฒ ์Šต๋‹ˆ๋‹ค.

$ git clone https://github.com/zzossig/hugo-theme-zzo.git themes/zzo

๊นƒํ—™์„ ์ด์šฉํ•˜์—ฌ ๋ธ”๋กœ๊ทธ๋ฅผ ๊ด€๋ฆฌํ•˜์‹ ๋‹ค๋ฉด, ์„ญ๋ชจ๋“ˆ์„ ์‚ฌ์šฉํ•˜์—ฌ Zzo theme์„ ์‰ฝ๊ฒŒ ์ตœ์‹ ๋ฒ„์ „์œผ๋กœ ์œ ์ง€ํ•˜์‹ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ฃจํŠธ ํด๋”์—์„œ ๋‹ค์Œ ์ฝ”๋“œ๋ฅผ ์ž…๋ ฅํ•ด์ฃผ์‹œ๋ฉด submodule๋กœ์จ Zzo theme์ด ์„ค์น˜๋ฉ๋‹ˆ๋‹ค:

git submodule add https://github.com/zzossig/hugo-theme-zzo.git themes/zzo

Updating

From the root of your site:

git submodule update --remote --merge

Run example site

From the root of themes/zzo/exampleSite:

hugo server --themesDir ../..

Configuration

  1. ์ €๊ฐ™์€ ๊ฒฝ์šฐ, ๋””๋ ‰ํ† ๋ฆฌ ํ•˜๋‚˜๋ฅผ ๋งŒ๋“ค๊ณ  ๊ทธ๊ณณ์— ๋‹ค์Œ๊ณผ๊ฐ™์ด ์‚ฌ์ดํŠธ๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค.
hugo new site .
  1. 0๋ฒˆ ๋‹จ๊ณ„์—์„œ ๋งŒ๋“œ์‹  ๋””๋ ‰ํ† ๋ฆฌ๋กœ ๋“ค์–ด๊ฐ€์ฃผ์„ธ์š”.
    config.toml ํŒŒ์ผ์ด ๋ณด์ด์‹ ๋‹ค๋ฉด, ๊ณผ๊ฐํ•˜๊ฒŒ ์ง€์›Œ์ฃผ์„ธ์š”. ์•„๋ž˜ ๋‹จ๊ณ„๋“ค์€ ์ œ๊ฐ€ ์‚ฌ์šฉํ•˜๋Š” config ํŒŒ์ผ๋“ค์ž…๋‹ˆ๋‹ค.
    ๋ชจ๋‘ ๊ทธ๋ƒฅ ๋ณต์‚ฌ, ๋ถ™์—ฌ๋„ฃ๊ธฐ ํ•ด์„œ ํŒŒ์ผ์„ ๋งŒ๋“œ์‹œ๋ฉด ๋˜๋Š”๋ฐ, ๊ท€์ฐฎ์œผ์‹  ๋ถ„๋“ค์€ exampleSite ํด๋”์— ์žˆ๋Š” config ํด๋”๋ฅผ
    ๋ฃจํŠธ ๋””๋ ‰ํ† ๋ฆฌ์— ๊ทธ๋ƒฅ ๋ณต์‚ฌ ๋ถ™์—ฌ๋„ฃ๊ธฐ ํ•˜์…”๋„ ๋ฉ๋‹ˆ๋‹ค.

์•„๋ž˜๋Š” ์„ค์ • ํŒŒ์ผ ๊ตฌ์กฐ๊ตฌ์š”. _defaultํด๋”์˜ _(์–ธ๋”์Šค์ฝ”์–ด) ๋บด๋จน์ง€ ๋งˆ์„ธ์š”!

root
โ”œโ”€โ”€ config
โ”‚ย ย  โ”œโ”€โ”€ _default
โ”‚ย ย  โ”‚ย ย  โ”œโ”€โ”€ config.toml
โ”‚ย ย  โ”‚ย ย  โ”œโ”€โ”€ languages.toml
โ”‚ย ย  โ”‚ย ย  โ”œโ”€โ”€ menus.en.toml
โ”‚ย ย  โ”‚ย ย  โ”œโ”€โ”€ params.toml
  1. config.toml
baseURL = "http://example.org/" # The URL of your site.
title = "Hugo Zzo Theme" # Title of your site
theme = "zzo" # Name of Zzo theme folder in `themes/`.

defaultContentLanguage = "en" # Default language to use (if you setup multilingual)
defaultContentLanguageInSubdir = true # baseURL/en/, baseURL/kr/ ...
hasCJKLanguage = true # Set `true` for Chinese/Japanese/Korean languages.

summaryLength = 70 # The length of a post description on a list page.
buildFuture = true # if true, we can use future date for talks page

copyright = "ยฉ{year}, All Rights Reserved" # copyright symbol: $copy; current year: {year}
timeout = 10000
enableEmoji = true
paginate = 13 # Number of items per page in paginated lists.
rssLimit = 100

enableGitInfo = false # When true, the modified date will appear on a summary and single page. Since GitHub info needs to be fetched, this feature will slow down to build depending on a page number you have
googleAnalytics = ""

[markup]
  [markup.goldmark]
    [markup.goldmark.renderer]
      hardWraps = true
      unsafe = true
      xHTML = true
  [markup.highlight]
    codeFences = true
    lineNos = true
    lineNumbersInTable = true
    noClasses = false
  [markup.tableOfContents]
    endLevel = 3
    ordered = false
    startLevel = 2

[outputs]
  home = ["HTML", "RSS", "JSON"]

[taxonomies]
  category = "categories"
  tag = "tags"
  series = "series"
  1. languages.toml
[en]
  title = "Hugo Zzo Theme"
  languageName = "English"
  weight = 1

[ko]
  title = "Hugo Zzo Theme"
  languageName = "ํ•œ๊ตญ์–ด"
  weight = 2
  1. menus.en.toml

You shoud make your own menu.

[[main]]
  identifier = "about"
  name = "about"
  url = "about"
  weight = 1

[[main]]
  identifier = "archive"
  name = "archive"
  url = "archive"
  weight = 2

[[main]]
  identifier = "gallery"
  name = "gallery"
  url = "gallery"
  weight = 3
    
[[main]]
  parent = "gallery"
  name = "cartoon"
  url = "gallery/cartoon"

[[main]]
  parent = "gallery"
  name = "photo"
  url = "gallery/photo"

[[main]]
  identifier = "posts"
  name = "posts"
  url = "posts"
  weight = 4
    
[[main]]
  identifier = "notes"
  name = "notes"
  url = "notes"
  weight = 5
...
  1. params.toml
logoText = "Zzo" # Logo text that appears in the site navigation bar.
logoType = "short" # long, short -> short: squre shape includes logo text, long: rectangle shape not includes logo text
logo = true # Logo that appears in the site navigation bar.
description = "The Zzo theme for Hugo example site." # for SEO
custom_css = [] # custom_css = ["scss/custom.scss"] and then make file at root/assets/scss/custom.scss
custom_js = [] # custom_js = ["js/custom.js"] and then make file at root/assets/js/custom.js
useFaviconGenerator = false # https://www.favicon-generator.org/
languagedir = "ltr" # ltr / rtl

themeOptions = ["dark", "light", "hacker", "solarized", "kimbie"] # select options for site color theme
notAllowedTypesInHome = ["contact", "talks", "about", "showcase"] # not allowed page types in home page. type can be set in front matter or default to folder name.
notAllowedTypesInHomeSidebar = ["about", "archive", "showcase"] # not allowed page types in home page sidebar(recent post titles).
notAllowedTypesInArchive = ["about", "talks", "showcase"] # not allowed page types in archive page
notAllowedTypesInHomeFeed = ["about", "archive", "contact", "talks", "showcase", "publication", "presentation", "resume", "gallery"]
enablePinnedPosts = true # show pinned posts first in the main view

viewportSize = "normal" # widest, wider, wide, normal, narrow
enableUiAnimation = true
hideSingleContentsWhenJSDisabled = false
minItemsToShowInTagCloud = 1 # Minimum items to show in tag cloud

# appbar
enableAppbarSearchIcon = false
enableAppbarLangIcon = false

# header
homeHeaderType = "text" # text, img, slide, typewriter
hideHomeHeaderWhenMobile = false

# menu
showMobileMenuTerms = ["tags", "categories", "series"]

# navbar
enableThemeChange = true # site color theme

# search
enableSearch = true # site search with fuse
enableSearchHighlight = true # when true, search keyword will be highlighted
searchContent = true # include content to search index
searchDistance = 100 # fuse option: distance
searchThreshold = 0.4 # 0.0: exact match, 1.0: any match

# body
enableBreadcrumb = true # breadcrumb for list, single page
enableGoToTop = true # scroll to top
enableWhoami = true # at the end of single page
summaryShape = "classic" # card, classic, compact
archiveGroupByDate = "2006" # "2006-01": group by month, "2006": group by year
archivePaginate = 13 # items per page
paginateWindow = 1 # setting it to 1 gives 7 buttons, 2 gives 9, etc. If set 1: [1 ... 4 5 6 ... 356] [1 2 3 4 5 ... 356] etc
talksPaginate = 8 # items per page
talksGroupByDate = "2006" # "2006-01": group by month, "2006": group by year

# whoami: usage - home page sidebar, single page bottom of post. all values can be empty
myname = "zzossig"
email = "[email protected]"
whoami = "Web Developer"
bioImageUrl = "" # image url like "http//..." or "images/anyfoldername/mybioimage.jpg" If not set, we find a avatar image in root/static/images/whoami/avatar.(png|jpg|svg)
useGravatar = false # we use this option highest priority
location = "Seoul, Korea"
organization = "Hugo"
link = "https://github.com/zzossig/hugo-theme-zzo"

# sidebar
enableBio = true # in home page sidebar
enableBioImage = true # in home page sidebar
enableSidebar = true # Set to false to create the full width of the content.
enableSidebarTags = true # if you want to use tags.
enableSidebarSeries = true
enableSidebarCategories = true
enableHomeSidebarTitles = true
enableListSidebarTitles = true
enableToc = true # single page table of contents, you can replace this param to toc(toc = true)
hideToc = false # Hide or Show toc
tocPosition = "inner" # inner, outer
tocFolding = false
enableTocSwitch = true # single page table of contents visibility switch
itemsPerCategory = 5 # maximum number of posts shown in the sidebar.
sidebarPosition = "right" # bio, profile component layout position
tocLevels = ["h2", "h3", "h4"] # minimum h2, maximum h4 in your article
enableSidebarPostsByOrder = false # another lists in the sidebar

# footer
showPoweredBy = true # show footer text: Powered by Hugo and Zzo theme
showFeedLinks = true # RSS Feed 
showSocialLinks = true # email, facebook, twitter ...
enableLangChange = true # show button at bottom left of footer.

# service
googleTagManager = "" # GTM-XXXXXX
baiduAnalytics = "" # alternative of google analytics
enableBusuanzi = false # if set true, total page view, total unique visitors show up in the footer.
busuanziSiteUV = true # unique visitors (total number of visitors)
busuanziSitePV = true # site total page view count
busuanziPagePV = true # post view count

# rss
updatePeriod = "" # Possible values: 'hourly', 'daily', 'weekly', 'monthly', or 'yearly'.
updateFrequency = ""
fullContents = false

# comment
enableComment = true
disqus_shortname = "" 
commento = false

[gitment]          # Gitment is a comment system based on GitHub issues. see https://github.com/imsun/gitment
  owner = ""              # Your GitHub ID
  repo = ""               # The repo to store comments
  clientId = ""           # Your client ID
  clientSecret = ""       # Your client secret

[utterances]       # https://utteranc.es/
  owner = ""              # Your GitHub ID
  repo = ""               # The repo to store comments
  message = ""      # Optional
  link = ""         # Optional

[gitalk]           # Gitalk is a comment system based on GitHub issues. see https://github.com/gitalk/gitalk
  owner = ""              # Your GitHub ID
  repo = ""               # The repo to store comments
  clientId = ""           # Your client ID
  clientSecret = ""       # Your client secret

# Valine.
# You can get your appid and appkey from https://leancloud.cn
# more info please open https://valine.js.org
[valine]
  enable = false
  appId = 'ไฝ ็š„appId'
  appKey = 'ไฝ ็š„appKey'
  notify = false  # mail notifier , https://github.com/xCss/Valine/wiki
  verify = false # Verification code
  avatar = 'mm' 
  placeholder = '่ฏด็‚นไป€ไนˆๅง...'
  visitor = false

[changyan]
  changyanAppid = ""        # Changyan app id             # ็•…่จ€
  changyanAppkey = ""       # Changyan app key

[livere]
  livereUID = ""            # LiveRe UID                  # ๆฅๅฟ…ๅŠ›

# Isso: https://posativ.org/isso/
[isso]
  enable = false
  scriptSrc = "" # "https://isso.example.com/js/embed.min.js"
  dataAttrs = "" # "data-isso='https://isso.example.com' data-isso-require-author='true'"

[socialOptions] # if set, social icons will show up.
  email = "mailto:[email protected]"
  phone = ""
  facebook = "http://example.org/"
  twitter = "http://example.org/"
  github = "https://github.com/zzossig/hugo-theme-zzo"
  stack-overflow = ""
  instagram = ""
  google-plus = ""
  youtube = ""
  medium = ""
  tumblr = ""
  linkedin = ""
  pinterest = ""
  stack-exchange = ""
  telegram = ""
  steam = ""
  weibo = ""
  douban = ""
  csdn = ""
  gitlab = ""
  mastodon = ""
  jianshu = ""
  zhihu = ""
  signal = ""
  whatsapp = ""
  matrix = ""
  xmpp = ""
  dev-to = ""
  gitea = ""
  google-scholar = ""
  twitch = ""

[donationOptions]
  enable = false # if set, the donation button will show up on the single page.
  alipay = "" # Alipay QR Code image (example path: images/donation/alipay-qrcode.png) and put your file at root/static/images/donation/
  wechat = "" # Wechat pay QR Code image (example path: same as above)
  paypal = "" # Paypal URL
  patreon = "" # Patreon URL
  bitcoin = "" # example path: images/donation/bitcoin-code-image.png

[copyrightOptions]
  enableCopyrightLink = false # if set, you can add copyright link
  copyrightLink = ""
  copyrightLinkImage = ""
  copyrightLinkText = ""

# possible share name: "facebook","twitter", "reddit", "linkedin", "tumblr", "weibo", "douban", "line", "whatsapp", "telegram"
[[share]]
  name = "facebook"
  username = ""
[[share]]
  name = "twitter"

[[footerLinks]]
  name = ""
  link = ""
[[footerLinks]]
  name = ""
  link = ""

Gallery

๊ฐค๋Ÿฌ๋ฆฌ๋Š” ๋‘๊ฐ€์ง€ ๋ชจ๋‘๊ฐ€ ์กด์žฌํ•ด์š”. ํ•˜๋‚˜์”ฉ ์˜ฌ๋ฆฌ๊ฑฐ๋‚˜ ํ•œ๋ฒˆ์— ์˜ฌ๋ฆฌ๊ฑฐ๋‚˜.

content/gallery/anygalleryname/index.md

---
title: "{{ replace .Name "-" " " | title }}"
date: {{ .Date }}
description: 
type: gallery
mode: one-by-one # at-once or one-by-one
tags:
-
series:
-
categories:
-
images: # when mode is one-by-one, images front-matter variable works
  - image: image1.jpg # image path: static/gallery/anygalleryname/image1.jpg
    caption: caption1
  - image: image2.jpg # image path: static/gallery/anygalleryname/image2.jpg
    caption: caption2
    ...
---

๊ฐค๋Ÿฌ๋ฆฌ๋ฅผ ๋งŒ๋“œ์‹œ๋ ค๋ฉด ์šฐ์„  type์„ ๊ฐค๋Ÿฌ๋ฆฌ๋กœ ํ•˜์…”์•ผ ํ•˜๊ตฌ์š”, mode๋ฅผ one-by-one์œผ๋กœ ํ•˜์‹œ๋ฉด images์— ์ด๋ฏธ์ง€๋ฅผ ์œ„์™€ ๊ฐ™์ด ํ•˜๋‚˜์”ฉ ์ž…๋ ฅํ•ด์ฃผ์…”์•ผ ํ•ด์š”. ๊ทธ๋Ÿผ ์ด๋ฏธ์ง€๊ฐ€ ์œ„์— ์ ํžŒ ์ˆœ์„œ๋Œ€๋กœ ๋‚˜ํƒ€๋‚ ๊ฑฐ์—์š”. mode๋ฅผ at-once๋กœ ํ•˜์‹œ๋ฉด, static ํด๋”์— ์žˆ๋Š” ์ด๋ฏธ์ง€๋ฅผ ์ „๋ถ€ ๋ถˆ๋Ÿฌ์˜ฌ๊ฑฐ์—์š”. ์˜ˆ๋ฅผ๋“ค์–ด ์œ„์˜ ์ฝ”๋“œ์—์„œ mode๋ฅผ at-once๋กœ ํ–ˆ๋‹ค๋ฉด, static/gallery/anygalleryname ํด๋”์— ์žˆ๋Š” ์ด๋ฏธ์ง€๋ฅผ ์ „๋ถ€ ์ฝ์–ด ๊ฐค๋Ÿฌ๋ฆฌ ํŽ˜์ด์ง€์— ๋‚˜ํƒ€๋‚  ๊ฑฐ์—์š”.

  1. Make a gallery folder under the content folder
root
โ”œโ”€โ”€ content
โ”‚ย ย  โ”œโ”€โ”€ gallery
  1. Make a sub folder under the gallery folder
root
โ”œโ”€โ”€ content
โ”‚ย ย  โ”œโ”€โ”€ gallery
โ”‚ย ย  โ”‚ย ย  โ”œโ”€โ”€ anygalleryname
  1. Make a index.md file under the sub folder using this command
hugo new --kind gallery gallery/anygalleryname/index.md
  1. Put your images in static folder
root
โ”œโ”€โ”€ static
โ”‚ย ย  โ”œโ”€โ”€ gallery
โ”‚ย ย  โ”‚ย ย  โ”œโ”€โ”€ anygalleryname
โ”‚ย ย  โ”‚ย ย  โ”‚   โ”œโ”€โ”€ ...your images here

Contact Page

ํ˜„์žฌ ์ด์šฉ ๊ฐ€๋Šฅํ•œ ์„œ๋น„์Šค: [formspree]. ๋‹ค๋ฅธ ์„œ๋น„์Šค๋ฅผ ์ด์šฉํ•˜๊ณ  ์‹ถ์œผ์‹œ๋ฉด ์ƒˆ ์ด์Šˆ๋ฅผ ๋งŒ๋“ค์–ด์ฃผ์„ธ์š”. ์„œ๋น„์Šค ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ๋นˆ๊ฐ’์œผ๋กœ ์„ค์ •ํ•˜๋ฉด ๋งˆํฌ๋‹ค์šด์œผ๋กœ ํ•ด๋‹น ํŽ˜์ด์ง€๋ฅผ ์ฑ„์šธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  1. ํŒŒ์ผ์„ ๋‹ค์Œ ๊ฒฝ๋กœ์— ๋งŒ๋“ค์–ด์ค๋‹ˆ๋‹ค. root/content/contact/index.md
---
title: "Contact"
date: 2019-12-17T23:58:33+09:00
description: Contact page
type: contact
service: formspree
formId: "[email protected]"
---

This is contact page.
  1. ์ปจํƒํŠธ ๋ฉ”๋‰ด๋ฅผ ๋‹ค์Œ ๊ฒฝ๋กœ์— ์ถ”๊ฐ€ํ•ด์ค๋‹ˆ๋‹ค. root/config/_default/menus.en.toml.
...
[[main]]
  identifier = "contact"
  name = "contact"
  url = "contact"
  weight = 6

Talks Page

Talks ํŽ˜์ด์ง€๋Š” ์•„์นด์ด๋ธŒ ํŽ˜์ด์ง€์™€ ์œ ์‚ฌํ•œ UI์˜ ํŽ˜์ด์ง€์ž…๋‹ˆ๋‹ค. ๋น„๋””์˜ค, ํ”ผํ‹ฐ ๋“ฑ๋“ฑ์˜ ๋งํฌ๋ฅผ ๋ชจ์•„์„œ ๋ณด์—ฌ์ฃผ๋Š” ์šฉ๋„๋กœ ์”๋‹ˆ๋‹ค. Talks ํŽ˜์ด์ง€๋ฅผ ์ถ”๊ฐ€ํ•˜๋ ค๋ฉด ์•„๋ž˜์˜ ์ˆœ์„œ๋Œ€๋กœ ๋”ฐ๋ผํ•ด์ฃผ์„ธ์š”.

  1. ํŒŒ์ผ์„ root/content/talks/_index.md. ๊ฒฝ๋กœ์— ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋งŒ๋“ญ๋‹ˆ๋‹ค.
---
title: "Talks"
date: 2019-12-30T11:14:14+09:00
description: Talks Page
titleWrap: wrap # wrap, nowrap
---
  1. ๋˜ ๋‹ค๋ฅธ ํŒŒ์ผ์„ ๋งŒ๋“ค์–ด ์ค๋‹ˆ๋‹ค. ์ด๊ณณ์— ๋‚ด์šฉ์„ ๋„ฃ์–ด์ฃผ์„ธ์š”.

root/content/talks/myLinks.md

---
title: "My Awesome links"
date: 2019-12-31T00:04:50+09:00
publishDate: 2019-12-31
description:
tags:
-
series:
-
categories:
-
---
  1. ๋งˆ์ง€๋ง‰์œผ๋กœ ๋ฉ”๋‰ด๋งŒ ๋‹ค์Œ ๊ณผ ๊ฐ™์ด ๋งŒ๋“ค์–ด ์ฃผ๋ฉด ๋ฉ๋‹ˆ๋‹ค.

root/config/_default/menus.en.toml file

[[main]]
  identifier = "talks"
  name = "talks"
  url = "talks"
  weight = 6
  1. ์ถ”๊ฐ€์ ์œผ๋กœ, date๋ฅผ ๋ฏธ๋ž˜์˜ ๋‚ ์งœ๋ฅผ ์“ฐ๊ณ  ์‹ถ์œผ์‹œ๋ฉด ๋‹ค์Œ ๋‹จ๊ณ„๋ฅผ ๋”ฐ๋ผ์„œ ํ•ด์ฃผ์„ธ์š”.

    • ๋‹ค์Œ ๊ฒฝ๋กœ์˜ ์„ค์ •ํŒŒ์ผ(root/config/_default/config.toml)์—์„œ buildFuture๋ฅผ ์ถ”๊ฐ€ํ•ด์ฃผ์„ธ์š”.
    ...
    buildFuture = true
    ...
    
    • talksํด๋”์˜ ๋งˆํฌ๋‹ค์šด ํŒŒ์ผ์— publishDate๋ฅผ ์ถ”๊ฐ€ํ•ด์ฃผ์„ธ์š”. root/content/talks/myLinks.md
    ---
    title:
    date:
    publishDate: 2020-02-20
    ...
    ---
    ...
    

Showcase Page

Showcase ํŽ˜์ด์ง€๋Š” ํ”„๋กœ์ ํŠธ๋ฅผ ์ „์‹œํ•˜๋Š” ํŽ˜์ด์ง€ ์ž…๋‹ˆ๋‹ค. ํŽ˜์ด์ง€๋ฅผ ๋งŒ๋“œ์‹œ๋ ค๋ฉด ์•„๋ž˜ ๋‹จ๊ณ„๋ฅผ ์ง„ํ–‰ํ•ด์ฃผ์„ธ์š”.

  1. ๋‹ค์Œ ๊ฒฝ๋กœ์— ํŒŒ์ผ์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค. root/content/showcase/_index.md.
---
title: "Showcase overview" # For SEO
date: 2020-01-19T15:43:38+09:00
description: My portfolio, repos, works overview page # For SEO
enableBio: true # Set to false if you want to hide the bio component.
---
  1. ๋‹ค์Œ ๊ฒฝ๋กœ์— ์นดํ…Œ๊ณ ๋ฆฌ ํด๋”์™€ ํŒŒ์ผ์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค. root/content/showcase/hugo/_index.md file. (์ €์˜ ๊ฒฝ์šฐ, hugo๊ฐ€ ์นดํ…Œ๊ณ ๋ฆฌ ํด๋”์ž…๋‹ˆ๋‹ค.)
---
title: "Hugo" # section name
date: 2020-01-19T21:04:11+09:00
description: Hugo theme collection # For SEO
category: theme # meta info appeared on a card bottom side. category in category
enableBio: true
---
  1. ํ”„๋กœ์ ํŠธ๋‹น ํ•œ๊ฐœ์˜ mdํŒŒ์ผ์„ ๋งŒ๋“ค์–ด ์ฃผ์„ธ์š”.

root/content/showcase/hugo/my-awesome-project.md

---
title: "My Awesome Project" # apperared on a card component
date: 2020-01-19T21:13:42+09:00
description: Hello world! This is my awesome project! # apperared on a card component
weight: 1 # card ordering
link: https://github.com/zzossig/hugo-theme-zzo
repo: https://github.com/zzossig/hugo-theme-zzo
pinned: true # appreared on a overview page.
thumb: feature3/css3.png # relative path in static/images
---
  1. ๋งˆ์ง€๋ง‰์œผ๋กœ, ๋ฉ”๋‰ด๋ฅผ ๋“ฑ๋กํ•ด์ฃผ์„ธ์š”.

root/config/_default/menus.en.toml

[[main]]
  identifier = "showcase"
  name = "Showcase"
  url = "showcase"
  weight = 7

Multi Language

Zzo theme์˜ ๊ธฐ๋ณธ ์–ธ์–ด๋Š” ์˜์–ด์ž…๋‹ˆ๋‹ค. ํ•œ๊ตญ์–ด๋กœ ๋ฐ”๊พธ์‹œ๋ ค๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์ด ํ•ด์ฃผ์„ธ์š”.

  1. ์šฐ์„  ๋ฉ”๋‰ดํŒŒ์ผ์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค.
root
โ”œโ”€โ”€ config
โ”‚ย ย  โ”œโ”€โ”€ _default
โ”‚ย ย  โ”‚ย ย  โ”œโ”€โ”€ ...
โ”‚ย ย  โ”‚ย ย  โ”œโ”€โ”€ menus.ko.toml
config/_default/menus.ko.toml

[[main]]
  identifier = "about"
  name = "about"
  url = "/about/"
  weight = 1

[[main]]
    identifier = "archive"
    name = "archive"
    url = "/archive/"
    weight = 2
...
  1. content ํด๋”์— ๋งˆํฌ๋‹ค์šด ํŒŒ์ผ์„ ์ž‘์„ฑํ•˜์‹ค ๋•Œ, ํ™•์žฅ์ž ์•ž์— ko๋ฅผ ๋ถ™์—ฌ์ฃผ์„ธ์š”!
hugo new about/index.ko.md
hugo new posts/markdown-syntax.ko.md
...
  1. i18n ํŒŒ์ผ์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค.
i18n/ko.toml

[search-placeholder]
other = "๊ฒ€์ƒ‰..."

[summary-dateformat]
other = "2006๋…„ 01์›” 02์ผ"

[tags]
other = "ํƒœ๊ทธ"

...
  1. ์„ค์ • ํŒŒ์ผ์— ๊ธฐ๋ณธ์–ธ์–ด ํ•ญ๋ชฉ ๊ฐ’์„ ๋ณ€๊ฒฝํ•ด์ค๋‹ˆ๋‹ค.
defaultContentLanguage = "ko"
defaultContentLanguageInSubdir = true
hasCJKLanguage = true

Customizing

๊ธฐ๋ณธ์ ์œผ๋กœ theme ํด๋”์•ˆ์— ์žˆ๋Š” ๋‚ด์šฉ์€ ์•ˆ๊ฑด๋“œ์‹œ๋Š”๊ฒŒ ์ข‹์ง€๋งŒ, ๊ฑด๋“œ์‹ ๋‹ค๋ฉด ๋‚˜์ค‘์— theme์„ ์—…๋ฐ์ดํŠธ ํ•˜๋Š”๊ฒŒ ๋ณต์žกํ•ด ์งˆ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ํ˜„์žฌ ์ƒํƒœ๋กœ ๋ณ„๋กœ ์—…๋ฐ์ดํŠธ๊ฐ€ ํ•„์š” ์—†๋‹ค๊ณ  ๋Š๋ผ์‹ ๋‹ค๋ฉด theme์— ์žˆ๋Š” ํŒŒ์ผ์„ ๋งˆ์Œ๋Œ€๋กœ ๊ณ ์น˜์…”๋„ ๋ฉ๋‹ˆ๋‹ค. ๊ทธ๊ฒŒ ์•„๋‹ˆ๋ผ๋ฉด ์•„๋ž˜์— ์žˆ๋Š” ๋ฐฉ์‹์œผ๋กœ ์ปค์Šคํ„ฐ๋งˆ์ด์ง• ํ•˜์‹œ๊ธฐ๋ฅผ ์ถ”์ฒœ๋“œ๋ฆฝ๋‹ˆ๋‹ค.

์ถ”๊ฐ€๋กœ, custom css๋‚˜ custom js๋ฅผ ์•„๋ž˜์˜ ๋ฐฉ์‹๋Œ€๋กœ ์ด์šฉํ•˜์‹œ๋ฉด, ํŽ˜์ด์ง€ ๋กœ๋“œ ์†๋„๊ฐ€ ์•ฝ๊ฐ„ ๋” ๋Š๋ ค์ง€๋Š” ๊ฒƒ์„ ๋ฐœ๊ฒฌํ–ˆ์Šต๋‹ˆ๋‹ค.

custom css

  1. config ํด๋”์˜ params.toml ํŒŒ์ผ์— ์•„๋ž˜์™€๊ฐ™์ด ์ปค์Šคํ…€ ์Šคํƒ€์ผ ํŒŒ์ผ์„ ๋ช…์‹œํ•ด์ฃผ์„ธ์š”.
config/_default/params.toml

...
custom_css = ["css/custom.css", "scss/custom.scss", ...]
...
  1. ์œ„ ์„ค์ •ํŒŒ์ผ์— ๋ช…์‹œํ•œ ๋Œ€๋กœ ์‹ค์ œ ํŒŒ์ผ์„ ๋งŒ๋“ค์–ด ์ฃผ์„ธ์š”.
assets/scss/custom.scss
assets/css/custom.css
  1. ๋งŒ์•ฝ ํŠน์ • ์ƒ‰์ƒ์„ ๋ณ€๊ฒฝํ•˜๊ณ  ์‹ถ์œผ์‹œ๋ฉด, ์œ„์— ๋งŒ๋“  ์ปค์Šคํ…€ ์Šคํƒ€์ผ ํŒŒ์ผ์— ํ•ด๋‹น ๋ถ€๋ถ„์˜ ์Šคํƒ€์ผ์„ ์˜ค๋ฒ„๋ผ์ด๋“œ ํ•ด์ค˜์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ๋“ค์–ด backdrop ์ƒ‰์ƒ์„ ๋ณ€๊ฒฝํ•˜๊ณ ์ž ํ•˜์‹œ๋ฉด, ๋‹ค์Œ๊ณผ ๊ฐ™์ด ํ•ด์ฃผ์…”์•ผ ํ•ฉ๋‹ˆ๋‹ค.
assets/scss/custom.scss or assets/css/custom.css

...
#body {
  background-color: red !important;
}
...

custom js

  1. config ํด๋”์˜ params.toml ํŒŒ์ผ์— ์•„๋ž˜์™€๊ฐ™์ด ์ปค์Šคํ…€ ํŒŒ์ผ์„ ๋ช…์‹œํ•ด์ฃผ์„ธ์š”.
config/_default/params.toml

...
custom_js = ["js/custom.js", ...]
...
  1. ์‹ค์ œ ํŒŒ์ผ์„ ์ƒ์„ฑํ•ด ์ฃผ์‹œ๊ตฌ์š”.
assets/js/custom.js

custom syntax highlighting

  1. root/data ํด๋”์— skin.tomlํŒŒ์ผ์„ ๋งŒ๋“ค์–ด์ฃผ์„ธ์š”. theme_dark_chroma, theme_light_chroma, ... ํŒŒ๋ผ๋ฏธํ„ฐ์˜ ํ•ญ๋ชฉ์˜ ๊ฐ’์„ ์›ํ•˜์‹œ๋Š” ์ฝ”๋“œ ํ•˜์ด๋ผ์ดํŠธ ํ…Œ๋งˆ๊ฐ’์œผ๋กœ ๋ณ€๊ฒฝํ•ด์ฃผ์„ธ์š”. ์ด ๋งํฌ๋ฅผ ์ฐธ์กฐํ•ด์„œ ๊ฐ’์„ ๋ณ€๊ฒฝํ•˜์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค. ๋งŒ์•ฝ theme_[xxxx]_chroma ๊ฐ’์— - ๋‚˜ _ ๊ฐ™์€ ํŠน์ˆ˜๋ฌธ์ž๊ฐ€ ์žˆ๋‹ค๋ฉด ์ง€์›Œ์ฃผ์„ธ์š”.
    ์˜ˆ๋ฅผ๋“ค์–ด, solarized-dark256 ๊ฐ’์„ ์ž…๋ ฅํ•˜์‹œ๋ ค๋ฉด, ๋‹ค์Œ๊ณผ ๊ฐ™์ด ํ•ด์ฃผ์„ธ์š”.
root/data/skin.toml

theme_dark_chroma = "solarizeddark256"
  1. ํŠน์ • ์ƒ‰์ƒ์„ ๋ณ€๊ฒฝํ•˜๊ณ  ์‹ถ์œผ์‹œ๋‹ค๋ฉด, [custom-css]์—์„œ ๋งŒ๋“  ํŒŒ์ผ์— chroma class๋ฅผ ์˜ค๋ฒ„๋ผ์ด๋“œ ํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค. ์ž˜ ๋ชจ๋ฅด๊ฒ ์œผ๋ฉด ๋ฌธ์˜์ฃผ์„ธ์š”!
root/assets/scss/custom.scss

.chroma {
  background-color: #123456 !important;
}

custom header

ํ™ˆํŽ˜์ด์ง€์—์„œ ํ—ค๋” ๋ถ€๋ถ„์— 4๊ฐ€์ง€ ์ข…๋ฅ˜์˜ ํ—ค๋”๋ฅผ ์ž…ํž ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์Šฌ๋ผ์ด๋”, ์ด๋ฏธ์ง€, ํ…์ŠคํŠธ, ๊ทธ๋ฆฌ๊ณ  ์•„๋ฌด๊ฒƒ๋„ ์ž…๋ ฅ ์•ˆํ•˜์‹œ๋ฉด ๋นˆ๊ณต๊ฐ„์ด ๋ฉ๋‹ˆ๋‹ค.

  1. config/_default/params.toml ์„ค์ •ํŒŒ์ผ์— homeHeaderType ๊ฐ’์„ ๋ณ€๊ฒฝํ•ด์ฃผ์„ธ์š”. ๊ฐ€๋Šฅํ•œ ๊ฐ’์€ slide, img, text, typewriter์ž…๋‹ˆ๋‹ค.

  2. root/content/_index.md์— _index.md ํŒŒ์ผ์„ ๋งŒ๋“ค์–ด์ฃผ์„ธ์š” ๊ทธ๋ฆฌ๊ณ  ์•„๋ž˜ ๋‚ด์šฉ์„ ๋ณต๋ถ™ํ•ด์ฃผ์„ธ์š”.

  3. ๋ณ€์ˆ˜์˜ ์ด๋ฆ„๋งŒ์œผ๋กœ ์˜๋ฏธ๊ฐ€ ์ „๋‹ฌ๋œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๊ฐ’์„ ํ•˜๋‚˜์”ฉ ๋ณ€๊ฒฝํ•ด๋ณด๋ฉด์„œ ์›ํ•˜์‹œ๋Š” ๋Œ€๋กœ ์ปค์Šคํ„ฐ๋งˆ์ด์ง• ํ•ด์ฃผ์„ธ์š”.

---
header:
  - type: text
    height: 200
    paddingX: 50
    paddingY: 0
    align: center
    title:
      - HUGO
    subtitle:
      - The worldโ€™s fastest framework for building websites
    titleColor: # #123456, red
    titleShadow: false
    titleFontSize: 44
    subtitleColor: # #123456, red
    subtitleCursive: false
    subtitleFontSize: 16
    spaceBetweenTitleSubtitle: 20
  
  - type: img
    imageSrc: images/header/background.jpg # your image file path: root/static/images/header/background.jpg
    imageSize: cover # auto|length|cover|contain|initial|inherit
    imageRepeat: no-repeat # repeat|repeat-x|repeat-y|no-repeat|initial|inherit
    imagePosition: center # x% y%| xpos ypos| left top| center bottom| ...
    height: 235
    paddingX: 50
    paddingY: 0
    align: center
    title:
      -
    subtitle:
      -
    titleColor:
    titleShadow: false
    titleFontSize: 44
    subtitleColor:
    subtitleCursive: false
    subtitleFontSize: 16
    spaceBetweenTitleSubtitle: 20

  - type: slide
    height: 235
    options:
        startSlide: 0
        auto: 5000 # auto slide delay 5000ms(5sec)
        draggable: true # slide draggable
        autoRestart: true # restart after drag finished
        continuous: true # last to first
        disableScroll: true
        stopPropagation: true
    slide:
      - paddingX: 50
        paddingY: 0
        align: left
        imageSrc: images/header/background.jpg
        imageSize: cover
        imageRepeat: no-repeat
        imagePosition: center
        title:
          - header title1
        subtitle:
          - header subtitle1
        titleFontSize: 44
        subtitleFontSize: 16
        spaceBetweenTitleSubtitle: 20

      - paddingX: 50
        paddingY: 0
        align: center
        imageSrc: images/header/background.jpg
        imageSize: cover
        imageRepeat: no-repeat
        imagePosition: center
        title:
          - header title2
        subtitle:
          - header subtitle2
        titleFontSize: 44
        subtitleFontSize: 16
        spaceBetweenTitleSubtitle: 20

      - paddingX: 50
        paddingY: 0
        align: right
        imageSrc: images/header/background.jpg
        imageSize: cover
        imageRepeat: no-repeat
        imagePosition: center
        title:
          - header title3
        subtitle:
          - header subtitle3
        titleFontSize: 44
        subtitleFontSize: 16
        spaceBetweenTitleSubtitle: 20
---

custom grid

  1. ํด๋”์— grid.toml ํŒŒ์ผ์„ ๋งŒ๋“ค์–ด์ฃผ์„ธ์š”. (data/grid.toml)

  2. themes/zzo/data/grid.toml ํŒŒ์ผ์— ์žˆ๋Š” ๋‚ด์šฉ์„ ์œ„์—์„œ ๋งŒ๋“  ํŒŒ์ผ์— ๋ณต๋ถ™ํ•ด์ฃผ์„ธ์š”.

  3. ์›ํ•˜์‹œ๋Š” ๋Œ€๋กœ ๊ฐ’์„ ๋ณ€๊ฒฝํ•ด์ฃผ์„ธ์š”.

  4. ๋ณ€๊ฒฝ ํ›„, ํœด๊ณ ๋ฅผ ์žฌ์‹œ์ž‘ ํ•ด์ฃผ์„ธ์š”.

data/grid.toml example

grid_max_width = "960"
grid_max_unit = "px" #  "px", "\"%\""  Using% is limited to using full width.
grid_main_main_width = "5"
grid_main_main_unit = "fr" # "fr", "px"
grid_main_side_width = "2"
grid_main_side_unit = "fr" # "fr", "px"
grid_column_gap_width = "32"
grid_column_gap_unit = "px" # "px"
grid_navbar_height = "50px" # "px"
grid_row_gap = "0"

custom font

  1. ์ปค์Šคํ…€ css ํŒŒ์ผ์„ ๋งŒ๋“ค์–ด์ฃผ์„ธ์š”.
config/_default/params.toml

...
custom_css = ["css/font.css"]
...
  1. font.css ํŒŒ์ผ์—, font-face๋ฅผ ์•„๋ž˜์™€ ๊ฐ™์ด ๋งŒ๋“ค์–ด์ฃผ์„ธ์š”.
@font-face {
    font-family: 'Montserrat';
    src: url('../fonts/montserrat-black.woff2') format('woff2'),
         url('../fonts/montserrat-black.woff') format('woff');
    font-weight: 900;
    font-style: normal;
}

@font-face {
    font-family: 'Merriweather';
    src: url('../fonts/merriweather-regular.woff2') format('woff2'),
         url('../fonts/merriweather-regular.woff') format('woff');
    font-weight: 400;
    font-style: normal;
}
  1. root/static/fonts/myfont.xxx ํฐํŠธ ํŒŒ์ผ์„ static ํด๋”์— ๋„ฃ์–ด์ฃผ์„ธ์š”. (If your url in step2 is ('../fonts/myfont.xxx')).

  2. root/data/font.toml ์— font.toml ํŒŒ์ผ์„ ๋งŒ๋“ค์–ด์ฃผ์„ธ์š”. ๊ทธ๋ฆฌ๊ณ  ์•„๋ž˜์™€ ๊ฐ™์ด ๋‚ด์šฉ์„ ์ž…๋ ฅํ•ด์ฃผ์„ธ์š”.

title_font = "\"Montserrat\", sans-serif"
content_font = "\"Merriweather\", serif"
  1. ๋‹ค๋ฅธ ๋ฐฉ์‹

root/layouts/partials/head/custom-head.html ๊ฒฝ๋กœ์— ํŒŒ์ผ์„ ๋งŒ๋“œ์‹œ๊ณ  ํฐํŠธ๋ฅผ ๊ทธ๊ณณ์—์„œ ๋กœ๋“œํ•ด์ฃผ์„ธ์š”.

<link href="https://fonts.googleapis.com/css?family=Noto+Sans+KR:400,700&display=swap&subset=korean" rel="stylesheet">

custom copyright

footer์˜ ์ €์ž‘๊ถŒ ํ…์ŠคํŠธ์— ๋งํฌ๋ฅผ ๋„ฃ๊ณ  ์‹ถ์œผ๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ปค์Šคํ„ฐ๋งˆ์ด์ง• ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

  1. ์„ค์ • ํŒŒ์ผ์ธ config.toml ์—์„œ copyright ํŒŒ๋ผ๋ฏธํ„ฐ ๊ฐ’์„ ์„ค์ •ํ•ด์ฃผ์„ธ์š”.
...
copyright = This is my {} copyright text
...

{} ๋กœ ์“ฐ์—ฌ์ง„ ๋ถ€๋ถ„์ด ๋งํฌ๊ฐ€ ๋“ค์–ด๊ฐˆ ๋ถ€๋ถ„์ž…๋‹ˆ๋‹ค. 2. ์„ค์ • ํŒŒ์ผ์ธ params.toml ์—์„œ copyrightOptions ํŒŒ๋ผ๋ฏธํ„ฐ ๊ฐ’์„ ์„ค์ •ํ•ด์ฃผ์„ธ์š”.

...
[copyrightOptions]
  enableCopyrightLink = false
  copyrightLink = "https://..."
  copyrightLinkImage = "https://..."
  copyrightLinkText = "copyright link text"

custom favicon

root/static ํด๋”์— ํŒŒ๋น„์ฝ˜์„ ๋„ฃ์–ด์„œ ํ…Œ๋งˆ์˜ favicon์„ overriding ํ•˜์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค.

Author

ํฌ์ŠคํŠธ์˜ ์ €์ž์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ front matter๋ฅผ ํ†ตํ•ด์„œ ๋ช…์‹œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

---
title:
...
author: # author name
authorEmoji: ๐Ÿค– # emoji for subtitle, summary meta data
authorImage: "/images/whoami/avatar.jpg" # image path in the static folder
authorImageUrl: "" # your image url. We use `authorImageUrl` first. If not set, we use `authorImage`.
authorDesc: # author description
socialOptions: # override params.toml file socialOptions
  email: ""
  facebook: ""
  ...
---

Favicon

favicon.ico๋ผ๋Š” ํŒŒ์ผ์„ ๋ฃจํŠธ ๋””๋ ‰ํ† ๋ฆฌ์˜ static ํด๋”์— ๋„ฃ์–ด์ฃผ์„ธ์š”. ํŒŒ์ผ ์ด๋ฆ„๊ณผ ํ™•์žฅ์ž๊ฐ€ ์ •ํ™•ํžˆ favicon.ico์—ฌ์•ผ ํ•ฉ๋‹ˆ๋‹ค.

Using favicon-genarator

๋ชจ๋ฐ”์ผ ํ™˜๊ฒฝ์„ ๊ณ ๋ คํ•˜์‹ ๋‹ค๋ฉด favicon-generator ์‚ฌ์ดํŠธ์—์„œ ํŒŒ๋น„์ฝ˜์„ ๋งŒ๋“ค์–ด์ฃผ์„ธ์š”.

  • ์œ„์˜ ์‚ฌ์ดํŠธ์—์„œ ํŒŒ๋น„์ฝ˜์„ ๋งŒ๋“ค์–ด์ฃผ์„ธ์š”.
  • root/static/favicon๊ฒฝ๋กœ์— ํด๋”๋ฅผ ๋งŒ๋“ค์–ด์ฃผ์„ธ์š”.
  • ํ•ด๋‹น ํด๋”์— ํŒŒ๋น„์ฝ˜์„ ํ’€์–ด์ฃผ์„ธ์š”.
  • params.toml ํŒŒ์ผ์— useFaviconGenerator์˜ ๊ฐ’์„ true๋กœ ๋ฐ”๊ฟ”์ฃผ์„ธ์š”.

External Library

ํ˜„์žฌ ์ง€์›ํ•˜๋Š” ์™ธ๋ถ€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” Katex, MathJax, Mermaid, Flowchart.js, chart.js, viz-graph, wavedrom, js-sequence-diagram ์ž…๋‹ˆ๋‹ค. front-matter์— ๊ฐ’์„ ๋„ฃ์–ด์ฃผ์‹œ๋ฉด ํ•ด๋‹น ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ๋กœ๋“œ๋ฉ๋‹ˆ๋‹ค.

---
title: "{{ replace .Name "-" " " | title }}"
date: {{ .Date }}
...
libraries:
- katex 
- mathjax
- chart
- flowchartjs
- msc
- katex
- mermaid
- viz
- wavedrom
---

Shortcodes

alert

{{< alert theme="warning" >}} # warning, success, info, danger
**this** is a text
{{< /alert >}}

expand

{{< expand "Expand me" >}}Some Markdown Contents{{< /expand >}}

img

// path: static/images/whoami/avatar.jpg
{{< img src="/images/whoami/avatar.jpg" title="Image4" caption="Image description" alt="image alt" width="50px" height="50px">}}

notice

{{< notice success >}} # success, info, warning, error
success
{{< /notice >}}

color

{{< color "#0000ff" >}}*text*{{< /color >}}

box

{{< box >}}
Some contents
{{< /box >}}

boxmd

{{< boxmd >}}
Some markdown contents
{{< /boxmd >}}

code / codes => ์ฝ”๋“œ๋ฅผ ์—ฌ๋Ÿฌ ๋ฒ„์ „์œผ๋กœ ์ œ๊ณตํ•  ๋•Œ ์“ฐ์„ธ์š”. ๋“ค์—ฌ์“ฐ๊ธฐ ์ž˜๋ชปํ•˜๋ฉด ์ด์ƒํ•˜๊ฒŒ ๋‚˜์™€์š”.

{{< codes java javascript >}}
  {{< code >}}
  ```java
  System.out.println('Hello World!');
  ```
  {{< /code >}}
  {{< code >}}
  ```javascript
  console.log('Hello World!');
  ```
  {{< /code >}}
{{< /codes >}}

tab / tabs => ์—ฌ๋Ÿฌ ๋ฒ„์ „์˜ ๋ทฐ๋ฅผ ์ œ๊ณตํ•  ๋•Œ ์“ฐ์„ธ์š”

ํƒญ์„ ๋งŒ๋“ค ๋•Œ, ๊ฐ ํƒญ๋งˆ๋‹ค ์•ˆ์˜ ๋‚ด์šฉ์— ๋”ฐ๋ผ ๊ณ ์œ  ์•„์ด๋””๋ฅผ ๋ถ€์—ฌํ•˜๊ธฐ ๋•Œ๋ฌธ์—, Tab ์•ˆ์— ์žˆ๋Š” ๋‚ด์šฉ์ด ์„œ๋กœ ๋‹ฌ๋ผ์•ผํ•ฉ๋‹ˆ๋‹ค.

{{< tabs Windows MacOS Ubuntu >}}
  {{< tab >}}

  ### Windows section

  ```javascript
  console.log('Hello World!');
  ```

  {{< /tab >}}
  {{< tab >}}

  ### MacOS section

  Hello world!
  {{< /tab >}}
  {{< tab >}}

  ### Ubuntu section

  Great!
  {{< /tab >}}
{{< /tabs >}}
Related Projects