Contact page added
This commit is contained in:
parent
b36143c377
commit
af3611dd5e
31
README.md
31
README.md
|
@ -17,6 +17,7 @@ Thank you for click me!. Zzo theme is a blog theme powered by Hugo with free(alw
|
||||||
* [Configuration](#configuration)
|
* [Configuration](#configuration)
|
||||||
* [Layout](#layout)
|
* [Layout](#layout)
|
||||||
* [Gallery](#gallery)
|
* [Gallery](#gallery)
|
||||||
|
* [Contact Page](#contact-page)
|
||||||
* [Multi Language](#multi-language)
|
* [Multi Language](#multi-language)
|
||||||
* [Customizing](#customizing)
|
* [Customizing](#customizing)
|
||||||
* [External libraries](#external-library)
|
* [External libraries](#external-library)
|
||||||
|
@ -444,6 +445,36 @@ root
|
||||||
│ │ │ ├── ...your images here
|
│ │ │ ├── ...your images here
|
||||||
```
|
```
|
||||||
|
|
||||||
|
## Contact Page
|
||||||
|
|
||||||
|
Currently available service: [formspree]. Open an issue if you need another service vendor.
|
||||||
|
|
||||||
|
1. Make a file at root/contact/index.md
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
---
|
||||||
|
title: "Contact"
|
||||||
|
date: 2019-12-17T23:58:33+09:00
|
||||||
|
description: Contact page
|
||||||
|
type: contact
|
||||||
|
service: formspree
|
||||||
|
formId: "your@email.com"
|
||||||
|
---
|
||||||
|
|
||||||
|
This is contact page.
|
||||||
|
```
|
||||||
|
|
||||||
|
2. Add contact menu at root/config/_default/menus.en.toml.
|
||||||
|
|
||||||
|
```toml
|
||||||
|
...
|
||||||
|
[[main]]
|
||||||
|
identifier = "contact"
|
||||||
|
name = "contact"
|
||||||
|
url = "contact"
|
||||||
|
weight = 6
|
||||||
|
```
|
||||||
|
|
||||||
## Multi Language
|
## Multi Language
|
||||||
|
|
||||||
The default language of this theme is English. If you want to use another language, follow these steps
|
The default language of this theme is English. If you want to use another language, follow these steps
|
||||||
|
|
|
@ -0,0 +1,8 @@
|
||||||
|
---
|
||||||
|
title: "{{ replace .Name "-" " " | title }}"
|
||||||
|
date: {{ .Date }}
|
||||||
|
description:
|
||||||
|
type: contact
|
||||||
|
service: formspree
|
||||||
|
formId: ""
|
||||||
|
---
|
|
@ -29,7 +29,7 @@
|
||||||
@include box-shadow(0, 8px, 6px, -6px, black);
|
@include box-shadow(0, 8px, 6px, -6px, black);
|
||||||
|
|
||||||
&-wrapper {
|
&-wrapper {
|
||||||
min-width: 120px;
|
min-width: 100px;
|
||||||
max-width: 150px;
|
max-width: 150px;
|
||||||
height: auto;
|
height: auto;
|
||||||
margin-right: 1rem;
|
margin-right: 1rem;
|
||||||
|
|
|
@ -63,4 +63,5 @@ $content-font: {{ .Site.Data.font.content_font }};
|
||||||
@import 'pages/gallery';
|
@import 'pages/gallery';
|
||||||
@import 'pages/list';
|
@import 'pages/list';
|
||||||
@import 'pages/single';
|
@import 'pages/single';
|
||||||
@import 'pages/terms';
|
@import 'pages/terms';
|
||||||
|
@import 'pages/contact';
|
|
@ -1,3 +1,4 @@
|
||||||
.about{
|
.about{
|
||||||
padding: 1rem;
|
padding: 1rem;
|
||||||
|
overflow-wrap: break-word;
|
||||||
}
|
}
|
|
@ -0,0 +1,99 @@
|
||||||
|
.contact {
|
||||||
|
padding: 1rem;
|
||||||
|
overflow-wrap: break-word;
|
||||||
|
|
||||||
|
@include flexbox();
|
||||||
|
@include align-items(center);
|
||||||
|
@include flex-direction(column);
|
||||||
|
|
||||||
|
&__input {
|
||||||
|
height: 35px;
|
||||||
|
font-size: 14px;
|
||||||
|
padding: 0.25rem;
|
||||||
|
border-radius: 0.125rem;
|
||||||
|
border: none;
|
||||||
|
|
||||||
|
@include themify($themes) {
|
||||||
|
color: themed('contact-input-color');
|
||||||
|
background-color: themed('contact-input-background-color');
|
||||||
|
}
|
||||||
|
|
||||||
|
&--wrapper {
|
||||||
|
margin: 0.25rem;
|
||||||
|
min-width: 0;
|
||||||
|
|
||||||
|
@include flexbox();
|
||||||
|
@include flex-direction(column);
|
||||||
|
@include flex-grow(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
&--container {
|
||||||
|
margin-bottom: 0.25rem;
|
||||||
|
|
||||||
|
@media only screen and (max-width: 769px) {
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
@include flexbox();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&__message {
|
||||||
|
padding: 0.25rem;
|
||||||
|
min-height: 140px;
|
||||||
|
font-size: 14px;
|
||||||
|
border-radius: 0.125rem;
|
||||||
|
border: none;
|
||||||
|
|
||||||
|
@include themify($themes) {
|
||||||
|
color: themed('contact-input-color');
|
||||||
|
background-color: themed('contact-input-background-color');
|
||||||
|
}
|
||||||
|
|
||||||
|
&--wrapper {
|
||||||
|
margin: 0.25rem;
|
||||||
|
|
||||||
|
@include flexbox();
|
||||||
|
@include flex-direction(column);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&__label {
|
||||||
|
font-family: $title-font;
|
||||||
|
font-size: 14px;
|
||||||
|
font-weight: bold;
|
||||||
|
padding: 0.25rem 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
&__desc {
|
||||||
|
width: 55%;
|
||||||
|
font-family: $content-font;
|
||||||
|
|
||||||
|
@media only screen and (max-width: 769px) {
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&__form {
|
||||||
|
width: 55%;
|
||||||
|
|
||||||
|
@include flexbox();
|
||||||
|
@include flex-direction(column);
|
||||||
|
@media only screen and (max-width: 769px) {
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&__send {
|
||||||
|
height: 35px;
|
||||||
|
margin: 0.75rem 0.25rem;
|
||||||
|
font-family: $title-font;
|
||||||
|
font-weight: bold;
|
||||||
|
border: none;
|
||||||
|
border-radius: 0.125rem;
|
||||||
|
|
||||||
|
@include themify($themes) {
|
||||||
|
color: inherit;
|
||||||
|
background-color: themed('contact-button-background-color');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -61,7 +61,7 @@
|
||||||
h4,
|
h4,
|
||||||
h5,
|
h5,
|
||||||
h6 {
|
h6 {
|
||||||
position: relative;
|
position: relative;
|
||||||
line-height: 1.25;
|
line-height: 1.25;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -94,4 +94,7 @@ $custom: (
|
||||||
switch-active-color: hsl($custom_theme_primary_color, 80%, 60%),
|
switch-active-color: hsl($custom_theme_primary_color, 80%, 60%),
|
||||||
gallery-mask-color: hsl($custom_theme_primary_color, 100%, 10%),
|
gallery-mask-color: hsl($custom_theme_primary_color, 100%, 10%),
|
||||||
gallery-mask-background-color: hsla($custom_theme_primary_color, 100%, 90%, 0.7),
|
gallery-mask-background-color: hsla($custom_theme_primary_color, 100%, 90%, 0.7),
|
||||||
|
contact-input-color: hsl($custom_theme_primary_color, 100%, 28.5%),
|
||||||
|
contact-input-background-color: hsl($custom_theme_primary_color, 100%, 94.5%),
|
||||||
|
contact-button-background-color: hsl($custom_theme_primary_color, 100%, 94.5%),
|
||||||
) !default;
|
) !default;
|
|
@ -94,4 +94,7 @@ $dark: (
|
||||||
switch-active-color: #FF6188,
|
switch-active-color: #FF6188,
|
||||||
gallery-mask-color: #FCFCFA,
|
gallery-mask-color: #FCFCFA,
|
||||||
gallery-mask-background-color: rgba(0, 0, 0, 0.7),
|
gallery-mask-background-color: rgba(0, 0, 0, 0.7),
|
||||||
|
contact-input-color: #FCFCFA,
|
||||||
|
contact-input-background-color: lighten(#403E41, 5%),
|
||||||
|
contact-button-background-color: lighten(#403E41, 5%),
|
||||||
);
|
);
|
|
@ -94,4 +94,7 @@ $hacker: (
|
||||||
switch-active-color: #FF6188,
|
switch-active-color: #FF6188,
|
||||||
gallery-mask-color: #FCFCFA,
|
gallery-mask-color: #FCFCFA,
|
||||||
gallery-mask-background-color: rgba(0, 0, 0, 0.7),
|
gallery-mask-background-color: rgba(0, 0, 0, 0.7),
|
||||||
|
contact-input-color: #FCFCFA,
|
||||||
|
contact-input-background-color: lighten(#252526, 4%),
|
||||||
|
contact-button-background-color: lighten(#252526, 4%),
|
||||||
);
|
);
|
|
@ -94,4 +94,7 @@ $light: (
|
||||||
switch-active-color: #FF6188,
|
switch-active-color: #FF6188,
|
||||||
gallery-mask-color: #424242,
|
gallery-mask-color: #424242,
|
||||||
gallery-mask-background-color: rgba(255, 255, 255, 0.7),
|
gallery-mask-background-color: rgba(255, 255, 255, 0.7),
|
||||||
|
contact-input-color: #424242,
|
||||||
|
contact-input-background-color: #eee,
|
||||||
|
contact-button-background-color: #eee,
|
||||||
);
|
);
|
|
@ -94,4 +94,7 @@ $solarized: (
|
||||||
switch-active-color: #FF6188,
|
switch-active-color: #FF6188,
|
||||||
gallery-mask-color: #424242,
|
gallery-mask-color: #424242,
|
||||||
gallery-mask-background-color: rgba(253, 247, 227, 0.7),
|
gallery-mask-background-color: rgba(253, 247, 227, 0.7),
|
||||||
|
contact-input-color: #B58900,
|
||||||
|
contact-input-background-color: #FBF1D1,
|
||||||
|
contact-button-background-color: #FBF1D1,
|
||||||
);
|
);
|
File diff suppressed because one or more lines are too long
14
i18n/en.toml
14
i18n/en.toml
|
@ -38,4 +38,16 @@ other = "Total visitors"
|
||||||
other = "views"
|
other = "views"
|
||||||
|
|
||||||
[donate-message]
|
[donate-message]
|
||||||
other = "Support the author with"
|
other = "Support the author with"
|
||||||
|
|
||||||
|
[contact-name]
|
||||||
|
other = "Name"
|
||||||
|
|
||||||
|
[contact-email]
|
||||||
|
other = "Email"
|
||||||
|
|
||||||
|
[contact-message]
|
||||||
|
other = "Message"
|
||||||
|
|
||||||
|
[contact-send]
|
||||||
|
other = "Send"
|
14
i18n/ko.toml
14
i18n/ko.toml
|
@ -38,4 +38,16 @@ other = "총 방문자 수"
|
||||||
other = "조회수"
|
other = "조회수"
|
||||||
|
|
||||||
[donate-message]
|
[donate-message]
|
||||||
other = "후원하기"
|
other = "후원하기"
|
||||||
|
|
||||||
|
[contact-name]
|
||||||
|
other = "이름"
|
||||||
|
|
||||||
|
[contact-email]
|
||||||
|
other = "이메일"
|
||||||
|
|
||||||
|
[contact-message]
|
||||||
|
other = "내용"
|
||||||
|
|
||||||
|
[contact-send]
|
||||||
|
other = "보내기"
|
14
i18n/zh.toml
14
i18n/zh.toml
|
@ -38,4 +38,16 @@ other = "总访客"
|
||||||
other = "views"
|
other = "views"
|
||||||
|
|
||||||
[donate-message]
|
[donate-message]
|
||||||
other = "您的鼓励是我最大的动力"
|
other = "您的鼓励是我最大的动力"
|
||||||
|
|
||||||
|
[contact-name]
|
||||||
|
other = "Name"
|
||||||
|
|
||||||
|
[contact-email]
|
||||||
|
other = "Email"
|
||||||
|
|
||||||
|
[contact-message]
|
||||||
|
other = "Message"
|
||||||
|
|
||||||
|
[contact-send]
|
||||||
|
other = "Send"
|
|
@ -0,0 +1,23 @@
|
||||||
|
{{ define "main" }}
|
||||||
|
<header class="header">
|
||||||
|
<h3 class="h3 terms__title">
|
||||||
|
{{ .Title }}
|
||||||
|
</h3>
|
||||||
|
</header>
|
||||||
|
<main class="main">
|
||||||
|
<div class="contact">
|
||||||
|
<article class="single__contents contact__desc">
|
||||||
|
{{ .Content }}
|
||||||
|
</article>
|
||||||
|
{{ if eq .Params.service "formspree" }}
|
||||||
|
{{ partial "contact/formspree" . }}
|
||||||
|
{{ else }}
|
||||||
|
{{ partial "contact/formspree" . }}
|
||||||
|
{{ end }}
|
||||||
|
</div>
|
||||||
|
</main>
|
||||||
|
<div class="hide">
|
||||||
|
{{ partial "search/site-search" . }}
|
||||||
|
</div>
|
||||||
|
{{ partial "script/contact-script" . }}
|
||||||
|
{{ end }}
|
|
@ -0,0 +1,23 @@
|
||||||
|
<form action="https://formspree.io/{{ with .Params.formId }}{{ . }}{{ end }}" method="POST" class="contact__form">
|
||||||
|
<div class="contact__input--container">
|
||||||
|
<div class="contact__input--wrapper">
|
||||||
|
<label class="contact__label">
|
||||||
|
{{ i18n "contact-name" }}
|
||||||
|
</label>
|
||||||
|
<input type="text" name="name" class="contact__input" aria-label="{{ i18n "contact-name" }}">
|
||||||
|
</div>
|
||||||
|
<div class="contact__input--wrapper">
|
||||||
|
<label class="contact__label">
|
||||||
|
{{ i18n "contact-email" }}
|
||||||
|
</label>
|
||||||
|
<input type="email" name="_replyto" class="contact__input" aria-label="{{ i18n "contact-email" }}">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="contact__message--wrapper">
|
||||||
|
<label class="contact__label">
|
||||||
|
{{ i18n "contact-message" }}
|
||||||
|
</label>
|
||||||
|
<textarea name="message" class="contact__message" aria-label="{{ i18n "contact-message" }}"></textarea>
|
||||||
|
</div>
|
||||||
|
<input type="submit" value="{{ i18n "contact-send" }}" class="contact__send">
|
||||||
|
</form>
|
|
@ -0,0 +1,14 @@
|
||||||
|
{{ $jquery := resources.Get "js/jquery.min.js" | resources.Fingerprint }}
|
||||||
|
<script defer src="{{ $jquery.RelPermalink }}"></script>
|
||||||
|
{{ $enquire := resources.Get "js/enquire.min.js" | resources.Fingerprint }}
|
||||||
|
<script defer src="{{ $enquire.RelPermalink }}"></script>
|
||||||
|
{{ $lazysizes := resources.Get "js/lazysizes.min.js" | resources.Fingerprint }}
|
||||||
|
<script defer src="{{ $lazysizes.RelPermalink }}"></script>
|
||||||
|
{{ $zzo := resources.Get "js/zzo.js" | resources.Minify | resources.Fingerprint }}
|
||||||
|
<script defer src="{{ $zzo.RelPermalink }}"></script>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
window.onload = function () {
|
||||||
|
runSearch();
|
||||||
|
}
|
||||||
|
</script>
|
Loading…
Reference in New Issue