mirror of
https://github.com/tiennm99/HugoBlox-kit.git
synced 2026-10-15 20:15:31 +00:00
feat: enable semantic address format to be localised
For example, US sites can use the US address format and Chinese sites can use the Chinese address format. A default address_format can be set in params.toml, which can be overriden on a per page basis using a parameter of the same name in a page's front matter. Optionally, multilingual sites may wish to add a default format for each site in languages.toml. BREAKING CHANGES - list_delimiter removed from params.toml - address_format added to params.toml - [address_formats] added to params.toml Close #1344
This commit is contained in:
1 parent
d0fb759153
commit
e6eb27deee
4 files changed
+33
-20
No files matched your search
@@ -136,9 +136,8 @@ date_format = "Jan 2, 2006"
|
|||||||
# Examples: "3:04 pm" or "15:04"
|
# Examples: "3:04 pm" or "15:04"
|
||||||
time_format = "3:04 PM"
|
time_format = "3:04 PM"
|
||||||
|
|
||||||
# List delimiter (separates parts of an address)
|
# Address format (choose from the [address_formats] list below or add you own to the list).
|
||||||
# Popular separators are ", " (comma), "<br>" (new line), " " (space)
|
address_format = "en-us"
|
||||||
list_delimiter = ", "
|
|
||||||
|
|
||||||
############################
|
############################
|
||||||
## Advanced
|
## Advanced
|
||||||
@@ -167,6 +166,12 @@ link_authors = true
|
|||||||
# E.g. To load `/assets/js/custom.js`, set `plugins_js = ["custom"]`.
|
# E.g. To load `/assets/js/custom.js`, set `plugins_js = ["custom"]`.
|
||||||
plugins_js = []
|
plugins_js = []
|
||||||
|
|
||||||
|
# Available address formats.
|
||||||
|
[address_formats]
|
||||||
|
en-us = {order = ['street', 'city', 'region', 'postcode'], delimiters = [', ', ', ', ' ', '']}
|
||||||
|
en-gb = {order = ['street', 'city', 'region', 'postcode'], delimiters = [', ', ', ', ', ', '']}
|
||||||
|
zh = {order = ['postcode', 'region', 'city', 'street'], delimiters = [' ', ' ', ' ', '']}
|
||||||
|
|
||||||
# Configuration of publication pages.
|
# Configuration of publication pages.
|
||||||
[publications]
|
[publications]
|
||||||
# Date format (refer to https://sourcethemes.com/academic/docs/customization/#date-format )
|
# Date format (refer to https://sourcethemes.com/academic/docs/customization/#date-format )
|
||||||
|
|||||||
@@ -0,0 +1,21 @@
|
|||||||
|
{{/* Function to return a formatted address given a semantic address. */}}
|
||||||
|
|
||||||
|
{{/* Check for valid site config. */}}
|
||||||
|
{{ if not site.Params.address_format }}{{errorf "Address format missing from `params.toml`!"}}{{end}}
|
||||||
|
{{ if not site.Params.address_formats }}{{errorf "Address formats missing from `params.toml`!"}}{{end}}
|
||||||
|
|
||||||
|
{{ $page := . }}
|
||||||
|
{{ $address := .address }}
|
||||||
|
{{ $format_name := $page.Params.address_format | default site.Params.address_format | default "en-us" }}
|
||||||
|
{{ $format := index site.Params.address_formats $format_name }}
|
||||||
|
{{ $address_display := slice }}
|
||||||
|
|
||||||
|
{{ range $k, $v := $format.order }}
|
||||||
|
{{ if eq $v "street" | and $address.street }}{{$address_display = $address_display | append $address.street | append (index $format.delimiters $k | default "") }}{{end}}
|
||||||
|
{{ if eq $v "city" | and $address.city }}{{$address_display = $address_display | append $address.city | append (index $format.delimiters $k | default "") }}{{end}}
|
||||||
|
{{ if eq $v "region" | and $address.region }}{{$address_display = $address_display | append $address.region | append (index $format.delimiters $k | default "") }}{{end}}
|
||||||
|
{{ if eq $v "postcode" | and $address.postcode }}{{$address_display = $address_display | append $address.postcode | append (index $format.delimiters $k | default "") }}{{end}}
|
||||||
|
{{ if eq $v "country" | and $address.country }}{{$address_display = $address_display | append $address.country | append (index $format.delimiters $k | default "") }}{{end}}
|
||||||
|
{{end}}
|
||||||
|
|
||||||
|
{{ return (delimit $address_display "") }}
|
||||||
@@ -65,16 +65,10 @@
|
|||||||
|
|
||||||
{{ $addr_formatted := "" }}{{/* Scoping for maps. */}}
|
{{ $addr_formatted := "" }}{{/* Scoping for maps. */}}
|
||||||
{{ if $data.address.street | or $data.address.city | or $data.address.region | or $data.address.postcode | or $data.address.country }}
|
{{ if $data.address.street | or $data.address.city | or $data.address.region | or $data.address.postcode | or $data.address.country }}
|
||||||
{{ $addr := slice }}
|
{{ $addr_formatted = partial "functions/get_address" (dict "root" . "address" $data.address) }}
|
||||||
{{with $data.address.street}}{{$addr = $addr | append .}}{{end}}
|
|
||||||
{{with $data.address.city}}{{$addr = $addr | append .}}{{end}}
|
|
||||||
{{with $data.address.region}}{{$addr = $addr | append .}}{{end}}
|
|
||||||
{{with $data.address.postcode}}{{$addr = $addr | append .}}{{end}}
|
|
||||||
{{with $data.address.country}}{{$addr = $addr | append .}}{{end}}
|
|
||||||
{{ $addr_formatted = delimit $addr (site.Params.list_delimiter | default ", ") }}
|
|
||||||
<li>
|
<li>
|
||||||
<i class="fa-li fas fa-map-marker fa-2x" aria-hidden="true"></i>
|
<i class="fa-li fas fa-map-marker fa-2x" aria-hidden="true"></i>
|
||||||
<span id="person-address">{{ $addr_formatted }}</span>
|
<span id="person-address">{{$addr_formatted}}</span>
|
||||||
</li>
|
</li>
|
||||||
{{ end }}
|
{{ end }}
|
||||||
|
|
||||||
|
|||||||
@@ -38,7 +38,7 @@
|
|||||||
{{ .Params.event | markdownify }}
|
{{ .Params.event | markdownify }}
|
||||||
{{ if .Params.event_url }}</a>{{ end }}
|
{{ if .Params.event_url }}</a>{{ end }}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-md-1"></div>
|
<div class="col-md-1"></div>
|
||||||
</div>
|
</div>
|
||||||
@@ -53,15 +53,8 @@
|
|||||||
<div class="col-12 col-md-3 pub-row-heading">{{ i18n "location" }}</div>
|
<div class="col-12 col-md-3 pub-row-heading">{{ i18n "location" }}</div>
|
||||||
<div class="col-12 col-md-9">{{ .Params.location | markdownify }}</div>
|
<div class="col-12 col-md-9">{{ .Params.location | markdownify }}</div>
|
||||||
{{ if .Params.address }}
|
{{ if .Params.address }}
|
||||||
{{ $addr := slice }}
|
|
||||||
{{with .Params.address.street}}{{$addr = $addr | append .}}{{end}}
|
|
||||||
{{with .Params.address.city}}{{$addr = $addr | append .}}{{end}}
|
|
||||||
{{with .Params.address.region}}{{$addr = $addr | append .}}{{end}}
|
|
||||||
{{with .Params.address.postcode}}{{$addr = $addr | append .}}{{end}}
|
|
||||||
{{with .Params.address.country}}{{$addr = $addr | append .}}{{end}}
|
|
||||||
{{ $addr_formatted := delimit $addr (site.Params.list_delimiter | default ", ") }}
|
|
||||||
<div class="col-md-3"></div>
|
<div class="col-md-3"></div>
|
||||||
<div class="col-12 col-md-9">{{$addr_formatted}}</div>
|
<div class="col-12 col-md-9">{{partial "functions/get_address" (dict "root" . "address" .Params.address) }}}}</div>
|
||||||
{{end}}
|
{{end}}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
Reference in new issue
Block a user