Merge branch 'master' into migrate-vwii-guide

This commit is contained in:
playerjmr 2024-03-03 22:55:12 -06:00 committed by GitHub
commit 7d7e8d2990
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
521 changed files with 4202 additions and 18013 deletions

View file

@ -1,13 +0,0 @@
# editorconfig.org
root = true
[*]
indent_style = space
indent_size = 2
end_of_line = lf
charset = utf-8
trim_trailing_whitespace = true
insert_final_newline = false
[*.md]
trim_trailing_whitespace = false

View file

@ -13,6 +13,7 @@ jobs:
- uses: actions/checkout@v3
with:
persist-credentials: false
submodules: recursive
- uses: ruby/setup-ruby@v1
with:

View file

@ -12,6 +12,7 @@ jobs:
- uses: actions/checkout@v3
with:
persist-credentials: false
submodules: recursive
- uses: ruby/setup-ruby@v1
with:

4
.gitmodules vendored Normal file
View file

@ -0,0 +1,4 @@
[submodule "_theme"]
path = _theme
url = https://github.com/hacks-guide/minimal-mistakes
branch = hacks-guide

View file

@ -1,6 +1,4 @@
source "https://rubygems.org"
gem "webrick", "~>1.7"
gem "kramdown-parser-gfm", "~>1.1"
gem "jekyll-sass-converter", "~>2.2"
gem "wdm", "~> 0.1.0" if Gem.win_platform?
gemspec
gem 'minimal-mistakes-hacks-guide', :path => '_theme'

View file

@ -10,10 +10,19 @@ This requires the following installed on your system:
- ruby(-dev)
- bundler
To test the website locally, simply run the following commands:
To test the website locally, clone the source code:
```sh
git clone https://github.com/hacks-guide/Guide_Wii --recurse-submodules
cd Guide_Wii
```
Then simply run the following commands:
```sh
bundle config set --local path vendor/bundle
bundle install
bundle exec jekyll serve --incremental
bundle exec jekyll serve
```
The website should now be running on http://127.0.0.1:4000/.

View file

@ -1,76 +0,0 @@
require "bundler/gem_tasks"
require "jekyll"
require "listen"
def listen_ignore_paths(base, options)
[
/_config\.ya?ml/,
/_site/,
/\.jekyll-metadata/
]
end
def listen_handler(base, options)
site = Jekyll::Site.new(options)
Jekyll::Command.process_site(site)
proc do |modified, added, removed|
t = Time.now
c = modified + added + removed
n = c.length
relative_paths = c.map{ |p| Pathname.new(p).relative_path_from(base).to_s }
print Jekyll.logger.message("Regenerating:", "#{relative_paths.join(", ")} changed... ")
begin
Jekyll::Command.process_site(site)
puts "regenerated in #{Time.now - t} seconds."
rescue => e
puts "error:"
Jekyll.logger.warn "Error:", e.message
Jekyll.logger.warn "Error:", "Run jekyll build --trace for more information."
end
end
end
task :preview do
base = Pathname.new('.').expand_path
options = {
"source" => base.join('test').to_s,
"destination" => base.join('test/_site').to_s,
"force_polling" => false,
"serving" => true,
"theme" => "minimal-mistakes-jekyll"
}
options = Jekyll.configuration(options)
ENV["LISTEN_GEM_DEBUGGING"] = "1"
listener = Listen.to(
base.join("_data"),
base.join("_includes"),
base.join("_layouts"),
base.join("_sass"),
base.join("assets"),
options["source"],
:ignore => listen_ignore_paths(base, options),
:force_polling => options['force_polling'],
&(listen_handler(base, options))
)
begin
listener.start
Jekyll.logger.info "Auto-regeneration:", "enabled for '#{options["source"]}'"
unless options['serving']
trap("INT") do
listener.stop
puts " Halting auto-regeneration."
exit 0
end
loop { sleep 1000 }
end
rescue ThreadError
# You pressed Ctrl-C, oh my!
end
Jekyll::Commands::Serve.process(options)
end

View file

@ -10,145 +10,32 @@
# Review documentation to determine if you should use `theme` or `remote_theme`
# https://mmistakes.github.io/minimal-mistakes/docs/quick-start-guide/#installing-the-theme
# theme : "minimal-mistakes-jekyll"
# remote_theme : "mmistakes/minimal-mistakes"
minimal_mistakes_skin : "dark" # "default" # "air", "aqua", "contrast", "dark", "dirt", "neon", "mint", "plum", "sunrise"
theme : "minimal-mistakes-hacks-guide"
# Site Settings
locale : "en-US"
title : "Wii Hacks Guide"
title_separator : "-"
subtitle : # site tagline that appears below site title in masthead
name : "Nintendo Homebrew"
description : "The complete guide to modding your Wii (and Wii mini)"
url : "https://wii.hacks.guide" # the base hostname & protocol for your site e.g. "https://mmistakes.github.io"
enforce_ssl : "wii.hacks.guide"
baseurl : # the subpath of your site, e.g. "/blog"
repository : "hacks-guide/Guide_Wii" # GitHub username/repo-name e.g. "mmistakes/minimal-mistakes"
teaser : # path of fallback teaser image, e.g. "/assets/images/500x300.png"
logo : # path of logo image to display in the masthead, e.g. "/assets/images/88x88.png"
masthead_title : # overrides the website title displayed in the masthead, use " " for no title
# breadcrumbs : false # true, false (default)
words_per_minute : 200
comments:
provider : # false (default), "disqus", "discourse", "facebook", "staticman", "staticman_v2", "utterances", "giscus", "custom"
disqus:
shortname : # https://help.disqus.com/customer/portal/articles/466208-what-s-a-shortname-
discourse:
server : # https://meta.discourse.org/t/embedding-discourse-comments-via-javascript/31963 , e.g.: meta.discourse.org
facebook:
# https://developers.facebook.com/docs/plugins/comments
appid :
num_posts : # 5 (default)
colorscheme : # "light" (default), "dark"
utterances:
theme : # "github-light" (default), "github-dark"
issue_term : # "pathname" (default)
giscus:
repo_id : # Shown during giscus setup at https://giscus.app
category_name : # Full text name of the category
category_id : # Shown during giscus setup at https://giscus.app
discussion_term : # "pathname" (default), "url", "title", "og:title"
reactions_enabled : # '1' for enabled (default), '0' for disabled
theme : # "light" (default), "dark", "dark_dimmed", "transparent_dark", "preferred_color_scheme"
staticman:
branch : # "master"
endpoint : # "https://{your Staticman v3 API}/v3/entry/github/"
reCaptcha:
siteKey :
secret :
atom_feed:
path : # blank (default) uses feed.xml
hide : # true, false (default)
search : # true, false (default)
search_full_content : # true, false (default)
search_provider : # lunr (default), algolia, google
algolia:
application_id : # YOUR_APPLICATION_ID
index_name : # YOUR_INDEX_NAME
search_only_api_key : # YOUR_SEARCH_ONLY_API_KEY
powered_by : # true (default), false
google:
search_engine_id : # YOUR_SEARCH_ENGINE_ID
instant_search : # false (default), true
# SEO Related
google_site_verification :
bing_site_verification :
yandex_site_verification :
naver_site_verification :
# Social Sharing
twitter:
username :
facebook:
username :
app_id :
publisher :
og_image : # Open Graph/Twitter default site image
# For specifying social profiles
# - https://developers.google.com/structured-data/customize/social-profiles
social:
type : # Person or Organization (defaults to Person)
name : # If the user or organization name differs from the site's name
links: # An array of links to social media profiles
# Analytics
analytics:
provider : # false (default), "google", "google-universal", "google-gtag", "custom"
google:
tracking_id :
anonymize_ip : # true, false (default)
# Site Author
author:
name : "Nintendo Homebrew"
avatar : # path of avatar image, e.g. "/assets/images/site-config/bio-photo.jpg"
bio : "Nintendo Homebrew Community"
location : "Nullsec"
email :
links:
# - label: "Email"
# icon: "fas fa-fw fa-envelope-square"
# url: "mailto:your.name@email.com"
# - label: "Website"
# icon: "fas fa-fw fa-link"
# url: "https://your-website.com"
# - label: "Twitter"
# icon: "fab fa-fw fa-twitter-square"
# url: "https://twitter.com/"
# - label: "Facebook"
# icon: "fab fa-fw fa-facebook-square"
# url: "https://facebook.com/"
- label: "GitHub"
icon: "fab fa-fw fa-github"
url: "https://github.com/hacks-guide/Guide_Wii"
# - label: "Instagram"
# icon: "fab fa-fw fa-instagram"
# url: "https://instagram.com/"
# Site Footer
footer:
links:
# - label: "Twitter"
# icon: "fab fa-fw fa-twitter-square"
# url:
# - label: "Facebook"
# icon: "fab fa-fw fa-facebook-square"
# url:
- label: "GitHub"
icon: "fab fa-fw fa-github"
url: "https://github.com/hacks-guide/Guide_Wii"
# - label: "GitLab"
# icon: "fab fa-fw fa-gitlab"
# url:
# - label: "Bitbucket"
# icon: "fab fa-fw fa-bitbucket"
# url:
# - label: "Instagram"
# icon: "fab fa-fw fa-instagram"
# url:
# Reading Files
include:
@ -216,100 +103,6 @@ exclude: [
_pages/zh_TW
]
keep_files:
- .git
- .svn
encoding: "utf-8"
markdown_ext: "markdown,mkdown,mkdn,mkd,md,txt"
# Conversion
markdown: kramdown
highlighter: rouge
lsi: false
excerpt_separator: "\n\n"
incremental: false
# Markdown Processing
kramdown:
input: GFM
hard_wrap: false
auto_ids: true
footnote_nr: 1
entity_output: as_char
toc_levels: 1..6
smart_quotes: lsquo,rsquo,ldquo,rdquo
enable_coderay: false
# Sass/SCSS
sass:
sass_dir: _sass
style: compressed # https://sass-lang.com/documentation/file.SASS_REFERENCE.html#output_style
# Outputting
# permalink: /:categories/:title/
# paginate: 5 # amount of posts to show
# paginate_path: /page:num/
# timezone: # https://en.wikipedia.org/wiki/List_of_tz_database_time_zones
# Plugins (previously gems:)
plugins:
- jekyll-paginate
- jekyll-sitemap
- jekyll-gist
- jekyll-feed
- jekyll-include-cache
# mimic GitHub Pages with --safe
whitelist:
- jekyll-paginate
- jekyll-sitemap
- jekyll-gist
- jekyll-feed
- jekyll-include-cache
# Archives
# Type
# - GitHub Pages compatible archive pages built with Liquid ~> type: liquid (default)
# - Jekyll Archives plugin archive pages ~> type: jekyll-archives
# Path (examples)
# - Archive page should exist at path when using Liquid method or you can
# expect broken links (especially with breadcrumbs enabled)
# - <base_path>/tags/my-awesome-tag/index.html ~> path: /tags/
# - <base_path>/categories/my-awesome-category/index.html ~> path: /categories/
# - <base_path>/my-awesome-category/index.html ~> path: /
category_archive:
type: liquid
path: /categories/
tag_archive:
type: liquid
path: /tags/
# https://github.com/jekyll/jekyll-archives
# jekyll-archives:
# enabled:
# - categories
# - tags
# layouts:
# category: archive-taxonomy
# tag: archive-taxonomy
# permalinks:
# category: /categories/:name/
# tag: /tags/:name/
# HTML Compression
# - https://jch.penibelst.de/
compress_html:
clippings: all
ignore:
envs: development
# Defaults
defaults:
# _pages

View file

@ -1,12 +0,0 @@
# main links
main:
- title: "Quick-Start Guide"
url: https://mmistakes.github.io/minimal-mistakes/docs/quick-start-guide/
# - title: "About"
# url: https://mmistakes.github.io/minimal-mistakes/about/
# - title: "Sample Posts"
# url: /year-archive/
# - title: "Sample Collections"
# url: /collection-archive/
# - title: "Sitemap"
# url: /sitemap/

View file

@ -10,14 +10,14 @@ main:
title: 网站导航
url: site-navigation
-
title: FAQ
title: 常见问题指南
url: faq
top:
-
title: 本网站使用 cookie 来在侧边栏显示当前指南进度,并提升网站的其它功能。
bottom:
-
title: For support in English, ask for help at <a href="https://discord.gg/MWxPgEp">Nintendo Homebrew on Discord</a>.
title: 若要寻求支持,请在</a> <a href="https://discord.gg/MWxPgEp">Nintendo Homebrew Discord 频道上使用英语寻求帮助。
footer:
-
title: 来源
@ -29,7 +29,7 @@ footer:
title: 捐赠
url: privacy-policy
-
title: Donations
title: 捐赠
url: donations
sidebar_title:
-
@ -57,16 +57,16 @@ sidebar_pages:
title: Wilbrand
url: wilbrand
-
title: Multiple Options
title: 多选项
url: multiple-options
-
title: Homebrew Channel and BootMii Installation
title: 安装Homebrew Channel和BootMii
url: hbc
-
title: Homebrew Channel - for Wii mini only
title: Homebrew Channel - 仅适用于Wii mini
url: hbc-mini
-
title: BootMii Backup
title: BootMii 备份
url: bootmii
-
title: Priiloader
@ -75,7 +75,7 @@ sidebar_pages:
title: Open Shop Channel
url: osc
-
title: d2xl cIOS for Wii mini (experimental)
title: 供Wii mini安装的d2xl cIOS (实验性功能)
url: cios-mini
-
title: Wii mini NAND Dumper

View file

@ -1,502 +0,0 @@
# User interface text and labels
# English (default)
# -----------------
en: &DEFAULT_EN
page : "Page"
pagination_previous : "Previous"
pagination_next : "Next"
breadcrumb_home_label : "Home"
breadcrumb_separator : "/"
menu_label : "Toggle Menu"
toc_label : "On This Page"
ext_link_label : "Direct Link"
less_than : "less than"
minute_read : "minute read"
share_on_label : "Share on"
meta_label :
tags_label : "Tags:"
categories_label : "Categories:"
date_label : "Updated:"
comments_label : "Leave a Comment"
comments_title : "Comments"
more_label : "Learn More"
related_label : "You May Also Enjoy"
follow_label : "Follow:"
feed_label : "Feed"
powered_by : "Powered by"
website_label : "Website"
email_label : "Email"
recent_posts : "Recent Posts"
undefined_wpm : "Undefined parameter words_per_minute at _config.yml"
comment_form_info : "Your email address will not be published. Required fields are marked"
comment_form_comment_label : "Comment"
comment_form_md_info : "Markdown is supported."
comment_form_name_label : "Name"
comment_form_email_label : "Email address"
comment_form_website_label : "Website (optional)"
comment_btn_submit : "Submit Comment"
comment_btn_submitted : "Submitted"
comment_success_msg : "Thanks for your comment! It will show on the site once it has been approved."
comment_error_msg : "Sorry, there was an error with your submission. Please make sure all required fields have been completed and try again."
loading_label : "Loading..."
en-US:
<<: *DEFAULT_EN
en-CA:
<<: *DEFAULT_EN
en-GB:
<<: *DEFAULT_EN
en-AU:
<<: *DEFAULT_EN
# Spanish
# --------------
es: &DEFAULT_ES
page : "Página"
pagination_previous : "Anterior"
pagination_next : "Siguiente"
breadcrumb_home_label : "Inicio"
breadcrumb_separator : "/"
menu_label :
toc_label : "Contenidos"
ext_link_label : "Enlace"
less_than : "menos de"
minute_read : "minuto de lectura"
share_on_label : "Compartir"
meta_label :
tags_label : "Etiquetas:"
categories_label : "Categorías:"
date_label : "Actualizado:"
comments_label : "Comentar"
comments_title :
more_label : "Ver más"
related_label : "Podrías ver también"
follow_label : "Seguir:"
feed_label : "Feed"
powered_by : "Powered by"
website_label : "Sitio web"
email_label : "Email"
recent_posts : "Entradas recientes"
undefined_wpm : "Parametro words_per_minute (Palabras por minuto) no definido en _config.yml"
comment_form_info :
comment_form_comment_label :
comment_form_md_info :
comment_form_name_label :
comment_form_email_label :
comment_form_website_label :
comment_btn_submit :
comment_btn_submitted :
comment_success_msg :
comment_error_msg :
loading_label :
es-ES:
<<: *DEFAULT_ES
es-MX:
<<: *DEFAULT_ES
es-CO:
<<: *DEFAULT_ES
# French
# -----------------
fr: &DEFAULT_FR
page : "Page"
pagination_previous : "Précédent"
pagination_next : "Suivant"
breadcrumb_home_label : "Accueil"
breadcrumb_separator : "/"
menu_label :
toc_label : "Sur cette page"
ext_link_label : "Lien direct"
less_than : "plus petit que"
minute_read : "minute de lecture"
share_on_label : "Partager sur"
meta_label :
tags_label : "Tags :"
categories_label : "Catégories :"
date_label : "Mis à jour :"
comments_label : "Laisser un commentaire"
comments_title :
more_label : "Lire plus"
related_label : "Vous pourriez aimer"
follow_label : "Suivez moi"
feed_label : "Flux"
powered_by : "Propulsé par"
website_label : "Site"
email_label : "Email"
recent_posts : "Posts récents"
undefined_wpm : "Le paramètre words_per_minute n'est pas défini dans _config.yml"
comments_title : "Commentaires"
comment_form_info : "Votre adresse email ne sera pas visible. Les champs obligatoires sont marqués"
comment_form_comment_label : "Commentaire"
comment_form_md_info : "Markdown est supporté."
comment_form_name_label : "Nom"
comment_form_email_label : "Adresse mail"
comment_form_website_label : "Site web (optionnel)"
comment_btn_submit : "Envoyer"
comment_btn_submitted : "Envoyé"
comment_success_msg : "Merci pour votre comentaire, il sera visible sur le site une fois approuvé."
comment_error_msg : "Désolé, une erreur est survenue lors de la soumission. Vérifiez que les champs obligatoires ont été remplis et réessayez."
loading_label : "Chargement..."
fr-FR:
<<: *DEFAULT_FR
fr-BE:
<<: *DEFAULT_FR
fr-CH:
<<: *DEFAULT_FR
# Turkish
# -----------------
tr: &DEFAULT_TR
page : "Sayfa"
pagination_previous : "Önceki"
pagination_next : "Sonraki"
breadcrumb_home_label : "Ana Sayfa"
breadcrumb_separator : "/"
menu_label :
toc_label : "İçindekiler"
ext_link_label : "Doğrudan Bağlantı"
less_than : "Şu süreden az: "
minute_read : "dakika tahmini okuma süresi"
share_on_label : "Paylaş"
meta_label :
tags_label : "Etiketler:"
categories_label : "Kategoriler:"
date_label : "Güncelleme tarihi:"
comments_label : "Yorum yapın"
comments_title : "Yorumlar"
more_label : "Daha fazlasını öğrenin"
related_label : "Bunlar ilginizi çekebilir:"
follow_label : "Takip et:"
feed_label : "RSS"
powered_by : "Emeği geçenler: "
website_label : "Web sayfası"
email_label : "E-posta"
recent_posts : "Son yazılar"
undefined_wpm : "_config.yml dosyasında tanımlanmamış words_per_minute parametresi"
comment_form_info : "Email adresiniz gösterilmeyecektir. Zorunlu alanlar işaretlenmiştir"
comment_form_comment_label : "Yorumunuz"
comment_form_md_info : "Markdown desteklenmektedir."
comment_form_name_label : "Adınız"
comment_form_email_label : "Email adresiniz"
comment_form_website_label : "Websiteniz (opsiyonel)"
comment_btn_submit : "Yorum Yap"
comment_btn_submitted : "Gönderildi"
comment_success_msg : "Yorumunuz için teşekkürler! Yorumunuz onaylandıktan sonra sitede gösterilecektir."
comment_error_msg : "Maalesef bir hata oluştu. Lütfen zorunlu olan tüm alanları doldurduğunuzdan emin olun ve sonrasında tekrar deneyin."
loading_label : "Yükleniyor..."
tr-TR:
<<: *DEFAULT_TR
# Portuguese
# -----------------
pt: &DEFAULT_PT
page : "Página"
pagination_previous : "Anterior"
pagination_next : "Seguinte"
breadcrumb_home_label : "Início"
breadcrumb_separator : "/"
menu_label :
toc_label : "Nesta Página"
ext_link_label : "Link Direto"
less_than : "menos de"
minute_read : "minutos de leitura"
share_on_label : "Partilhar no"
meta_label :
tags_label : "Etiquetas:"
categories_label : "Categorias:"
date_label : "Atualizado:"
comments_label : "Deixe um Comentário"
comments_title : "Comentários"
more_label : "Saber mais"
related_label : "Também pode gostar de"
follow_label : "Siga:"
feed_label : "Feed"
powered_by : "Feito com"
website_label : "Site"
email_label : "Email"
recent_posts : "Artigos Recentes"
undefined_wpm : "Parâmetro words_per_minute não definido em _config.yml"
comment_form_info : "O seu endereço email não será publicado. Os campos obrigatórios estão assinalados"
comment_form_comment_label : "Comentário"
comment_form_md_info : "Markdown é suportado."
comment_form_name_label : "Nome"
comment_form_email_label : "Endereço Email"
comment_form_website_label : "Site (opcional)"
comment_btn_submit : "Sumbeter Comentário"
comment_btn_submitted : "Submetido"
comment_success_msg : "Obrigado pelo seu comentário! Será visível no site logo que aprovado."
comment_error_msg : "Lamento, ocorreu um erro na sua submissão. Por favor verifique se todos os campos obrigatórios estão corretamente preenchidos e tente novamente."
loading_label : "A carregar..."
# Brazilian Portuguese
pt-BR:
page : "Página"
pagination_previous : "Anterior"
pagination_next : "Próxima"
breadcrumb_home_label : "Home"
breadcrumb_separator : "/"
menu_label :
toc_label : "Nesta página"
ext_link_label : "Link direto"
less_than : "meno que"
minute_read : "minutos de leitura"
share_on_label : "Compartilhe em"
meta_label :
tags_label : "Tags:"
categories_label : "Categorias:"
date_label : "Atualizado em:"
comments_label : "Deixe um comentário"
comments_title :
more_label : "Aprenda Mais"
related_label : "Você Talvez Goste Também"
follow_label : "Acompanhe em"
feed_label : "Feed"
powered_by : "Feito com"
website_label : "Site"
email_label : "Email"
recent_posts : "Postagens recentes"
undefined_wpm : "Parâmetro indefinido em word_per_minute no _config.yml"
comment_form_info :
comment_form_comment_label :
comment_form_md_info :
comment_form_name_label :
comment_form_email_label :
comment_form_website_label :
comment_btn_submit :
comment_btn_submitted :
comment_success_msg :
comment_error_msg :
loading_label :
pt-BR:
<<: *DEFAULT_PT
# Italian
# -----------------
it: &DEFAULT_IT
page : "Pagina"
pagination_previous : "Precedente"
pagination_next : "Prossima"
breadcrumb_home_label : "Home"
breadcrumb_separator : "/"
menu_label :
toc_label : "Indice della pagina"
ext_link_label : "Link"
less_than : "meno di"
minute_read : "minuto/i di lettura"
share_on_label : "Condividi"
meta_label :
tags_label : "Tags:"
categories_label : "Categorie:"
date_label : "Aggiornato:"
comments_label : "Scrivi un commento"
comments_title :
more_label : "Scopri di più"
related_label : "Potrebbe Piacerti Anche"
follow_label : "Segui:"
feed_label : "Feed"
powered_by : "Powered by"
website_label : "Website"
email_label : "Email"
recent_posts : "Articoli Recenti"
undefined_wpm : "Parametro words_per_minute non definito in _config.yml"
comment_form_info : "Il tuo indirizzo email non sarà pubblicato. Sono segnati i campi obbligatori"
comment_form_comment_label : "Commenta"
comment_form_md_info : "Il linguaggio Markdown è supportato"
comment_form_name_label : "Nome"
comment_form_email_label : "Indirizzo email"
comment_form_website_label : "Sito Web (opzionale)"
comment_btn_submit : "Invia commento"
comment_btn_submitted : "Inviato"
comment_success_msg : "Grazie per il tuo commento! Verrà visualizzato nel sito una volta che sarà approvato."
comment_error_msg : "C'è stato un errore con il tuo invio. Assicurati che tutti i campi richiesti siano stati completati e riprova."
loading_label : "Caricamento..."
it-IT:
<<: *DEFAULT_IT
# Chinese (zh-CN Chinese - China)
# -----------------
zh: &DEFAULT_ZH
page : "页面"
pagination_previous : "向前"
pagination_next : "向后"
breadcrumb_home_label : "首页"
breadcrumb_separator : "/"
menu_label :
toc_label : "在本页上"
ext_link_label : "直接链接"
less_than : "少于"
minute_read : "分钟 阅读"
share_on_label : "分享"
meta_label :
tags_label : "标签:"
categories_label : "分类:"
date_label : "最新的:"
comments_label : "留下评论"
comments_title : "评论"
more_label : "了解更多"
related_label : "猜您还喜欢"
follow_label : "关注:"
feed_label : "Feed"
powered_by : "Powered by"
website_label : "网站"
email_label : "Email"
recent_posts : "最新文章"
undefined_wpm : "Undefined parameter words_per_minute at _config.yml"
comment_form_info : "Your email address will not be published. Required fields are marked"
comment_form_comment_label : "Comment"
comment_form_md_info : "Markdown is supported."
comment_form_name_label : "Name"
comment_form_email_label : "Email address"
comment_form_website_label : "Website (optional)"
comment_btn_submit : "Submit Comment"
comment_btn_submitted : "Submitted"
comment_success_msg : "Thanks for your comment! It will show on the site once it has been approved."
comment_error_msg : "Sorry, there was an error with your submission. Please make sure all required fields have been completed and try again."
loading_label : "Loading..."
zh-CN:
<<: *DEFAULT_ZH
zh-HK:
<<: *DEFAULT_ZH
zh-SG:
<<: *DEFAULT_ZH
zh-TW:
<<: *DEFAULT_ZH
# German / Deutsch
# -----------------
de: &DEFAULT_DE
page : "Seite"
pagination_previous : "Vorherige"
pagination_next : "Nächste"
breadcrumb_home_label : "Home"
breadcrumb_separator : "/"
menu_label :
toc_label : "Auf dieser Seite"
ext_link_label : "Direkter Link"
less_than : "weniger als"
minute_read : "Minuten zum lesen"
share_on_label : "Teilen auf"
meta_label :
tags_label : "Tags:"
categories_label : "Kategorien:"
date_label : "Aktualisiert:"
comments_label : "Hinterlassen sie einen Kommentar"
comments_title : "Kommentare"
more_label : "Mehr anzeigen"
related_label : "Ihnen gefällt vielleicht auch"
follow_label : "Folgen:"
feed_label : "Feed"
powered_by : "Powered by"
website_label : "Webseite"
email_label : "E-Mail"
recent_posts : "Aktuelle Beiträge"
undefined_wpm : "Undefinierter Parameter words_per_minute in _config.yml"
comment_form_info : "Ihre E-Mail Adresse wird nicht veröffentlicht. Benötigte Felder sind markiert"
comment_form_comment_label : "Kommentar"
comment_form_md_info : "Markdown wird unterstützt."
comment_form_name_label : "Name"
comment_form_email_label : "E-Mail Addresse"
comment_form_website_label : "Webseite (optional)"
comment_btn_submit : "Kommentar absenden"
comment_btn_submitted : "Versendet"
comment_success_msg : "Danke für ihren Kommentar! Er wird auf der Seite angezeigt, nachdem er geprüft wurde."
comment_error_msg : "Entschuldigung, es gab einen Fehler. Bitte füllen sie alle benötigten Felder aus und versuchen sie es erneut."
loading_label : "Lade..."
de-DE:
<<: *DEFAULT_DE
de-AT:
<<: *DEFAULT_DE
de-CH:
<<: *DEFAULT_DE
de-BE:
<<: *DEFAULT_DE
de-LI:
<<: *DEFAULT_DE
de-LU:
<<: *DEFAULT_DE
# Dutch / Nederlands
# -----------------
nl: &DEFAULT_NL
page : "Pagina"
pagination_previous : "Vorige"
pagination_next : "Volgende"
breadcrumb_home_label : "Home"
breadcrumb_separator : "/"
menu_label : "Toggle Menu"
toc_label : "Op Deze Pagina"
ext_link_label : "Directe Link"
less_than : "minder dan"
minute_read : "minuten lezen"
share_on_label : "Deel op"
meta_label :
tags_label : "Tags:"
categories_label : "Categorieën:"
date_label : "Geüpdate:"
comments_label : "Laat een reactie achter:"
comments_title : "Reacties"
more_label : "Kom Meer Te Weten"
related_label : "Ook Interessant Voor Jou"
follow_label : "Volg:"
feed_label : "Feed"
powered_by : "Aangedreven door"
website_label : "Website"
email_label : "E-mail"
recent_posts : "Recente Berichten"
undefined_wpm : "Parameter words_per_minute in _config.yml niet gedefinieerd"
comment_form_info : "Je e-mailadres zal niet openbaar gemaakt worden. Vereiste velden zijn gemarkeerd"
comment_form_comment_label : "Commentaar"
comment_form_md_info : "Markdown wordt ondersteund."
comment_form_name_label : "Naam"
comment_form_email_label : "E-mailadres"
comment_form_website_label : "Website (optioneel)"
comment_btn_submit : "Verstuur Commentaar"
comment_btn_submitted : "Verstuurd"
comment_success_msg : "Bedankt voor je commentaar! Nadat het goedgekeurd is, zal het op deze site weergeven worden."
comment_error_msg : "Helaas, er is een probleem opgetreden met het versturen van je commentaar. Zorg dat alle vereiste velden ingevuld zijn en probeer opnieuw."
loading_label : "Laden..."
# Polish / Polski
# -----------------
pl: &DEFAULT_PL
page : "Strona"
pagination_previous : "Poprzedni"
pagination_next : "Następny"
breadcrumb_home_label : "Home"
breadcrumb_separator : "/"
menu_label : "Otwórz menu"
toc_label : "Na tej stronie"
ext_link_label : "Link bezpośredni"
less_than : "mniej niż"
minute_read : "minuta czytania"
share_on_label : "Udostępnij na"
meta_label :
tags_label : "Tagi:"
categories_label : "Kategorie:"
date_label : "Zaktualizowanie:"
comments_label : "Zostaw komentarz"
comments_title : "Komentarze"
more_label : "Dowiedz się więcej"
related_label : "Również może Ci się spodobać"
follow_label : "Obserwuj:"
feed_label : "Kanał"
powered_by : "Powered by"
website_label : "Strona"
email_label : "Email"
recent_posts : "Ostatnie posty"
undefined_wpm : "Undefined parameter words_per_minute at _config.yml"
comment_form_info : "Twój adres email nie zostanie upubliczniony. Wymagane pola zostały podkreślone."
comment_form_comment_label : "Komentarz"
comment_form_md_info : "Markdown is supported."
comment_form_name_label : "Imię"
comment_form_email_label : "Adres email"
comment_form_website_label : "Strona (opcjonalne)"
comment_btn_submit : "Zatwierdź komentarz"
comment_btn_submitted : "Zatwierdzone"
comment_success_msg : "Dziękujemy za komentarz! Pojawi się on na stronie gdy zostanie on zatweirdzony."
comment_error_msg : "Przepraszamy, wystąpił błąd z twoim zgłoszeniem. Upewnij się żę wszystki pola zostały zapełnione i spróbuj ponownie."
loading_label : "Ładowanie..."
pl_PL:
<<: *DEFAULT_PL
# Another locale
# --------------

View file

@ -1,3 +0,0 @@
<!-- start custom analytics snippet -->
<!-- end custom analytics snippet -->

View file

@ -1,9 +0,0 @@
<!-- Global site tag (gtag.js) - Google Analytics -->
<script async src="https://www.googletagmanager.com/gtag/js?id={{ site.analytics.google.tracking_id }}"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', '{{ site.analytics.google.tracking_id }}', { 'anonymize_ip': {{ site.analytics.google.anonymize_ip | default: false }}});
</script>

View file

@ -1,7 +0,0 @@
<script>
window.ga=function(){ga.q.push(arguments)};ga.q=[];ga.l=+new Date;
ga('create','{{ site.analytics.google.tracking_id }}','auto');
ga('set', 'anonymizeIp', {{ site.analytics.google.anonymize_ip | default: false }});
ga('send','pageview')
</script>
<script src="https://www.google-analytics.com/analytics.js" async></script>

View file

@ -1,14 +0,0 @@
<script>
var _gaq = _gaq || [];
_gaq.push(['_setAccount', '{{ site.analytics.google.tracking_id }}']);
{% if site.analytics.google.anonymize_ip == true %}
_gaq.push(['_gat._anonymizeIp']);
{% endif %}
_gaq.push(['_trackPageview']);
(function() {
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
})();
</script>

View file

@ -1,14 +0,0 @@
{% if jekyll.environment == 'production' and site.analytics.provider and page.analytics != false %}
{% case site.analytics.provider %}
{% when "google" %}
{% include /analytics-providers/google.html %}
{% when "google-universal" %}
{% include /analytics-providers/google-universal.html %}
{% when "google-gtag" %}
{% include /analytics-providers/google-gtag.html %}
{% when "custom" %}
{% include /analytics-providers/custom.html %}
{% endcase %}
{% endif %}

View file

@ -1,30 +0,0 @@
{% if post.header.teaser %}
{% capture teaser %}{{ post.header.teaser }}{% endcapture %}
{% else %}
{% assign teaser = site.teaser %}
{% endif %}
{% if post.id %}
{% assign title = post.title | markdownify | remove: "<p>" | remove: "</p>" %}
{% else %}
{% assign title = post.title %}
{% endif %}
<div class="{{ include.type | default: 'list' }}__item">
<article class="archive__item" itemscope itemtype="https://schema.org/CreativeWork">
{% if include.type == "grid" and teaser %}
<div class="archive__item-teaser">
<img src="{{ teaser | relative_url }}" alt="">
</div>
{% endif %}
<h2 class="archive__item-title no_toc" itemprop="headline">
{% if post.link %}
<a href="{{ post.link }}">{{ title }}</a> <a href="{{ post.url | relative_url }}" rel="permalink"><i class="fas fa-link" aria-hidden="true" title="permalink"></i><span class="sr-only">Permalink</span></a>
{% else %}
<a href="{{ post.url | relative_url }}" rel="permalink">{{ title }}</a>
{% endif %}
</h2>
{% include page__meta.html type=include.type %}
{% if post.excerpt %}<p class="archive__item-excerpt" itemprop="description">{{ post.excerpt | markdownify | strip_html | truncate: 160 }}</p>{% endif %}
</article>
</div>

View file

@ -1,7 +0,0 @@
<!--
<li>
<a href="http://link-to-whatever-social-network.com/user/" itemprop="sameAs" rel="nofollow noopener noreferrer">
<i class="fas fa-fw" aria-hidden="true"></i> Custom Social Profile Link
</a>
</li>
-->

View file

@ -1,252 +0,0 @@
{% assign author = page.author | default: page.authors[0] | default: site.author %}
{% assign author = site.data.authors[author] | default: author %}
<div itemscope itemtype="https://schema.org/Person">
{% if author.avatar %}
<div class="author__avatar">
{% if author.home %}
<a href="{{ author.home | relative_url }}">
<img src="{{ author.avatar | relative_url }}" alt="{{ author.name }}" itemprop="image">
</a>
{% else %}
<img src="{{ author.avatar | relative_url }}" alt="{{ author.name }}" itemprop="image">
{% endif %}
</div>
{% endif %}
<div class="author__content">
{% if author.home %}
<a href="{{ author.home | relative_url }}"><h3 class="author__name" itemprop="name">{{ author.name }}</h3></a>
{% else %}
<h3 class="author__name" itemprop="name">{{ author.name }}</h3>
{% endif %}
{% if author.bio %}
<div class="author__bio" itemprop="description">
{{ author.bio | markdownify }}
</div>
{% endif %}
</div>
<div class="author__urls-wrapper">
<button class="btn btn--inverse">{{ site.data.ui-text[site.locale].follow_label | remove: ":" | default: "Follow" }}</button>
<ul class="author__urls social-icons">
{% if author.location %}
<li itemprop="homeLocation" itemscope itemtype="https://schema.org/Place">
<i class="fas fa-fw fa-map-marker-alt" aria-hidden="true"></i> <span itemprop="name">{{ author.location }}</span>
</li>
{% endif %}
{% if author.links %}
{% for link in author.links %}
{% if link.label and link.url %}
<li><a href="{{ link.url }}" rel="nofollow noopener noreferrer"><i class="{{ link.icon | default: 'fas fa-link' }}" aria-hidden="true"></i><span class="label">{{ link.label }}</span></a></li>
{% endif %}
{% endfor %}
{% endif %}
{% if author.uri %}
<li>
<a href="{{ author.uri }}" itemprop="url">
<i class="fas fa-fw fa-link" aria-hidden="true"></i><span class="label">{{ site.data.ui-text[site.locale].website_label | default: "Website" }}</span>
</a>
</li>
{% endif %}
{% if author.email %}
<li>
<a href="mailto:{{ author.email }}">
<meta itemprop="email" content="{{ author.email }}" />
<i class="fas fa-fw fa-envelope-square" aria-hidden="true"></i><span class="label">{{ site.data.ui-text[site.locale].email_label | default: "Email" }}</span>
</a>
</li>
{% endif %}
{% if author.keybase %}
<li>
<a href="https://keybase.io/{{ author.keybase }}" itemprop="sameAs" rel="nofollow noopener noreferrer">
<i class="fas fa-fw fa-key" aria-hidden="true"></i><span class="label">Keybase</span>
</a>
</li>
{% endif %}
{% if author.twitter %}
<li>
<a href="https://twitter.com/{{ author.twitter }}" itemprop="sameAs" rel="nofollow noopener noreferrer">
<i class="fab fa-fw fa-twitter-square" aria-hidden="true"></i><span class="label">Twitter</span>
</a>
</li>
{% endif %}
{% if author.facebook %}
<li>
<a href="https://www.facebook.com/{{ author.facebook }}" itemprop="sameAs" rel="nofollow noopener noreferrer">
<i class="fab fa-fw fa-facebook-square" aria-hidden="true"></i><span class="label">Facebook</span>
</a>
</li>
{% endif %}
{% if author.linkedin %}
<li>
<a href="https://www.linkedin.com/in/{{ author.linkedin }}" itemprop="sameAs" rel="nofollow noopener noreferrer">
<i class="fab fa-fw fa-linkedin" aria-hidden="true"></i><span class="label">LinkedIn</span>
</a>
</li>
{% endif %}
{% if author.xing %}
<li>
<a href="https://www.xing.com/profile/{{ author.xing }}" itemprop="sameAs" rel="nofollow noopener noreferrer">
<i class="fab fa-fw fa-xing-square" aria-hidden="true"></i><span class="label">XING</span>
</a>
</li>
{% endif %}
{% if author.instagram %}
<li>
<a href="https://instagram.com/{{ author.instagram }}" itemprop="sameAs" rel="nofollow noopener noreferrer">
<i class="fab fa-fw fa-instagram" aria-hidden="true"></i><span class="label">Instagram</span>
</a>
</li>
{% endif %}
{% if author.tumblr %}
<li>
<a href="https://{{ author.tumblr }}.tumblr.com" itemprop="sameAs" rel="nofollow noopener noreferrer">
<i class="fab fa-fw fa-tumblr-square" aria-hidden="true"></i><span class="label">Tumblr</span>
</a>
</li>
{% endif %}
{% if author.bitbucket %}
<li>
<a href="https://bitbucket.org/{{ author.bitbucket }}" itemprop="sameAs" rel="nofollow noopener noreferrer">
<i class="fab fa-fw fa-bitbucket" aria-hidden="true"></i><span class="label">Bitbucket</span>
</a>
</li>
{% endif %}
{% if author.github %}
<li>
<a href="https://github.com/{{ author.github }}" itemprop="sameAs" rel="nofollow noopener noreferrer">
<i class="fab fa-fw fa-github" aria-hidden="true"></i><span class="label">GitHub</span>
</a>
</li>
{% endif %}
{% if author.gitlab %}
<li>
<a href="https://gitlab.com/{{ author.gitlab }}" itemprop="sameAs" rel="nofollow noopener noreferrer">
<i class="fab fa-fw fa-gitlab" aria-hidden="true"></i><span class="label">GitLab</span>
</a>
</li>
{% endif %}
{% if author.stackoverflow %}
<li>
<a href="https://stackoverflow.com/users/{{ author.stackoverflow }}" itemprop="sameAs" rel="nofollow noopener noreferrer">
<i class="fab fa-fw fa-stack-overflow" aria-hidden="true"></i><span class="label">Stack Overflow</span>
</a>
</li>
{% endif %}
{% if author.lastfm %}
<li>
<a href="https://last.fm/user/{{ author.lastfm }}" itemprop="sameAs" rel="nofollow noopener noreferrer">
<i class="fab fa-fw fa-lastfm-square" aria-hidden="true"></i><span class="label">Last.fm</span>
</a>
</li>
{% endif %}
{% if author.dribbble %}
<li>
<a href="https://dribbble.com/{{ author.dribbble }}" itemprop="sameAs" rel="nofollow noopener noreferrer">
<i class="fab fa-fw fa-dribbble" aria-hidden="true"></i><span class="label">Dribbble</span>
</a>
</li>
{% endif %}
{% if author.pinterest %}
<li>
<a href="https://www.pinterest.com/{{ author.pinterest }}" itemprop="sameAs" rel="nofollow noopener noreferrer">
<i class="fab fa-fw fa-pinterest" aria-hidden="true"></i><span class="label">Pinterest</span>
</a>
</li>
{% endif %}
{% if author.foursquare %}
<li>
<a href="https://foursquare.com/{{ author.foursquare }}" itemprop="sameAs" rel="nofollow noopener noreferrer">
<i class="fab fa-fw fa-foursquare" aria-hidden="true"></i><span class="label">Foursquare</span>
</a>
</li>
{% endif %}
{% if author.steam %}
<li>
<a href="https://steamcommunity.com/id/{{ author.steam }}" itemprop="sameAs" rel="nofollow noopener noreferrer">
<i class="fab fa-fw fa-steam" aria-hidden="true"></i><span class="label">Steam</span>
</a>
</li>
{% endif %}
{% if author.youtube %}
{% if author.youtube contains "://" %}
<li>
<a href="{{ author.youtube }}" itemprop="sameAs" rel="nofollow noopener noreferrer">
<i class="fab fa-fw fa-youtube" aria-hidden="true"></i><span class="label">YouTube</span>
</a>
</li>
{% elsif author.youtube %}
<li>
<a href="https://www.youtube.com/user/{{ author.youtube }}" itemprop="sameAs" rel="nofollow noopener noreferrer">
<i class="fab fa-fw fa-youtube" aria-hidden="true"></i><span class="label">YouTube</span>
</a>
</li>
{% endif %}
{% endif %}
{% if author.soundcloud %}
<li>
<a href="https://soundcloud.com/{{ author.soundcloud }}" itemprop="sameAs" rel="nofollow noopener noreferrer">
<i class="fab fa-fw fa-soundcloud" aria-hidden="true"></i><span class="label">SoundCloud</span>
</a>
</li>
{% endif %}
{% if author.weibo %}
<li>
<a href="https://www.weibo.com/{{ author.weibo }}" itemprop="sameAs" rel="nofollow noopener noreferrer">
<i class="fab fa-fw fa-weibo" aria-hidden="true"></i><span class="label">Weibo</span>
</a>
</li>
{% endif %}
{% if author.flickr %}
<li>
<a href="https://www.flickr.com/{{ author.flickr }}" itemprop="sameAs" rel="nofollow noopener noreferrer">
<i class="fab fa-fw fa-flickr" aria-hidden="true"></i><span class="label">Flickr</span>
</a>
</li>
{% endif %}
{% if author.codepen %}
<li>
<a href="https://codepen.io/{{ author.codepen }}" itemprop="sameAs" rel="nofollow noopener noreferrer">
<i class="fab fa-fw fa-codepen" aria-hidden="true"></i><span class="label">CodePen</span>
</a>
</li>
{% endif %}
{% if author.vine %}
<li>
<a href="https://vine.co/u/{{ author.vine }}" itemprop="sameAs" rel="nofollow noopener noreferrer">
<i class="fab fa-fw fa-vine" aria-hidden="true"></i><span class="label">{{ site.data.ui-text[site.locale].email_label | default: "Email" }}</span>
</a>
</li>
{% endif %}
{% include author-profile-custom-links.html %}
</ul>
</div>
</div>

View file

@ -1,39 +0,0 @@
{% case site.category_archive.type %}
{% when "liquid" %}
{% assign path_type = "#" %}
{% when "jekyll-archives" %}
{% assign path_type = nil %}
{% endcase %}
{% if page.collection != 'posts' %}
{% assign path_type = nil %}
{% assign crumb_path = '/' %}
{% else %}
{% assign crumb_path = site.category_archive.path %}
{% endif %}
<nav class="breadcrumbs">
<ol itemscope itemtype="https://schema.org/BreadcrumbList">
{% assign crumbs = page.url | split: '/' %}
{% assign i = 1 %}
{% for crumb in crumbs offset: 1 %}
{% if forloop.first %}
<li itemprop="itemListElement" itemscope itemtype="https://schema.org/ListItem">
<a href="{{ site.url }}{{ site.baseurl }}/" itemprop="item"><span itemprop="name">{{ site.data.ui-text[site.locale].breadcrumb_home_label | default: "Home" }}</span></a>
<meta itemprop="position" content="{{ i }}" />
</li>
<span class="sep">{{ site.data.ui-text[site.locale].breadcrumb_separator | default: "/" }}</span>
{% endif %}
{% if forloop.last %}
<li class="current">{{ page.title }}</li>
{% else %}
{% assign i = i | plus: 1 %}
<li itemprop="itemListElement" itemscope itemtype="https://schema.org/ListItem">
<a href="{{ crumb | downcase | replace: '%20', '-' | prepend: path_type | prepend: crumb_path | relative_url }}" itemprop="item"><span itemprop="name">{{ crumb | replace: '-', ' ' | replace: '%20', ' ' | capitalize }}</span></a>
<meta itemprop="position" content="{{ i }}" />
</li>
<span class="sep">{{ site.data.ui-text[site.locale].breadcrumb_separator | default: "/" }}</span>
{% endif %}
{% endfor %}
</ol>
</nav>

View file

@ -1,3 +0,0 @@
<!--[if lt IE 9]>
<div class="notice--danger align-center" style="margin: 0;">You are using an <strong>outdated</strong> browser. Please <a href="https://browsehappy.com/">upgrade your browser</a> to improve your experience.</div>
<![endif]-->

View file

@ -1,19 +0,0 @@
{% case site.category_archive.type %}
{% when "liquid" %}
{% assign path_type = "#" %}
{% when "jekyll-archives" %}
{% assign path_type = nil %}
{% endcase %}
{% if site.category_archive.path %}
{% assign categories_sorted = page.categories | sort_natural %}
<p class="page__taxonomy">
<strong><i class="fas fa-fw fa-folder-open" aria-hidden="true"></i> {{ site.data.ui-text[site.locale].categories_label | default: "Categories:" }} </strong>
<span itemprop="keywords">
{% for category_word in categories_sorted %}
<a href="{{ category_word | slugify | prepend: path_type | prepend: site.category_archive.path | relative_url }}" class="page__taxonomy-item" rel="tag">{{ category_word }}</a>{% unless forloop.last %}<span class="sep">, </span>{% endunless %}
{% endfor %}
</span>
</p>
{% endif %}

View file

@ -1,22 +0,0 @@
<article id="comment{{ include.index }}" class="js-comment comment" itemprop="comment" itemscope itemtype="https://schema.org/Comment">
<div class="comment__avatar-wrapper">
<img class="comment__avatar" src="https://www.gravatar.com/avatar/{{ include.email }}?d=mm&s=80" alt="{{ include.name }}">
</div>
<div class="comment__content-wrapper">
<h3 class="comment__author" itemprop="author" itemscope itemtype="https://schema.org/Person">
{% unless include.url == blank %}
<span itemprop="name"><a rel="external nofollow" itemprop="url" href="{{ include.url }}">{{ include.name }}</a></span>
{% else %}
<span itemprop="name">{{ include.name }}</span>
{% endunless %}
</h3>
<p class="comment__date">
{% if include.date %}
{% if include.index %}<a href="#comment{{ include.index }}" itemprop="url">{% endif %}
<time datetime="{{ include.date | date_to_xmlschema }}" itemprop="datePublished">{{ include.date | date: "%B %-d, %Y at %I:%M %p" }}</time>
{% if include.index %}</a>{% endif %}
{% endif %}
</p>
<div itemprop="text">{{ include.message | markdownify }}</div>
</div>
</article>

View file

@ -1,3 +0,0 @@
<!-- start custom comments snippet -->
<!-- end custom comments snippet -->

View file

@ -1,3 +0,0 @@
<!-- start custom comments scripts -->
<!-- end custom comments scripts -->

View file

@ -1,13 +0,0 @@
{% if site.comments.discourse.server %}
{% capture canonical %}{% if site.permalink contains '.html' %}{{ page.url | absolute_url }}{% else %}{{ page.url | absolute_url | remove:'index.html' | strip_slash }}{% endif %}{% endcapture %}
<script type="text/javascript">
DiscourseEmbed = { discourseUrl: '//{{ site.comments.discourse.server }}/',
discourseEmbedUrl: '{{ canonical }}' };
(function () {
var d = document.createElement('script'); d.type = 'text/javascript'; d.async = true;
d.src = DiscourseEmbed.discourseUrl + 'javascripts/embed.js';
(document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(d);
})();
</script>
<noscript>Please enable JavaScript to view the comments powered by <a href="https://www.discourse.org/">Discourse.</a></noscript>
{% endif %}

View file

@ -1,15 +0,0 @@
{% if site.comments.disqus.shortname %}
<script>
var disqus_config = function () {
this.page.url = "{{ page.url | absolute_url }}"; /* Replace PAGE_URL with your page's canonical URL variable */
this.page.identifier = "{{ page.id }}"; /* Replace PAGE_IDENTIFIER with your page's unique identifier variable */
};
(function() { /* DON'T EDIT BELOW THIS LINE */
var d = document, s = d.createElement('script');
s.src = 'https://{{ site.comments.disqus.shortname }}.disqus.com/embed.js';
s.setAttribute('data-timestamp', +new Date());
(d.head || d.body).appendChild(s);
})();
</script>
<noscript>Please enable JavaScript to view the <a href="https://disqus.com/?ref_noscript">comments powered by Disqus.</a></noscript>
{% endif %}

View file

@ -1,8 +0,0 @@
<div id="fb-root"></div>
<script>(function(d, s, id) {
var js, fjs = d.getElementsByTagName(s)[0];
if (d.getElementById(id)) return;
js = d.createElement(s); js.id = id;
js.src = "//connect.facebook.net/en_US/sdk.js#xfbml=1&version=v2.5{% if site.comments.facebook.appid %}&appId={{ site.comments.facebook.appid }}{% endif %}";
fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));</script>

View file

@ -1,24 +0,0 @@
<script>
'use strict';
(function () {
var commentContainer = document.querySelector('#giscus-comments');
if (!commentContainer) {
return;
}
var script = document.createElement('script');
script.setAttribute('src', 'https://giscus.app/client.js');
script.setAttribute('data-repo', '{{ site.repository | downcase }}');
script.setAttribute('data-repo-id', '{{ site.comments.giscus.repo_id }}');
script.setAttribute('data-category', '{{ site.comments.giscus.category_name }}');
script.setAttribute('data-category-id', '{{ site.comments.giscus.category_id }}');
script.setAttribute('data-mapping', '{{ site.comments.giscus.discussion_term | default: "pathname" }}');
script.setAttribute('data-reactions-enabled', '{{ site.comments.giscus.reactions_enabled | default: 1 }}');
script.setAttribute('data-theme', '{{ site.comments.giscus.theme | default: "light" }}');
script.setAttribute('crossorigin', 'anonymous');
commentContainer.appendChild(script);
})();
</script>

View file

@ -1,20 +0,0 @@
{% if site.comments.provider and page.comments %}
{% case site.comments.provider %}
{% when "disqus" %}
{% include /comments-providers/disqus.html %}
{% when "discourse" %}
{% include /comments-providers/discourse.html %}
{% when "facebook" %}
{% include /comments-providers/facebook.html %}
{% when "staticman" %}
{% include /comments-providers/staticman.html %}
{% when "staticman_v2" %}
{% include /comments-providers/staticman_v2.html %}
{% when "utterances" %}
{% include /comments-providers/utterances.html %}
{% when "giscus" %}
{% include /comments-providers/giscus.html %}
{% when "custom" %}
{% include /comments-providers/custom_scripts.html %}
{% endcase %}
{% endif %}

View file

@ -1,40 +0,0 @@
{% if site.repository and site.staticman.branch %}
<script>
(function ($) {
$('#new_comment').submit(function () {
var form = this;
$(form).addClass('disabled');
$('#comment-form-submit').html('<i class="fas fa-spinner fa-spin fa-fw"></i> {{ site.data.ui-text[site.locale].loading_label | default: "Loading..." }}');
$.ajax({
type: $(this).attr('method'),
url: $(this).attr('action'),
data: $(this).serialize(),
contentType: 'application/x-www-form-urlencoded',
success: function (data) {
$('#comment-form-submit').html('{{ site.data.ui-text[site.locale].comment_btn_submitted | default: "Submitted" }}');
$('.page__comments-form .js-notice').removeClass('notice--danger');
$('.page__comments-form .js-notice').addClass('notice--success');
showAlert('{{ site.data.ui-text[site.locale].comment_success_msg | default: "Thanks for your comment! It will show on the site once it has been approved." }}');
},
error: function (err) {
console.log(err);
$('#comment-form-submit').html('{{ site.data.ui-text[site.locale].comment_btn_submit | default: "Submit Comment" }}');
$('.page__comments-form .js-notice').removeClass('notice--success');
$('.page__comments-form .js-notice').addClass('notice--danger');
showAlert('{{ site.data.ui-text[site.locale].comment_error_msg | default: "Sorry, there was an error with your submission. Please make sure all required fields have been completed and try again." }}');
$(form).removeClass('disabled');
}
});
return false;
});
function showAlert(message) {
$('.page__comments-form .js-notice').removeClass('hidden');
$('.page__comments-form .js-notice-text').html(message);
}
})(jQuery);
</script>
{% endif %}

View file

@ -1,40 +0,0 @@
{% if site.repository and site.comments.staticman.branch %}
<script>
(function ($) {
$('#new_comment').submit(function () {
var form = this;
$(form).addClass('disabled');
$('#comment-form-submit').html('<i class="fas fa-spinner fa-spin fa-fw"></i> {{ site.data.ui-text[site.locale].loading_label | default: "Loading..." }}');
$.ajax({
type: $(this).attr('method'),
url: $(this).attr('action'),
data: $(this).serialize(),
contentType: 'application/x-www-form-urlencoded',
success: function (data) {
$('#comment-form-submit').html('{{ site.data.ui-text[site.locale].comment_btn_submitted | default: "Submitted" }}');
$('.page__comments-form .js-notice').removeClass('notice--danger');
$('.page__comments-form .js-notice').addClass('notice--success');
showAlert('{{ site.data.ui-text[site.locale].comment_success_msg | default: "Thanks for your comment! It will show on the site once it has been approved." }}');
},
error: function (err) {
console.log(err);
$('#comment-form-submit').html('{{ site.data.ui-text[site.locale].comment_btn_submit | default: "Submit Comment" }}');
$('.page__comments-form .js-notice').removeClass('notice--success');
$('.page__comments-form .js-notice').addClass('notice--danger');
showAlert('{{ site.data.ui-text[site.locale].comment_error_msg | default: "Sorry, there was an error with your submission. Please make sure all required fields have been completed and try again." }}');
$(form).removeClass('disabled');
}
});
return false;
});
function showAlert(message) {
$('.page__comments-form .js-notice').removeClass('hidden');
$('.page__comments-form .js-notice-text').html(message);
}
})(jQuery);
</script>
{% endif %}

View file

@ -1,20 +0,0 @@
<script>
'use strict';
(function() {
var commentContainer = document.querySelector('#utterances-comments');
if (!commentContainer) {
return;
}
var script = document.createElement('script');
script.setAttribute('src', 'https://utteranc.es/client.js');
script.setAttribute('repo', '{{ site.repository }}');
script.setAttribute('issue-term', '{{ site.comments.utterances.issue_term | default: "pathname" }}');
script.setAttribute('theme', '{{ site.comments.utterances.theme | default: "github-light" }}');
script.setAttribute('crossorigin', 'anonymous');
commentContainer.appendChild(script);
})();
</script>

View file

@ -1,162 +0,0 @@
<div class="page__comments">
{% capture comments_label %}{{ site.data.ui-text[site.locale].comments_label | default: "Comments" }}{% endcapture %}
{% case site.comments.provider %}
{% when "discourse" %}
<h4 class="page__comments-title">{{ comments_label }}</h4>
<section id="discourse-comments"></section>
{% when "disqus" %}
<h4 class="page__comments-title">{{ comments_label }}</h4>
<section id="disqus_thread"></section>
{% when "facebook" %}
<h4 class="page__comments-title">{{ comments_label }}</h4>
<section class="fb-comments" data-href="{{ page.url | absolute_url }}" data-mobile="true" data-num-posts="{{ site.comments.facebook.num_posts | default: 5 }}" data-width="100%" data-colorscheme="{{ site.comments.facebook.colorscheme | default: 'light' }}"></section>
{% when "staticman_v2" %}
<section id="static-comments">
{% if site.repository and site.comments.staticman.branch %}
<!-- Start static comments -->
<div class="js-comments">
{% if site.data.comments[page.slug] %}
<h4 class="page__comments-title">{{ site.data.ui-text[site.locale].comments_title | default: "Comments" }}</h4>
{% assign comments = site.data.comments[page.slug] | sort %}
{% for comment in comments %}
{% assign email = comment[1].email %}
{% assign name = comment[1].name %}
{% assign url = comment[1].url %}
{% assign date = comment[1].date %}
{% assign message = comment[1].message %}
{% include comment.html index=forloop.index email=email name=name url=url date=date message=message %}
{% endfor %}
{% endif %}
</div>
<!-- End static comments -->
<!-- Start new comment form -->
<div class="page__comments-form">
<h4 class="page__comments-title">{{ site.data.ui-text[site.locale].comments_label | default: "Leave a Comment" }}</h4>
<p class="small">{{ site.data.ui-text[site.locale].comment_form_info | default: "Your email address will not be published. Required fields are marked" }} <span class="required">*</span></p>
<form id="new_comment" class="page__comments-form js-form form" method="post" action="{{ site.comments.staticman.endpoint }}{{ site.repository }}/{{ site.comments.staticman.branch }}/comments">
<div class="form__spinner">
<i class="fas fa-spinner fa-spin fa-3x fa-fw"></i>
<span class="sr-only">{{ site.data.ui-text[site.locale].loading_label | default: "Loading..." }}</span>
</div>
<div class="form-group">
<label for="comment-form-message">{{ site.data.ui-text[site.locale].comment_form_comment_label | default: "Comment" }} <small class="required">*</small></label>
<textarea type="text" rows="3" id="comment-form-message" name="fields[message]" tabindex="1"></textarea>
<div class="small help-block"><a href="https://daringfireball.net/projects/markdown/">{{ site.data.ui-text[site.locale].comment_form_md_info | default: "Markdown is supported." }}</a></div>
</div>
<div class="form-group">
<label for="comment-form-name">{{ site.data.ui-text[site.locale].comment_form_name_label | default: "Name" }} <small class="required">*</small></label>
<input type="text" id="comment-form-name" name="fields[name]" tabindex="2" />
</div>
<div class="form-group">
<label for="comment-form-email">{{ site.data.ui-text[site.locale].comment_form_email_label | default: "Email address" }} <small class="required">*</small></label>
<input type="email" id="comment-form-email" name="fields[email]" tabindex="3" />
</div>
<div class="form-group">
<label for="comment-form-url">{{ site.data.ui-text[site.locale].comment_form_website_label | default: "Website (optional)" }}</label>
<input type="url" id="comment-form-url" name="fields[url]" tabindex="4"/>
</div>
<div class="form-group hidden" style="display: none;">
<input type="hidden" name="options[slug]" value="{{ page.slug }}">
<label for="comment-form-location">Not used. Leave blank if you are a human.</label>
<input type="text" id="comment-form-location" name="fields[hidden]" autocomplete="off"/>
{% if site.reCaptcha.siteKey %}<input type="hidden" name="options[reCaptcha][siteKey]" value="{{ site.reCaptcha.siteKey }}">{% endif %}
{% if site.reCaptcha.secret %}<input type="hidden" name="options[reCaptcha][secret]" value="{{ site.reCaptcha.secret }}">{% endif %}
</div>
<!-- Start comment form alert messaging -->
<p class="hidden js-notice">
<strong class="js-notice-text"></strong>
</p>
<!-- End comment form alert messaging -->
{% if site.reCaptcha.siteKey %}
<div class="form-group">
<div class="g-recaptcha" data-sitekey="{{ site.reCaptcha.siteKey }}"></div>
</div>
{% endif %}
<div class="form-group">
<button type="submit" id="comment-form-submit" tabindex="5" class="btn btn--primary btn--large">{{ site.data.ui-text[site.locale].comment_btn_submit | default: "Submit Comment" }}</button>
</div>
</form>
</div>
<!-- End new comment form -->
{% if site.reCaptcha.siteKey %}<script async src="https://www.google.com/recaptcha/api.js"></script>{% endif %}
{% endif %}
</section>
{% when "staticman" %}
<section id="static-comments">
{% if site.repository and site.staticman.branch %}
<!-- Start static comments -->
<div class="js-comments">
{% if site.data.comments[page.slug] %}
<h4 class="page__comments-title">{{ site.data.ui-text[site.locale].comments_title | default: "Comments" }}</h4>
{% assign comments = site.data.comments[page.slug] | sort %}
{% for comment in comments %}
{% assign email = comment[1].email %}
{% assign name = comment[1].name %}
{% assign url = comment[1].url %}
{% assign date = comment[1].date %}
{% assign message = comment[1].message %}
{% include comment.html index=forloop.index email=email name=name url=url date=date message=message %}
{% endfor %}
{% endif %}
</div>
<!-- End static comments -->
<!-- Start new comment form -->
<div class="page__comments-form">
<h4 class="page__comments-title">{{ site.data.ui-text[site.locale].comments_label | default: "Leave a Comment" }}</h4>
<p class="small">{{ site.data.ui-text[site.locale].comment_form_info | default: "Your email address will not be published. Required fields are marked" }} <span class="required">*</span></p>
<form id="new_comment" class="page__comments-form js-form form" method="post" action="https://api.staticman.net/v1/entry/{{ site.repository }}/{{ site.staticman.branch }}">
<div class="form__spinner">
<i class="fas fa-spinner fa-spin fa-3x fa-fw"></i>
<span class="sr-only">{{ site.data.ui-text[site.locale].loading_label | default: "Loading..." }}</span>
</div>
<div class="form-group">
<label for="comment-form-message">{{ site.data.ui-text[site.locale].comment_form_comment_label | default: "Comment" }} <small class="required">*</small></label>
<textarea type="text" rows="3" id="comment-form-message" name="fields[message]" tabindex="1"></textarea>
<div class="small help-block"><a href="https://daringfireball.net/projects/markdown/">{{ site.data.ui-text[site.locale].comment_form_md_info | default: "Markdown is supported." }}</a></div>
</div>
<div class="form-group">
<label for="comment-form-name">{{ site.data.ui-text[site.locale].comment_form_name_label | default: "Name" }} <small class="required">*</small></label>
<input type="text" id="comment-form-name" name="fields[name]" tabindex="2" />
</div>
<div class="form-group">
<label for="comment-form-email">{{ site.data.ui-text[site.locale].comment_form_email_label | default: "Email address" }} <small class="required">*</small></label>
<input type="email" id="comment-form-email" name="fields[email]" tabindex="3" />
</div>
<div class="form-group">
<label for="comment-form-url">{{ site.data.ui-text[site.locale].comment_form_website_label | default: "Website (optional)" }}</label>
<input type="url" id="comment-form-url" name="fields[url]" tabindex="4"/>
</div>
<div class="form-group hidden" style="display: none;">
<input type="hidden" name="options[slug]" value="{{ page.slug }}">
<label for="comment-form-location">Not used. Leave blank if you are a human.</label>
<input type="text" id="comment-form-location" name="fields[hidden]" autocomplete="off"/>
</div>
<!-- Start comment form alert messaging -->
<p class="hidden js-notice">
<strong class="js-notice-text"></strong>
</p>
<!-- End comment form alert messaging -->
<div class="form-group">
<button type="submit" id="comment-form-submit" tabindex="5" class="btn btn--primary btn--large">{{ site.data.ui-text[site.locale].comment_btn_submit | default: "Submit Comment" }}</button>
</div>
</form>
</div>
<!-- End new comment form -->
{% endif %}
</section>
{% when "utterances" %}
<h4 class="page__comments-title">{{ comments_label }}</h4>
<section id="utterances-comments"></section>
{% when "giscus" %}
<h4 class="page__comments-title">{{ comments_label }}</h4>
<section id="giscus-comments"></section>
{% when "custom" %}
{% include /comments-providers/custom.html %}
{% endcase %}
</div>

View file

@ -1,15 +0,0 @@
{% assign entries = site[include.collection] %}
{% if include.sort_by %}
{% assign entries = entries | sort: include.sort_by %}
{% endif %}
{% if include.sort_order == 'reverse' %}
{% assign entries = entries | reverse %}
{% endif %}
{%- for post in entries -%}
{%- unless post.hidden -%}
{% include archive-single.html %}
{%- endunless -%}
{%- endfor -%}

View file

@ -1,41 +0,0 @@
{% if include.id %}
{% assign feature_row = page[include.id] %}
{% else %}
{% assign feature_row = page.feature_row %}
{% endif %}
<div class="feature__wrapper">
{% for f in feature_row %}
<div class="feature__item{% if include.type %}--{{ include.type }}{% endif %}">
<div class="archive__item">
{% if f.image_path %}
<div class="archive__item-teaser">
<img src="{{ f.image_path | relative_url }}"
alt="{% if f.alt %}{{ f.alt }}{% endif %}">
{% if f.image_caption %}
<span class="archive__item-caption">{{ f.image_caption | markdownify | remove: "<p>" | remove: "</p>" }}</span>
{% endif %}
</div>
{% endif %}
<div class="archive__item-body">
{% if f.title %}
<h2 class="archive__item-title">{{ f.title }}</h2>
{% endif %}
{% if f.excerpt %}
<div class="archive__item-excerpt">
{{ f.excerpt | markdownify }}
</div>
{% endif %}
{% if f.url %}
<p><a href="{{ f.url | relative_url }}" class="btn {{ f.btn_class }}">{{ f.btn_label | default: site.data.ui-text[site.locale].more_label | default: "Learn More" }}</a></p>
{% endif %}
</div>
</div>
</div>
{% endfor %}
</div>

View file

@ -1,9 +0,0 @@
<figure class="{{ include.class }}">
<img src="{{ include.image_path | relative_url }}"
alt="{% if include.alt %}{{ include.alt }}{% endif %}">
{%- if include.caption -%}
<figcaption>
{{ include.caption | markdownify | remove: "<p>" | remove: "</p>" }}
</figcaption>
{%- endif -%}
</figure>

View file

@ -1,31 +0,0 @@
<div class="page__footer-follow">
<ul class="social-icons">
{% if site.data.ui-text[site.locale].follow_label %}
<li><strong>{{ site.data.ui-text[site.locale].follow_label }}</strong></li>
{% endif %}
{% if site.footer.links %}
{% for link in site.footer.links %}
{% if link.label and link.url %}
<li><a href="{{ link.url }}" rel="nofollow noopener noreferrer"><i class="{{ link.icon | default: 'fas fa-link' }}" aria-hidden="true"></i> {{ link.label }}</a></li>
{% endif %}
{% endfor %}
{% endif %}
<!-- hacks-guide change start: force disable atom feed-->
<!--
{% unless site.atom_feed.hide %}
<li><a href="{% if site.atom_feed.path %}{{ site.atom_feed.path }}{% else %}{{ '/feed.xml' | relative_url }}{% endif %}"><i class="fas fa-fw fa-rss-square" aria-hidden="true"></i> {{ site.data.ui-text[site.locale].feed_label | default: "Feed" }}</a></li>
{% endunless %}
</ul>
-->
<!-- hacks-guide change end -->
</div>
<!-- hacks-guide change start: custom footer -->
{% assign split_path = page.path | split: "/" %}
{% assign locale = split_path[1] %}
{% assign titles = site.data.navigation[locale].footer %}
<div class="page__footer-copyright">&copy; {{ site.time | date: '%Y' }} {{ site.name | default: site.title }}. - <a href="{{ titles[1].url }}">{{ titles[1].title }}</a> - <a href="{{ titles[2].url }}">{{ titles[2].title }}</a> - <a href="{{ titles[3].url }}">{{ titles[3].title }}</a> <!-- {{ site.data.ui-text[site.locale].powered_by | default: "Powered by" }} <a href="https://jekyllrb.com" rel="nofollow">Jekyll</a> &amp; <a href="https://mademistakes.com/work/minimal-mistakes-jekyll-theme/" rel="nofollow">Minimal Mistakes</a>.--></div>
<!-- hacks-guide change end -->

View file

@ -1,3 +0,0 @@
<!-- start custom footer snippets -->
<!-- end custom footer snippets -->

View file

@ -1,35 +0,0 @@
{% if include.id %}
{% assign gallery = page[include.id] %}
{% else %}
{% assign gallery = page.gallery %}
{% endif %}
{% if include.layout %}
{% assign gallery_layout = include.layout %}
{% else %}
{% if gallery.size == 2 %}
{% assign gallery_layout = 'half' %}
{% elsif gallery.size >= 3 %}
{% assign gallery_layout = 'third' %}
{% else %}
{% assign gallery_layout = '' %}
{% endif %}
{% endif %}
<figure class="{{ gallery_layout }} {{ include.class }}">
{% for img in gallery %}
{% if img.url %}
<a href="{{ img.url | relative_url }}"
{% if img.title %}title="{{ img.title }}"{% endif %}>
<img src="{{ img.image_path | relative_url }}"
alt="{% if img.alt %}{{ img.alt }}{% endif %}">
</a>
{% else %}
<img src="{{ img.image_path | relative_url }}"
alt="{% if img.alt %}{{ img.alt }}{% endif %}">
{% endif %}
{% endfor %}
{% if include.caption %}
<figcaption>{{ include.caption | markdownify | remove: "<p>" | remove: "</p>" }}</figcaption>
{% endif %}
</figure>

View file

@ -1,47 +0,0 @@
<!--
# Jekyll Group-By-Array 0.1.0
# https://github.com/mushishi78/jekyll-group-by-array
# © 2015 Max White <mushishi78@gmail.com>
# MIT License
-->
<!-- Initialize -->
{% assign __empty_array = '' | split: ',' %}
{% assign group_names = __empty_array %}
{% assign group_items = __empty_array %}
<!-- Map -->
{% assign __names = include.collection | map: include.field %}
<!-- Flatten -->
{% assign __names = __names | join: ',' | join: ',' | split: ',' %}
<!-- Uniq -->
{% assign __names = __names | sort %}
{% for name in __names %}
<!-- If not equal to previous then it must be unique as sorted -->
{% unless name == previous %}
<!-- Push to group_names -->
{% assign group_names = group_names | push: name %}
{% endunless %}
{% assign previous = name %}
{% endfor %}
<!-- group_items -->
{% for name in group_names %}
<!-- Collect if contains -->
{% assign __item = __empty_array %}
{% for __element in include.collection %}
{% if __element[include.field] contains name %}
{% assign __item = __item | push: __element %}
{% endif %}
{% endfor %}
<!-- Push to group_items -->
{% assign group_items = group_items | push: __item %}
{% endfor %}

View file

@ -1,25 +0,0 @@
<meta charset="utf-8">
{% include seo.html %}
{% unless site.atom_feed.hide %}
<link href="{% if site.atom_feed.path %}{{ site.atom_feed.path }}{% else %}{{ '/feed.xml' | relative_url }}{% endif %}" type="application/atom+xml" rel="alternate" title="{{ site.title }} Feed">
{% endunless %}
<!-- https://t.co/dKP3o1e -->
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<script>
document.documentElement.className = document.documentElement.className.replace(/\bno-js\b/g, '') + ' js ';
</script>
<!-- For all browsers -->
<link rel="stylesheet" href="{{ '/assets/css/main.css' | relative_url }}">
<link rel="preload" href="https://cdn.jsdelivr.net/npm/@fortawesome/fontawesome-free@5/css/all.min.css" as="style" onload="this.onload=null;this.rel='stylesheet'">
<noscript><link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@fortawesome/fontawesome-free@5/css/all.min.css"></noscript>
{% if site.head_scripts %}
{% for script in site.head_scripts %}
<script src="{{ script | relative_url }}"></script>
{% endfor %}
{% endif %}

View file

@ -1,54 +0,0 @@
<!-- start custom head snippets -->
<!-- insert favicons. use http://realfavicongenerator.net/ -->
<!-- hacks-guide change start: cookie consent, favicon, locales -->
<link rel="apple-touch-icon" sizes="180x180" href="{{ base_path }}/images/site-config/apple-touch-icon.png?v=PYEmwKvQAx">
<link rel="icon" type="image/png" href="{{ base_path }}/images/site-config/favicon-16x16.png?v=PYEmwKvQAx" sizes="16x16">
<link rel="icon" type="image/png" href="{{ base_path }}/images/site-config/favicon-32x32.png?v=PYEmwKvQAx" sizes="32x32">
<link rel="icon" type="image/png" href="{{ base_path }}/images/site-config/favicon-194x194.png?v=PYEmwKvQAx" sizes="194x194">
<link rel="icon" type="image/png" href="{{ base_path }}/images/site-config/android-chrome-192x192.png?v=PYEmwKvQAx" sizes="192x192">
<link rel="manifest" href="{{ base_path }}/assets/js/manifest.json?v=PYEmwKvQAx">
<link rel="mask-icon" href="{{ base_path }}/images/site-config/safari-pinned-tab.svg?v=PYEmwKvQAx" color="#2E3440">
<link rel="shortcut icon" href="{{ base_path }}/images/site-config/favicon.ico?v=PYEmwKvQAx">
<meta name="apple-mobile-web-app-title" content="Guide">
<meta name="application-name" content="Guide">
<meta name="msapplication-TileColor" content="#2E3440">
<meta name="msapplication-TileImage" content="{{ base_path }}/images/site-config/mstile-144x144.png?v=PYEmwKvQAx">
<meta name="msapplication-config" content="{{ base_path }}/assets/xml/browserconfig.xml?v=PYEmwKvQAx">
<meta name="theme-color" content="#2E3440">
{% assign split_path = page.path | split: "/" %}
{% assign locale = split_path[1] %}
{% if locale == 'en_US' %}
{% assign locale_var = '/' %}
{% else %}
{% assign locale_var = locale | prepend:'/' | append:'/' %}
{% endif %}
{% assign top = site.data.navigation[locale].top %}
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/cookieconsent2/3.1.1/cookieconsent.min.css" integrity="sha512-LQ97camar/lOliT/MqjcQs5kWgy6Qz/cCRzzRzUCfv0fotsCTC9ZHXaPQmJV8Xu/PVALfJZ7BDezl5lW3/qBxg==" crossorigin="anonymous" referrerpolicy="no-referrer" />
<script src="https://cdnjs.cloudflare.com/ajax/libs/cookieconsent2/3.1.1/cookieconsent.min.js" integrity="sha512-yXXqOFjdjHNH1GND+1EO0jbvvebABpzGKD66djnUfiKlYME5HGMUJHoCaeE4D5PTG2YsSJf6dwqyUUvQvS0vaA==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>
<script>
window.addEventListener("load", function(){
window.cookieconsent.initialise({
"palette": {
"popup": {
"background": "#28282b"
},
"button": {
"background": "#60818f"
}
},
"theme": "edgeless",
"position": "top",
"static": true,
"content": {
"message": "{{ top[0].title }}"
}
})});
</script>
<!-- hacks-guide change end -->
<!-- end custom head snippets -->

View file

@ -1,34 +0,0 @@
<!-- hacks-guide change start: Refactor entire subsection to allow using translations -->
{% assign split_path = page.path | split: "/" %}
{% assign locale = split_path[1] %}
{% if locale == 'en_US' %}
{% assign locale_var = '/' %}
{% else %}
{% assign locale_var = locale | prepend:'/' | append:'/' %}
{% endif %}
{% assign title = site.data.navigation[locale].sidebar_title %}
{% assign navigation = site.data.navigation[locale].sidebar_pages %}
<nav class="nav__list">
{% if page.sidebar.title %}<h3 class="nav__title" style="padding-left: 0;">{{ page.sidebar.title }}</h3>{% endif %}
<input id="ac-toc" name="accordion-toc" type="checkbox" />
<label for="ac-toc">{{ site.data.ui-text[site.locale].menu_label | default: "Toggle Menu" }}</label>
<ul class="nav__items">
<li>
<span class="nav__sub-title">{{ title[0].title }}</span>
<ol>
{% for link in site.data.navigation[locale].sidebar_pages %}
{% if link.url == "/" %}
<li style="display: none;" data-name="home"><a href='{{ domain }}{{ locale_var }}'>{{ link.title }}</a></li>
{% elsif link.url == "multiple-options" %}
<li style="display: none;" data-name="multiple-options"><i>({{ link.title }})</i></li>
{% else %}
<li style="display: none;" data-name="{{ site.data.navigation.en_US.sidebar_pages[forloop.index0].url }}"><a href='{{ domain }}{{ locale_var }}{{ link.url }}'>{{ link.title }}</a></li>
{% endif %}
{% endfor %}
</ol>
</li>
</ul>
</nav>
<!-- hacks-guide change end -->

View file

@ -1,6 +0,0 @@
{% assign date_format = site.date_format | default: "%B %-d, %Y" %}
{% if page.last_modified_at %}
<p class="page__date"><strong><i class="fas fa-fw fa-calendar-alt" aria-hidden="true"></i> {{ site.data.ui-text[site.locale].date_label | default: "Updated:" }}</strong> <time datetime="{{ page.last_modified_at | date: "%Y-%m-%d" }}">{{ page.last_modified_at | date: date_format }}</time></p>
{% elsif page.date %}
<p class="page__date"><strong><i class="fas fa-fw fa-calendar-alt" aria-hidden="true"></i> {{ site.data.ui-text[site.locale].date_label | default: "Updated:" }}</strong> <time datetime="{{ page.date | date_to_xmlschema }}">{{ page.date | date: date_format }}</time></p>
{% endif %}

View file

@ -1,55 +0,0 @@
{% capture overlay_img_path %}{{ page.header.overlay_image | relative_url }}{% endcapture %}
{% if page.header.overlay_filter contains "gradient" %}
{% capture overlay_filter %}{{ page.header.overlay_filter }}{% endcapture %}
{% elsif page.header.overlay_filter contains "rgba" %}
{% capture overlay_filter %}{{ page.header.overlay_filter }}{% endcapture %}
{% capture overlay_filter %}linear-gradient({{ overlay_filter }}, {{ overlay_filter }}){% endcapture %}
{% elsif page.header.overlay_filter %}
{% capture overlay_filter %}rgba(0, 0, 0, {{ page.header.overlay_filter }}){% endcapture %}
{% capture overlay_filter %}linear-gradient({{ overlay_filter }}, {{ overlay_filter }}){% endcapture %}
{% endif %}
{% if page.header.image_description %}
{% assign image_description = page.header.image_description %}
{% else %}
{% assign image_description = page.title %}
{% endif %}
{% assign image_description = image_description | markdownify | strip_html | strip_newlines | escape_once %}
<div class="page__hero{% if page.header.overlay_color or page.header.overlay_image %}--overlay{% endif %}"
style="{% if page.header.overlay_color %}background-color: {{ page.header.overlay_color | default: 'transparent' }};{% endif %} {% if overlay_img_path %}background-image: {% if overlay_filter %}{{ overlay_filter }}, {% endif %}url('{{ overlay_img_path }}');{% endif %}"
>
{% if page.header.overlay_color or page.header.overlay_image %}
<div class="wrapper">
<h1 id="page-title" class="page__title" itemprop="headline">
{% if paginator and site.paginate_show_page_num %}
{{ site.title }}{% unless paginator.page == 1 %} {{ site.data.ui-text[site.locale].page | default: "Page" }} {{ paginator.page }}{% endunless %}
{% else %}
{{ page.title | default: site.title | markdownify | remove: "<p>" | remove: "</p>" }}
{% endif %}
</h1>
{% if page.tagline %}
<p class="page__lead">{{ page.tagline | markdownify | remove: "<p>" | remove: "</p>" }}</p>
{% elsif page.header.show_overlay_excerpt != false and page.excerpt %}
<p class="page__lead">{{ page.excerpt | markdownify | remove: "<p>" | remove: "</p>" }}</p>
{% endif %}
{% include page__meta.html %}
{% if page.header.cta_url %}
<p><a href="{{ page.header.cta_url | relative_url }}" class="btn btn--light-outline btn--large">{{ page.header.cta_label | default: site.data.ui-text[site.locale].more_label | default: "Learn More" }}</a></p>
{% endif %}
{% if page.header.actions %}
<p>
{% for action in page.header.actions %}
<a href="{{ action.url | relative_url }}" class="btn btn--light-outline btn--large">{{ action.label | default: site.data.ui-text[site.locale].more_label | default: "Learn More" }}</a>
{% endfor %}
{% endif %}
</div>
{% else %}
<img src="{{ page.header.image | relative_url }}" alt="{{ image_description }}" class="page__hero-image">
{% endif %}
{% if page.header.caption %}
<span class="page__hero-caption">{{ page.header.caption | markdownify | remove: "<p>" | remove: "</p>" }}</span>
{% endif %}
</div>

View file

@ -1,2 +0,0 @@
{% assign video = page.header.video %}
{% include video id=video.id provider=video.provider danmaku=video.danmaku %}

View file

@ -1,31 +0,0 @@
{% assign document = post | default: page %}
{% if document.read_time or document.show_date %}
<p class="page__meta">
{% if document.show_date and document.date %}
{% assign date = document.date %}
<span class="page__meta-date">
<i class="far {% if include.type == 'grid' and document.read_time and document.show_date %}fa-fw {% endif %}fa-calendar-alt" aria-hidden="true"></i>
{% assign date_format = site.date_format | default: "%B %-d, %Y" %}
<time datetime="{{ date | date_to_xmlschema }}">{{ date | date: date_format }}</time>
</span>
{% endif %}
{% if document.read_time and document.show_date %}<span class="page__meta-sep"></span>{% endif %}
{% if document.read_time %}
{% assign words_per_minute = document.words_per_minute | default: site.words_per_minute | default: 200 %}
{% assign words = document.content | strip_html | number_of_words %}
<span class="page__meta-readtime">
<i class="far {% if include.type == 'grid' and document.read_time and document.show_date %}fa-fw {% endif %}fa-clock" aria-hidden="true"></i>
{% if words < words_per_minute %}
{{ site.data.ui-text[site.locale].less_than | default: "less than" }} 1 {{ site.data.ui-text[site.locale].minute_read | default: "minute read" }}
{% elsif words == words_per_minute %}
1 {{ site.data.ui-text[site.locale].minute_read | default: "minute read" }}
{% else %}
{{ words | divided_by: words_per_minute }} {{ site.data.ui-text[site.locale].minute_read | default: "minute read" }}
{% endif %}
</span>
{% endif %}
</p>
{% endif %}

View file

@ -1,7 +0,0 @@
{% if site.tag_archive.type and page.tags[0] %}
{% include tag-list.html %}
{% endif %}
{% if site.category_archive.type and page.categories[0] %}
{% include category-list.html %}
{% endif %}

View file

@ -1,69 +0,0 @@
{% if paginator.total_pages > 1 %}
<nav class="pagination">
{% assign first_page_path = paginator.first_page_path | default: site.paginate_path | replace: 'page:num', '' | replace: '//', '/' | relative_url %}
<ul>
{% comment %} Link for previous page {% endcomment %}
{% if paginator.previous_page %}
{% if paginator.previous_page == 1 %}
<li><a href="{{ first_page_path }}">{{ site.data.ui-text[site.locale].pagination_previous | default: "Previous" }}</a></li>
{% else %}
<li><a href="{{ site.paginate_path | replace: ':num', paginator.previous_page | replace: '//', '/' | relative_url }}">{{ site.data.ui-text[site.locale].pagination_previous | default: "Previous" }}</a></li>
{% endif %}
{% else %}
<li><a href="#" class="disabled"><span aria-hidden="true">{{ site.data.ui-text[site.locale].pagination_previous | default: "Previous" }}</span></a></li>
{% endif %}
{% comment %} First page {% endcomment %}
{% if paginator.page == 1 %}
<li><a href="#" class="disabled current">1</a></li>
{% else %}
<li><a href="{{ first_page_path }}">1</a></li>
{% endif %}
{% assign page_start = 2 %}
{% if paginator.page > 4 %}
{% assign page_start = paginator.page | minus: 2 %}
{% comment %} Ellipsis for truncated links {% endcomment %}
<li><a href="#" class="disabled">&hellip;</a></li>
{% endif %}
{% assign page_end = paginator.total_pages | minus: 1 %}
{% assign pages_to_end = paginator.total_pages | minus: paginator.page %}
{% if pages_to_end > 4 %}
{% assign page_end = paginator.page | plus: 2 %}
{% endif %}
{% for index in (page_start..page_end) %}
{% if index == paginator.page %}
<li><a href="{{ site.paginate_path | replace: ':num', index | replace: '//', '/' | relative_url }}" class="disabled current">{{ index }}</a></li>
{% else %}
{% comment %} Distance from current page and this link {% endcomment %}
{% assign dist = paginator.page | minus: index %}
{% if dist < 0 %}
{% comment %} Distance must be a positive value {% endcomment %}
{% assign dist = 0 | minus: dist %}
{% endif %}
<li><a href="{{ site.paginate_path | replace: ':num', index | relative_url }}">{{ index }}</a></li>
{% endif %}
{% endfor %}
{% comment %} Ellipsis for truncated links {% endcomment %}
{% if pages_to_end > 3 %}
<li><a href="#" class="disabled">&hellip;</a></li>
{% endif %}
{% if paginator.page == paginator.total_pages %}
<li><a href="#" class="disabled current">{{ paginator.page }}</a></li>
{% else %}
<li><a href="{{ site.paginate_path | replace: ':num', paginator.total_pages | replace: '//', '/' | relative_url }}">{{ paginator.total_pages }}</a></li>
{% endif %}
{% comment %} Link next page {% endcomment %}
{% if paginator.next_page %}
<li><a href="{{ site.paginate_path | replace: ':num', paginator.next_page | replace: '//', '/' | relative_url }}">{{ site.data.ui-text[site.locale].pagination_next | default: "Next" }}</a></li>
{% else %}
<li><a href="#" class="disabled"><span aria-hidden="true">{{ site.data.ui-text[site.locale].pagination_next | default: "Next" }}</span></a></li>
{% endif %}
</ul>
</nav>
{% endif %}

View file

@ -1,14 +0,0 @@
{% if page.previous or page.next %}
<nav class="pagination">
{% if page.previous %}
<a href="{{ page.previous.url | relative_url }}" class="pagination--pager" title="{{ page.previous.title | markdownify | strip_html }}">{{ site.data.ui-text[site.locale].pagination_previous | default: "Previous" }}</a>
{% else %}
<a href="#" class="pagination--pager disabled">{{ site.data.ui-text[site.locale].pagination_previous | default: "Previous" }}</a>
{% endif %}
{% if page.next %}
<a href="{{ page.next.url | relative_url }}" class="pagination--pager" title="{{ page.next.title | markdownify | strip_html }}">{{ site.data.ui-text[site.locale].pagination_next | default: "Next" }}</a>
{% else %}
<a href="#" class="pagination--pager disabled">{{ site.data.ui-text[site.locale].pagination_next | default: "Next" }}</a>
{% endif %}
</nav>
{% endif %}

View file

@ -1,5 +0,0 @@
{%- for post in site.categories[include.taxonomy] -%}
{%- unless post.hidden -%}
{% include archive-single.html %}
{%- endunless -%}
{%- endfor -%}

View file

@ -1,5 +0,0 @@
{%- for post in site.tags[include.taxonomy] -%}
{%- unless post.hidden -%}
{% include archive-single.html %}
{%- endunless -%}
{%- endfor -%}

2
_includes/redirect.html Normal file
View file

@ -0,0 +1,2 @@
<meta http-equiv="refresh" content="0; URL={{ include.redirect_to }}">
<link rel="canonical" href="{{ include.redirect_to }}">

View file

@ -1,30 +0,0 @@
{% if site.footer_scripts %}
{% for script in site.footer_scripts %}
<script src="{{ script | relative_url }}"></script>
{% endfor %}
{% else %}
<script src="{{ '/assets/js/main.min.js' | relative_url }}"></script>
{% endif %}
<!-- hacks-guide change start: Disable caching -->
{% if site.search == true or page.layout == "search" %}
{%- assign search_provider = site.search_provider | default: "lunr" -%}
{%- case search_provider -%}
{%- when "lunr" -%}
{% include search/lunr-search-scripts.html %}
{%- when "google" -%}
{% include search/google-search-scripts.html %}
{%- when "algolia" -%}
{% include search/algolia-search-scripts.html %}
{%- endcase -%}
{% endif %}
<!-- hacks-guide change end -->
{% include analytics.html %}
{% include /comments-providers/scripts.html %}
{% if site.after_footer_scripts %}
{% for script in site.after_footer_scripts %}
<script src="{{ script | relative_url }}"></script>
{% endfor %}
{% endif %}

View file

@ -1,61 +0,0 @@
<!-- Including InstantSearch.js library and styling -->
<script src="https://cdn.jsdelivr.net/npm/instantsearch.js@2.3.3/dist/instantsearch.min.js"></script>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/instantsearch.js@2.3.3/dist/instantsearch.min.css">
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/instantsearch.js@2.3.3/dist/instantsearch-theme-algolia.min.css">
<script>
// Instanciating InstantSearch.js with Algolia credentials
const search = instantsearch({
appId: '{{ site.algolia.application_id }}',
apiKey: '{{ site.algolia.search_only_api_key }}',
indexName: '{{ site.algolia.index_name }}',
searchParameters: {
restrictSearchableAttributes: [
'title',
'content'
]
}
});
const hitTemplate = function(hit) {
const url = hit.url;
const title = hit._highlightResult.title.value;
const content = hit._highlightResult.html.value;
return `
<div class="list__item">
<article class="archive__item" itemscope itemtype="https://schema.org/CreativeWork">
<h2 class="archive__item-title" itemprop="headline"><a href="{{ site.baseurl }}${url}">${title}</a></h2>
<div class="archive__item-excerpt" itemprop="description">${content}</div>
</article>
</div>
`;
}
// Adding searchbar and results widgets
search.addWidget(
instantsearch.widgets.searchBox({
container: '.search-searchbar',
{% unless site.algolia.powered_by == false %}poweredBy: true,{% endunless %}
placeholder: '{{ site.data.ui-text[site.locale].search_placeholder_text | default: "Enter your search term..." }}'
})
);
search.addWidget(
instantsearch.widgets.hits({
container: '.search-hits',
templates: {
item: hitTemplate,
empty: '{{ site.data.ui-text[site.locale].search_algolia_no_results | default: "No results" }}',
}
})
);
// Starting the search only when toggle is clicked
$(document).ready(function () {
$(".search__toggle").on("click", function() {
if(!search.started) {
search.start();
}
});
});
</script>

View file

@ -1,30 +0,0 @@
<script>
(function () {
var cx = '{{ site.google.search_engine_id }}';
var gcse = document.createElement('script');
gcse.type = 'text/javascript';
gcse.async = true;
gcse.src = 'https://cse.google.com/cse.js?cx=' + cx;
var s = document.getElementsByTagName('script')[0];
s.parentNode.insertBefore(gcse, s);
})();
function googleCustomSearchExecute() {
var input = document.getElementById('cse-search-input-box-id');
var element = google.search.cse.element.getElement('searchresults-only0');
if (input.value == '') {
element.clearAllResults();
} else {
element.execute(input.value);
}
return false;
}
{% if site.google.instant_search %}
$(document).ready(function () {
$('input#cse-search-input-box-id').on('keyup', function () {
googleCustomSearchExecute();
});
});
{% endif %}
</script>

View file

@ -1,10 +0,0 @@
{% assign lang = site.locale | slice: 0,2 | default: "en" %}
{% case lang %}
{% when "gr" %}
{% assign lang = "gr" %}
{% else %}
{% assign lang = "en" %}
{% endcase %}
<script src="{{ '/assets/js/lunr/lunr.min.js' | relative_url }}"></script>
<script src="{{ '/assets/js/lunr/lunr-store.js' | relative_url }}"></script>
<script src="{{ '/assets/js/lunr/lunr-' | append: lang | append: '.js' | relative_url }}"></script>

View file

@ -1,26 +0,0 @@
<div class="search-content__inner-wrap">
{%- assign search_provider = site.search_provider | default: "lunr" -%}
{%- case search_provider -%}
{%- when "lunr" -%}
<form class="search-content__form" onkeydown="return event.key != 'Enter';">
<label class="sr-only" for="search">
{{ site.data.ui-text[site.locale].search_label_text | default: 'Enter your search term...' }}
</label>
<input type="search" id="search" class="search-input" tabindex="-1" placeholder="{{ site.data.ui-text[site.locale].search_placeholder_text | default: 'Enter your search term...' }}" />
</form>
<div id="results" class="results"></div>
{%- when "google" -%}
<form onsubmit="return googleCustomSearchExecute();" id="cse-search-box-form-id">
<label class="sr-only" for="cse-search-input-box-id">
{{ site.data.ui-text[site.locale].search_label_text | default: 'Enter your search term...' }}
</label>
<input type="search" id="cse-search-input-box-id" class="search-input" tabindex="-1" placeholder="{{ site.data.ui-text[site.locale].search_placeholder_text | default: 'Enter your search term...' }}" />
</form>
<div id="results" class="results">
<gcse:searchresults-only></gcse:searchresults-only>
</div>
{%- when "algolia" -%}
<div class="search-searchbar"></div>
<div class="search-hits"></div>
{%- endcase -%}
</div>

View file

@ -1,158 +0,0 @@
<!-- begin _includes/seo.html -->
{%- if site.url -%}
{%- assign seo_url = site.url | append: site.baseurl -%}
{%- endif -%}
{%- assign seo_url = seo_url | default: site.github.url -%}
{% assign title_separator = site.title_separator | default: '-' | replace: '|', '&#124;' %}
{%- if page.title -%}
{%- assign seo_title = page.title | append: " " | append: title_separator | append: " " | append: site.title -%}
{%- endif -%}
{%- if seo_title -%}
{%- assign seo_title = seo_title | markdownify | strip_html | strip_newlines | escape_once -%}
{%- endif -%}
{% if page.canonical_url %}
{%- assign canonical_url = page.canonical_url %}
{% else %}
{%- assign canonical_url = page.url | replace: "index.html", "" | absolute_url %}
{% endif %}
{%- assign seo_description = page.description | default: page.excerpt | default: site.description -%}
{%- if seo_description -%}
{%- assign seo_description = seo_description | markdownify | strip_html | newline_to_br | strip_newlines | replace: '<br />', ' ' | escape_once | strip -%}
{%- endif -%}
{%- assign author = page.author | default: page.authors[0] | default: site.author -%}
{%- assign author = site.data.authors[author] | default: author -%}
{%- if author.twitter -%}
{%- assign author_twitter = author.twitter | replace: "@", "" -%}
{%- endif -%}
{%- assign page_large_image = page.header.og_image | default: page.header.overlay_image | default: page.header.image | absolute_url -%}
{%- assign page_large_image = page_large_image | escape -%}
{%- assign page_teaser_image = page.header.teaser | default: site.og_image | absolute_url -%}
{%- assign page_teaser_image = page_teaser_image | escape -%}
{%- assign site_og_image = site.og_image | absolute_url -%}
{%- assign site_og_image = site_og_image | escape -%}
{%- if page.date -%}
{%- assign og_type = "article" -%}
{%- else -%}
{%- assign og_type = "website" -%}
{%- endif -%}
<title>{{ seo_title | default: site.title }}{% if paginator %}{% unless paginator.page == 1 %} {{ title_separator }} {{ site.data.ui-text[site.locale].page | default: "Page" }} {{ paginator.page }}{% endunless %}{% endif %}</title>
<meta name="description" content="{{ seo_description }}">
{% if author.name %}
<meta name="author" content="{{ author.name | default: author }}">
{% if og_type == "article" %}
<meta property="article:author" content="{{ author.name | default: author }}">
{% endif %}
{% endif %}
<meta property="og:type" content="{{ og_type }}">
<meta property="og:locale" content="{{ site.locale | replace: "-", "_" | default: "en_US" }}">
<meta property="og:site_name" content="{{ site.title }}">
<meta property="og:title" content="{{ page.title | default: site.title | markdownify | strip_html | strip_newlines | escape_once }}">
<meta property="og:url" content="{{ canonical_url }}">
{% if seo_description %}
<meta property="og:description" content="{{ seo_description }}">
{% endif %}
{% if page_large_image %}
<meta property="og:image" content="{{ page_large_image }}">
{% elsif page_teaser_image %}
<meta property="og:image" content="{{ page_teaser_image }}">
{% endif %}
{% if site.twitter.username %}
<meta name="twitter:site" content="@{{ site.twitter.username | replace: "@", "" }}">
<meta name="twitter:title" content="{{ page.title | default: site.title | markdownify | strip_html | strip_newlines | escape_once }}">
<meta name="twitter:description" content="{{ seo_description }}">
<meta name="twitter:url" content="{{ canonical_url }}">
{% if page_large_image %}
<meta name="twitter:card" content="summary_large_image">
<meta name="twitter:image" content="{{ page_large_image }}">
{% else %}
<meta name="twitter:card" content="summary">
{% if page_teaser_image %}
<meta name="twitter:image" content="{{ page_teaser_image }}">
{% endif %}
{% endif %}
{% if author_twitter %}
<meta name="twitter:creator" content="@{{ author_twitter }}">
{% endif %}
{% endif %}
{% if page.date %}
<meta property="article:published_time" content="{{ page.date | date_to_xmlschema }}">
{% endif %}
{% if og_type == "article" and page.last_modified_at %}
<meta property="article:modified_time" content="{{ page.last_modified_at | date_to_xmlschema }}">
{% endif %}
{% if site.facebook %}
{% if site.facebook.publisher %}
<meta property="article:publisher" content="{{ site.facebook.publisher }}">
{% endif %}
{% if site.facebook.app_id %}
<meta property="fb:app_id" content="{{ site.facebook.app_id }}">
{% endif %}
{% endif %}
<link rel="canonical" href="{{ canonical_url }}">
{% if paginator.previous_page %}
<link rel="prev" href="{{ paginator.previous_page_path | absolute_url }}">
{% endif %}
{% if paginator.next_page %}
<link rel="next" href="{{ paginator.next_page_path | absolute_url }}">
{% endif %}
<script type="application/ld+json">
{
"@context": "https://schema.org",
{% if site.social.type == "Organization" %}
"@type": "Organization",
"url": {{ '/' | absolute_url | jsonify }}{% if site.og_image %},
"logo": {{ site_og_image | jsonify }}{% endif %}
{% else %}
"@type": "Person",
"name": {{ site.social.name | default: site.name | jsonify }},
"url": {{ '/' | absolute_url |jsonify }}{% if site.social.links %},
"sameAs": {{ site.social.links | jsonify }}{% endif %}
{% endif %}
}
</script>
{% if site.google_site_verification %}
<meta name="google-site-verification" content="{{ site.google_site_verification }}" />
{% endif %}
{% if site.bing_site_verification %}
<meta name="msvalidate.01" content="{{ site.bing_site_verification }}">
{% endif %}
{% if site.alexa_site_verification %}
<meta name="alexaVerifyID" content="{{ site.alexa_site_verification }}">
{% endif %}
{% if site.yandex_site_verification %}
<meta name="yandex-verification" content="{{ site.yandex_site_verification }}">
{% endif %}
{% if site.naver_site_verification %}
<meta name="naver-site-verification" content="{{ site.naver_site_verification }}">
{% endif %}
{% if site.baidu_site_verification %}
<meta name="baidu-site-verification" content="{{ site.baidu_site_verification }}">
{% endif %}
<!-- end _includes/seo.html -->

View file

@ -1,31 +0,0 @@
<!-- hacks-guide change start: Implement progress table, replace existing sidebar -->
<!--
{% if page.author_profile or layout.author_profile or page.sidebar %}
<div class="sidebar sticky">
{% if page.author_profile or layout.author_profile %}{% include author-profile.html %}{% endif %}
{% if page.sidebar %}
{% for s in page.sidebar %}
{% if s.image %}
<img src="{{ s.image | relative_url }}"
alt="{% if s.image_alt %}{{ s.image_alt }}{% endif %}">
{% endif %}
{% if s.title %}<h3>{{ s.title }}</h3>{% endif %}
{% if s.text %}{{ s.text | markdownify }}{% endif %}
{% if s.nav %}{% include nav_list nav=s.nav %}{% endif %}
{% endfor %}
{% if page.sidebar.nav %}
{% include nav_list nav=page.sidebar.nav %}
{% endif %}
{% endif %}
</div>
{% endif %}
-->
{% if page.sidebar %}
<div class="sidebar sticky" style="display: none;">
{% include nav_list %}
</div>
{% endif %}
<!-- hacks-guide change end-->

View file

@ -1,7 +0,0 @@
<nav class="skip-links">
<ul>
<li><a href="#site-nav" class="screen-reader-shortcut">{{ site.data.ui-text[site.locale].skip_primary_nav | default: 'Skip to primary navigation' }}</a></li>
<li><a href="#main" class="screen-reader-shortcut">{{ site.data.ui-text[site.locale].skip_content | default: 'Skip to content' }}</a></li>
<li><a href="#footer" class="screen-reader-shortcut">{{ site.data.ui-text[site.locale].skip_footer | default: 'Skip to footer' }}</a></li>
</ul>
</nav>

View file

@ -1,11 +0,0 @@
<section class="page__share">
{% if site.data.ui-text[site.locale].share_on_label %}
<h4 class="page__share-title">{{ site.data.ui-text[site.locale].share_on_label | default: "Share on" }}</h4>
{% endif %}
<a href="https://twitter.com/intent/tweet?{% if site.twitter.username %}via={{ site.twitter.username | url_encode }}&{% endif %}text={{ page.title | url_encode }}%20{{ page.url | absolute_url | url_encode }}" class="btn btn--twitter" onclick="window.open(this.href, 'window', 'left=20,top=20,width=500,height=500,toolbar=1,resizable=0'); return false;" title="{{ site.data.ui-text[site.locale].share_on_label | default: 'Share on' }} Twitter"><i class="fab fa-fw fa-twitter" aria-hidden="true"></i><span> Twitter</span></a>
<a href="https://www.facebook.com/sharer/sharer.php?u={{ page.url | absolute_url | url_encode }}" class="btn btn--facebook" onclick="window.open(this.href, 'window', 'left=20,top=20,width=500,height=500,toolbar=1,resizable=0'); return false;" title="{{ site.data.ui-text[site.locale].share_on_label | default: 'Share on' }} Facebook"><i class="fab fa-fw fa-facebook" aria-hidden="true"></i><span> Facebook</span></a>
<a href="https://www.linkedin.com/shareArticle?mini=true&url={{ page.url | absolute_url | url_encode }}" class="btn btn--linkedin" onclick="window.open(this.href, 'window', 'left=20,top=20,width=500,height=500,toolbar=1,resizable=0'); return false;" title="{{ site.data.ui-text[site.locale].share_on_label | default: 'Share on' }} LinkedIn"><i class="fab fa-fw fa-linkedin" aria-hidden="true"></i><span> LinkedIn</span></a>
</section>

View file

@ -1,19 +0,0 @@
{% case site.tag_archive.type %}
{% when "liquid" %}
{% assign path_type = "#" %}
{% when "jekyll-archives" %}
{% assign path_type = nil %}
{% endcase %}
{% if site.tag_archive.path %}
{% assign tags_sorted = page.tags | sort_natural %}
<p class="page__taxonomy">
<strong><i class="fas fa-fw fa-tags" aria-hidden="true"></i> {{ site.data.ui-text[site.locale].tags_label | default: "Tags:" }} </strong>
<span itemprop="keywords">
{% for tag_word in tags_sorted %}
<a href="{{ tag_word | slugify | prepend: path_type | prepend: site.tag_archive.path | relative_url }}" class="page__taxonomy-item" rel="tag">{{ tag_word }}</a>{% unless forloop.last %}<span class="sep">, </span>{% endunless %}
{% endfor %}
</span>
</p>
{% endif %}

View file

@ -1,7 +0,0 @@
<aside class="sidebar__right">
<nav class="toc" markdown="1">
<header><h4 class="nav__title"><i class="fas fa-{{ include.icon | default: 'file-alt' }}"></i> {{ include.title | default: site.data.ui-text[site.locale].toc_label }}</h4></header>
* Auto generated table of contents
{:toc .toc__menu}
</nav>
</aside>

View file

@ -1,182 +0,0 @@
{% capture tocWorkspace %}
{% comment %}
Copyright (c) 2017 Vladimir "allejo" Jimenez
Permission is hereby granted, free of charge, to any person
obtaining a copy of this software and associated documentation
files (the "Software"), to deal in the Software without
restriction, including without limitation the rights to use,
copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the
Software is furnished to do so, subject to the following
conditions:
The above copyright notice and this permission notice shall be
included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
OTHER DEALINGS IN THE SOFTWARE.
{% endcomment %}
{% comment %}
Version 1.1.0
https://github.com/allejo/jekyll-toc
"...like all things liquid - where there's a will, and ~36 hours to spare, there's usually a/some way" ~jaybe
Usage:
{% include toc.html html=content sanitize=true class="inline_toc" id="my_toc" h_min=2 h_max=3 %}
Parameters:
* html (string) - the HTML of compiled markdown generated by kramdown in Jekyll
Optional Parameters:
* sanitize (bool) : false - when set to true, the headers will be stripped of any HTML in the TOC
* class (string) : '' - a CSS class assigned to the TOC
* id (string) : '' - an ID to assigned to the TOC
* h_min (int) : 1 - the minimum TOC header level to use; any header lower than this value will be ignored
* h_max (int) : 6 - the maximum TOC header level to use; any header greater than this value will be ignored
* ordered (bool) : false - when set to true, an ordered list will be outputted instead of an unordered list
* item_class (string) : '' - add custom class(es) for each list item; has support for '%level%' placeholder, which is the current heading level
* submenu_class (string) : '' - add custom class(es) for each child group of headings; has support for '%level%' placeholder which is the current "submenu" heading level
* base_url (string) : '' - add a base url to the TOC links for when your TOC is on another page than the actual content
* anchor_class (string) : '' - add custom class(es) for each anchor element
* skip_no_ids (bool) : false - skip headers that do not have an `id` attribute
Output:
An ordered or unordered list representing the table of contents of a markdown block. This snippet will only
generate the table of contents and will NOT output the markdown given to it
{% endcomment %}
{% capture newline %}
{% endcapture %}
{% assign newline = newline | rstrip %} <!-- Remove the extra spacing but preserve the newline -->
{% capture deprecation_warnings %}{% endcapture %}
{% if include.baseurl %}
{% capture deprecation_warnings %}{{ deprecation_warnings }}<!-- jekyll-toc :: "baseurl" has been deprecated, use "base_url" instead -->{{ newline }}{% endcapture %}
{% endif %}
{% if include.skipNoIDs %}
{% capture deprecation_warnings %}{{ deprecation_warnings }}<!-- jekyll-toc :: "skipNoIDs" has been deprecated, use "skip_no_ids" instead -->{{ newline }}{% endcapture %}
{% endif %}
{% capture jekyll_toc %}{% endcapture %}
{% assign orderedList = include.ordered | default: false %}
{% assign baseURL = include.base_url | default: include.baseurl | default: '' %}
{% assign skipNoIDs = include.skip_no_ids | default: include.skipNoIDs | default: false %}
{% assign minHeader = include.h_min | default: 1 %}
{% assign maxHeader = include.h_max | default: 6 %}
{% assign nodes = include.html | strip | split: '<h' %}
{% assign firstHeader = true %}
{% assign currLevel = 0 %}
{% assign lastLevel = 0 %}
{% capture listModifier %}{% if orderedList %}ol{% else %}ul{% endif %}{% endcapture %}
{% for node in nodes %}
{% if node == "" %}
{% continue %}
{% endif %}
{% assign currLevel = node | replace: '"', '' | slice: 0, 1 | times: 1 %}
{% if currLevel < minHeader or currLevel > maxHeader %}
{% continue %}
{% endif %}
{% assign _workspace = node | split: '</h' %}
{% assign _idWorkspace = _workspace[0] | split: 'id="' %}
{% assign _idWorkspace = _idWorkspace[1] | split: '"' %}
{% assign htmlID = _idWorkspace[0] %}
{% assign _classWorkspace = _workspace[0] | split: 'class="' %}
{% assign _classWorkspace = _classWorkspace[1] | split: '"' %}
{% assign htmlClass = _classWorkspace[0] %}
{% if htmlClass contains "no_toc" %}
{% continue %}
{% endif %}
{% if firstHeader %}
{% assign minHeader = currLevel %}
{% endif %}
{% capture _hAttrToStrip %}{{ _workspace[0] | split: '>' | first }}>{% endcapture %}
{% assign header = _workspace[0] | replace: _hAttrToStrip, '' %}
{% if include.item_class and include.item_class != blank %}
{% capture listItemClass %} class="{{ include.item_class | replace: '%level%', currLevel | split: '.' | join: ' ' }}"{% endcapture %}
{% endif %}
{% if include.submenu_class and include.submenu_class != blank %}
{% assign subMenuLevel = currLevel | minus: 1 %}
{% capture subMenuClass %} class="{{ include.submenu_class | replace: '%level%', subMenuLevel | split: '.' | join: ' ' }}"{% endcapture %}
{% endif %}
{% capture anchorBody %}{% if include.sanitize %}{{ header | strip_html }}{% else %}{{ header }}{% endif %}{% endcapture %}
{% if htmlID %}
{% capture anchorAttributes %} href="{% if baseURL %}{{ baseURL }}{% endif %}#{{ htmlID }}"{% endcapture %}
{% if include.anchor_class %}
{% capture anchorAttributes %}{{ anchorAttributes }} class="{{ include.anchor_class | split: '.' | join: ' ' }}"{% endcapture %}
{% endif %}
{% capture listItem %}<a{{ anchorAttributes }}>{{ anchorBody }}</a>{% endcapture %}
{% elsif skipNoIDs == true %}
{% continue %}
{% else %}
{% capture listItem %}{{ anchorBody }}{% endcapture %}
{% endif %}
{% if currLevel > lastLevel %}
{% capture jekyll_toc %}{{ jekyll_toc }}<{{ listModifier }}{{ subMenuClass }}>{% endcapture %}
{% elsif currLevel < lastLevel %}
{% assign repeatCount = lastLevel | minus: currLevel %}
{% for i in (1..repeatCount) %}
{% capture jekyll_toc %}{{ jekyll_toc }}</li></{{ listModifier }}>{% endcapture %}
{% endfor %}
{% capture jekyll_toc %}{{ jekyll_toc }}</li>{% endcapture %}
{% else %}
{% capture jekyll_toc %}{{ jekyll_toc }}</li>{% endcapture %}
{% endif %}
{% capture jekyll_toc %}{{ jekyll_toc }}<li{{ listItemClass }}>{{ listItem }}{% endcapture %}
{% assign lastLevel = currLevel %}
{% assign firstHeader = false %}
{% endfor %}
{% assign repeatCount = minHeader | minus: 1 %}
{% assign repeatCount = lastLevel | minus: repeatCount %}
{% for i in (1..repeatCount) %}
{% capture jekyll_toc %}{{ jekyll_toc }}</li></{{ listModifier }}>{% endcapture %}
{% endfor %}
{% if jekyll_toc != '' %}
{% assign rootAttributes = '' %}
{% if include.class and include.class != blank %}
{% capture rootAttributes %} class="{{ include.class | split: '.' | join: ' ' }}"{% endcapture %}
{% endif %}
{% if include.id and include.id != blank %}
{% capture rootAttributes %}{{ rootAttributes }} id="{{ include.id }}"{% endcapture %}
{% endif %}
{% if rootAttributes %}
{% assign nodes = jekyll_toc | split: '>' %}
{% capture jekyll_toc %}<{{ listModifier }}{{ rootAttributes }}>{{ nodes | shift | join: '>' }}>{% endcapture %}
{% endif %}
{% endif %}
{% endcapture %}{% assign tocWorkspace = '' %}{{ deprecation_warnings }}{{ jekyll_toc }}

View file

@ -1,24 +0,0 @@
{% capture video_id %}{{ include.id }}{% endcapture %}
{% capture video_provider %}{{ include.provider }}{% endcapture %}
{% capture video_danmaku %}{{ include.danmaku | default: 0 }}{% endcapture %}
{% capture video_src %}
{% case video_provider %}
{% when "vimeo" %}
https://player.vimeo.com/video/{{ video_id }}?dnt=true
{% when "youtube" %}
https://www.youtube-nocookie.com/embed/{{ video_id }}
{% when "google-drive" %}
https://drive.google.com/file/d/{{ video_id }}/preview
{% when "bilibili" %}
https://player.bilibili.com/player.html?bvid={{ video_id }}&page=1&as_wide=1&high_quality=1&danmaku={{ video_danmaku }}
{% endcase %}
{% endcapture %}
{% assign video_src = video_src | strip %}
<!-- Courtesy of embedresponsively.com //-->
{% unless video_src == "" %}
<div class="responsive-video-container">
<iframe src="{{ video_src }}" frameborder="0" webkitAllowFullScreen mozallowfullscreen allowfullscreen></iframe>
</div>
{% endunless %}

View file

@ -1,29 +0,0 @@
---
layout: default
author_profile: false
---
{% if page.header.overlay_color or page.header.overlay_image or page.header.image %}
{% include page__hero.html %}
{% elsif page.header.video.id and page.header.video.provider %}
{% include page__hero_video.html %}
{% endif %}
{% if page.url != "/" and site.breadcrumbs %}
{% unless paginator %}
{% include breadcrumbs.html %}
{% endunless %}
{% endif %}
<div id="main" role="main">
{% include sidebar.html %}
<div class="archive">
{% unless page.header.overlay_color or page.header.overlay_image %}
<h1 id="page-title" class="page__title">{{ page.title }}</h1>
{% endunless %}
{% for post in page.posts %}
{% include archive-single.html %}
{% endfor %}
</div>
</div>

View file

@ -1,26 +0,0 @@
---
layout: default
---
{% if page.header.overlay_color or page.header.overlay_image or page.header.image %}
{% include page__hero.html %}
{% elsif page.header.video.id and page.header.video.provider %}
{% include page__hero_video.html %}
{% endif %}
{% if page.url != "/" and site.breadcrumbs %}
{% unless paginator %}
{% include breadcrumbs.html %}
{% endunless %}
{% endif %}
<div id="main" role="main">
{% include sidebar.html %}
<div class="archive">
{% unless page.header.overlay_color or page.header.overlay_image %}
<h1 id="page-title" class="page__title">{{ page.title }}</h1>
{% endunless %}
{{ content }}
</div>
</div>

View file

@ -1,43 +0,0 @@
---
layout: archive
---
{{ content }}
{% assign categories_max = 0 %}
{% for category in site.categories %}
{% if category[1].size > categories_max %}
{% assign categories_max = category[1].size %}
{% endif %}
{% endfor %}
<ul class="taxonomy__index">
{% for i in (1..categories_max) reversed %}
{% for category in site.categories %}
{% if category[1].size == i %}
<li>
<a href="#{{ category[0] | slugify }}">
<strong>{{ category[0] }}</strong> <span class="taxonomy__count">{{ i }}</span>
</a>
</li>
{% endif %}
{% endfor %}
{% endfor %}
</ul>
{% assign entries_layout = page.entries_layout | default: 'list' %}
{% for i in (1..categories_max) reversed %}
{% for category in site.categories %}
{% if category[1].size == i %}
<section id="{{ category[0] | slugify | downcase }}" class="taxonomy__section">
<h2 class="archive__subtitle">{{ category[0] }}</h2>
<div class="entries-{{ entries_layout }}">
{% for post in category.last %}
{% include archive-single.html type=entries_layout %}
{% endfor %}
</div>
<a href="#page-title" class="back-to-top">{{ site.data.ui-text[site.locale].back_to_top | default: 'Back to Top' }} &uarr;</a>
</section>
{% endif %}
{% endfor %}
{% endfor %}

View file

@ -1,10 +0,0 @@
---
layout: archive
---
{{ content }}
{% assign entries_layout = page.entries_layout | default: 'list' %}
<div class="entries-{{ entries_layout }}">
{% include posts-category.html taxonomy=page.taxonomy type=entries_layout %}
</div>

View file

@ -1,10 +0,0 @@
---
layout: archive
---
{{ content }}
{% assign entries_layout = page.entries_layout | default: 'list' %}
<div class="entries-{{ entries_layout }}">
{% include documents-collection.html collection=page.collection sort_by=page.sort_by sort_order=page.sort_order type=entries_layout %}
</div>

View file

@ -1,10 +0,0 @@
---
# Jekyll layout that compresses HTML
# v3.1.0
# http://jch.penibelst.de/
# © 20142015 Anatol Broder
# MIT License
---
{% capture _LINE_FEED %}
{% endcapture %}{% if site.compress_html.ignore.envs contains jekyll.environment or site.compress_html.ignore.envs == "all" %}{{ content }}{% else %}{% capture _content %}{{ content }}{% endcapture %}{% assign _profile = site.compress_html.profile %}{% if site.compress_html.endings == "all" %}{% assign _endings = "html head body li dt dd optgroup option colgroup caption thead tbody tfoot tr td th" | split: " " %}{% else %}{% assign _endings = site.compress_html.endings %}{% endif %}{% for _element in _endings %}{% capture _end %}</{{ _element }}>{% endcapture %}{% assign _content = _content | remove: _end %}{% endfor %}{% if _profile and _endings %}{% assign _profile_endings = _content | size | plus: 1 %}{% endif %}{% for _element in site.compress_html.startings %}{% capture _start %}<{{ _element }}>{% endcapture %}{% assign _content = _content | remove: _start %}{% endfor %}{% if _profile and site.compress_html.startings %}{% assign _profile_startings = _content | size | plus: 1 %}{% endif %}{% if site.compress_html.comments == "all" %}{% assign _comments = "<!-- -->" | split: " " %}{% else %}{% assign _comments = site.compress_html.comments %}{% endif %}{% if _comments.size == 2 %}{% capture _comment_befores %}.{{ _content }}{% endcapture %}{% assign _comment_befores = _comment_befores | split: _comments.first %}{% for _comment_before in _comment_befores %}{% if forloop.first %}{% continue %}{% endif %}{% capture _comment_outside %}{% if _carry %}{{ _comments.first }}{% endif %}{{ _comment_before }}{% endcapture %}{% capture _comment %}{% unless _carry %}{{ _comments.first }}{% endunless %}{{ _comment_outside | split: _comments.last | first }}{% if _comment_outside contains _comments.last %}{{ _comments.last }}{% assign _carry = false %}{% else %}{% assign _carry = true %}{% endif %}{% endcapture %}{% assign _content = _content | remove_first: _comment %}{% endfor %}{% if _profile %}{% assign _profile_comments = _content | size | plus: 1 %}{% endif %}{% endif %}{% assign _pre_befores = _content | split: "<pre" %}{% assign _content = "" %}{% for _pre_before in _pre_befores %}{% assign _pres = _pre_before | split: "</pre>" %}{% assign _pres_after = "" %}{% if _pres.size != 0 %}{% if site.compress_html.blanklines %}{% assign _lines = _pres.last | split: _LINE_FEED %}{% capture _pres_after %}{% for _line in _lines %}{% assign _trimmed = _line | split: " " | join: " " %}{% if _trimmed != empty or forloop.last %}{% unless forloop.first %}{{ _LINE_FEED }}{% endunless %}{{ _line }}{% endif %}{% endfor %}{% endcapture %}{% else %}{% assign _pres_after = _pres.last | split: " " | join: " " %}{% endif %}{% endif %}{% capture _content %}{{ _content }}{% if _pre_before contains "</pre>" %}<pre{{ _pres.first }}</pre>{% endif %}{% unless _pre_before contains "</pre>" and _pres.size == 1 %}{{ _pres_after }}{% endunless %}{% endcapture %}{% endfor %}{% if _profile %}{% assign _profile_collapse = _content | size | plus: 1 %}{% endif %}{% if site.compress_html.clippings == "all" %}{% assign _clippings = "html head title base link meta style body article section nav aside h1 h2 h3 h4 h5 h6 hgroup header footer address p hr blockquote ol ul li dl dt dd figure figcaption main div table caption colgroup col tbody thead tfoot tr td th" | split: " " %}{% else %}{% assign _clippings = site.compress_html.clippings %}{% endif %}{% for _element in _clippings %}{% assign _edges = " <e;<e; </e>;</e>;</e> ;</e>" | replace: "e", _element | split: ";" %}{% assign _content = _content | replace: _edges[0], _edges[1] | replace: _edges[2], _edges[3] | replace: _edges[4], _edges[5] %}{% endfor %}{% if _profile and _clippings %}{% assign _profile_clippings = _content | size | plus: 1 %}{% endif %}{{ _content }}{% if _profile %} <table id="compress_html_profile_{{ site.time | date: "%Y%m%d" }}" class="compress_html_profile"> <thead> <tr> <td>Step <td>Bytes <tbody> <tr> <td>raw <td>{{ content | size }}{% if _profile_endings %} <tr> <td>endings <td>{{ _profile_endings }}{% endif %}{% if _profile_startings %} <tr> <td>startings <td>{{ _profile_startings }}{% endif %}{% if _profile_comments %} <tr> <td>comments <td>{{ _profile_comments }}{% endif %}{% if _profile_collapse %} <tr> <td>collapse <td>{{ _profile_collapse }}{% endif %}{% if _profile_clippings %} <tr> <td>clippings <td>{{ _profile_clippings }}{% endif %} </table>{% endif %}{% endif %}

View file

@ -1,45 +0,0 @@
---
---
<!doctype html>
<!--
Minimal Mistakes Jekyll Theme 4.24.0 by Michael Rose
Copyright 2013-2020 Michael Rose - mademistakes.com | @mmistakes
Free for personal and commercial use under the MIT license
https://github.com/mmistakes/minimal-mistakes/blob/master/LICENSE
-->
<html lang="{{ site.locale | slice: 0,2 | default: "en" }}" class="no-js">
<head>
{% include head.html %}
{% include head/custom.html %}
</head>
<!-- hacks-guide change start: Disable caching -->
<body class="layout--{{ page.layout | default: layout.layout }}{% if page.classes or layout.classes %}{{ page.classes | default: layout.classes | join: ' ' | prepend: ' ' }}{% endif %}">
{% include skip-links.html %}
{% include browser-upgrade.html %}
{% include masthead.html %}
<div class="initial-content">
{{ content }}
</div>
{% if site.search == true %}
<div class="search-content">
{% include search/search_form.html %}
</div>
{% endif %}
<div id="footer" class="page__footer">
<footer>
{% include footer/custom.html %}
{% include footer.html %}
</footer>
</div>
<!-- hacks-guide change end -->
{% include scripts.html %}
</body>
</html>

View file

@ -1,22 +0,0 @@
---
layout: archive
---
{{ content }}
<h3 class="archive__subtitle">{{ site.data.ui-text[site.locale].recent_posts | default: "Recent Posts" }}</h3>
{% if paginator %}
{% assign posts = paginator.posts %}
{% else %}
{% assign posts = site.posts %}
{% endif %}
{% assign entries_layout = page.entries_layout | default: 'list' %}
<div class="entries-{{ entries_layout }}">
{% for post in posts %}
{% include archive-single.html type=entries_layout %}
{% endfor %}
</div>
{% include paginator.html %}

View file

@ -1,30 +0,0 @@
---
layout: archive
---
{{ content }}
<ul class="taxonomy__index">
{% assign postsInYear = site.posts | where_exp: "item", "item.hidden != true" | group_by_exp: 'post', 'post.date | date: "%Y"' %}
{% for year in postsInYear %}
<li>
<a href="#{{ year.name }}">
<strong>{{ year.name }}</strong> <span class="taxonomy__count">{{ year.items | size }}</span>
</a>
</li>
{% endfor %}
</ul>
{% assign entries_layout = page.entries_layout | default: 'list' %}
{% assign postsByYear = site.posts | where_exp: "item", "item.hidden != true" | group_by_exp: 'post', 'post.date | date: "%Y"' %}
{% for year in postsByYear %}
<section id="{{ year.name }}" class="taxonomy__section">
<h2 class="archive__subtitle">{{ year.name }}</h2>
<div class="entries-{{ entries_layout }}">
{% for post in year.items %}
{% include archive-single.html type=entries_layout %}
{% endfor %}
</div>
<a href="#page-title" class="back-to-top">{{ site.data.ui-text[site.locale].back_to_top | default: 'Back to Top' }} &uarr;</a>
</section>
{% endfor %}

View file

@ -1,42 +0,0 @@
---
layout: default
---
{% if page.header.overlay_color or page.header.overlay_image or page.header.image %}
{% include page__hero.html %}
{% endif %}
{% if page.url != "/" and site.breadcrumbs %}
{% unless paginator %}
{% include breadcrumbs.html %}
{% endunless %}
{% endif %}
<div id="main" role="main">
{% include sidebar.html %}
<div class="archive">
{% unless page.header.overlay_color or page.header.overlay_image %}
<h1 id="page-title" class="page__title">{{ page.title }}</h1>
{% endunless %}
{{ content }}
{%- assign search_provider = site.search_provider | default: "lunr" -%}
{%- case search_provider -%}
{%- when "lunr" -%}
<input type="text" id="search" class="search-input" placeholder="{{ site.data.ui-text[site.locale].search_placeholder_text | default: 'Enter your search term...' }}" />
<div id="results" class="results"></div>
{%- when "google" -%}
<form onsubmit="return googleCustomSearchExecute();" id="cse-search-box-form-id">
<input type="text" id="cse-search-input-box-id" class="search-input" placeholder="{{ site.data.ui-text[site.locale].search_placeholder_text | default: 'Enter your search term...' }}" />
</form>
<div id="results" class="results">
<gcse:searchresults-only></gcse:searchresults-only>
</div>
{%- when "algolia" -%}
<div class="search-searchbar"></div>
<div class="search-hits"></div>
{%- endcase -%}
</div>
</div>

View file

@ -1,108 +0,0 @@
---
layout: default
---
{% if page.header.overlay_color or page.header.overlay_image or page.header.image %}
{% include page__hero.html %}
{% elsif page.header.video.id and page.header.video.provider %}
{% include page__hero_video.html %}
{% endif %}
{% if page.url != "/" and site.breadcrumbs %}
{% unless paginator %}
{% include breadcrumbs.html %}
{% endunless %}
{% endif %}
<div id="main" role="main">
{% include sidebar.html %}
<article class="page" itemscope itemtype="https://schema.org/CreativeWork">
{% if page.title %}<meta itemprop="headline" content="{{ page.title | markdownify | strip_html | strip_newlines | escape_once }}">{% endif %}
{% if page.excerpt %}<meta itemprop="description" content="{{ page.excerpt | markdownify | strip_html | strip_newlines | escape_once }}">{% endif %}
{% if page.date %}<meta itemprop="datePublished" content="{{ page.date | date_to_xmlschema }}">{% endif %}
{% if page.last_modified_at %}<meta itemprop="dateModified" content="{{ page.last_modified_at | date_to_xmlschema }}">{% endif %}
<div class="page__inner-wrap">
{% unless page.header.overlay_color or page.header.overlay_image %}
<header>
{% if page.title %}<h1 id="page-title" class="page__title" itemprop="headline">{{ page.title | markdownify | remove: "<p>" | remove: "</p>" }}</h1>{% endif %}
{% include page__meta.html %}
</header>
{% endunless %}
<section class="page__content" itemprop="text">
{% if page.toc %}
<aside class="sidebar__right {% if page.toc_sticky %}sticky{% endif %}">
<nav class="toc">
<header><h4 class="nav__title"><i class="fas fa-{{ page.toc_icon | default: 'file-alt' }}"></i> {{ page.toc_label | default: site.data.ui-text[site.locale].toc_label | default: "On this page" }}</h4></header>
{% include toc.html sanitize=true html=content h_min=1 h_max=6 class="toc__menu" skip_no_ids=true %}
</nav>
</aside>
{% endif %}
<!-- hacks-guide change start -->
<hr>
{% assign split_path = page.path | split: "/" %}
{% assign locale = split_path[1] %}
{% for link in site.data.navigation[locale].bottom %}
{% if link.url contains 'http' %}
{% assign domain = '' %}
{% else %}
{% assign domain = site.url | append: site.baseurl %}
{% endif %}
<div class ="notice"><b>{{ link.title }}</b></div>
{% endfor %}
<hr>
<!-- hacks-guide change end -->
{{ content }}
{% if page.link %}<div><a href="{{ page.link }}" class="btn btn--primary">{{ site.data.ui-text[site.locale].ext_link_label | default: "Direct Link" }}</a></div>{% endif %}
</section>
<footer class="page__meta">
{% if site.data.ui-text[site.locale].meta_label %}
<h4 class="page__meta-title">{{ site.data.ui-text[site.locale].meta_label }}</h4>
{% endif %}
{% include page__taxonomy.html %}
{% include page__date.html %}
</footer>
{% if page.share %}{% include social-share.html %}{% endif %}
{% include post_pagination.html %}
</div>
{% if jekyll.environment == 'production' and site.comments.provider and page.comments %}
{% include comments.html %}
{% endif %}
</article>
{% comment %}<!-- only show related on a post page when `related: true` -->{% endcomment %}
{% if page.id and page.related and site.related_posts.size > 0 %}
<div class="page__related">
<h4 class="page__related-title">{{ site.data.ui-text[site.locale].related_label | default: "You May Also Enjoy" }}</h4>
<div class="grid__wrapper">
{% for post in site.related_posts limit:4 %}
{% include archive-single.html type="grid" %}
{% endfor %}
</div>
</div>
{% comment %}<!-- otherwise show recent posts if no related when `related: true` -->{% endcomment %}
{% elsif page.id and page.related %}
<div class="page__related">
<h4 class="page__related-title">{{ site.data.ui-text[site.locale].related_label | default: "You May Also Enjoy" }}</h4>
<div class="grid__wrapper">
{% for post in site.posts limit:4 %}
{% if post.id == page.id %}
{% continue %}
{% endif %}
{% include archive-single.html type="grid" %}
{% endfor %}
</div>
</div>
{% endif %}
</div>

View file

@ -1,41 +0,0 @@
---
layout: default
---
{% if page.header.overlay_color or page.header.overlay_image or page.header.image %}
{% include page__hero.html %}
{% elsif page.header.video.id and page.header.video.provider %}
{% include page__hero_video.html %}
{% endif %}
<div id="main" role="main">
<article class="splash" itemscope itemtype="https://schema.org/CreativeWork">
{% if page.title %}<meta itemprop="headline" content="{{ page.title | markdownify | strip_html | strip_newlines | escape_once }}">{% endif %}
{% if page.excerpt %}<meta itemprop="description" content="{{ page.excerpt | markdownify | strip_html | strip_newlines | escape_once }}">{% endif %}
{% if page.date %}<meta itemprop="datePublished" content="{{ page.date | date_to_xmlschema }}">{% endif %}
{% if page.last_modified_at %}<meta itemprop="dateModified" content="{{ page.last_modified_at | date_to_xmlschema }}">{% endif %}
<section class="page__content" itemprop="text">
<!-- hacks-guide change start -->
<hr>
{% assign split_path = page.path | split: "/" %}
{% assign locale = split_path[1] %}
{% for link in site.data.navigation[locale].bottom %}
{% if link.url contains 'http' %}
{% assign domain = '' %}
{% else %}
{% assign domain = site.url | append: site.baseurl %}
{% endif %}
<div class ="notice"><b>{{ link.title }}</b></div>
{% endfor %}
<hr>
<!-- hacks-guide change end -->
{{ content }}
</section>
</article>
</div>

View file

@ -1,10 +0,0 @@
---
layout: archive
---
{{ content }}
{% assign entries_layout = page.entries_layout | default: 'list' %}
<div class="entries-{{ entries_layout }}">
{% include posts-tag.html taxonomy=page.taxonomy type=entries_layout %}
</div>

View file

@ -1,43 +0,0 @@
---
layout: archive
---
{{ content }}
{% assign tags_max = 0 %}
{% for tag in site.tags %}
{% if tag[1].size > tags_max %}
{% assign tags_max = tag[1].size %}
{% endif %}
{% endfor %}
<ul class="taxonomy__index">
{% for i in (1..tags_max) reversed %}
{% for tag in site.tags %}
{% if tag[1].size == i %}
<li>
<a href="#{{ tag[0] | slugify }}">
<strong>{{ tag[0] }}</strong> <span class="taxonomy__count">{{ i }}</span>
</a>
</li>
{% endif %}
{% endfor %}
{% endfor %}
</ul>
{% assign entries_layout = page.entries_layout | default: 'list' %}
{% for i in (1..tags_max) reversed %}
{% for tag in site.tags %}
{% if tag[1].size == i %}
<section id="{{ tag[0] | slugify | downcase }}" class="taxonomy__section">
<h2 class="archive__subtitle">{{ tag[0] }}</h2>
<div class="entries-{{ entries_layout }}">
{% for post in tag.last %}
{% include archive-single.html type=entries_layout %}
{% endfor %}
</div>
<a href="#page-title" class="back-to-top">{{ site.data.ui-text[site.locale].back_to_top | default: 'Back to Top' }} &uarr;</a>
</section>
{% endif %}
{% endfor %}
{% endfor %}

12
_pages/ca_ES/410.md Normal file
View file

@ -0,0 +1,12 @@
---
title: Page no longer exists
sitemap: false
---
The page you are trying to view used to exist, but it has since been removed. Maybe the instructions you are following are outdated? (If you got here from a link on this guide, [let us know](https://github.com/hacks-guide/Guide_Wii/issues))
[Click here to go back to the site index.](site-navigation)
{: .notice--info}
![](https://http.cat/410)
{: .notice--info}

View file

@ -6,21 +6,9 @@ title: "BootMii Backup"
BootMii allows for backing up and restoring your Wii's NAND storage. This page will guide you in backing up your Wii's NAND to an SD Card, which you can then use however you like.
Family edition Wiis (Wiis without GameCube ports) CANNOT restore NAND backups. This is because of the lack of GameCube ports which are required on non-boot2 Wiis to enter the restoration confirmation code. Regardless, it is still recommended to make one on these consoles.
{: .notice--danger}
You need an **SD card** to use BootMii at all, but especially to create a NAND backup. If you do not have an SD card on hand right now, you can skip this page, but it is HIGHLY RECOMMENDED to return to this page later to back up your NAND.
{: .notice--warning}
Navigating BootMii is not possible using a Wii Remote. You must use the POWER and RESET buttons on your console, or a GameCube controller plugged into port 1. To navigate between options, press POWER on your Wii (or left/right on the +Control Pad on a GameCube controller). To select an option, press RESET on your Wii or A on your GameCube controller. You will NEED to use a GameCube controller to restore a NAND backup in the future if BootMii is installed as IOS.
{: .notice--info}
If the `Launch BootMii` button does not appear in the Homebrew Channel, [re-launch the HackMii Installer](hackmii) and install BootMii.
{: .notice--warning}
If the screen stays black and the blue disc drive light is blinking upon launching BootMii, you are missing the BootMii files on your SD card. Download [this zip file](/assets/files/bootmii_sd_files.zip) and extract it to the root of your SD card, then try again.
{: .notice--warning}
### Requirements
* An SD card with at least 512MB of free space
@ -36,10 +24,19 @@ If you have BootMii installed as boot2, you will need to launch BootMii by resta
![](/images/bootmii/BootMii_HBC.png)
If the `Launch BootMii` button does not appear in the Homebrew Channel, [re-launch the HackMii Installer](hackmii) and install BootMii.
{: .notice--warning}
If the screen stays black and the blue disc drive light is blinking upon launching BootMii, you are missing the BootMii files on your SD card. Download [this zip file](/assets/files/bootmii_sd_files.zip) and extract it to the root of your SD card, then try again.
{: .notice--warning}
1. You should see an image similar to the below now on your screen:
![](/images/bootmii/BootMii_Main.png)
Navigating BootMii is not possible using a Wii Remote. You must use the POWER and RESET buttons on your console, or a GameCube controller plugged into port 1. To navigate between options, press POWER. To select an option, press RESET.
{: .notice--info}
1. Select the Options button (the icon with the gears).
![](/images/bootmii/BootMii_Gears.png)
@ -65,7 +62,7 @@ If you have BootMii installed as boot2, you will need to launch BootMii by resta
<div id="restore-notice" class="notice" markdown="1">
Note: **restoring a NAND backup is usually a last resort**. There often better ways to unbrick your console.
Try your best to [identify your brick condition](bricks) and reverse the action that caused it in the first place.
To restore from a NAND backup on your SD card, you can follow the instructions for [RestoreMii](bootmiirecover) (Original Wii only).
To restore from a NAND backup on your SD card, you can follow the instructions for [RestoreMii](bootmiirecover). **Family edition Wiis (Wiis without GameCube ports) CANNOT restore NAND backups.**
</div>
As stated earlier, if you have BootMii installed as boot2, it will launch every time you start your console. If you would like to change this, you can use the app [BootMii Config Editor](https://oscwii.org/library/app/BootMiiConfigurationEditor). Or, you can edit `sd:/bootmii/bootmii.ini` manually.

View file

@ -111,7 +111,7 @@ Attempt to start the Wii - warning/press A screen shows up, and when A is presse
A theme brick occurs when a wrongly formatted theme is installed.
#### Solutions
To resolve this issue, open HBC through Priiloader or BootMii as boot2 and access MyMenuifyMod to install a default theme such as the base Wii Menu theme. Alternatively, go into [YAWM ModMii Edition](yawmme) and install the CORRECT default Wii Menu WAD for your region and version.
To resolve this issue, open HBC through Priiloader or BootMii as boot2 and access csm-installer to install a default theme such as the base Wii Menu theme. Alternatively, go into [YAWM ModMii Edition](yawmme) and install the CORRECT default Wii Menu WAD for your region and version.
## Mail brick

View file

@ -65,6 +65,12 @@ The WAD files should be on your SD card like this: ![](/images/cios/d2x_offline_
![](/images/cios/d2x_v11_248.png)
The warning "`(c)IOS detected in slot ### will be overwriitten`" can be safely ignored.
{: .notice--info}
If you are seeing "`Slot ### already used in batch settings`" or "`cIOS already added in batch with revision ##### and slot ###`", press `-` to disable batch mode. <br> (If you are trying to exit the installer, the button is B, not Home.)
{: .notice--info}
1. Press `A`. This will bring you to the slot map:
![](/images/cios/d2x_summary.png)

View file

@ -0,0 +1,5 @@
---
title: Redirecting...
---
{% include redirect.html redirect_to="faq.html" %}

View file

@ -6,7 +6,7 @@ title: "Homebrew Channel and BootMii Installation"
The Homebrew Channel is where you will go to launch homebrew applications. BootMii is a piece of software that can backup and restore your Wii's NAND storage, and if installed in boot2, provide brick protection.
BootMii can be installed in two ways: directly to a part of the Wii bootloader called boot2, and via an IOS. BootMii under boot2 is preferred as it provides extended brick protection, but Wiis with a vulnerable boot2 are considerably rarer, having been manufactured before 2009. In most cases, installing BootMii as IOS should be fine, as long as you also install [Priiloader](priiloader).
BootMii can be installed in two ways: directly to a part of the Wii bootloader called boot2, and via an IOS. BootMii under boot2 is preferred as it provides extended brick protection, but Wiis with a vulnerable boot1 that allows this installation are considerably rarer, having been manufactured before 2009. In most cases, installing BootMii as IOS should be fine, as long as you also install [Priiloader](priiloader).
{: .notice--info}
If you do not have an SD card, you cannot install nor use BootMii, regardless of whether you install it as IOS or boot2. You can always [install it later](hackmii).

View file

@ -4,116 +4,190 @@ title: "ModMii"
{% include toc title="Table of Contents" %}
If you need help for anything regarding this tutorial, please join [the ModMii Discord server](https://discord.gg/cMnBRACQwQ).
{: .notice--info}
This Program does NOT come with a warranty, so you are responsible for any potential damage done to your Wii.
{: .notice--warning}
This program is NOT intended to be used for the vWii or the Wii mini. Any usage on vWii or Wii mini is untested.
{: .notice--warning}
ModMii is a PC program for Windows created by XFlak that has various helpful tools for modding, including some tutorials that may not be currently available on this website.<br> You can choose to launch in ModMii skin, which has a more user-friendly interface, or launch in ModMii Classic, which uses a command-line (Command Prompt/Terminal) interface.
ModMii is an all-in-one Wii hacking tool for Windows created by XFlak that has various helpful tools for modding. It can accomplish the following:
Some advanced options may not be accessible in ModMii Skin. A list of the features available in ModMii Classic can be found at the bottom of the page.
{: .notice--info}
+ Hacking the console for the first time, or re-hacking it
+ Check for and update outdated softmods
+ Fix upside-down Homebrew Channel problems
+ Run homebrew without making any changes to your Wii's NAND
+ Download homebrew
+ And more!
### Requirements
### ModMii Overview
There are two different ways to use ModMii. There is ModMii Classic, which uses a command line interface, but has all of the features available to the program. ModMii Skin has a graphical user interface, on the other hand, but has less options available to the user. If you're looking to simply mod your Wii for the first time, ModMii Skin should suffice. Otherwise, we reccomend using ModMii Classic where possible. <br> The chart below will help you determine what can be done in either interface.
| Tools | ModMii Classic | ModMii Skin |
| -------------------------- | -------------- | ----------- |
| ModMii Wizard | ✅ | ✅ |
| SysCheck Updater Wizard | ✅ | ⛔ |
| USB Loader Setup Wizard | ✅ | ✅ |
| HackMii Solutions Wizard | ✅ | ✅ |
| Abstinence Wizard | ✅ | ✅ |
| Region Change Wizard | ✅ | ✅ |
| SNEEK/EmuNAND Installation | ✅ | ✅ |
| Open File Function | ✅ | ⛔ |
| Load Download Queue | ✅ | ✅ |
| Download Page 1/2/3/4 | ✅ | ⛔ |
| Advanced Downloads | ✅ | ⛔ |
| Load Download Queue | ✅ | ⛔ |
| Build Config Files | ✅ | ⛔ |
| File Cleanup & App Updater | ✅ | ⛔ |
<details id="Modmii-Tools" class="notice--info" markdown="1">
<summary><a>Click here for a detailed explanation of each tool.</a></summary>
| Tool | Description |
| --------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| W = ModMii Wizard <-- Start Here to Mod Your Wii! | This option can be used to hack your Wii for the first time or re-hack a Wii that has been previously modded. |
| SU = SysCheck Updater Wizard (update only your outdated softmods) | This option checks for and updates old modifications installed to their wii such as DarkCorp/CIOSSPAGHETTI that can potentially cause problems for the latest homebrew custom firmware. |
| U = USB-Loader Setup Wizard | This option will properly set up your USB loader to be able to load your disk backups from an SD or USB hard drive. This option is not necessary if using the ModMii Wizard. |
| H = HackMii Solutions Wizard (Upside-Down HBC\No Vulnerable IOS Fix) | This option is useful for people who are having trouble getting the HackMii Installer to work or have an upside down homebrew channel. |
| AW = Abstinence Wizard (Non-permanent Wii Hacks) | This option allows you to run homebrew on your Wii without making any permanent modifications to the system NAND. |
| RC = Region Change Wizard | This option can be used to change the region of your Wii without bricking it, and is arguably the best region changing wizard on the internet. |
| S = SNEEK Installation, EmuNAND Builder\Modifier, Game Bulk Extractor | This option will help you properly set up an EmuNAND (aka neek2o) onto your SD or USB. Benefits for EmuNAND include extra storage space for save games or channels, as well as running homebrew without making any permanent modifications to the system NAND. |
| F = open a File or Folder with ModMii for many more functions! | This option is an advanced tool especially helpful for developers. |
| 1 = Download Page 1 (System Menus, IOSs, MIOSs, Channels, etc.) | This option opens the first download page that includes most of the key parts of the Wii System Menu (downloaded from NUS). |
| 2 = Download Page 2 (Apps, USB-Loader Files, CheatCodes, etc.) | This option opens the second download page that includes exploits and useful apps for your Wii including some PC programs. |
| 3 = Download Page 3 (System Menu Themes) | This option opens the third download page that includes some system menu themes and items required to install system menu themes (base apps are downloaded from NUS). |
| 4 = Download Page 4 (cIOSs and cMIOSs) | This option opens the fourth download page that includes cIOSes and cMIOSes for use in USB loaders. |
| A = Advanced Downloads and Forwarder DOL\ISO Builder | This option allows you to download any IOS and cIOS and build custom DOL/ISO forwarders. Intended for advanced users only. |
| L = Load Download Queue | This option loads bundled or previously saved download queues. |
| C = Build Config Files for Bootmii, Wad Manager or Multi-Mod Manager | This option allows you to build customized config files for BootMii, Wad Manager, and Multi-Mod Manager. |
| FC = File Cleanup & App Updater: Update Apps and\or remove un-needed files | This option removes unnessecary files from your SD Card or Hard Drive after finishing softmodding your Wii. |
</details><br>
When using ModMii, it is important to note that it will generate a custom guide for you depending on the options that you select. For this reason, this guide will not be focused on how to mod your Wii, as ModMii handles that function. Instead, it will be a quick start guide show you how to effectively use it with the most common options.
### Installing ModMii
#### Requirements
* A Wii
* A USB drive or SD Card
* A Windows PC (a Virtual Machine will work)
* [ModMii](https://modmii.github.io/)
This is a quick start guide on using ModMii on your Windows PC.
#### Installation
### ModMii Wizard
1. Go to the [ModMii website](https://modmii.github.io) and scroll down to the Download section. Here, select the `Installer` option. Your browser may flag the installer as malware, but it is a **false positive**.
You can use the ModMii wizard to softmod any Wii. <br> Even if the Wii has been softmodded in the past, you can have ModMii overwrite existing softmods by telling ModMii that this is the first time you're modding your Wii (even if it isn't).
![](/images/modmii/modmii-download.png)
You can also use this wizard to set up a USB loader at the same time, instead of having to use the USB Loader setup wizard later on.
2. Open the `ModMiiInstaller.exe` file and go through the setup process.
![](/images/modmii/modmii-install.png)
### Using the ModMii Wizard
The ModMii Wizard is tool that can softmod your Wii from start to finish, downloading all necessary files and then generating a guide that you can use to implement the softmod. This tool can also be used to overwrite existing softmods on a previously softmodded Wii.
1. Open ModMii Skin or ModMii Classic and select the ModMii Wizard option at the top of the list.
![](/images/modmii/modmii-wizard-1.png)
1. Answer `Yes` to the first question, unless you have a very specific idea of what you would like to do or update to your Wii.
![](/images/modmii/modmii-wizard-2.png)
1. Select your current System Menu version, followed by the System Menu Region, following the instructions in the program. If you are still confused, check the bottom option on each screen for an instructional video.
![](/images/modmii/modmii-wizard-3.png)
1. Select the exploit you would like to use to mod your Wii. The exploits below are outlined throughout this website, but in most cases we would reccommend using Wilbrand if you have an SD card on hand.
![](/images/modmii/modmii-wizard-4.png)
1. If you selected the Wilbrand option in the previous step, enter your Wii's MAC address. If you don't know how to check your Wii's MAC address, enter `Help` in the text box for an instructional video.
![](/images/modmii/modmii-wizard-5.png)
1. Select your desired System Menu version from the list.
![](/images/modmii/modmii-wizard-6.png)
1. Select whether or not you would like to install any of the listed channels - this is an optional step.
![](/images/modmii/modmii-wizard-7.png)
1. Select whether or not you would like to install a custom Wii theme, with the choice of three theme effects. Each effect deals with how much the outline when hovering over a Wii Channel spins.
![](/images/modmii/modmii-wizard-8.png)
1. Select whether or not you would like to set up a USB Loader for use with your Wii.
![](/images/modmii/modmii-wizard-9.png)
1. If you selected `Yes` in the USB Loader menu, select which USB Loader you would like to use. If you choose an individual one, we reccomend either USB Loader GX or WiiFlow as both are covered on this website, or you may optionally download each option.
![](/images/modmii/modmii-wizard-10.png)
1. If you selected `Yes` in the USB Loader menu, select where you would like to save your USB Loader files at.
![](/images/modmii/modmii-wizard-11.png)
1. Verify where you would like to save files for your SD Card and/or USB Drive.
![](/images/modmii/modmii-wizard-12.png)
1. Confirm your settings are correct, and then press `Finish`. Once you press the button, ModMii will begin to process and download files in the background, and will automatically generate and open a guide for you. From here, you should follow the guide generated by ModMii.
![](/images/modmii/modmii-wizard-13.png)
### SysCheck Updater Wizard
[SysCheck](syscheck) is a homebrew application that analyzes the modifications on a Wii. <br> You can give a SysCheck report to ModMii to help identify & update outdated mods.
The SysCheck Updater Wizard is a tool that utilizes the homebrew app [SysCheck](syscheck) to analyze any modifications on your Wii, especially IOS and cIOS. It accepts a `syscheck.csv` file generated by the app, and then provides any nessecary updates as needed.
You can have ModMii analyze a SysCheck by dragging the `syscheck.csv` file onto ModMii.exe. Alternatively, you can launch the SysCheck Updater Wizard (`SU`) from ModMii's main menu and manually browse for the file.
1. Open ModMii Classic and enter in `SU` to open the SysCheck Updater Wizard.
![](/images/modmii/syscheck-wizard-1.png)
1. Follow the instructions in the window if you don't already have a SysCheck log, and then drag and drop the `syscheck.csv` file from Windows Explorer into the window. This will paste the location of the file, from which you can press Enter.
![](/images/modmii/syscheck-wizard-2.png)
1. The program will analyze your SysCheck file, and will provide options for you depending on what it sees. In this example instance, the mods on the Wii were up-to-date, but there were several unnecessary IOSes that could be stubbed. If you want to make these changes to your Wii, simply enter in `Y` and press Enter. From here, you should follow the guide generated by ModMii.
![](/images/modmii/syscheck-wizard-3.png)
### HackMii Solutions Wizard
The HackMii Solutions wizard can help fix symptoms like these:
The HackMii Solutions Wizard is a tool that fixes problems that may arise from things like Darkcorp/CIOSSPAGHETTI by installing clean IOSes. Examples of problems that may arise because of this are listed below:
+ HackMii Installer not prompting "Press (1) to continue"
+ HackMii Installer says "no vulnerable IOS found!"
+ Homebrew Channel is displaying upside-down
+ HackMii Installer saying "no vulnerable IOS found!"
+ Homebrew Channel displaying upside-down
It will install clean IOSs to allow for the HackMii Installer to operate properly.
1. Open ModMii Skin or ModMii Classic and select the HackMii Solutions option.
### Abstinence Wizard
![](/images/modmii/hackmii-wizard-1.png)
This wizard requires an SD card.
{: .notice--warning}
1. Select your current System Menu version, followed by the System Menu Region, following the instructions in the program. If you are still confused, check the bottom option on each screen for an instructional video.
This wizard allows you to enjoy many of the benefits of a softmodded Wii without installing any permanent modifications to your Wii. It will allow you to launch an exploit to boot an from emulated NAND from external storage, rather than use your Wii's internal NAND.
![](/images/modmii/hackmii-wizard-2.png)
You can also make a NAND backup without modifying your Wii at all by navigating to ModMii's "Support" folder and launching `Casper2BootMii.bat`. <br> It will save some files to a folder named `COPY_TO_SD`; copy the files inside it to your SD card and launch an exploit like [Wilbrand](wilbrand).
1. Select the exploit you would like to use to mod your Wii. The exploits below are outlined throughout this website, but in most cases we would reccommend using Wilbrand if you have an SD card on hand.
When following one of the exploit guides above, avoid replacing the `boot.elf` file.
{: .notice--warning}
![](/images/modmii/hackmii-wizard-3.png)
1. If you selected the Wilbrand option in the previous step, enter your Wii's MAC address. If you don't know how to check your Wii's MAC address, enter `Help` in the text box for an instructional video.
<details id="Modmii-Tools" class="notice--info" markdown="1">
<summary><a>Click here for a full list of available tools.</a></summary>
![](/images/modmii/hackmii-wizard-4.png)
| Tool | Description |
| --------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| W = ModMii Wizard <-- Start Here to Mod Your Wii! | This option can be used to mod your Wii for the first time or re-mod a Wii that has been previously modded. |
| SU = SysCheck Updater Wizard (update only your outdated softmods) | This option is useful for people who have old modifications installed to their wii such as DarkCorp/Ciosspaghetti that can potetially cause problems for the latest homebrew custom firmware. |
| U = USB-Loader Setup Wizard | This option will help you properly set up your USB loader to be able to load your disk backups from an SD or USB hard drive. |
| H = HackMii Solutions Wizard (Upside-Down HBC\No Vulnerable IOS Fix) | This option is useful for people who are having trouble getting the HackMii Installer to work, or if they just simply have an upside down homebrew channel, or if DarkCorp/Ciosspaghetti was installed and there was no homebrew channel. |
| AW = Abstinence Wizard (Non-permanent Wii Hacks) | This option is useful for people who dont want to make any permanent modifications to their Wii but still want to have some of the benefits that homebrew can offer. |
| RC = Region Change Wizard | This option can be used to change the region of your Wii without bricking it (this is the best region changer tutorial available on the internet!). |
| S = SNEEK Installation, EmuNAND Builder\Modifier, Game Bulk Extractor | This option will help you properly set up an EmuNAND (aka neek2o) onto your SD or USB. benefits for emunand include extra storage space for save games or channels. and the benefit of not making any permanent modifications to your Wii. |
| F = open a File or Folder with ModMii for many more functions! | This option is an advanced tool especially helpful for developers. |
| 1 = Download Page 1 (System Menus, IOSs, MIOSs, Channels, etc.) | This option opens the first download page that includes most of the key parts for the system menu (downloaded from NUS). |
| 2 = Download Page 2 (Apps, USB-Loader Files, CheatCodes, etc.) | This option opens the second download page that includes exploits and useful apps for your Wii including some PC programs. |
| 3 = Download Page 3 (System Menu Themes) | This option opens the third download page that includes some system menu themes and items required to install system menu themes (base apps are downloaded from NUS). |
| 4 = Download Page 4 (cIOSs and cMIOSs) | This option opens the fourth download page that includes cIOSes and cMIOSes for use in USB loaders. It is recommended to just install the recommended cioses unless you plan to do some testing. |
| A = Advanced Downloads and Forwarder DOL\ISO Builder | This option is an advanced tool used to better customize downloads or allow you to build a dol executable useful for fowarders (channels on the system menu to access Wii applications). |
| L = Load Download Queue | This option will download all of the required titles need for the Wii system menu (titles are downloaded from NUS) |
| C = Build Config Files for Bootmii, Wad Manager or Multi-Mod Manager | This option will help you build configuration files required for certain applications. |
| FC = File Cleanup & App Updater: Update Apps and\or remove un-needed files | This option is useful for people who want to clean out their SD or USB of apps deemed outdated, useless, or otherwise depreciated. |
| M = ModMii Skin Mode: use your mouse instead of your keyboard! | This option will launch ModMii skin mode. Some advanced options may not be available in this view. |
1. Verify where you would like to save files for your SD Card and/or USB Drive.
</details>
![](/images/modmii/modmii-wizard-12.png)
<details id="Modmii-Options" class="notice--info" markdown="1">
<summary><a>Click here for a full list of available options.</a></summary>
1. Confirm your settings are correct, and then press `Finish`. Once you press the button, ModMii will begin to process and download files in the background, and will automatically generate and open a guide for you. From here, you should follow the guide generated by ModMii. After finishing this guide, it is recommended that you use the [SysCheck Updater Wizard](#syscheck-updater-wizard) to undo any other problematic modifications on your Wii.
| Option | Description |
| ---------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------- |
| D = Change Drive letter: | Changes where your SD files are saved to. |
| DU = Change Drive letter for USB: | Changes where your USB files are saved to. |
| d2x = change d2x cIOS version built: | Changes the cios version ModMii downloads. |
| H = Hermes cIOSs (202 & 222-224) will also be recommended | Enables Hermes IOS to be recommended and downloaded in the syscheck updater (will be stubbed if disabled). |
| CM = cMIOS included in recommended cIOSs | Enables cMIOS to be recommended and downloaded in the syscheck updater (will install stock MIOS if disabled). |
| E = Extra Brick Protection in ModMii Wizard Guides | Enables ModMiis Extra Brick Protection IOSes to be recommended and used in the syscheck updater tool. |
| U = Update IOSs. Wizard/SysCheck-Updater to update Active IOSs | Updates Existing IOSes to the latest version available on NUS. |
| AU = Auto-Updating downloads will skip update check if cached | Will skip downloading the files if already in the queue. |
| FWD = Install USB-Loader Forwarder in ModMii Wizard Guides | Will include the USB loader forwarder wad file in the USB loader wizard guides. |
| PC = PC Programs Save Location | Changes the save location for the downloadable PC programs. |
| RS = Root Save: Save IOSs\MIOSs to Root instead of WAD Folder | Saves IOSs\MIOSs to Root instead of WAD Folder. |
| 1 = Do not Keep 00000001 or NUS Folders for IOSs\MIOSs\SMs etc | Deletes the folder used for compiling the wad file and just gives you the wad file. |
| n2o = neek2o - build mod of s\uneek instead of original | Uses a better modified version of neek2o in the EmuNAND builder. |
| SSD = SNEEK and SNEEK+DI SD Access | Allows for SNEEK and SNEEK+DI access on the SD card. |
| F = Font.bin Colour for SNEEK/UNEEK | Changes the font color for neek2o. |
| SV = SNEEK Verbose Output | Displays extra information regarding EmuNAND. |
| V = Verbose for ModMii Skin & nandBinCheck | Displays another window with extra information regarding a nand check. |
| SO = Play sound at Finish | Plays a fun jingle after a successful download. |
| A = Auto-Update ModMii at program start | Will automatically check for updates when ModMii is launched. |
| N = Check for New versions of ModMii right now | Will check online for a ModMii update. |
</details>
![](/images/modmii/hackmii-wizard-5.png)
[Click here to view all of our tutorials that you can find on this website!](site-navigation)
{: .notice--info}

View file

@ -0,0 +1,5 @@
---
title: Redirecting...
---
{% include redirect.html redirect_to="410.html" %}

View file

@ -16,7 +16,7 @@ Homebrew that has the ability to make permanant changes to your Wii are highligh
+ [**AnyRegion Changer ME**](https://oscwii.org/library/app/ARCME) - ModMii edition of AnyRegion Changer. While a powerful tool for changing region settings, it can also lead to severe bricks like [Korean Kii/Error 003](bricks#korean-kiierror-003-brick) so **only use this app if you know what you are doing**.
+ [**WiiXplorer-SS**](https://oscwii.org/library/app/wiixplorer-ss) - A modified and updated version of WiiXplorer. A file manager for the Wii, it allows you to view and customize files both on an SD card, a USB device, and the internal Wii memory. For this reason it is a very powerful but also dangerous tool - don't modify files on the system NAND unless you know what you are doing, as it can lead to various types of [bricks](bricks).
+ [**SaveGame Manager GX**](https://oscwii.org/library/app/SaveGame_Manager_GX) - A savegame/Mii extractor for the Wii. It supports GameCube memory cards (physical and virtual), emuNANDs, normal and protected saves, themes, and more.
+ [**MyMenuifyMod**](https://oscwii.org/library/app/mymenuifymod) - An application that allows you to theme the Wii Menu. While quite useful to make your Wii unique, it also has the ability to cause a [minor brick](bricks#theme-brick), so make sure to read our [theme guide](themes) for safe usage instructions.
+ [**csm-installer**](https://oscwii.org/library/app/csm-installer) - An application that allows you to theme the Wii Menu. While quite useful to make your Wii unique, it also has the ability to cause a [minor brick](bricks#theme-brick), so make sure to read our [theme guide](themes) for safe usage instructions.
+ [CleanRip](https://oscwii.org/library/app/CleanRip) - A tool to backup GameCube and Wii discs. Further information can be found in our [disc dumping guide](dump-games).
+ [**d2x cIOS installer**](https://oscwii.org/library/app/d2x-cios-installer) - A custom installer for Wii IOS, some of which is required for the functioning of certain software like USB loaders. You can see the guide [here](cios).
+ [FTPii](https://oscwii.org/library/app/ftpii) - An FTP server for your Wii, allowing you to transfer files across the network.

View file

@ -1,138 +1,5 @@
---
title: "RiiConnect24"
title: Redirecting...
---
{% include toc title="Table of Contents" %}
If you need help with anything regarding this tutorial, please join [the RiiConnect24 Discord server](https://discord.gg/rc24) (recommended) or [e-mail us at support@riiconnect24.net](mailto:support@riiconnect24.net).
{: .notice--primary}
[RiiConnect24](https://rc24.xyz/) allows you to use discontinued services from WiiConnect24, which include the News, Forecast, Everybody Votes, Nintendo and Check Mii Out Channel, along with Wii Mail.
It's recommended to set your Wii to the current time before proceeding. Follow [this tutorial](wiiconnect24#updating-rtc-clock) in order to set it.
{: .notice--warning}
DO NOT INSTALL RIICONNECT24 ON A WII MINI! It will not work and it will brick the system.
{: .notice--danger}
### Requirements
If you are on vWii, you will also need [Priiloader](priiloader) installed with the WC24 hacks.
{: .notice--primary}
+ An SD card or USB drive
+ A Wii with an Internet connection
+ A PC with an Internet connection
+ [RiiConnect24 Patcher (Windows, Mac and Linux)](https://github.com/riiconnect24/RiiConnect24-Patcher/releases)
+ [YAWM ModMii Edition](https://oscwii.org/library/app/yawmme)
### Instructions
#### Section I - Using RiiConnect24 Patcher
1. Click the link above to go to the GitHub page where the patcher is.
1. Download `RiiConnect24Patcher.bat` if you are on Windows, and `RiiConnect24Patcher.sh` if you are on a Unix system
1. Run the RiiConnect24 patcher.
+ On Windows run `RiiConnect24Patcher.bat`.
+ On macOS/Linux systems, open Terminal and type `bash`, then drag `RiiConnect24Patcher.sh` into the terminal then press enter. It should look like this: `bash <directory>/<directory>/RiiConnect24Patcher.sh`.
1. Press 1 to choose "`Start`" and confirm your selection by pressing `ENTER`.
![](/images/riiconnect24/patcher/1.JPG)
1. Select the device you're patching for.
![](/images/riiconnect24/patcher/2.JPG)
1. For this guide, choose "`Install RiiConnect24 on your Wii`"
![](/images/riiconnect24/patcher/3.JPG)
1. Choose "`Express (Recommended)`". It will give you everything you need.
![](/images/riiconnect24/patcher/4.JPG)
1. Select your region.
![](/images/riiconnect24/patcher/5.JPG)
1. While you're at it, RiiConnect24 Patcher can additionally download some other optional channels that do not use RiiConnect24. `[X]` represents the options that selected. Just press 5 and `ENTER` if you're not interested.
![](/images/riiconnect24/patcher/6.JPG)
1. Connect your SD Card or USB Drive to your computer and select "`1`".
![](/images/riiconnect24/patcher/7.JPG)
1. If your device was detected successfully, select "`1`". If not, make sure there's a folder called `apps` on your SD Card or USB Drive and try again.
![](/images/riiconnect24/patcher/8.JPG)
1. The patcher will download apps now - please be patient.
![](/images/riiconnect24/patcher/9.JPG)
1. Once you reach the screen that says `Patching done`, you can exit the patcher. All the files should already be on your SD card.
![](/images/riiconnect24/patcher/10.JPG)
![](/images/riiconnect24/patcher/11.PNG)
1. If it did not copy everything automatically to your SD Card or USB Device, copy the `WAD` and `apps` folder next to `RiiConnect24Patcher.bat` or `RiiConnect24Patcher.sh` to your SD Card or USB Device.
#### Section II - Installing WADs
If you are using Dolphin, you have finished the guide. Install the WADs by going to `Tools -> Install WAD` within Dolphin.
{: .notice--primary}
You will now install the patched IOS and Channel WADs that are required to use RiiConnect24.
1. Extract the YAWM ModMii Edition `.zip` file, and copy the `apps` folder to your SD card or USB drive.
1. Put your SD card or USB drive in your Wii.
1. Launch the Homebrew Channel on your Wii.
1. Launch YAWM ModMii Edition.
1. Select the device you have put the RiiConnect24 files on.
1. Highlight all the WADs in the `wad` folder by pressing the + Button to select them. When all of the WADs are selected, press A twice to install the WADs.
1. After they are successfully installed, press the HOME Button to exit back to the Homebrew Channel.
#### Section III - Patching nwc24msg.cfg
You will now patch your `nwc24msg.cfg` file which is required in order to use Wii Mail.
1. Launch RiiConnect24 Mail Patcher.
1. It should only take a few seconds to patch your nwc24msg.cfg. When it's done, press the HOME Button to exit.
#### Section IV - Connecting to RiiConnect24
The old DNS server `164.132.44.106` has been deprecated as of `June 1st, 2023` and is no longer available to use.
{: .notice--warning}
If you're getting errors such as `WiiConnect24 and Wii Shop Channel currently not being offered in your country`, go to Wii Settings -> Last Page -> Country and change it to United Kingdom. You will get this error when using a country that RiiConnect24 does not support.
{: .notice--warning}
If you get error 107245, you did not install the patched IOS.<br> If you get error 220602, see [this](faq#for-riiconnect24-users) page.<br> If you get error 107304, see [this](faq#for-riiconnect24-users-1) page.<br>
{: .notice--warning}
You will now set your DNS to RiiConnect24 servers. This is optional but recommended, because it enhances the use of RiiConnect24 and Wiimmfi by making some other features available.
1. Go to `Wii Options`.
1. Go to `Wii Settings`.
1. Go to `Page 2`, then click on `Internet`.
1. Go to `Connection Settings`.
1. Select your current connection.
1. Go to `Change Settings`.
1. Go to `Auto-Obtain DNS` (Not IP Address), then select `No`, then `Advanced Settings`.
1. Type in `167.86.108.126` as the primary DNS.
1. Type in `1.1.1.1` as the secondary DNS.
1. Select `Confirm`, then select `Save`.
1. Select `OK` to perform a connection test.
1. If the connection test was successful, select `No` to skip the Wii System Update.
1. Go to `WiiConnect24`, then `WiiConnect24` again, and make sure it is enabled.
1. Back on the WiiConnect24 menu, go to `Standby Connection` and make sure it is enabled.
1. At `Slot Illumination`, we recommend you set the disc light to `Dim` or `Bright`, but this is optional.
1. Finally, go to the `Internet` section, then `User Agreements` or `Agreement/Contact`, then `Yes`. Please read through this.
[Return to WiiConnect24](wiiconnect24)
{: .notice--info}
[Click here to view all of our tutorials that you can find on this website!](site-navigation)
{: .notice--info}
{% include redirect.html redirect_to="https\://www\.wiilink24.com/guide/install/" %}

5
_pages/ca_ES/riitag.md Normal file
View file

@ -0,0 +1,5 @@
---
title: Redirecting...
---
{% include redirect.html redirect_to="https\://wiki.hacks.guide/wiki/RiiTag" %}

View file

@ -0,0 +1,5 @@
---
title: Redirecting...
---
{% include redirect.html redirect_to="410.html" %}

View file

@ -4,13 +4,16 @@ title: "Installing Wii Menu Themes"
{% include toc title="Table of Contents" %}
This guide is intended to be the last you will ever need when it comes to theming on the Wii, not only providing instructions for the Wii Menu through MyMenuifyMod, but also with themes on WiiFlow Lite, USB Loader GX, and The Homebrew Channel. Additionally, forwarders are covered.
This guide is intended to be the last you will ever need when it comes to theming on the Wii, not only providing instructions for the Wii Menu through csm-installer, but also with themes on WiiFlow Lite, USB Loader GX, and The Homebrew Channel. Additionally, forwarders are covered.
### Wii Menu Theming
DO NOT CONTINUE WITH THIS GUIDE UNLESS YOU HAVE ADEQUATE BRICK PROTECTION, SPECIFICALLY [BOOTMII](bootmii) AND [PRIILOADER](priiloader)!
{: .notice--danger}
This tutorial does not work on the Wii mini. Do not attempt this tutorial on the Wii mini or it will cause a [brick](bricks#theme-brick).
{: .notice--warning}
csm-installer has built in safety features to prevent from installing bad or corrupt Wii Menu themes, so please opt to use it instead of other theme installation homebrew.
{: .notice--warning}

View file

@ -0,0 +1,5 @@
---
title: Redirecting...
---
{% include redirect.html redirect_to="wii-loaders.html" %}

View file

@ -0,0 +1,5 @@
---
title: Redirecting...
---
{% include redirect.html redirect_to="wii-backups.html" %}

View file

@ -3,44 +3,21 @@ title: "WiiConnect24"
---
{% include toc title="Table of Contents" %}
<!--
This guide provides the means of regaining WiiConnect24 functionality on your console via RiiConnect24.
Although not at all nessecary, it is a "nice to have" feature that was originally used for online connectivity in certain applications on the console.
These apps include the Forecast/News Channel, Nintendo Channel, Check Mii Out Channel, some Japan-exclusive channels, and more.
-->
This guide provides different means of regaining WiiConnect24 functionality on your console. Although not at all nessecary, it is a "nice to have" feature that was originally used for online connectivity in certain applications on the console. These apps include the Forecast/News Channel, Nintendo Channel, Check Mii Out Channel, some Japan-exclusive channels, and more. Please bear in mind, the functionality you gain depends entirely on what service(s) you use.
[WiiConnect24](https://wikipedia.org/wiki/WiiConnect24) was a service that allowed users with Internet connected Wiis to view the weather & local news, send messages to friends, participate in Mii contest, and more. WiiConnect24 was discontinued on June 27th, 2013.
### Service Overview
## RiiConnect24 + WiiLink
[RiiConnect24](https://rc24.xyz) is a revival service for WiiConnect24 that started in 2015, which allows you to regain its functionality on your console. As of late 2023, the service is now owned by WiiLink, a project that started in 2020 that was previously aiming at the Japanese-exclusive channels.
#### Note about service compatibility:
Both services listed below are compatible with one another and can be loaded on the same console. With this said, it should be noted that when installing one channel over the other (WiiLink's Forecast Channel over RiiConnect24's Forecast Channel for example), the channel you are installing will overwrite the old one.
#### Service Support Status
✅ - In support<br> ⚠️ - In development<br> ⛔ - No support
| Service Name | WiiLink | RiiConnect24 |
| ----------------------- | ------- | ------------ |
| Forecast Channel | ✅ | ✅ |
| News Channel | ⚠️ | ✅ |
| Wii Mail | ✅ | ✅ |
| Everybody Votes Channel | ✅ | ✅ |
| Nintendo Channel | ✅ | ✅ |
| Check Mii Out Channel | ⚠️ | ✅ |
| Wii Room | ✅ | ⛔ |
| Food Channel | ✅ | ⛔ |
| Photo Prints Channel | ✅ | ⛔ |
| Kirby TV Channel | ✅ | ⛔ |
| TV Guide Channel | ⚠️ | ⛔ |
#### WiiLink
A newer WC24/Japanese channel revival service that started in 2020, but is rapidly regaining functionality in many different channels.
Service support status can be found [here](https://www.wiilink24.com/status).<br> Their guide can be found [here](https://www.wiilink24.com/guide).
#### RiiConnect24
The longest lasting WC24 revival service, currently only with support for the worldwide WC24 channels as well as mail services.
Service support status can be found [here](https://rc24.xyz/stats/).<br> RiiConnect24 currently does not have a self-hosted guide, however you can find ours [here](riiconnect24).
There is a patcher that ships both of these services together as one - meaning you get all of the international and Japanese-only channels in one package. The guide on how to install these services can be found [on WiiLink's website.](https://www.wiilink24.com/guide/)
<!-- move this back to another page? or no -->
### Updating RTC Clock
If you choose to install either of these services on your Wii, it is advised to synchronize its external clock in order to prevent various issues (such as inability to use said services) that may arise otherwise. The steps to do so can be found below:
#### What you need
+ A working Internet connection on your Wii

5
_pages/ca_ES/wiiflow.md Normal file
View file

@ -0,0 +1,5 @@
---
title: Redirecting...
---
{% include redirect.html redirect_to="wii-loaders.html" %}

12
_pages/de_DE/410.md Normal file
View file

@ -0,0 +1,12 @@
---
title: Page no longer exists
sitemap: false
---
The page you are trying to view used to exist, but it has since been removed. Maybe the instructions you are following are outdated? (If you got here from a link on this guide, [let us know](https://github.com/hacks-guide/Guide_Wii/issues))
[Click here to go back to the site index.](site-navigation)
{: .notice--info}
![](https://http.cat/410)
{: .notice--info}

View file

@ -6,21 +6,9 @@ title: "BootMii Backup"
One of BootMii's most important features is the ability to backup and restore your Wii's NAND storage. We will be going over how to perform a NAND backup. You can then restore from that backup for any reason. This page will guide you in backing up your Wii's NAND to an SD Card, which you can then use however you like.
Family edition Wiis (Wiis without GameCube ports) CANNOT restore NAND backups. This is because of the lack of GameCube ports which are required on non-boot2 Wiis to enter the restoration confirmation code. Regardless, it is still recommended to make one on these consoles.
{: .notice--danger}
Du brauchst eine **SD-Karte** um eine NAND-Sicherung mittels BootMii zu erstellen. If you do not have one, you can skip this page, although it is highly recommended to make a NAND backup if you can.
{: .notice--warning}
Navigating BootMii is not possible using a Wii Remote. You must use the POWER and RESET buttons on your console, or a GameCube controller plugged into port 1. To navigate between options, press POWER on your Wii (or left/right on the +Control Pad on a GameCube controller). To select an option, press RESET on your Wii or A on your GameCube controller. You will NEED to use a GameCube controller to restore a NAND backup in the future if BootMii is installed as IOS.
{: .notice--info}
If the `Launch BootMii` button does not appear, please [re-launch the HackMii Installer](hackmii) and install BootMii.
{: .notice--warning}
If the screen stays black and the blue disc drive light is blinking, you are missing the BootMii files on your SD card. Download [this zip file](https://static.hackmii.com/bootmii_sd_files.zip) and extract it to the root of your SD card, then try again.
{: .notice--warning}
### Voraussetzungen
* An SD card with at least 512MB of free space
@ -36,10 +24,19 @@ If you have BootMii installed as boot2 you will need to launch BootMii by restar
![](/images/bootmii/BootMii_HBC.png)
If the `Launch BootMii` button does not appear, please [re-launch the HackMii Installer](hackmii) and install BootMii.
{: .notice--warning}
If the screen stays black and the blue disc drive light is blinking, you are missing the BootMii files on your SD card. Download [this zip file](https://static.hackmii.com/bootmii_sd_files.zip) and extract it to the root of your SD card, then try again.
{: .notice--warning}
1. You should see an image similar to the below now on your screen:
![](/images/bootmii/BootMii_Main.png)
Navigating BootMii is not possible using a Wii Remote. You must use the POWER and RESET buttons on your console, or a GameCube controller plugged into port 1. To navigate between options, press POWER. To select an option, press RESET.
{: .notice--info}
1. Select the Options button (the icon with the gears).
![](/images/bootmii/BootMii_Gears.png)
@ -65,7 +62,7 @@ If you have BootMii installed as boot2 you will need to launch BootMii by restar
<div id="restore-notice" class="notice" markdown="1">
Please be reminded that <strong>restoring a NAND backup is usually a last resort,</strong> and that there often better ways to fix your brick. Es gibt oft bessere Möglichkeiten, deine Konsole zu entbricken.
Versuche dein Bestes um [deinen Brick-Zustand](bricks) zu identifizieren und die Aktion umzukehren, die es ursprünglich verursacht hat.
To restore from a NAND backup on your SD card, you can follow the instructions for [RestoreMii](bootmiirecover).
To restore from a NAND backup on your SD card, you can follow the instructions for [RestoreMii](bootmiirecover). **Family edition Wiis (Wiis without GameCube ports) CANNOT restore NAND backups.**
</div>
BootMii as boot2 is recommended, but only available to install on early Wii consoles. Otherwise, it can only be installed as an IOS. If you would like to change this, you can use the app [BootMii Config Editor](https://oscwii.org/library/app/BootMiiConfigurationEditor). Or, you can edit `sd:/bootmii/bootmii.ini` manually.

Some files were not shown because too many files have changed in this diff Show more