Gibt es eine Möglichkeit, ein Tag in einem bestimmten Thema einer Kategorie zu erzwingen, ohne dass der Benutzer es hinzufügen muss?

Obwohl ich wahrscheinlich noch zwei Wochen von der Einführung meiner ersten Discourse-Website entfernt bin (ein Ersatz für eine Mailingliste, die ich seit 30 Jahren betreibe), denke ich bereits über ein weiteres mögliches Projekt nach, nämlich die Verlagerung meiner Koch-/Backblog-Website von Wordpress/BBPress zu Discourse.

Dazu benötige ich eine Möglichkeit, Rezepte zu erkennen und deren Formatierung und Druck zu ändern.

Es sieht so aus, als ob Themen-Tags der richtige Weg sind, um ein neues Thema als eines mit einem Rezept im ersten Beitrag zu kennzeichnen (Folgebeiträge wären Kommentare, keine vollständigen Rezepte), aber es scheint keine Möglichkeit zu geben, ein Tag (z. B. „Rezept“) in das Tag-Feld zu erzwingen. Ich erwäge auch, das Tag-Feld zu verwenden, um die Art des Rezepts anzugeben (Brot, Dessert, Fleisch usw.), sodass ein Rezept mehrere Tags haben könnte, wie z. B.: Rezept Dessert.

Das Drucken ist ein separates Problem. Ich habe bereits beschlossen, dass ich dazu ein Plugin erstellen muss, das Discourse mehr Kontrolle über das Drucken ausgewählter Beiträge aus einem Thema gibt. Die Formatierung eines mit „Rezept“ gekennzeichneten (ersten) Beitrags für den Druck ist wahrscheinlich eine zweite Aufgabe. Ich bin wahrscheinlich noch mehrere Monate davon entfernt, genug Ruby zu lernen, um überhaupt darüber nachdenken zu können.

Aber genug der Wunschliste, meine Frage ist JETZT, kann ich erzwingen, dass ein neues Thema in einer Kategorie (z. B. Rezepte) ein vorab eingefügtes Tag (z. B. Rezept) hat, sodass der Benutzer es nicht auswählen muss und es nicht löschen kann?

1 „Gefällt mir“

Ich bin mir über Ihren spezifischen Anwendungsfall nicht sicher, aber es könnte überflüssig sein, jedem Thema in einer Kategorie denselben Tag aufzuzwingen.

Obwohl Sie ein Tag in einer Kategorie nicht mit den vorhandenen Einstellungen vorab füllen können, ist es möglich, dies durch eine Theme-Komponente oder ein Plugin zu erreichen.

Ohne weitere Anpassungen gibt es ein paar Optionen, die potenziell für Ihren Fall funktionieren könnten:

  1. Stellen Sie die Einstellung Mindestanzahl der für ein Thema erforderlichen Tags: in der Kategorie ein und fügen Sie eine erforderliche Tag-Gruppe zur Kategorie hinzu.

    Auf diese Weise könnten Sie mehrere Tags für die Kategorie einrichten, wie z. B. Brot, Dessert, Fleisch usw. – Benutzer könnten nicht posten, ohne mindestens 1 (oder mehr) Tags auszuwählen.

  2. Richten Sie eine automatische Tag-Zuweisung basierend auf einem Wort oder einer Phrase ein, die häufig in Rezepten vorkommt. Dies können Sie unter admin/customize/watched_words tun.

    Dieser Ansatz erfordert möglicherweise einige Versuche und Irrtümer und ist möglicherweise nicht perfekt. Wenn Sie sich in den USA befinden, ist dies etwas einfacher, da das imperiale System einzigartige Maßeinheiten hat. Die meisten Rezepte würden wahrscheinlich z. B. tsp oder tbsp erwähnen. Andere Phrasen, die mir einfallen und die für Rezepte ziemlich einzigartig wären, könnten preheat, mixing bowl, saute und so weiter sein.

1 „Gefällt mir“

Ich hätte eigentlich lieber ein separates Feld in einem Beitrag, das besagt: „Dies ist ein Rezept, bitte entsprechend formatieren“, damit die Tags für andere, benutzerorientiertere Zwecke verwendet werden können, wie wir beide gezeigt haben, aber ich weiß noch nicht, wie das geht. Ich weiß, dass es Möglichkeiten gibt, benutzerdefinierte Beitragsfelder und benutzerdefinierte Themenfelder zu haben, aber ich lerne noch, wie ich darauf zugreifen oder sie nutzen kann.

Während ich denke, dass hauptsächlich der erste Beitrag in einem Thema für die Rezeptformatierung gekennzeichnet würde, könnte dies auch an anderer Stelle gelten. Darüber hinaus kann es andere Anwendungsfälle für die Kennzeichnung eines Beitrags für eine spezielle Formatierung außerhalb meines Kochblogs geben, bei denen ein gekennzeichneter Beitrag nicht unbedingt der erste Beitrag in einem Thema oder in einer bestimmten Kategorie ist. Und die Verallgemeinerung des Ansatzes könnte eine breitere Nützlichkeit haben.

Die Details der Rezeptformulierung sind eine weitere Kiste mit Würmern. Idealerweise hätte ich ein strukturiertes Format, damit ich Felder für die Zutat, die angegebene Maßeinheit und die Menge isolieren kann, vorzugsweise auf eine Weise, die es mir ermöglichen würde, andere Datenbanken mit Nährwertinformationen, Preisen, Lagerbeständen usw. von Zutaten zu nutzen. Die Gesamtausbeute würde es auch ermöglichen, ein Rezept zu skalieren. Einige andere Kochseiten tun dies, aber ich denke, ihnen fehlen Funktionen, die ich gerne hätte und die auch die Back-Community gerne hätte. Ob all das auf eine Weise geschehen kann, die mit der DIscourse-Datenstruktur kompatibel ist, ist eine separate Frage. (Aber mein erster Eindruck ist, dass es in Discourse einfacher sein könnte als in WordPress oder als eigenständiges System von Grund auf neu, Sie haben bereits viele der unterstützenden Strukturen aufgebaut.)

Sie könnten ein TopicCustomField in einem Plugin verwenden, aber ein nur für Mitarbeiter bestimmter Tag-Satz oder einer, der für alle Benutzer erzwungen wird, wäre einfacher zu pflegen. Könnten Sie auch einfach eine Reihe von Kategorien zu Rezepten machen, damit Sie diese Formatierung auf die gesamte Kategorie anwenden könnten? Das scheint die einfachste Lösung für „welche Themen sind Rezepte“ zu sein.

Das würde für meinen speziellen Anwendungsfall funktionieren, aber ich denke hier an ein Plugin, das einen allgemeineren Wert hätte. Was ergibt mehr Sinn:

Ich möchte, dass diese Kategorie eine separate spezielle Formatierung hat
Ich möchte, dass dieses Thema eine separate spezielle Formatierung hat
Ich möchte, dass dieser Beitrag eine separate spezielle Formatierung hat
Eine Kombination der oben genannten, z. B. kann diese Kategorie spezielle Formatierungen in einigen ihrer Themen und/oder Beiträge nutzen, oder dieses Thema kann spezielle Formatierungen in einigen seiner Beiträge nutzen

Ich bin mir sicher, dass ich noch nicht genug über Discourse/Ruby weiß, um viel tun zu können, geschweige denn es auf die RICHTIGE Weise zu tun. Vielleicht wäre es gut für mich, an meinem speziellen Anwendungsfall zu arbeiten. Aber historisch gesehen, in den Projekten, an denen ich in den letzten 40 Jahren gearbeitet habe, sind die Leute weniger an einem verallgemeinerten Ansatz interessiert, sobald jemand eine vereinfachte Möglichkeit hat, etwas zu tun.

Das ist nicht ganz das, was ich gesucht habe, aber ich denke, Sie werden Ihr tatsächliches Problem besser lösen, als die, die Sie sich vorstellen.

Das wird schwierig, obwohl Sie ein Plugin erstellen könnten, das ein PostCustomField hinzufügt und es zum Serializer hinzufügt.

Allein die Entscheidung, dass Sie Kategorien haben, die nur Rezepte enthalten/spezielle Formatierung benötigen, löst die überwiegende Mehrheit der Anwendungsfälle. Die Erzwingung eines Satzes von Tags ist eine weitere Methode, die etwas umständlicher ist, aber auch praktisch keinen Code zur Wartung erfordert.

1 „Gefällt mir“

Ich schätze Ihre Vorschläge und Ihre Anleitung. Neulinge sind eine Plage, nicht wahr? (Wie ich in einem anderen Beitrag in einem anderen Thema sagte, weiß ich noch nicht, was ich nicht weiß.)

Mein Ansatz bei der Systemanalyse war über die Jahre hinweg, so viele Dinge wie möglich vorauszusehen, wenn ich mit der Wunschliste beginne, und dann zu sehen, wie viele davon ich entweder nicht brauche oder nicht weiß, wie ich sie umsetzen kann. Dieser Ansatz hat für mich gut funktioniert.

Das einzige Problem, das ich bei der Verwendung von Tags hatte, ist, dass jemand diesen Tag einem Thema zuweisen könnte, wo er nicht hingehört. Natürlich, wenn ich sage “der Formatierungs-Tag gilt nur, wenn dieser Tag in einem Thema in Kategorie X vorhanden ist”, könnte das für mich ausreichen.

Und es ist mir eingefallen, dass, wenn der Formatierungs-Tag optional ist, Benutzer Themen in dieser Kategorie erstellen könnten, die keine spezielle Formatierung erhalten. Ich habe nur noch nicht entschieden, ob das eine gute oder eine schlechte Sache ist.

1 „Gefällt mir“

Ich denke, dieses Problem trifft auf jede mögliche Lösung zu. :slight_smile: