Erzähler: „Es wurde diese Woche nicht gelandet.“ ![]()
Gibt es eine Änderung hierzu? Ich habe gerade eine Komponente für jemanden neu geschrieben, der Objekttypen verwendet, und er ist unzufrieden, dass er sie nicht neu anordnen kann.
Wird das bald auf jemandes Liste landen?
Außerdem ist es ziemlich schlimm, dass sie alle „field_name-X“ heißen. Wäre es möglich, einen Feldnamen zu haben, der dort verwendet werden könnte? Jedes einzelne anklicken zu müssen, um zu sehen, was da ist, ist ein Albtraum, wenn man mehr als ein paar Objekte hat.
Wenn wir die Elemente nicht neu anordnen können und man nicht erkennen kann, was sie sind, ohne sie anzuklicken, werde ich wahrscheinlich wieder zu einer einzelnen Zeichenfolgeneinstellung mit mehreren Werten zurückkehren müssen, die mit einem Zeichen zur Trennung der verschiedenen Felder getrennt sind. Und ich glaube, bei den alten Arrays konnte man die Dinge neu anordnen, oder? Dieses Objekttyp scheint also ein Rückschritt für alle außer Programmierern zu sein.
Ich glaube nicht, dass im Moment etwas zur Neuordnung ansteht, obwohl wir das immer noch gerne einbeziehen würden. Umbenennung ist bereits mit der identifier-Eigenschaft möglich. Zum Beispiel aus der Theme-Komponente für benutzerdefinierte Header-Links
Das Namensfeld wird als Bezeichner für jeden Link festgelegt, sodass Sie sehen können, welcher Link welcher ist
Hurra. Ich dachte, ich hätte das übersehen, konnte es aber vorher nicht finden. Danke!
EDIT: Und jetzt habe ich die identifier-Eigenschaft verwendet und ein ‘order’-Feld hinzugefügt, also ist es nicht so schlimm. Ich denke immer noch, dass es schön wäre, Einstellungen neu anordnen zu können, und das ist mit Arrays möglich. . .
Nochmals vielen Dank für Ihre Hilfe
[quote=„pfaffman, Beitrag:28, Thema:305009″]
EDIT: Und jetzt habe ich die identifier-Eigenschaft verwendet und ein ‚order‘-Feld hinzugefügt, also ist es nicht so schlimm. Ich denke immer noch, dass es schön wäre, Einstellungen neu anordnen zu können, und das ist mit Arrays möglich. . .
[/quote]
Ich habe vor einiger Zeit einen Commit gemacht, der das Neuordnen von Objekten hinzufügt. Hier ist eine kleine Testeinstellung, um die Schaltflächen anzuzeigen:
Ich denke, es lohnt sich bekannt zu geben, dass wir jetzt uploads als Feldtyp-Option haben, und ich glaube, es wurde irgendwo erwähnt, aber es ist schön, noch einmal zu erwähnen, dass type: objects sowohl bei den Theme-Einstellungen als auch bei den Site-Einstellungen (Plugins) funktioniert.
Danke! Wird behoben in
Unterstützt der Typ objects eine max-Einschränkung? Ich habe es versucht, aber es scheint nicht zu funktionieren.
Meinst du das für ein string-Typ-Feld in einem Objektbaum?
Versuche es mit max_length…
Siehe dazu #Validierungen für string-Typen oder ein funktionierendes Beispiel:
Ich denke, er bezieht sich auf:
Ja, ich meinte die Begrenzung der maximalen Anzahl von Objekten im Array.
Derzeit wird dies offiziell nicht unterstützt, daher habe ich diese Funktion in einer benutzerdefinierten privaten Theme-Komponente erweitert. Die Konfiguration sieht wie folgt aus (nur als Referenz):
Konfiguration zur Begrenzung der maximalen Array-Anzahl:
themes/quectel-custom-homepage/settings.yml
banner_images:
type: objects
default: []
schema:
name: "Karussellbilder"
max: 9 // Neue Erweiterung: Begrenzung der maximalen Array-Anzahl
identifier: image_url
properties:
image_url:
type: upload
required: true
link_url:
type: string
min: 0
max: 1023
Der konkrete Erweiterungscode:
themes/quectel-custom-homepage/javascripts/discourse/api-initializers/quectel-custom-homepage.gjs
import { action } from "@ember/object";
import { apiInitializer } from "discourse/lib/api";
import classPrepend from "discourse/lib/class-prepend";
import { i18n } from "discourse-i18n";
export default apiInitializer(() => {
// Erweiterung des SchemaSettingNewEditor-Komponente mittels classPrepend, um die max-Begrenzung für den objects-Typ zu unterstützen
// Diese Komponente wird nur im Administrationskontext geladen
let SchemaSettingNewEditor;
try {
SchemaSettingNewEditor =
require("discourse/admin/components/schema-setting/editor").default;
} catch {
// Nicht-Administratoren können diese Komponente nicht laden, Erweiterung überspringen
return;
}
classPrepend(SchemaSettingNewEditor, (Superclass) => {
return class extends Superclass {
@action
addItem() {
// Prüfen, ob die max-Begrenzung erreicht ist
const maxLimit = this.args.setting.max || this.activeSchema?.max;
if (maxLimit && this.activeData.length >= maxLimit) {
this.validationErrorMessage = i18n(
themePrefix("theme_settings.errors.objects_value_not_valid_max"),
{
count: maxLimit,
}
);
return;
}
return super.addItem(...arguments);
}
@action
addChildItem(propertyName, parentNodeIndex) {
const propertySchema = this.activeSchema.properties[propertyName];
// Prüfen, ob die max-Begrenzung erreicht ist
if (
propertySchema?.max &&
this.activeData[parentNodeIndex][propertyName].length >=
propertySchema.max
) {
this.validationErrorMessage = i18n(
themePrefix("theme_settings.errors.objects_value_not_valid_max"),
{
count: propertySchema.max,
}
);
return;
}
return super.addChildItem(...arguments);
}
};
});
});
Theme-Übersetzungskonfiguration:
themes/quectel-custom-homepage/locales/zh_CN.yml
zh_CN:
theme_settings:
errors:
objects_value_not_valid_max: "Die Anzahl darf %{count} nicht überschreiten"
Konkrete Auswirkungen:
- Fehlermeldung
- Keine weiteren Elemente hinzufügbar



