Skip to main content

max / makenotwork

3.2 KB · 83 lines History Blame Raw
1 {% extends "base.html" %}
2
3 {% block title %}{{ title }} - {{ project_title }}{% endblock %}
4 {% block body_attrs %} class="{{ crate::shell::measure(crate::shell::Measure::Reading) }}"{% endblock %}
5
6 {% block og_type %}<meta property="og:type" content="article">{% endblock %}
7 {% block social_card %}
8 {% if let Some(img) = project_cover_image_url %}
9 <meta name="twitter:card" content="summary_large_image">
10 <meta property="og:image" content="{{ img }}">
11 <meta name="twitter:image" content="{{ img }}">
12 {% else %}
13 <meta name="twitter:card" content="summary">
14 <meta property="og:image" content="{{ host_url }}/static/images/og-card.png">
15 <meta name="twitter:image" content="{{ host_url }}/static/images/og-card.png">
16 {% endif %}
17 {% endblock %}
18
19 {% block head %}
20 <meta property="og:title" content="{{ title }} - {{ project_title }}">
21 <meta property="og:description" content="{{ creator_display_name.as_deref().unwrap_or(&creator_username) }} on Makenotwork">
22 <meta property="og:url" content="{{ host_url }}/p/{{ project_slug }}/blog/{{ post_slug }}">
23 <link rel="canonical" href="{{ host_url }}/p/{{ project_slug }}/blog/{{ post_slug }}">
24 <meta name="twitter:title" content="{{ title }} - {{ project_title }}">
25 <meta name="twitter:description" content="{{ creator_display_name.as_deref().unwrap_or(&creator_username) }} on Makenotwork">
26 <script type="application/ld+json">
27 {
28 "@context": "https://schema.org",
29 "@type": "BlogPosting",
30 "headline": "{{ title_json|safe }}",
31 "url": "{{ host_url }}/p/{{ project_slug }}/blog/{{ post_slug }}",
32 "author": {
33 "@type": "Person",
34 "name": "{{ creator_username }}",
35 "url": "{{ host_url }}/u/{{ creator_username }}"
36 },
37 "datePublished": "{{ published_at }}",
38 "isPartOf": {
39 "@type": "Blog",
40 "name": "{{ project_title_json|safe }}",
41 "url": "{{ host_url }}/p/{{ project_slug }}/blog"
42 }
43 }
44 </script>
45 {% endblock %}
46
47 {% block content %}
48 {% include "partials/site_header.html" %}
49
50 <article class="article-container">
51 <div class="blog-nav">
52 <a href="/p/{{ project_slug }}">{{ project_title }}</a> /
53 <a href="/p/{{ project_slug }}/blog">Blog</a>
54 </div>
55
56 <header class="author-header">
57 <div class="author-avatar">{{ creator_avatar_initials }}</div>
58 <div class="author-info">
59 <div class="author-name"><a href="/u/{{ creator_username }}" class="unstyled-link">{% if let Some(name) = creator_display_name %}{{ name }}{% else %}{{ creator_username }}{% endif %}</a></div>
60 <div class="article-meta">{{ published_at }}</div>
61 </div>
62 </header>
63
64 <h1 class="article-title">{{ title }}</h1>
65
66 <div class="article-body">
67 {{ body_html|safe }}
68 </div>
69
70 <footer class="article-footer">
71 <div class="blog-nav">
72 <a href="/p/{{ project_slug }}/blog">Back to all posts</a>
73 </div>
74
75 <div class="reader-actions">
76 <a href="/p/{{ project_slug }}/blog/{{ post_slug }}" data-copy-link>Copy link</a>
77 </div>
78 </footer>
79 </article>
80
81 {% include "partials/discussion_section.html" %}
82 {% endblock %}
83