Re: Block um Code zum Kopieren einzufügen
Verfasst: Di 14. Okt 2025, 20:13
Hi Tommy,
freut mich das du es brauchen kannst
freut mich das du es brauchen kannst
Forum für Mobirise und NOF
https://mobirise-tutorials.com/Forum/
Code: Alles auswählen
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.9.0/styles/atom-one-dark.min.css">Code: Alles auswählen
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.9.0/styles/github.min.css">Sehe ich und Chat GPT andersTommy Herrmann hat geschrieben: So 19. Okt 2025, 12:48
Die Verweise gehören auch dringend in den <head> und nicht in den Block. Ebenso gehört das JavaScript nicht in den Block sondern an das Ende vom </body> Code.
Mobirise lädt alle Blöcke innerhalb des <body>.
Wenn du also dort ein
<link rel="stylesheet" ...>
<script src="..."></script>
einfügst, wird das Stylesheet trotzdem korrekt vom Browser geladen und angewendet.
Das Gleiche gilt für das Highlight.js-Skript – es wird nachträglich im DOM ausgeführt und funktioniert einwandfrei.
Wann das völlig okay ist
Wenn der Block einzeln funktioniert (z. B. dein Code-Viewer-Block mit Syntaxhighlighting).
Wenn du mehrere Mobirise-Projekte oder -Seiten hast, und nur dieser Block Highlight.js braucht.
Wenn du das Projekt später als Mobirise-Erweiterung (.mbrext) veröffentlichst – dort sollen CSS/JS-Abhängigkeiten im Block stehen.
Dann ist das sogar die empfohlene Vorgehensweise, weil Mobirise keine Head-Zugriffe beim Blockladen erlaubt.
Wann du es lieber in den globalen HEAD packst
Wenn du mehrere Blöcke oder Seiten hast, die alle Highlight.js nutzen → sonst wird das gleiche Script mehrfach geladen.
Wenn du eine eigene Website (außerhalb Mobirise) manuell pflegst → dort ist der Head-Bereich ideal, da Skripte so nur einmal geladen werden.
Dann gehören diese Zeilen z. B. in deine index.html zwischen <head> und </head>:
<link rel="stylesheet"
href="https://cdnjs.cloudflare.com/ajax/libs/ ... rk.min.css">
<script src="https://cdnjs.cloudflare.com/ajax/libs/ ... "></script>
Empfehlung für Mobirise-Nutzung
Da du ja deine Blöcke als Mobirise-Erweiterung unter dem Namen "Volker" verwendest (wie wir in früheren Projekten gemacht haben):
Lass es im Block drin.
Mobirise lädt es automatisch, wenn der Block auf der Seite aktiv ist.
Keine Fehler, keine Konflikte.
Fazit:
Ort Empfehlung
Im BlockPerfekt für Mobirise-Blöcke oder Einzelverwendung
Im globalen <head>Besser bei vielen Seiten/Blöcken, um doppelte Ladungen zu vermeiden
Warum das im Block funktioniert
Mobirise rendert den Block vollständig im <body>-Bereich, und das Script wird direkt nach dem HTML ausgeführt.
Da das Script mit document.addEventListener("click", …) arbeitet, registriert es ein globales Klick-Event, das überall auf der Seite funktioniert.
Der Code ist selbstständig, braucht keine Abhängigkeiten und ist sicher gekapselt durch
(function(){ ... })();
(eine sogenannte IIFE – Immediately Invoked Function Expression).
Das heißt:
Der Code läuft genau einmal pro Blockeinbindung.
Kein Konflikt mit anderen Mobirise-Skripten.
Kein Problem, wenn du den Block mehrmals verwendest – der Eventlistener bleibt stabil.
Wann das sinnvoll ist
Perfekt für Mobirise-Blöcke, die:
eigene Buttons oder interaktive Elemente enthalten (z. B. „Kopieren“, Tabs, Accordion usw.)
auf mehreren Seiten unabhängig voneinander funktionieren sollen
nicht im globalen Projekt-JS landen müssen
So wie dein Code-Viewer-Block → idealer Ort ist direkt im Block.
Ich doch auch - nur ich ersetze eben allesTommy Herrmann hat geschrieben: So 19. Okt 2025, 16:30 Ich ersetze also - im Gegenteil zu Dir - den Inhalt des Blocks und nicht den Block selbst, den man verwenden wird.
Code: Alles auswählen
<section data-bs-version="5.1" class="menu mega-menu-volker" group="Menu" plugins="DropDown, TouchSwipe" always-top global once="menu" not-draggable>
<mbr-parameters>
<header>Show/Hide</header>
<input type="checkbox" title="Logo" name="showLogo" checked>
<input type="checkbox" title="Brand Name" name="showBrand">
<input type="checkbox" title="Menu Items" name="showItems" checked>
<input type="color" title="Mega-Menü Toggle Farbe" name="megaToggleColor" value="#ffffff">
<header>Mega-Menü</header>
<select title="Spaltenzahl" name="megaCols">
<option value="1">1 Spalte</option>
<option value="2" selected>2 Spalten</option>
<option value="3">3 Spalten</option>
<option value="4">4 Spalten</option>
</select>
<input type="checkbox" title="Mega-Menü immer offen (Editor)" name="megaAlwaysOpen">
<header>Farben & Schrift</header>
<input type="checkbox" title="Sticky" name="sticky" checked>
<input type="color" title="Hintergrundfarbe" name="menuBgColor" value="#000000">
<input type="color" title="Linkfarbe" name="linkColor" value="#163300">
<input type="color" title="Mega-Menü Linkfarbe" name="megaMenuLinkColor" value="#ffffff">
<input type="color" title="Hamburger Farbe" name="hamburgerColor" value="#ffffff">
<input type="range" title="Schriftgröße (rem)" name="linkSize" min="0.8" max="1.6" step="0.05" value="1.5">
<input type="color" title="Mega-Menü Hintergrundfarbe" name="megaBgColor" value="#121212">
<input type="range" title="Mega-Menü Überschrift Größe (rem)" name="megaHeadingSize" min="0.8" max="2.5" step="0.1" value="1.7">
<input type="color" title="Brand Name Farbe" name="brandColor" value="#9fe870">
<input type="range" title="Mega-Menü Transparenz" name="megaOpacity" min="0" max="1" step="0.05" value="0.8">
</mbr-parameters>
Bereich Mobirise 5 Mobirise 6
Dynamische Werte Klassen + CSS Inline-Styles über mbr-style
Bedingte Anzeige JavaScript mbr-if direkt im Block
Variablenbindung Kein Support {{variable}} überall erlaubt
Responsivität Bootstrap 4 Bootstrap 5 + CSS Grid
Zahnradsteuerung <mbr-parameters> existierte, aber rudimentär Vollständig dynamisch, reagiert sofort
Buttons mbr-buttons war optional mbr-buttons wird empfohlen, um Editor-Funktion zu aktivieren
Mobirise 5:
<section class="content4" style="background-color:#ffffff;">
<div class="container">
<h3 class="mbr-section-title mbr-fonts-style display-5">Titel</h3>
</div>
</section>
Beispiel eines neuen Blocks ohne alte Werte :Mobirise 6:
<section data-bs-version="5.1" class="content4">
<mbr-parameters>
<input type="color" name="bgColor" title="Hintergrundfarbe" value="#ffffff">
<input type="range" name="paddingTop" title="Abstand oben" min="0" max="10" value="5">
</mbr-parameters>
<div class="container"
mbr-style="{'background-color': bgColor, 'padding-top': paddingTop + 'rem'}">
<h3 class="mbr-section-title mbr-fonts-style display-5" mbr-text>
Überschrift bearbeiten
</h3>
</div>
</section>
Code: Alles auswählen
<section data-bs-version="5.1" class="meinblock" group="Content">
<mbr-parameters>
<header>Layout</header>
<input type="checkbox" title="Full Width" name="fullWidth">
<input type="range" title="Padding Top (rem)" name="paddingTop" min="0" max="10" step="1" value="5">
<input type="range" title="Padding Bottom (rem)" name="paddingBottom" min="0" max="10" step="1" value="5">
<input type="color" title="Background" name="bgColor" value="#ffffff">
</mbr-parameters>
<div mbr-class="{'container': !fullWidth, 'container-fluid': fullWidth}"
mbr-style="{'background-color': bgColor, 'padding-top': paddingTop + 'rem', 'padding-bottom': paddingBottom + 'rem'}">
<div class="row justify-content-center">
<div class="col-md-10 col-lg-8 text-center">
<h2 class="mbr-section-title mbr-fonts-style display-5" mbr-text>
Überschrift bearbeiten
</h2>
<p class="mbr-text mbr-fonts-style display-7" mbr-text>
Hier kommt dein Text hin. Wähle diesen Absatz aus, um ihn im Editor zu ändern.
</p>
<div class="mbr-section-btn align-center mt-3" mbr-buttons="">
<a class="btn btn-primary" href="#">Mehr erfahren</a>
</div>
</div>
</div>
</div>
</section>Code: Alles auswählen
.meinblock .mbr-section-title {
margin-bottom: 1rem;
}
.meinblock .mbr-text {
text-align: justify;
}
So baue ich neue Blöcke und erweitere die nach belieben oder ändere Style Anweisungen<div mbr-class="{'container': !fullWidth, 'container-fluid': fullWidth}"
mbr-style="{'background-color': bgColor, 'padding-top': paddingTop + 'rem', 'padding-bottom': paddingBottom + 'rem'}">
ChatGPT hat geschrieben:
Was ich sehe im HTML:
> Außen: <div mbr-class="{'container': !fullWidth, 'container-fluid': fullWidth}">
> Innen (nochmal): <div class="container">
Diese doppelte .container-Schachtel sorgt für doppeltes Seiten-Padding auf kleinen Screens. Siehe Quelltext der Seite an den Zeilen mit mbr-class ... container und der inneren div class="container".
Code: Alles auswählen
<input type="range" inline title="Textbreite (%)" name="innerWidth" min="50" max="100" step="5" value="100">Code: Alles auswählen
<head>
<meta charset="UTF-8">
<title>Meine Seite</title>
<link rel="stylesheet" href="style.css">
</head>