Platzhalter-Formulare

:discourse2: Zusammenfassung Platzhalter-Formulare ermöglichen die Erstellung dynamischer Dokumentation, indem ein Formular erstellt wird, das jedes Vorkommen eines =MUSTER= in Ihrem Beitrag durch den Wert eines Text- oder auswählbaren Eingabefelds ersetzt.
:eyeglasses: Vorschau Vorschau im Discourse Theme Creator
:hammer_and_wrench: Repository-Link https://github.com/discourse/discourse-placeholder-theme-component
:open_book: Neu bei Discourse-Themen? Anfängerleitfaden zur Verwendung von Discourse-Themen

Dieses Theme-Komponente installieren

Funktionen

Fügen Sie Platzhalter in Beiträgen in folgendem Format hinzu:

[wrap=placeholder key=NAME description="Ihr Name"][/wrap]
[wrap=placeholder key=COUNTRY default=US defaults=FR,DE,US,CN,AU,CA][/wrap]

Ihre E-Mail: =NAME=-=COUNTRY=@example.com

Das Ergebnis sieht dann so aus:

Dies wird in Mailinglisten verwendet:

Ihre E-Mail: =ZNAME=-=ZCOUNTRY=@example.com

Wie oben gezeigt, wird der Text innerhalb des Wrappers als lange Beschreibung verwendet.

[wrap=placeholder key=NAME description="Ihr Name"]
Dies wird in Mailinglisten verwendet
[/wrap]

Verfügbare Schlüssel

  • key: Der Schlüssel, der in Ihrem Beitrag ersetzt werden soll
  • default/defaults: Standardwert(e)
  • description: Ein Platzhaltertext für die Eingabe

Beispiele

# Erstellen eines neuen Plugins
rails g plugin =PLUGIN_NAME=
cd plugins/=PLUGIN_NAME=

Wir verwenden es zur Erstellung von Runbooks, How-Tos und wiederverwendbaren Vorlagen (es funktioniert auch in Codeblöcken). Bitte teilen Sie Ihre Anwendungsfälle!

Einstellungen

Übersetzung Standard
toolbar.builder Platzhalter hinzufügen
builder.errors.no_key Ein Schlüssel ist erforderlich.
builder.title Platzhalter hinzufügen
builder.insert Einfügen
builder.key.label Schlüssel
builder.key.description Der =Schlüssel=, der im Beitrag ersetzt werden soll.
builder.description.label Beschreibung
builder.description.description Beschreibung, die bei der Eingabe ohne festgelegten Wert angezeigt wird.
builder.values.label Standardwert(e)
builder.values.description Optionale Wert(e) für Ihren Platzhalter. Wenn mehrere Werte definiert sind, wird eine Auswahl verwendet.

:discourse2: Von uns gehostet? Theme-Komponenten können in unseren Standard-, Business- und Enterprise-Plänen verwendet werden.

66 „Gefällt mir“

The big issue with math handling like this, is that you need to eval() and eval is unsafe, so you need to use some lib which provide a safe eval with a limited subset of the real eval. I’m unsure we want all this complexity for such a rare case.

6 „Gefällt mir“

[quote=“joffreyjaffeux, Beitrag:1, Thema:113533”]
Versuche doch mal, dies mit dem Theme-Komponente „Reply Template

Ja, ich bin mir nicht sicher, was ich mir damals gedacht habe, als ich das geschrieben habe… Ich hatte wahrscheinlich einen anderen Anwendungsfall im Sinn, kann mich aber nicht mehr erinnern.

Es kann auf diese Weise definitiv nicht funktionieren. Ich werde mir noch etwas Gedanken dazu machen… Beide Theme-Komponenten waren damals Experimente und könnten eine bessere Behandlung verdienen, da sie von den Nutzern recht häufig verwendet werden.

7 „Gefällt mir“

Danke!

happy lets go GIF by Shalita Grant

3 „Gefällt mir“

:grin: Ich weiß nicht, was in der Chef-Küche so vor sich geht, aber da ich mich beim Warten normalerweise mit Pistazien oder ähnlichem vollstopfe, habe ich es geschafft, es zum Laufen zu bringen (natürlich für meinen speziellen Anwendungsfall, denn ich habe fast keine Ahnung, was ich tue, aber hey… :sweat_smile: )

4 „Gefällt mir“

Idealerweise würde ich gerne Admins ermöglichen, eigene Ersetzer zu definieren. Da eval jedoch riskant ist (und bei einer sicheren CSP gar nicht möglich), bin ich mir nicht sicher, wie ich das umsetzen könnte…

3 „Gefällt mir“

Zunächst einmal: Eine großartige und wirklich hilfreiche Theme-Komponente.

Aber ich glaube, ich habe einen Fehler gefunden. Wenn ich in einem Code-Snippet einen Platzhalter verwende, der Backticks (`) enthält, funktioniert es nicht. Ein Beispiel ist ein SQL-Code-Snippet:

DELETE FROM `=TABLENAME=`
WHERE id NOT IN(
        SELECT
            id FROM (
                SELECT
                    id FROM `=TABLENAME=`
                ORDER BY
                    id DESC
                LIMIT 20
) subquery);

TABLENAME wird nie ersetzt (falls ein TABLENAME-Platzhalter vorhanden ist).

Es wäre cool, wenn dies auch Jinja2-ähnliche Bedingungen beinhalten würde. So dass z.B. jemand einen Schlüssel red erstellen und diesen auf das Icon :red_circle: abbilden könnte, orange würde auf :orange_circle: abgebildet werden. Aber ich kann natürlich auch ohne leben, aber es wäre cool gewesen, diese Testbedingungen zu haben.

Ich liebe diese Komponente wirklich. :star_struck:


„Und du lebst wirklich von dem =NOUN_1=? Was für ein =ADJECTIVE_1= Leben!“

„Davon und damit und darauf und darin“, sagte =PERSON_1=. „Es ist mein Bruder und meine Schwester, und Tanten, und =NOUN_2=, und Essen und Trinken, und (=ADJECTIVE_2=) =VERBING_1=. Es ist mein =NOUN_3=, und ich will kein anderes. Was es nicht hat, ist nicht wert, =VERBING_2= zu werden, und was es nicht weiß, ist nicht wert, =VERBING_3= zu werden. Herr! die =NOUNS_1= die wir zusammen hatten! Ob im Winter oder Sommer, Frühling oder Herbst, es hat immer seinen =NOUN_4= und seine =NOUNS_2=. Wenn im Februar die =NOUNS_3= sind und mein =NOUN_4= und Keller voller =NOUN_5= sind, die mir nichts nützen, und der =COLOR_1= =NOUN_6= an meinem besten =NOUN_7= Fenster vorbeiläuft; oder wieder, wenn alles =ADVERB_1= fällt und Stellen von =NOUN_8= zeigt, die nach =FOOD_1= riechen, und die =NOUNS_5= und =NOUNS_6= die Kanäle verstopfen, und ich kann über =MOISTURE= =NOUN_9= über den größten Teil des =NOUN_10= davon =VERB_1= und frisches =FOOD_2= zum Essen finden, und Dinge, die =ADJECTIVE_3= Leute aus =NOUNS_7= fallen gelassen haben!“


Original entnommen aus der Standard Ebooks Version von The Wind in the Willows, online lesbar (suchen Sie nach By it and with it).

10 „Gefällt mir“

Hallo :wave:

Vielen Dank für diese Komponente :heart: Sie passt perfekt zu dem, was ich gerade erreichen möchte. Tatsächlich war mein erster Gedanke, dass es super wäre, wenn sie mit der Reply Template Komponente kombiniert werden könnte. Aber leider ist das nicht möglich, wie die obigen Beiträge erklärt haben. :confused:


Ich habe einen Workaround gefunden, um sie als Vorlage zu verwenden. Sie funktioniert mit Link zu neuen Themen und Link zu neuen persönlichen Nachrichten.

So habe ich es gemacht:

  1. Erstellen Sie ein Platzhalterformular (um es einfach zu halten, verwende ich das Beispiel im OP)

Ihre E-Mail: =NAME=-=COUNTRY=@example.com


  1. Erstellen Sie einen Link zu einem neuen Thema:
    Ich habe im Link Folgendes eingestellt:
  2. Kategorie
  3. Titel
  4. Text

Wenn Sie Leerzeilen hinzufügen möchten, verwenden Sie \\, damit der Link nicht unterbrochen wird, oder um ihn unsichtbar zu machen, können Sie \u0026nbsp; verwenden, was ein Leerzeichen in der neuen Zeile hinzufügt. Es wird Teil der Vorlage sein und eine Leerzeile erzeugen,

<a href="https://meta.discourse.org/new-topic?category==CATEGORY=&title=This is a topic created by =NAME=&body=Hello :wave:
&nbsp;
This is a test topic... Let's see the placeholder form.
\
Your email: =NAME=-=COUNTRY=@example.com">Use template as new topic</a>

  1. Erstellen Sie eine Themenvorschau

Ausgewählte Kategorie

=CATEGORY=

Thema Titel

This is a topic created by =NAME=

Thema Text

Hello :wave:

This is a test topic… Let’s see the placeholder form.

Your email: =NAME=-=COUNTRY=@example.com


  1. Erstellen Sie einen “Use template as new topic” Button (im obigen Beispiel ist dies ein Link, Sie können daraus einen Button machen)

Machen Sie ein [wrap] Element aus diesem Text. Dies macht es möglich, es mit CSS anzusprechen und zu gestalten. Ich füge dies unten hinzu.

<a href="https://meta.discourse.org/new-topic?category==CATEGORY=&title=This is a topic created by =NAME=&body=Hello :wave:
&nbsp;
This is a test topic... Let's see the placeholder form.
\
Your email: =NAME=-=COUNTRY=@example.com">[wrap=template-button]Use template as new topic[/wrap]</a>

Styling [wrap=template-button]
etwas wie :arrow_down_small:

Common / CSS

[data-wrap="template-button"] {
  background: var(--tertiary);
  color: var(--secondary);
  border-radius: var(--d-button-border-radius);
  padding: 0.5em 0.65em;
  transition: background 0.25s;
  &:focus,
  &:hover {
    background: var(--tertiary-hover);
    color: var(--secondary);
  }
}

Der Vorlagen-Button wird so aussehen :arrow_down_small:

template-button


Demo

Use template as new topic


Ich hoffe, dieses kleine Tutorial hilft jemandem, der etwas Ähnliches braucht :slightly_smiling_face:

Bearbeitung: Ich habe eine Kategorieauswahl eingerichtet, die die Möglichkeit bietet, Themen in verschiedenen Kategorien zu erstellen.


Prüfen Sie die Rohversion dieses Beitrags…

9 „Gefällt mir“

Das ist erstaunlich, Don, danke. Das passt tatsächlich sehr gut zu einem meiner Bedürfnisse :slight_smile:

2 „Gefällt mir“

Etwas zu beachten ist, dass Codeblöcke manchmal Probleme verursachen:

usermod -aG sudo =USERNAME=

In diesem Fall geht highlight.js davon aus, dass es sich um Java handelt und konvertiert den Codeblock zu:

<code>
  usermod -
  <span class="hljs-type">aG</span> 
  <span class="hljs-variable">sudo</span> 
  <span class="hljs-operator">=</span>
  USERNAME=
</code>

Ich kann es beheben, indem ich signalisiere, dass es sich tatsächlich um einen Shell-Befehl handelt:

    ```shell
    usermod -aG sudo =USERNAME=
    ```

Das führt zu:

usermod -aG sudo =USERNAME=

Wenn alles andere fehlschlägt, verhindert text, dass highlight.js mit den Platzhaltern herumspielt.

Eine allgemeinere Lösung (die Meta Discourse verwenden muss) besteht darin, die Einstellung default code lang von auto auf plaintext oder etwas Ähnliches zu ändern. :wink:


Nicht, dass es viel ausmacht, aber die Verwendung von java ist eine Möglichkeit, zu vermeiden, dass der Platzhalter erweitert wird, wenn Sie über Platzhalter schreiben möchten.

1 „Gefällt mir“

Kannst du den Vorschau-Link überprüfen? Er scheint bei mir defekt zu sein.

1 „Gefällt mir“

Dies ist eine erstaunliche Funktion, und ich sehe viele Anwendungsmöglichkeiten dafür.
Ist es jedoch in unserer Antwort möglich, =(name)= auszublenden, bis der Benutzer mit der Eingabe in das Textfeld beginnt? Ich glaube, dass Benutzer (insbesondere neue) ihren Zweck möglicherweise nicht verstehen oder dass es wie eine falsche Formatierung aussieht.

Ich glaube, ich habe wieder einen zum Laufen gebracht (:crossed_fingers: :slight_smile:)

https://discourse.theme-creator.io/theme/Discourse/placeholder-forms

Ich habe ihn auch zu try.discourse.org hinzugefügt, damit Sie ihn ausgiebiger ausprobieren können. :+1:

1 „Gefällt mir“

Vielleicht könnten Sie einen Standardwert eingeben, der stattdessen angezeigt wird.

1 „Gefällt mir“

Das hat funktioniert! Danke!

2 „Gefällt mir“

Diese Problemumgehung scheint nicht mehr zu funktionieren.

Gibt es andere Optionen, um reply-template und placeholder-forms zu kombinieren?

4 Beiträge wurden in ein neues Thema aufgeteilt: Links funktionieren nicht in Platzhalterformularen