Theme
Peacock in Squarespace einbauen
Squarespace erlaubt Code Injection (Header + Footer Site-weit) und Code Blocks in einzelnen Page-Sections. Beide tragen den Peacock-Embed-Script. Code Blocks brauchen ein Business- oder Commerce-Plan — Personal-Pläne sehen die Code-Block-Option im Editor nicht.
Voraussetzung
- Squarespace Business oder Commerce Plan (Code Blocks + Code Injection beide freigeschaltet).
- Peacock-Space-Slug. Test-Setup:
marketing-demo//marketing-demo.
Schritt 1 — Embed-Script Site-weit einbauen
Squarespace-Dashboard → Settings → Advanced → Code Injection → Footer:
html
<script
src="https://peacock-cms.webhoch.com/embed.js"
data-peacock-api="https://peacock-cms.webhoch.com"
data-peacock-space="dein-space-slug"
defer
></script>Save klicken. Squarespace rendert den Tag jetzt am Ende jeder Page kurz vor </body>.
Schritt 2 — Story-Container pro Page
Im Page-Editor: Add Section → blank → Add Block → Code ("Code Block"). Im Code-Block:
html
<div data-peacock-story="/about"></div>Apply → Save. Beim Publish füllt der Embed-Script den Container.
Code-Block ≠ Markdown-Block
Squarespace hat auch einen Markdown- und einen HTML in Text- Block. Beide escapen HTML in unterschiedlichen Stufen. Nimm immer den dedizierten Code Block — der ist explizit für rohen HTML/JS- Code gedacht.
Schritt 3 — Multi-Story-Pages
Mehrere Code-Blocks pro Page sind erlaubt, jeder mit eigenem data-peacock-story:
html
<!-- Block 1 -->
<div data-peacock-story="/hero"></div>
<!-- Block 2 (in eigener Section) -->
<div data-peacock-story="/cta"></div>Schritt 4 — AJAX-Navigation: Re-Hydration nötig
Squarespace 7.x verwendet AJAX-Page-Transitions — beim Wechsel zwischen Pages tauscht es nur den <main>-Bereich aus, ohne ein vollständiges Page-Reload. Der Embed-Script läuft einmal beim ersten Pageload und scannt das DOM. Nach einer AJAX-Navigation sind neue Story-Container im DOM, aber der Script hat sie noch nicht hydriert.
Lösung: ein Hook im Site-Wide-Footer-Code, der bei jedem Page-Wechsel window.peacockEmbed.hydrate() aufruft:
html
<!-- IM Footer-Code-Injection, NACH dem Embed-Script-Tag -->
<script>
// Squarespace dispatched 'mercury:load' nach jedem AJAX-Wechsel.
// Wir hängen uns dran und re-scannen das DOM für neue Container.
document.addEventListener('mercury:load', function () {
if (window.peacockEmbed && typeof window.peacockEmbed.hydrate === 'function') {
window.peacockEmbed.hydrate();
}
});
</script>Wenn Squarespace mercury:load nicht feuert (älter als 7.1), fallback auf einen MutationObserver:
html
<script>
if (typeof MutationObserver !== 'undefined') {
var obs = new MutationObserver(function () {
if (window.peacockEmbed) window.peacockEmbed.hydrate();
});
obs.observe(document.body, { childList: true, subtree: true });
}
</script>Schritt 5 — Pro-Funktionen
Squarespace ändert data-*-Attribute in Code-Blocks nicht — alle Pro-Features bleiben verfügbar:
html
<div data-peacock-story="/welcome" data-peacock-lang="en-GB"></div>
<div data-peacock-story="/hero" data-peacock-segment="newsletter"></div>Squarespace-spezifische Stolpersteine
„Im Editor sehe ich nur einen leeren Block."
Code-Blocks rendern im Editor-Vorschaumodus nicht — nur im Live- Site-Modus (Preview-Window oder publishter Live-Site). Klick auf Preview in der Editor-Toolbar.
„Squarespace zeigt mir eine 'Code disabled' Warnung."
Du bist auf einem Personal-Plan. Code-Blocks und Code-Injection sind beide auf Business+ beschränkt. Upgrade nötig.
„Mein Embed-Script wird in Squarespace-Cache gebackt."
Squarespace cached Footer-Code aggressiv. Nach einem Update auf das Script (z. B. anderer Space-Slug) musst du den Browser-Cache hard-refresh (Cmd+Shift+R / Ctrl+Shift+R) plus eventuell Squarespace-Server-Cache leeren (Settings → Advanced → Refresh CDN).
Heading-Hierarchie
Squarespace-Sections setzen automatisch <h1> für den Titel. Peacock-Hero-Blöcke emittieren ebenfalls <h1> — kollidiert. Fix per data-peacock-heading-offset="1":
html
<script
src="https://peacock-cms.webhoch.com/embed.js"
data-peacock-api="https://peacock-cms.webhoch.com"
data-peacock-space="dein-space-slug"
data-peacock-heading-offset="1"
defer
></script>Mehr: Integration-Guide.
SEO-Tradeoff
SEO-kritisch?
Squarespace + Embed-Script = Client-Side-Rendering. Squarespace liefert das Page-HTML mit leerem Container, der Browser füllt ihn per JS.
Squarespace selbst hat einen ordentlichen SEO-Workflow (Meta-Tags, sitemap.xml, OG-Images automatisch). Für Indexierbarkeit des CMS-Contents gilt aber: Crawler mit JS-Eval indexieren ihn verspätet und unzuverlässig.
Für SEO-kritische Sub-Seiten ist die bessere Wahl ein Astro/Next-Setup mit SSR — Squarespace bleibt für News-Banner, Marketing-Inserts und Blog- Anhänge optimal.