source: Klonkt/src/views/pages/admin-seo.ejs@ cc22112

main
Last change on this file since cc22112 was 03af7f8, checked in by roboburr <roboburr@…>, 3 months ago

SEO page: own style block (label-per-row, clean fields)

The .site-form style was scoped to admin-site-edit; the standalone SEO page
didn't inherit it → bare inline fields. Same style now applied.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@…>

  • Property mode set to 100644
File size: 7.3 KB
Line 
1<div class="container admin-site-edit-page">
2 <p><a href="/admin" class="btn">&larr; Beheer</a></p>
3 <h1>SEO &amp; vindbaarheid</h1>
4 <p class="admin-tagline">Geavanceerde SEO van <strong><%= site.title %></strong> — hoe je site in zoekmachines en bij het delen op social media verschijnt.</p>
5
6 <% if (typeof success !== 'undefined' && success) { %><div class="audio-flash audio-flash--ok"><%= success %></div><% } %>
7 <% if (typeof error !== 'undefined' && error) { %><div class="audio-flash audio-flash--err"><%= error %></div><% } %>
8
9 <form method="post" action="/admin/seo" class="site-form">
10
11 <fieldset>
12 <legend>Indexeren</legend>
13 <label class="cb">
14 <input type="checkbox" name="robots_index" value="1" <%= site.robots_index ? 'checked' : '' %>>
15 <span>Zoekmachines mogen deze site indexeren <small class="form-hint-inline">— uit = <code>noindex</code> + sitemap.xml verborgen</small></span>
16 </label>
17 </fieldset>
18
19 <fieldset>
20 <legend>Titel &amp; omschrijving</legend>
21 <label>
22 <span>Titel-sjabloon <small class="form-hint-inline">— gebruik <code>{title}</code> en <code>{site}</code></small></span>
23 <input type="text" name="title_template" value="<%= site.title_template || '{title} — {site}' %>" maxlength="200" placeholder="{title} — {site}">
24 </label>
25 <label>
26 <span>Standaard-omschrijving <small class="form-hint-inline">— meta description / og:description als een pagina er geen heeft</small></span>
27 <textarea name="default_description" rows="2" maxlength="500" placeholder="Korte omschrijving van je site (max ~160 tekens werkt het best)"><%= site.default_description || '' %></textarea>
28 </label>
29 <label>
30 <span>Canonieke basis-URL <small class="form-hint-inline">— de productie-HTTPS-URL, voorkomt dubbele-content-straf</small></span>
31 <input type="text" name="canonical" value="<%= site.canonical || '' %>" placeholder="https://jouw-domein.com" maxlength="200">
32 </label>
33 <label>
34 <span>Auteur <small class="form-hint-inline">— meta author-tag</small></span>
35 <input type="text" name="author" value="<%= site.author || '' %>" maxlength="120" placeholder="Jouw naam">
36 </label>
37 </fieldset>
38
39 <fieldset>
40 <legend>Delen op social media</legend>
41 <label>
42 <span>Standaard deel-afbeelding (URL) <small class="form-hint-inline">— og:image / Twitter-card; ~1200×630px</small></span>
43 <input type="text" name="og_image_default" value="<%= site.og_image_default || '' %>" placeholder="https://jouw-domein.com/share.jpg" maxlength="500">
44 </label>
45 <label>
46 <span>Taal-locale <small class="form-hint-inline">— og:locale, bv. <code>nl_NL</code> of <code>en_US</code></small></span>
47 <input type="text" name="og_locale" value="<%= site.og_locale || '' %>" placeholder="nl_NL" maxlength="32">
48 </label>
49 <label>
50 <span>Twitter / X-handle <small class="form-hint-inline">— met @</small></span>
51 <input type="text" name="twitter" value="<%= site.twitter || '' %>" placeholder="@jouwnaam" maxlength="64">
52 </label>
53 <label>
54 <span>Facebook App-ID <small class="form-hint-inline">— fb:app_id (optioneel)</small></span>
55 <input type="text" name="facebook_app_id" value="<%= site.facebook_app_id || '' %>" maxlength="64">
56 </label>
57 </fieldset>
58
59 <fieldset>
60 <legend>Uitgever (JSON-LD / rich results)</legend>
61 <label>
62 <span>Type</span>
63 <select name="schema_type">
64 <option value="Person" <%= site.schema_type === 'Organization' ? '' : 'selected' %>>Persoon</option>
65 <option value="Organization" <%= site.schema_type === 'Organization' ? 'selected' : '' %>>Organisatie / bedrijf</option>
66 </select>
67 </label>
68 <label>
69 <span>Naam <small class="form-hint-inline">— valt terug op de site-titel</small></span>
70 <input type="text" name="publisher_name" value="<%= site.publisher_name || '' %>" maxlength="200">
71 </label>
72 <label>
73 <span>URL</span>
74 <input type="text" name="publisher_url" value="<%= site.publisher_url || '' %>" placeholder="https://jouw-domein.com" maxlength="200">
75 </label>
76 <label>
77 <span>Logo (URL)</span>
78 <input type="text" name="publisher_logo" value="<%= site.publisher_logo || '' %>" placeholder="https://jouw-domein.com/logo.png" maxlength="500">
79 </label>
80 </fieldset>
81
82 <fieldset>
83 <legend>Zoekmachine-verificatie</legend>
84 <label>
85 <span>Google site-verificatie</span>
86 <input type="text" name="google_verification" value="<%= site.google_verification || '' %>" maxlength="200">
87 </label>
88 <label>
89 <span>Bing <small class="form-hint-inline">— msvalidate.01</small></span>
90 <input type="text" name="bing_verification" value="<%= site.bing_verification || '' %>" maxlength="200">
91 </label>
92 <label>
93 <span>Pinterest <small class="form-hint-inline">— p:domain_verify</small></span>
94 <input type="text" name="pinterest_verification" value="<%= site.pinterest_verification || '' %>" maxlength="200">
95 </label>
96 <label>
97 <span>Yandex</span>
98 <input type="text" name="yandex_verification" value="<%= site.yandex_verification || '' %>" maxlength="200">
99 </label>
100 </fieldset>
101
102 <button type="submit" class="btn btn-primary">SEO opslaan</button>
103 </form>
104</div>
105
106<style>
107.admin-site-edit-page { max-width: 760px; margin: 3rem auto; padding: 0 1rem; }
108.admin-site-edit-page h1 { font-family: var(--font-display, serif); font-size: 1.8rem; margin: 0 0 0.4rem; }
109.admin-site-edit-page .admin-tagline { color: var(--ink-muted); margin: 0 0 1.75rem; }
110
111.site-form { display: flex; flex-direction: column; gap: 1.5rem; }
112.site-form fieldset {
113 border: 1px solid var(--rule);
114 border-radius: 8px;
115 padding: 1rem 1.25rem;
116 background: var(--paper-2);
117 display: flex;
118 flex-direction: column;
119 gap: 0.85rem;
120}
121.site-form fieldset legend { font-family: var(--font-display, serif); font-size: 1rem; padding: 0 0.4rem; }
122.site-form label { display: flex; flex-direction: column; gap: 0.3rem; font-size: 0.85rem; color: var(--ink-muted, var(--ink-soft)); }
123.site-form label.cb { flex-direction: row; align-items: flex-start; gap: 0.55rem; font-size: 0.9rem; color: var(--ink); }
124.site-form label.cb input { margin-top: 0.15rem; }
125.site-form label > span { line-height: 1.35; }
126.form-hint-inline { font-weight: 400; color: var(--ink-muted); font-size: 0.82em; }
127.site-form code { background: var(--paper); padding: 0.05rem 0.35rem; border-radius: 3px; font-size: 0.85em; }
128.site-form input[type="text"], .site-form textarea, .site-form select {
129 padding: 0.55rem 0.85rem;
130 border: 1px solid var(--rule);
131 border-radius: 5px;
132 background: var(--paper);
133 color: var(--ink);
134 font-family: inherit;
135 font-size: 0.95rem;
136 width: 100%;
137 box-sizing: border-box;
138}
139.site-form textarea { resize: vertical; min-height: 2.6rem; }
140.site-form select { max-width: 320px; }
141.site-form input:focus, .site-form textarea:focus, .site-form select:focus {
142 outline: none; border-color: var(--accent);
143}
144.seo-pointer p { margin: 0; font-size: 0.9rem; color: var(--ink-muted); }
145.seo-pointer a { color: var(--accent); font-weight: 600; }
146.site-form > button[type="submit"] { align-self: flex-start; }
147</style>
Note: See TracBrowser for help on using the repository browser.