So fügen Sie benutzerdefiniertes JavaScript in Shopify hinzu (2026)

Zuletzt aktualisiert
Von Experten geprüft
5 Min. Lesezeit
Jacques Blom
Jacques Blom
CTO bei Fudge.

Wichtigste Erkenntnisse

  • Der beste Ort für abschnittsspezifisches JavaScript ist der {% javascript %}-Block in der Liquid-Datei der Section — Shopify bündelt es und wendet automatisch defer an.
  • Globales JavaScript, das auf jeder Seite ausgeführt wird, gehört in die theme.liquid vor das </body>-Tag, idealerweise mit einem defer-Attribut.
  • Der Custom HTML Block im Theme Editor akzeptiert Inline-<script>-Tags — nützlich für schnelle Snippets ohne Zugriff auf den Code Editor.
  • Kann man Shopify eigenen Code hinzufügen? Ja — der Code Editor ist für alle mit der Berechtigung “Themes verwalten” vollständig zugänglich.

JavaScript treibt die interaktiven Elemente deines Shopify-Stores an — dynamische Warenkorb-Updates, Custom-Produktkonfiguratoren, Scroll-Animationen und mehr. Shopify bietet dir verschiedene Stellen, um JavaScript hinzuzufügen, jeweils mit unterschiedlichem Scope und Auswirkungen auf die Performance.

Kann man benutzerdefinierten Code zu Shopify hinzufügen?

Ja, der Shopify-Code-Editor ist vollständig zugänglich. Gehe zu Online Store → Themes → Actions → Edit code, um alle Theme-Dateien zu durchsuchen und zu bearbeiten. Du kannst JavaScript auf verschiedene Arten hinzufügen:

  1. Sektions-{% javascript %}-Blöcke
  2. Globale theme.liquid
  3. Eigenständige .js-Dateien im assets/-Ordner
  4. Custom HTML-Blöcke im Theme Editor

Passend dazu: So erstellen Sie einen neuen Sektionstyp in Shopify von Grund auf (2026).


Methode 1 — Sektions-{% javascript %}-Blöcke (empfohlen)

Die beste Methode für JavaScript, das spezifisch für eine Section ist.

Füge in deiner Section-Datei (sections/your-section.liquid) einen {% javascript %}-Block hinzu:

<div class="countdown-section" id="countdown-{{ section.id }}">
  <span class="countdown-timer"></span>
</div>

{% javascript %}
  // Dieser Code wird:
  // - Automatisch von Shopify mit anderem Section-JS gebündelt
  // - Automatisch verzögert (defer), blockiert also nicht das Rendern der Seite
  // - Nur kompiliert, wenn die Section tatsächlich auf einer Seite verwendet wird

  class CountdownTimer extends HTMLElement {
    connectedCallback() {
      this.startCountdown();
    }

    startCountdown() {
      // Countdown-Logik
    }
  }

  if (!customElements.get('countdown-timer')) {
    customElements.define('countdown-timer', CountdownTimer);
  }
{% endjavascript %}

Warum dieser Ansatz am besten ist:

Wichtig: Variablen in {% javascript %}-Blöcken können nicht direkt auf Liquid-Variablen zugreifen. Wenn du Liquid-Daten in deinem JS benötigst, gib sie als Data-Attribute oder als JSON-Script-Tag im HTML-Teil der Section aus.

Liquid-Daten an JavaScript übergeben:

<div
  class="product-countdown"
  data-sale-end="{{ section.settings.sale_end_date }}"
  data-product-id="{{ product.id }}"
></div>

Und dann in deinem JavaScript:

Passend dazu: CSS und JavaScript in Shopify minimieren.

var el = document.querySelector('.product-countdown')
var saleEnd = el.dataset.saleEnd
var productId = el.dataset.productId

Methode 2 — theme.liquid (globales JavaScript)

Für JavaScript, das auf jeder Seite deines Shops ausgeführt werden muss, füge es der theme.liquid hinzu.

Passend dazu: Render-blockierende Skripte in Shopify beheben.

Vor </body> mit defer (nicht-kritische globale Skripte):

<script src="{{ 'custom-global.js' | asset_url }}" defer></script>

Inline-Skript im <head> (nur für kritische, sehr kleine Skripte):

<script>
    // Halte dies extrem klein – es blockiert das Rendern der Seite
    window.__store = {currency: '{{ shop.currency }}'}
</script>

Wann man theme.liquid für JavaScript nutzt:

Verwende bei externen Skript-Referenzen in der theme.liquid immer defer oder async. Einfache <script src="...">-Tags im <head> blockieren das Rendern der Seite.


Methode 3 — Custom HTML-Block im Theme Editor

Einige Themes enthalten im Theme-Editor einen Section-Typ für „Benutzerdefiniertes HTML“ (Custom HTML). Dieser akzeptiert beliebiges HTML, einschließlich <script>-Tags.

Wann man das nutzt:

Einschränkungen:


So fügen Sie benutzerdefiniertes JS ohne den Code-Editor hinzu

Wenn Sie keinen Zugriff auf den Code-Editor haben (oder ihn lieber nicht verwenden), ist der Custom HTML-Sektionsblock die Alternative. Fügen Sie im Theme Editor eine Custom HTML-Sektion hinzu, fügen Sie Ihren <script>...</script>-Code ein und speichern Sie.

Für größeres oder komplexeres JavaScript ist Fudge der bessere Ansatz – beschreiben Sie das gewünschte Verhalten, und Fudge schreibt das JavaScript als ordentlich strukturierten Sektions-{% javascript %}-Block.

Fügen Sie benutzerdefinierte JavaScript-Funktionen hinzu, indem Sie sie Fudge beschreiben.
Try Fudge for Free

JavaScript aus dem Ordner assets/ laden

Für wiederverwendbares JavaScript, auf das mehrere Sektionen verweisen:

  1. Gehen Sie zum Code-Editor → Ordner assets/ → erstellen Sie eine neue .js-Datei
  2. Schreiben Sie Ihr JavaScript in die Datei
  3. Referenzieren Sie es in theme.liquid oder einer Sektion:
<!-- In theme.liquid oder dem HTML einer Sektion -->
<script src="{{ 'your-script.js' | asset_url }}" defer></script>

Dieser Ansatz eignet sich gut für Utility-Bibliotheken oder geteilte Funktionalitäten, aber der {% javascript %}-Block-Ansatz wird für sektionsspezifischen Code bevorzugt, da dieser automatisch gebündelt wird.


Häufige Fehler bei Shopify JavaScript

Verwendung von document.write(). Wird in verzögerten Skripten nicht unterstützt und ist generell veraltet.

Annahme, dass jQuery verfügbar ist. Moderne Shopify-Themes (Dawn und neuer) enthalten kein jQuery. Schreiben Sie stattdessen Plain JavaScript.

Direkter Zugriff auf Liquid-Variablen in {% javascript %}-Blöcken. Das funktioniert nicht – Liquid wird serverseitig verarbeitet, bevor JavaScript ausgeführt wird. Übergeben Sie Daten stattdessen via Data-Attribute.

Script-Tag im <head> ohne defer/async. Jede Millisekunde JavaScript-Parse-Zeit im <head> verzögert Ihre Seite. Laden Sie unkritische Skripte immer verzögert.


Unterstützt Shopify JavaScript?

Ja. Shopify-Themes basieren auf HTML, CSS, Liquid (Shopifys Templating-Sprache) und JavaScript. Du hast vollen Zugriff auf die JavaScript-APIs des Browsers und kannst jede JavaScript-Library verwenden, indem du sie aus deinem Assets-Ordner oder von einem CDN lädst. Shopify bietet zudem eigene JavaScript-APIs an – Shopify.currency, die Ajax Cart API und die Section Rendering API – für gängige Storefront-Interaktionen. Die einzige Einschränkung ist, dass serverseitiges JavaScript (Node.js) nicht in Shopify-Themes läuft; sämtliches JS in Themes wird im Browser ausgeführt.

Jacques's signature
Füge Shopify benutzerdefinierte JavaScript-Funktionen hinzu, indem du einfach beschreibst, was du brauchst.

Passend dazu: So fügst du Tracking-Skripte zu Shopify hinzu (2026).


FAQ

Wo sollte ich benutzerdefiniertes JavaScript hinzufügen – im Section-Block oder in der theme.liquid?

Im Section-Block {% javascript %}, wenn das JS nur für eine Section gilt (Countdown-Timer, Bildergalerie-Verhalten). In der theme.liquid, wenn das JS auf jeder Seite ausgeführt werden muss (Analytics, globale Utility-Funktionen). Vermischst du das – und packst Section-spezifisches JS in die theme.liquid – leidet die Performance, weil der Code auf Seiten geladen wird, die ihn nicht brauchen. Wenn du das JS lieber nicht selbst schreiben möchtest, beschreibe Fudge, was du brauchst, und es generiert den richtigen isolierten Block in der richtigen Datei.

Kann ich jQuery in einem Shopify-Theme verwenden?

Moderne Themes (Dawn und neuer) enthalten standardmäßig kein jQuery – Vanilla JavaScript wird erwartet. Wenn du jQuery unbedingt verwenden musst, lade es explizit über ein CDN, aber prüfe zuerst die Auswirkungen auf die Dateigröße. Für die meisten jQuery-Einzeiler gibt es entsprechende Vanilla-Einzeiler.

Warum wird mein JavaScript nicht ausgeführt?

Die häufigsten Gründe: (1) Das Skript wird geladen, bevor das DOM-Element, auf das es abzielt, existiert – packe es in DOMContentLoaded oder nutze defer. (2) Ein Liquid-Template-Fehler hat die Seitenausgabe zerschossen. (3) Eine Content Security Policy in deinem Theme blockiert das Skript. Öffne die Browser-Konsole, um nach Fehlern zu suchen.

Kann ich JavaScript auf den Shopify-Checkout-Seiten ausführen?

Nur Shopify Plus-Händler können die checkout.liquid direkt bearbeiten. Für alle anderen ist die Customer Events API (Custom Pixels) der offiziell unterstützte Weg, um JavaScript auf Checkout-Seiten auszuführen – einschließlich der Dankesseite, dem Adress-Schritt und dem Versand-Schritt.

Wird benutzerdefiniertes JavaScript meinen Lighthouse-Score verschlechtern?

Das kann passieren, wenn es unvorsichtig hinzugefügt wird. Die größten Leistungseinbußen entstehen durch Inline-Skripte im <head> ohne defer, große Bibliotheken, die auf jeder Seite geladen werden, und JavaScript, das schwere Prozesse synchron beim Laden der Seite ausführt. Nutze defer, nutze Lazy-Initialisierung wo möglich und binde Code nur auf Seiten ein, die ihn auch benötigen.

Jacques's signature
Füge benutzerdefinierte JavaScript-Funktionen zu Shopify hinzu, indem du einfach beschreibst, was du brauchst.

Passend dazu: Tracking-Skripte in Shopify hinzufügen.

You might also be interested in

So passen Sie die checkout.liquid in Shopify Plus an (2026)
So bearbeiten Sie die checkout.liquid in Shopify Plus — Layout anpassen, Trust Badges hinzufügen, Upsell-Blöcke erstellen und auf Checkout Extensibility vorbereiten.