Widget einbinden
Wähle die Methode die zu deiner Webseite passt. Jede Rubrik aufklappen für die vollständige Schritt-für-Schritt Anleitung.
Das Widget erscheint als kleiner 📻-Button in einer Ecke deiner Seite. Besucher klicken drauf, der Player klappt auf. Läuft auf jeder Webseite – HTML, PHP, WordPress, Shopify, Wix, Squarespace, egal was.
</body> – das Ende jeder HTML-Seite</body> ein und speichere<script src="https://shimly.multifaucet.eu/stream/widget.js" data-genre="pop" data-position="bottom-right"> </script>
rock, jazz). data-position bestimmt die Ecke: bottom-right, bottom-left, top-right, top-left.Der Player erscheint sofort sichtbar an der Stelle wo du ihn einfügst – ideal für Musik-Seiten, Sidebars oder dedizierte Radio-Seiten.
<iframe
src="https://shimly.multifaucet.eu/stream/index.php?genre=pop"
width="360"
height="360"
frameborder="0"
scrolling="no"
style="border-radius:20px; border:none;
box-shadow:0 8px 40px rgba(0,0,0,0.3);">
</iframe>
width und height nach Bedarf anpassen. genre=pop durch dein Wunsch-Genre ersetzen.Damit die Musik beim Seitenwechsel nicht stoppt, bleibt der iFrame im DOM bestehen – nur der Seiteninhalt wechselt per AJAX. So wie es z.B. Spotify Web macht.
layout.php) die auf jeder Seite eingebunden wirdfetch() in einen Content-Bereich – kein echter Seitenwechsel<!DOCTYPE html>
<html lang="de">
<head>
<meta charset="UTF-8">
<title>Meine Webseite</title>
<style>
/* Player immer sichtbar – wird nie neu geladen */
#radio-player {
position: fixed;
bottom: 20px; right: 20px;
width: 340px; height: 400px;
border: none; border-radius: 16px;
box-shadow: 0 8px 40px rgba(0,0,0,0.4);
z-index: 9999;
}
#content { padding: 20px; max-width: 900px; margin: 0 auto; }
</style>
</head>
<body>
<!-- Player lädt einmal und bleibt aktiv -->
<iframe id="radio-player"
src="https://shimly.multifaucet.eu/stream/index.php?genre=pop"
scrolling="no"></iframe>
<!-- Nur dieser Bereich wechselt bei Navigation -->
<div id="content"></div>
<script>
function loadPage(url) {
fetch(url)
.then(r => r.text())
.then(html => {
// Nur body-Inhalt der geholten Seite nutzen
const doc = new DOMParser().parseFromString(html, 'text/html');
document.getElementById('content').innerHTML =
doc.body ? doc.body.innerHTML : html;
history.pushState({}, '', url);
});
}
// Browser Zurück/Vor
window.onpopstate = () => loadPage(location.pathname);
// Beim Start aktuelle Seite laden
loadPage(location.pathname);
// Alle internen Links abfangen
document.addEventListener('click', e => {
const a = e.target.closest('a');
if (a && a.href && a.origin === location.origin && !a.target) {
e.preventDefault();
loadPage(a.href);
}
});
</script>
</body>
</html>
Das Widget in WordPress einbauen ohne Plugin – einfach in die footer.php. Erscheint automatisch auf jeder Seite des WordPress-Blogs oder der Website.
footer.php anklicken<?php wp_footer(); ?> und füge den Code direkt davor ein<script src="https://shimly.multifaucet.eu/stream/widget.js" data-genre="pop" data-position="bottom-right"> </script>
In Shopify läuft das Widget über die theme.liquid Datei – kein Plugin, keine App nötig.
theme.liquid öffnen</body> und füge den Code direkt davor ein<script src="https://shimly.multifaucet.eu/stream/widget.js" data-genre="pop" data-position="bottom-right"> </script>
Wix erlaubt eigenen Code über den Custom Code Bereich – kein Upgrade nötig ab Wix Business.
<script src="https://shimly.multifaucet.eu/stream/widget.js" data-genre="pop" data-position="bottom-right"> </script>
Squarespace bietet Code Injection für eigenen Code – verfügbar ab dem Business-Plan.
<script src="https://shimly.multifaucet.eu/stream/widget.js" data-genre="pop" data-position="bottom-right"> </script>
In React-Apps wird das Script per useEffect dynamisch eingebunden – sauber und ohne Konflikte mit dem Virtual DOM.
_app.jsx (Next.js) oder deine Root-Komponente (App.jsx)useEffect Hook ein – das Script wird einmalig beim Start geladenimport { useEffect } from 'react';
export default function App({ Component, pageProps }) {
useEffect(() => {
const script = document.createElement('script');
script.src = 'https://shimly.multifaucet.eu/stream/widget.js';
script.setAttribute('data-genre', 'pop');
script.setAttribute('data-position', 'bottom-right');
document.body.appendChild(script);
return () => document.body.removeChild(script);
}, []);
return <Component {...pageProps} />;
}
return im useEffect sorgt dafür, dass das Script beim Unmount sauber entfernt wird. Für Next.js App Router: in layout.tsx einen separaten Client-Component erstellen.In Vue.js wird das Script per onMounted in der Root-Komponente eingebunden.
<script setup>
import { onMounted, onUnmounted } from 'vue';
let scriptEl = null;
onMounted(() => {
scriptEl = document.createElement('script');
scriptEl.src = 'https://shimly.multifaucet.eu/stream/widget.js';
scriptEl.setAttribute('data-genre', 'pop');
scriptEl.setAttribute('data-position', 'bottom-right');
document.body.appendChild(scriptEl);
});
onUnmounted(() => {
if (scriptEl) document.body.removeChild(scriptEl);
});
</script>
app.vue einfügen oder als Plugin unter plugins/shimly-radio.client.ts anlegen.In Joomla kannst du das Widget als benutzerdefiniertes HTML-Modul einbinden – ohne Erweiterung.
<script src="https://shimly.multifaucet.eu/stream/widget.js" data-genre="pop" data-position="bottom-right"> </script>
⚙️ Alle Parameter im Überblick
| Parameter | Mögliche Werte | Standard |
|---|---|---|
data-genre |
electronic, jazz, metal, pop, rock |
electronic |
data-position |
bottom-right, bottom-left, top-right, top-left |
bottom-right |
Für jeden Geschmack
Klicke ein Genre an – der Player links wechselt sofort dazu.
✨ Warum Shimly Radio?
Das Widget macht genau was du willst – ohne Kompromisse.