Fields: Mehrere Input-Felder anzeigen bei unbegrenzten Werten.
am 13.09.2017 - 12:24 Uhr in
Hallo zusammen,
ich stehe gerade vor der Aufgabe (und ein wenig wie der Ochse vorm Berg), die Inhaltserstellung in einer bestehenden D7-Installation für die User etwas angenehmer zu gestalten. Dazu gehört auch, dass dem User bei einem Feld bereits zu Beginn mehrere Input-Felder angezeigt werden sollen, da hier in der Natur der Sache liegt, dass so ziemlich immer mehrere (bis relativ viele) Werte eingetragen werden sollen.
Standardmäßig ist es ja so, dass bei einer begrenzten Anzahl von Werten die richtige Anzahl an Input-Feldern angezeigt wird, bei unbegrenzten Werten nur jeweils ein Feld (mehr) und dann ein Button "Weitere hinzufügen".
Schön wäre es, z.B. zu Beginn 3 Input-Felder zu haben und beim Button-Klick 3 weitere zu erzeugen.
Das Ganze klingt spontan einfacher, als es sich gestaltet. Ich hab nämlich auch gedacht, das sollte mit ein paar Klicks oder höchstens dem Setzen eines Wertes per Mini-Modul lösbar sein.
Leider ist dem (wenn ich nicht zufällig den Wald vor Bäumen nicht sehe) nicht so. Und alles, was ich per Google in Issue Queues, Stackoverflow und dergleichen gefunden habe, deutet darauf hin, dass diese Aufgabe in D7 evtl. auch gar nicht lösbar ist, zumindest nicht ohne Core-Hack. Wenn ich das überhaupt aus den ganzen Fragmenten richtig deute. Häufig ging es eher um Themen wie Vorbelegung mit Werten (nicht nötig und erwünscht) oder das programmatische Ändern der "cardinality" (das scheint mir allerdings der Wert zu sein, den ich ändern müsste?), wenn man z.B. dort, wo 5 Werte erlaubt sind, nur 3 Inputfelder anzeigen möchte oder so.
https://www.drupal.org/project/field_instance_cardinality macht da von Haus aus schon mal nicht, was ich haben möchte.
Dass es sich bei dem Feld seinerseits auch noch um eine Field Collection handelt, sollte für den Lösungsweg, so es ihn gibt, unerheblich sein.
Das sollte im Eingabeformular für eine Field Collection mit unbegrenzten Werten etwa so aussehen:
Wert1Eigenschaft1 Wert1Eigenschaft2
Wert2Eigenschaft1 Wert2Eigenschaft2
Wert3Eigenschaft1 Wert3Eigenschaft2
Button 3 weitere hinzufügen
Hat jemand schon mal praktische Erfahrungen mit dieser Anforderung unter Drupal 7 gemacht und kann mir da sagen, was geht, was nicht geht und wie es gehen könnte? Oder mir die Tomaten von den Augen nehmen? Kann doch eigentlich nicht sein, dass diese Anforderung im Sinne der Usability soooo exotisch ist.
Viele Grüße
Sonja
- Anmelden oder Registrieren um Kommentare zu schreiben
Ein Versuch wäre mit
am 13.09.2017 - 13:35 Uhr
Ein Versuch wäre mit Multifield, kann dir aber nicht garantieren ob das so geht.
Die Multifields selbst benötigen den Wert unbegrenzt, aber die zusammen gesetzten Multifields gibts du ja in deinem ContentType unter Fieldgroups aus.
Und wenn du dort als Set 3 eintragen kannst, könnte das funktionieren.
Oder auch mit DoubleField (dies hat aber nur 2 Werte und nicht mehr), Multifield kannst du beliebig Fields in eine Reihe setzen)
Grüße Jenna
Habe ich schon oft gemacht:
am 15.09.2017 - 18:02 Uhr
Habe ich schon oft gemacht: Baue eine entity mit entity_inline_form, dann ein Referenzfeld in der node auf die Entity. Funktioniert, nutze ich oft. Vorteil ist, dass du dann in views schön sauber das entsprechende delta der zugehörigen Entity rausholen kannst bei Bedarf.
Sorry, dass ich mich erst
am 28.09.2017 - 08:54 Uhr
Sorry, dass ich mich erst jetzt wieder melde - es war insgesamt so viel zu tun!
Danke für Eure Bemühungen - ich befürchte allerdings, Ihr habt mein eigentliches Anliegen bzw. den Knackpunkt nicht richtig rausgelesen!
Also, es geht mir hier im Kern gar nicht um eine Field Collection (die in diesem Fall zwar auch noch integriert ist), und schon gar nicht um die Darstellung später in der Ausgabe. Auch nicht um Entities. Der Inhaltstyp samt Daten besteht bereits und hat auch schon einige tausend Einträge, es geht lediglich um eine bessere Handhabung des entsprechenden Widgets bei der Erstellung neuer Nodes.
Nein, Multifield löst das Grundproblem nicht.
Ich erkläre mein Problem noch mal und breche es jetzt mal herunter auf ein ganz normales Feld, meinetwegen ein Textfeld:
Wenn ich die Anzahl der Werte, die das Feld haben kann, auf eine feste Anzahl begrenze, dann werden mir im Widget drei Textfelder untereinander angezeigt. So weit, so praktisch.
Wenn ich die Anzahl der Werte, die das Feld haben kann, auf unbegrenzt setze (was hier der Fall und auch auf jeden Fall erforderlich ist), dann wird mir im Widget nur ein Textfeld angezeigt, mit einem Button, um weitere Felder hinzuzufügen.
Um den ganzen Prozess für den User (normaler User ohne Sonderrechte) etwas zu beschleunigen, würde ich gerne vom Start weg direkt drei oder fünf Textfelder untereinander einblenden, damit er nicht jedes Mal den Button anklicken muss. Und dann beim Klick auf den Button optimalerweise direkt wieder drei oder fünf neue Eingabefelder generieren.
Beispiel: Node-Type wäre "Stadt", Feld wäre "Stadtteile". Die Anzahl der Stadtteile unterscheidet sich ja von Stadt zu Stadt, daher prinzipiell unbegrenzt. Der User soll jetzt en bloc erstmal 5 Stadtteile untereinander eintragen können, bevor er den Button "Weitere hinzufügen" klicken muss und dann direkt wieder 5 weitere leere Input-Felder erscheinem.
Und genau dieses Konstrukt, von dem man eigentlich denkt "easy-peasy", das ist in Drupal (7) wohl so nicht vorgesehen und ich habe da auch noch keine Lösung gefunden. Da gibt es irgendwie nur umgekehrte Wege und die auch nur mit Core-Hack ... also alles nicht das, was ich bräuchte.
Ich bräuchte "nur" das Feld mit unbegrenzten Werten samt "Weitere Hinzufügen"-Button in Kombination mit den mehreren direkt vom Start weg angezeigten Input-Feldern des Feldes mit begrenztem Wert.
Drupal Freelancer im Rheinland gesucht?
Spontan fällt mir hierzu ein
am 29.09.2017 - 09:04 Uhr
Spontan fällt mir hierzu ein Workaround mittels jquery ein. Du stellst die Anzahl für dein Feld nicht auf "unbegrenzt" sondern auf einen festen Wert, der aber nie erreicht wird, aber auch nicht so hoch ist, dass er zuviele ungenutzte Felder erzeugt. Das "blockweise" (immer drei Felder) einblenden der Felder steuerst du denn mittels jquery-Script. Bei Field Collections sehe ich da aber möglicherweise ein Performance-Problem. Müsstest du einfach mal testen.
Ist mit Sicherheit nicht die eleganteste Lösung, aber würde - zumindest bis du eine bessere Lösung findest - funktionieren.
na dann bau es dir
am 02.10.2017 - 22:44 Uhr
mittels hook_field_widget_info() und hook_field_widget_form().
Müsste gehen.
BG
Marc
ich meine mich zu entsinnen,
am 08.10.2017 - 06:15 Uhr
ich meine mich zu entsinnen, daß es da ein modul gibt. irgendwie multi field widget formater oder . einfach mal auf drupl.org suchen
C.A.W. Webdesign