SEO: climate hub — collapse all countries by default, order alphabetically (#104)

Drop the open-by-default on the first three countries (every <details> starts
collapsed) and order the country sections alphabetically instead of by largest
city's population.
This commit is contained in:
Emi Griffith 2026-07-15 20:22:47 -07:00 committed by GitHub
parent 586a7b1aa1
commit 0e16ad2a93
2 changed files with 3 additions and 4 deletions

View file

@ -58,12 +58,11 @@ def display_name(city: dict) -> str:
def by_country() -> dict[str, list[dict]]:
"""Cities grouped by country (population-descending within each), country keys
ordered by their largest city for the /climate hub's crawlable link graph."""
ordered alphabetically for the /climate hub's crawlable link graph."""
groups: dict[str, list[dict]] = {}
for c in _load():
key = c.get("country") or c.get("country_code") or "Other"
groups.setdefault(key, []).append(c)
for v in groups.values():
v.sort(key=lambda x: -x["population"])
# order countries by their biggest city's population (most prominent first)
return dict(sorted(groups.items(), key=lambda kv: -kv[1][0]["population"]))
return dict(sorted(groups.items(), key=lambda kv: kv[0].lower()))

View file

@ -12,7 +12,7 @@
{{ n_cities }} cities across {{ n_countries }} countries. Every day is graded against that
location's own ~45 years of climate history.</p>
{% for country, cs in groups.items() %}
<details class="hub-country"{% if loop.index <= 3 %} open{% endif %}>
<details class="hub-country">
<summary>{{ country }} <span class="hub-count">{{ cs | length }}</span></summary>
<ul class="city-links">
{% for c in cs %}<li><a href="{{ base }}/climate/{{ c.slug }}">{{ c.name }}</a></li>{% endfor %}