Beiträge formatieren mit markdown, BBCode und HTML

:bookmark: Dieser Leitfaden beschreibt alle Formatierungsoptionen, die in Discourse-Beiträgen verfügbar sind, einschließlich Markdown, BBCode und HTML. Er gibt an, was unterstützt wird, und bietet Ressourcen, in denen Sie Beispiele sehen können.

:person_raising_hand: Erforderliche Benutzerebene: Alle Benutzer

Unterstützte Formatierung in Beiträgen verstehen

Obwohl einfacher Text für die meisten Antworten ausreicht, ermöglicht Discourse den Benutzern, die Formatierung ihrer Beiträge durch die Verwendung von Markdown, BBCode und HTML zu verbessern. Dieser Leitfaden erklärt, welche Arten von Formatierungen unterstützt werden und wie Sie diese effektiv nutzen können.

Sie können auch einige Grundlagen in einem interaktiven Tutorial üben, indem Sie eine private Nachricht an @discobot hier oder auf einer beliebigen Discourse-Seite senden.

Zusammenfassung

Dieser Leitfaden behandelt:

  • Unterstützte Markdown-Syntax
  • Unterstützte BBCode-Tags
  • Unterstützte und sichere HTML-Tags und Attribute

Best Practices

  • Verwenden Sie hauptsächlich Markdown wegen seiner Einfachheit und Lesbarkeit.
  • Mischen Sie Markdown und BBCode nur bei Bedarf und halten Sie die Verwendung konsistent.
  • Beschränken Sie die Verwendung von HTML auf einfache, sichere Tags, um Formatierungsprobleme zu vermeiden und sicherzustellen, dass Beiträge sicher sind.

Unterstütztes Markdown

Discourse verwendet markdown-it für seine Markdown-Implementierung.

Einige häufig verwendete Markdown-Funktionen umfassen:

  • Fett: **text**

  • Kursiv: *text*

  • Link: [title](https://example.com)

  • Inline-Code: `code`

  • Hervorheben: <mark></mark>

  • Codeblock:

    ```
    code block
    ```
    

In längeren Beiträgen (wie diesem) kann es auch hilfreich sein, mithilfe von Überschriften Struktur hinzuzufügen:

# Überschrift 1
## Überschrift 2
### Überschrift 3

Hinweis: Wenn ein Bild hochgeladen wird, wird die Markdown-Syntax zum Referenzieren des Bildes automatisch generiert.

![caption|500x500](upload://image.jpeg)

Eine vollständige Liste der Markdown-Funktionen finden Sie im interaktiven Leitfaden.

Unterstützter BBCode

Discourse unterstützt eine Teilmenge gängiger BBCode-Tags, von denen einige automatisch generiert werden, um spezielle Formatierungen zu unterstützen, beispielsweise wenn Sie einen Beitrag in Ihrer Antwort zitieren:

[quote=“user”]quoted text[/quote]

[quote="user"]quoted text[/quote]

Sie können BBCode auch verwenden, um Text als Spoiler oder als Details zu markieren

spoiled text

[spoiler]spoiled text[/spoiler]

[details=“click to expand”]hidden text[/details]

[details="click to expand"]hidden text[/details]

BBCode-Tags für einfache Formatierungen, die von Markdown unterstützt werden oder ebenfalls unterstützt werden:

  • [b]stark[/b]
  • [i]Betonung[/i]
  • [u]unterstrichen[/u]
  • [s]durchgestrichen[/s]
  • [ul][li]Option eins[/li][/ul]
  • [img]http://example.com/image.png[/img]
  • [url]http://example.com[/url]
  • [code]code[/code]

Eine vollständige Liste der unterstützten BBCode-Tags und Beispiele finden Sie in den Discourse BBCode-Tests.

Unterstütztes HTML

Discourse unterstützt eine sichere Teilmenge von HTML. Obwohl Sie HTML mit Markdown mischen können, sind nur bestimmte HTML-Tags und Attribute zulässig, um Sicherheit und konsistente Formatierung zu gewährleisten.

Einige der erlaubten HTML-Tags umfassen:

  • <a href="https://example.com">link</a>
  • <strong>fetter Text</strong>
  • <em>kursiver Text</em>
  • <ul><li>Listenelement</li></ul>
  • <img src="https://example.com/image.png" alt="description">

Eine detaillierte Liste der erlaubten HTML-Tags und Attribute finden Sie in der Allow-Liste von Discourse.

:information_source: Hinweis: Inline-Stile, wie <span>colored text</span>, werden nicht unterstützt. Für benutzerdefinierte Stile siehe Beitraginhalte anpassen.

Häufige Probleme und Lösungen

  • BBCode- oder HTML-Tags funktionieren nicht: Stellen Sie sicher, dass die von Ihnen verwendeten Tags Teil der unterstützten Teilmenge sind.
  • Inline-Stile werden entfernt: Discourse unterstützt Inline-Stile aus Sicherheitsgründen nicht. Verwenden Sie bei Bedarf benutzerdefinierte Stile oder Plugins.
  • Formatierung ändert sich beim Einfügen aus anderen Editoren: Einige Rich-Text-Formate werden möglicherweise nicht korrekt gerendert. Verwenden Sie Markdown, um Text konsistent zu formatieren.

FAQs

F: Kann ich Tabellen in Discourse verwenden?
A: Ja, Sie können Markdown verwenden, um Tabellen zu erstellen. Weitere Informationen finden Sie in diesem Leitfaden zu Tabellen.

F: Warum funktioniert mein Inline-Stil nicht?
A: Discourse unterstützt Inline-Stile aus Sicherheitsgründen nicht. Erwägen Sie die Verwendung von benutzerdefiniertem BBCode oder dem Discourse-Leitfaden für benutzerdefinierte Stile.

F: Kann ich benutzerdefinierte BBCode-Tags hinzufügen?
A: Ja, Sie können benutzerdefinierte BBCode-Tags hinzufügen. Weitere Informationen finden Sie im Discourse BBCode-Plugin.

Zusätzliche Ressourcen

31 „Gefällt mir“

Keine dieser Referenzen erwähnt Tabellen.

2 „Gefällt mir“

Das stimmt, aber dieses andere Thema schon. Adding a table to your post using markdown

3 „Gefällt mir“

Textfarbe und Text-Hintergrundfarbe scheinen mit <span> oder BBCode nicht zu funktionieren, übersehe ich etwas?

  • <span style="color:red">etwas roter Markdown-Text</span>
    • etwas roter Markdown-Text
  • BBCode: [color=red]Roter Text[/color]
    • [color=red]Roter Text[/color]
2 „Gefällt mir“

Ja, es sieht so aus, als ob HTML-Inline-Stile nicht unterstützt werden.

Sie können diesen Leitfaden verwenden:

(Und sehen Sie ihn hier in Aktion: 📜 [Wiki] Schlumpf hub serial numbers reference - Unicycles and Equipment - Unicyclist.com)

Oder verwenden Sie dieses Plugin, das die BBCode-Unterstützung erweitert:

Was die erlaubten HTML-Tags betrifft, glaube ich, dies ist die Referenz:
https://github.com/discourse/discourse/blob/main/app/assets/javascripts/pretty-text/addon/allow-lister.js#L115

Obwohl ich aus irgendeinem Grund keine Tabellen-HTML-Tags (die erlaubt sind) darin finden kann.

Vielleicht, weil sie hier referenziert werden:

https://github.com/discourse/discourse/blob/main/app/assets/javascripts/pretty-text/engines/discourse-markdown/table.js#L31

5 „Gefällt mir“

Vielen Dank für die nützlichen Referenzen!

1 „Gefällt mir“

Es sieht so aus, als ob der Filter derzeit so eingerichtet ist, dass die Attribute rowspan und colspan für td- und th-Elemente herausgefiltert werden. Soweit ich weiß, sind diese sicher (und ich glaube, sie sind sehr nützlich): Wäre das Team offen dafür, diese Attribute zuzulassen?

Nebenbei bemerkte @Canapin die Stelle, an der die erlaubte Liste von table-Tags aufgeführt ist.

Die Datei .../discourse-markdown/table.js scheint jedoch eine Implementierung speziell für Markdown-Tabellen zu sein; bräuchten reguläre HTML-Tabellen eine separate Erweiterung für allowList?

Ich glaube, rowspan und colspan sind ziemlich sicher, aber ich möchte auch ein weiteres Markup anfragen. Könnten wir data-*-Attribute für Tabellenelemente zulassen? Ich denke, das wäre sehr nützlich, um verschiedene Arten von Tabelleninhalten anzugeben, insbesondere als Hooks für benutzerdefiniertes CSS.

1 „Gefällt mir“

Hi :slight_smile:

Ich denke, das wäre kniffliger als erwartet.
Wenn Sie eine HTML-Tabelle in Ihren Beitrag einfügen und jemand Ihre Tabelle zitiert, wird sie in Markdown umgewandelt, das rowspan und colspan nicht unterstützt.

Ich vermute, es gäbe noch andere Probleme, über die ich nicht nachgedacht habe.

Es ist nicht genau dasselbe, aber Sie können Ihre Tabelle mit [wrap]-Tags umschließen :slight_smile:
Siehe: Customize posts' contents with your own styles
Aber Sie können keine data--Attribute innerhalb einer HTML-Tabelle haben (zum Beispiel, um bestimmte Zeilen oder Zellen anzupassen).

Bearbeitung: Wenn Ihre Tabelle Markdown anstelle von HTML verwendet, können Sie Spans mit data--Attributen wie folgt einfügen:

|Spalte 1 | Spalte 2|
|--- | ---|
|<span data-thing>Test</span> | Test|
|Test | Test|

Aber sie werden entfernt, wenn jemand Ihre Tabelle zitiert oder kopiert und einfügt.

1 „Gefällt mir“

Es wäre sehr hilfreich, wenn einige einfache und sichere Inline-CSS-Stile in rohem HTML, das zu Discourse-Beiträgen hinzugefügt wird, beachtet würden. Es könnten HTML-Beiträge von einer früheren Foren-Engine konvertiert werden und/oder Benutzer fügen manchmal Rich-Text mit Dingen wie Text- und/oder Bildausrichtung ein.

Das Folgende funktioniert wie erwartet:


<div align="center">
<p>Test</p>
</div>

Test

Aber das hier nicht:


<p style="text-align: center;">Test</p>

Test


Dasselbe gilt für Inline-Formatierungen wie <span style="color: ....

Es ist wahrscheinlicher, dass Inline-Stile wie diese in konvertierten / eingefügten Inhalten von anderen WYSIWYG-Editoren vorkommen.

Das style-Attribut ist in Discourse nicht erlaubt, da es leicht Probleme verursachen könnte.

Außerdem hat Discourse eine bestimmte Philosophie, wie Informationen in Beiträgen dargestellt werden sollen, und schränkt Tags und Attribute bewusst ein.

Das align-Attribut für <div> ist hier ausdrücklich erlaubt: https://github.com/discourse/discourse/blob/main/app/assets/javascripts/pretty-text/addon/allow-lister.js#LL147C2-L147C16

Wenn Sie ein Forum migrieren und spezielle Formatierungen wie Farben beibehalten möchten, würde ich Discourse BBCode verwenden und bei Bedarf den Importer bearbeiten :slight_smile:

3 „Gefällt mir“

Gibt es einen Grund, warum die > Blockquote-Markup nicht im Markdown-Abschnitt enthalten ist? Dies ist meiner Erfahrung nach bei weitem das häufigste, was die Leute nicht verwenden, obwohl sie es sollten.

Ich weiß, dass Sie nicht alles auflisten können, aber in Foren, in denen Leute oft andere Quellen zitieren, ist dies unerlässlich.

@one1, es sollte für Zitate innerhalb des Forums nicht verwendet werden. Sein Ersatz dort ist [quote]. Ansonsten stimme ich zu.

Ich sprach über Zitate aus wissenschaftlichen Arbeiten.

Das ist sehr hilfreich! Vielen Dank! :grinning_face:

Dieser Link ist fehlerhaft.

2 „Gefällt mir“

Danke! Es sollte jetzt behoben sein.

1 „Gefällt mir“

8 Beiträge wurden in ein neues Thema verschoben: Verwendung von H1- vs. H2-Überschriften im Composer

(Beitrag vom Autor gelöscht)