Ist es möglich, ein benutzerdefiniertes Feld zu Tags hinzuzufügen, indem die gleiche Logik verwendet wird?
Hat sich jemand darauf für Gruppen beworben? Wenn ja, können Sie mitteilen, was Sie getan haben?
Ich schätze, das würde den Trick tun. Hoffentlich ist es noch aktuell.
Nein, Tags haben keine benutzerdefinierten Felder. Was möchten Sie erreichen?
Ja, dieses Repository sollte funktionieren. Ändern Sie einfach alle Instanzen von my_field in den Namen Ihres Feldes.
Ich versuche, das folgende Plugin zu erstellen: Creating a User - Tag relation plugin
Gibt es weitere Dokumentationen zur Anpassung dieser Gruppenfelder? Mit diesem Boilerplate-Code funktioniert es tatsächlich hervorragend. Aber wie erweitert man ihn richtig?
Ich möchte zum Beispiel ein paar Eingabefelder hinzufügen, wie zum Beispiel:
<div class="control-group">
<label class="control-label" for="map">Chapter coordinates</label>
<input name="chapter_coordinates" id="chapter_coordinates" class="ember-text-field ember-view input-xlarge" value={{group.custom_fields.group_coordinates}} placeholder="E.g. 52.3727598,4.8936041" type="text">
<div class="control-instructions">Fetch coordinates from https://nominatim.openstreetmap.org/</div>
</div>
Aber hier rate ich nur, was ich tun muss und füge dann den Rest des Discourse-Zeugs hinzu. Das obige Beispiel dient zur Verwendung eines Feldes für Koordinaten. Ich beabsichtige, das g.json zu verwenden, um eine Karte basierend auf den Gruppenmetadaten zu erstellen.
Ich beabsichtige auch, eine Checkbox zum E-Mailen der Gruppe mit einer E-Mail-Einrichtung für diese Gruppe hinzuzufügen.
<div class="control-group">
<label class="control-label" for="map">Contact chapter by email</label>
{{input type="checkbox" checked=group.custom_fields.contact_group_by_email}}
<span>{{i18n 'admin.groups.contact_group_by_email.label'}}</span>
</div>
Dieses Feld wäre jedoch am besten im Interaktionstab platziert. Woher weiß man, was zu tun ist, um es dorthin zu bekommen? Ich möchte darin versierter werden. Aber ich habe den Eindruck, dass diese Informationen nur im Code vorhanden sind und nicht irgendwo dokumentiert sind. Was wahrscheinlich in Ordnung ist, aber einfach mehr Zeit und Mühe kostet, um das zu finden, wonach ich suche. Obwohl das, was ich hinzufügen möchte, ziemlich klein ist, nur ein paar Felder zu den Gruppen ![]()
Ja, es kann schwierig und etwas überwältigend sein, wenn man anfängt, sich im Discourse-Code zurechtzufinden. Es scheint, als ob Sie mit GeoJSON arbeiten möchten. Haben Sie in Erwägung gezogen, das Locations Plugin zu verwenden oder zu erweitern? Dieses ist bereits für die Arbeit mit GeoJSON in Discourse eingerichtet.
Ein Kurs in Plugin-Entwicklung?
Ich habe darüber nachgedacht, einen kostenlosen Kurs in der Entwicklung von Discourse-Plugins anzubieten, was im Grunde das ist, was Sie brauchen. Ich habe bereits die Kursmaterialien für einen Kurs in der Entwicklung von Themes geschrieben (siehe unten). Wenn 30 Leute für einen Kurs in Plugin-Entwicklung stimmen, werde ich einen Kurs (via Zoom) dazu schreiben und geben.
- Kurs in Plugin-Entwicklung schreiben und geben
- Kein Kurs in Plugin-Entwicklung schreiben und geben
Einführung in die Theme-Entwicklung
- GitHub - pavilionedu/discourse-theme-introduction
- GitHub - pavilionedu/discourse-theme-css
- GitHub - pavilionedu/discourse-theme-colors
- GitHub - pavilionedu/discourse-theme-html-one
- GitHub - pavilionedu/discourse-theme-html-two
- GitHub - pavilionedu/discourse-theme-javascript-one
- GitHub - pavilionedu/discourse-theme-javascript-two
*ps, wenn es 30 erreicht, lassen Sie es mich bitte wissen.
Großartig! Ich werde tatsächlich eine Abzweigung von dieser Fairphone Community Map verwenden. Sie verwenden die rohe YAML-Ausgabe eines Themas. Ich habe meine Abzweigung modifiziert, um die Daten von g.json zu verwenden, um Markierungen auf der Karte zu zeichnen. Mir fehlen nur ein paar Felder wie Koordinaten und ein boolescher Wert, um eine E-Mail-Adresse auf der Karte zu verwenden. Vielleicht noch ein paar mehr, aber zuerst muss ich wissen, wie die Dinge funktionieren. Danke für die Links! Ich werde diese Woche danach schauen und sehen, wie weit ich komme. Ein Kurs wäre auch großartig! Meine JS/Ruby-Kenntnisse sind jetzt allerdings begrenzt. Hauptsächlich Python/Bash und ein paar Krümel aus anderen Sprachen.
Ist es möglich, benutzerdefinierte Felder zu Beiträgen hinzuzufügen? Idealerweise aus dem Beitragseditor.
Welche Mindestversion von Discourse ist erforderlich, um dieses Plugin zu verwenden?
(discourse-topic-custom-fields)
Ist GitHub - pavilionedu/discourse-group-custom-fields noch aktuell?
Der Grund, warum ich frage, ist, dass ich versucht habe, ein neues benutzerdefiniertes Gruppenfeld zu implementieren, aber der Wert, den ich in das Eingabefeld eingebe, scheint nach dem Klicken auf Speichern nicht gespeichert/beibehalten zu werden.
Hier ist der Commit mit allen Änderungen, die ich vorgenommen habe und die (glaube ich) der Struktur des edu-Repos korrekt gefolgt sind: add discord_role_id field to groups · aloha-pk/discourse-discord-sync@fd3eef1 · GitHub
Ja, ich habe es gerade getestet und es funktioniert wie erwartet.
{{input type="text" checked=group.custom_fields.discord_role_id}}
Ihr Problem ist, dass Sie den Eingabetyp auf text geändert haben, aber die Wert-Eingabe als checked belassen haben. Sie müssen checked in value ändern.
Na sowas, das wird’s wohl sein
Danke für die Hilfe! ![]()
[quote=„FerrariFlunker, Beitrag:33, Thema:184485″]
Tja, das wird’s wohl gewesen sein ![]()
[/quote]
Ich konnte mit dieser Änderung gerade neu erstellen, sehe aber leider immer noch dasselbe Problem. Der von mir eingegebene Wert wird gelöscht, nachdem ich die Seite speichere und neu lade.
Haben Sie noch andere Vorschläge, @angus?
Haben Sie noch etwas anderes als das Beispiel geändert? Das Beispiel funktioniert. Versuchen Sie, mit dem Beispiel selbst zu beginnen. Wenn das in Ihrer Umgebung ebenfalls fehlschlägt, dann ist etwas anderes im Gange. Wenn das Beispiel in Ihrer Umgebung funktioniert, arbeiten Sie sich schrittweise durch die Änderungen, die Sie vorgenommen haben, bis Sie diejenige gefunden haben, die es kaputt macht.
Hallo @angus hat ein benutzerdefiniertes Feld mit diesem Plugin hinzugefügt und es funktioniert jetzt gut. Wie kann ich dieses Feld auf der Kategorieseite unter dem Kategorienamen anzeigen?
Hier erfahren Sie, wie Sie das herausfinden können:
-
Suchen Sie in discourse/discourse nach den Vorlagen, die die Kategorieseite rendern (suchen Sie nach einem HTML-Element auf der Seite).
-
Suchen Sie in einer dieser Vorlagen nach einem Plugin-Outlet.
-
Verwenden Sie das Plugin-Outlet wie hier beschrieben:
Using Plugin Outlet Connectors from a Theme or Plugin
Ich habe diesen Code geschrieben, aber er funktioniert immer noch nicht. Können Sie mir das Problem sagen?
<script type="text/discourse-plugin" version="0.8">
const { getOwner } = require("discourse-common/lib/get-owner");
const { htmlSafe } = require("@ember/string");
api.decorateWidget("category-heading:after", (helper) => {
const category = helper.attrs.category;
if (category.custom_fields?.location) {
const customLocation = htmlSafe(category.custom_fields.location);
const template = getOwner(helper).lookup("template:components/category-header");
return template.fragment.build("custom-location", { customLocation });
}
});
</script>
<script type="text/x-handlebars" data-template-name="components/category-header/custom-location">
<div class="category-custom-location">{{customLocation}}</div>
</script>
Welcher Teil funktioniert nicht? Was sehen Sie zum Beispiel, wenn Sie dort console.log(category.custom_fields) einfügen?
Ich habe dieses Plugin heute mit diesem Code installiert und es scheint defekt zu sein: GitHub - pavilionedu/discourse-category-custom-fields: Discourse plugin showing how to add custom fields to Discourse categories
Es wird als „Education Category Custom Field“ installiert und die Autoreninformationen fehlen:
Was erwarten Sie, was passieren wird? Es soll ohne Modifikation nichts passieren.
