Variables Layout für Inhaltstypen
am 12.02.2010 - 03:02 Uhr in
Hallo Leute,
Mein Problem ist folgendes Anwendungsszenario:
Die entsprechend berechtigten User sollen bestimmte Inhalte (als Inhaltstypen bereits definiert) erstellen dürfen. Die Inhalte sollen aber nur in Form einiger festgelegter Layouts möglich sein, die im Prinzip durch entsprechende node-page-templates gegeben sein können.
Ist es möglich, dass der User beim Erstellen des Inhalts seine gewünschte template auswählen kann (z.B. durch Taxonomie gesteuert)? Wie wäre das am besten zu realisieren? Kann man z.B. zunächst in einer Auswahlbox das Layout wählen und dann auf eine dem Layout/template entsprechende Bearbeitungsseite weitergeleitet werden?
D.h., ich stelle mir für den User folgenden Weg beim Erstellen eines Inhalts vor: Benutzermenu->Inhalt erstellen->Inhaltstyp->Auswahlbox: Layouttyp wählen->Nodebearbeitungsform
Ist das so (oder ähnlich) möglich?
Danke für Hinweise
hermx
- Anmelden oder Registrieren um Kommentare zu schreiben
Weiterleitung nicht nötig
am 12.02.2010 - 04:55 Uhr
Sofern dem User nicht abhängig vom Template unterschiedliche Felder angeboten werden sollen, müsste das ohne Weiterleitung gehen. Mit Taxonomie bist Du schon auf dem richtigen Weg. Du machst ein Vokabular "Templates" und weist jedem Template einen Begriff zu, z.B. "blau", "rot", "gelb". Im Eingabeformular für den Node gibt es ja die Taxonomiezuordnung. Der User kann also direkt dort ankreuzen, was er will.
In Views machst Du jeweils einen View für "blau", "rot", "gelb", indem Du nach dem Begriff filterst bzw. ein Argument übergibst. Für jeden View kannst Du dann ein maßgeschneidertes Template definieren (z.B. "views-irgendwas-rot.tpl.php") und zuweisen.
Wenn die Unterschiede zwischen den Templates allerdings nicht nur in Datenanordnung und Design liegen sollen, wäre zu überlegen, ob Du nicht einfacher mehrere Node-Types anlegst, bevor Du am User-Interface rumstrickst. Dazu müsste man aber wissen, um was es genau geht.
Noch eine Variante wäre, sich modulare Typen zu basteln und mittels Node Reference bzw. Relationship zusammenzufügen. Im Grunde dasselbe wie oben, nur etwas komplexer. Kommt halt auf den Anwendungsfall an.
"Layout"
am 12.02.2010 - 08:29 Uhr
Benutzermenu->Inhalt erstellen->Inhaltstyp->Auswahlbox: Layouttyp wählen->Nodebearbeitungsform
Ist das so (oder ähnlich) möglich?
Nicht wirklich. Sollen die Inhalte (trotz unterschiedlichem Layout) die gleichen Felder enthalten? Wenn ja, macht das so keinen Sinn.
Dann ist nur die Ausgabe entscheidend (also das node-Template), nicht jedoch das Layout des Eingabeformulars.
Wenn die Layouts auch verschiedene Felder (sprich "Daten") voraussetzen, mach doch einfach verschiedene Inhaltstypen. Da kannst Du dann auch die Eingabeformulare verschiedenartig themen.
Bei erstgenannter Lösung kannst Du Dir in der template.php per
preprocess
neue "Template-Suggestions" einbauen, mit denen Du dann auch Node-Templates pro Term erstellen kannst.Das würde also bedeuten, dass der Benutzer einen Inhaltstypen hat, in dem er einfach per Taxonomy das gewünschte Layout wählt und je nach gewünschtem Layout dann bei der Anzeige ein anderes Template verwendet wird.
Für unterschiedliche Eingabeformulare funktioniert nur der Weg über unterschiedliche Inhaltstypen.
hth,
Stefan
--
Sei nett zu Deinem Themer!
Tipp: Beachte die Verhaltensregeln des DrupalCenter.
Variable Layouts/Eingabeformulare in einem Inhaltsyp möglich?
am 12.02.2010 - 10:30 Uhr
Danke für die Hinweise soweit!
Ich dachte aber tatsächlich an verschiedene Felder im zweiten Schritt.
Gedacht ist folgendes: Der User soll einen bestimmten Inhaltstyp erstellen können, aber darin dann zwischen Layouts mit verschiedenen Feldern wählen können, insbesondere soll er zwischen wenigen fixen Layouts mit verschiedener Zahl von Bildern wählen können, wobei aber, wie gesagt, der Inhaltstyp an sich der gleiche bleiben soll.
Das scheint aber nach euren Antworten nur mit unterschiedlichen Inhaltstypen möglich.
Wäre es denkbar, nur einen Typ mit dem maximalen Felder-Umfang zu definieren und dann nur die benötigten Felder je nach Auswahl anzuzeigen? (So verstehe ich die Antwort von stBorchert). Die Antwort von kissmedve gibt mir ungefähr den Weg an, wie ich es mir vorgestellt habe. Mit modularen Typen und Node Relationships habe ich aber noch keine Erfahrung. Habt ihr da noch ein paar Tipps?
Könnte der Modul "multistep", den ich gerade entdeckt habe,hilfreich sein?
Ansonsten Danke für die Tipps!
hermx
"Modulare" Node-Types
am 12.02.2010 - 11:01 Uhr
Ich gebe zu "modular" am besten ein Beispiel:
Du hast einige Fields, die immer vorkommen bzw. ausgefüllt werden müssen, etwa ein Satz unternehmensbezogener Daten. Dann hast Du Fields, besser gesagt Field Groups, die öfter vorkommen können, es aber nicht notwendigerweise tun, z.B. Name/Telefon/e-Mail von Ansprechpartnern. Im Gegensatz zu Fields kannst Du bei Field Groups nicht ankreuzen, dass Du mehrere zulassen willst. Du musst also entweder für eine maximale Anzahl von Ansprechpartnern die Formularfelder vorsehen, was nicht sehr übersichtlich ist, oder Du koppelst zwei Node-Types aneinander.
Die Unternehmensdaten sind Dein erster Node-Type, die Ansprechpartnerdaten Dein zweiter. Dort siehst Du ein Node-Reference-Feld vor, der sich auf Deinen Node-Type Unternehmensdaten bezieht. Beim Ausfüllen der Ansprechpartner kreuzt Du an, zu welchem Unternehmen der Kontakt gehört, und, bingo, sind die beiden verknüpft. Damit ist es egal, ob Du 1 oder 20 Kontakte eingibst, der View sucht sich nachher die Daten zusammen und Du hast ganz elegant, was Du brauchst: die Unternehmensdaten und so viele Ansprechpartner, wie es gibt, mit den entsprechenden Daten.
Den View machst Du auf Unternehmen und gibst bei Relationships den Ansprechpartner-Node-Type an. Damit wird das Spektrum der vefügbaren Felder um die der Ansprechpartner erweitert und Du kannst Dir aussuchen, welche Felder Du ausgeben willst.
Danke für das Beispiel, kissmedve
am 12.02.2010 - 11:36 Uhr
Hallo kissmedve,
vielen Dank für das Beispiel. Das hilft mir erst mal weiter. Ich muss alles erst mal ausprobieren und dann sehen wir weiter. Aber soweit ich sehen kann, ist mein Anwendungsfall so machbar.
Gruß, hermx