Erstellung einer Übersichtsseite mit mehreren Views für spezifischen Content Type (CKK)
am 27.06.2008 - 13:29 Uhr in
Hallo Drupaler,
nachdem mich dieses Forum schon an 2 Stellen meines Projekts "Überführung einer Uni-Lehrstuhlseite nach Drupal 6" unterstützt hat, hoffe ich auch in diesem Fall auf eure Unterstützung.
Folgende Seite muss in Drupal 6 umgesetzt werden:
http://www.ktpweb.de/1_Mitarbeiter.html
Mein bisheriges Vorgehen sah wie folgt aus:
- Erstellung eines eigenen Content Types 'staff_member' für Mitarbeiter am Lehrstuhl -> dazu benutzte ich CKK
- Erstellung einer node-staff_member.tpl.php, um die Anzeige Mitarbeiter-Seite zu themen ->funktioniert einwandfrei
Nun geht es an die Erstellung der Übersichtseite, die unter dem obigen Link zu finden ist... Nur, wie gehe ich da vor?
Folgende Anforderungen habe ich an die Seite:
- Mehrere Views des ContentTypes 'staff_member' auf einer Seite anzeigen
- ImageMap für das Bild (Koordinaten-Informationen sind im ContentType 'staff_member' für jeden Mitarbeiter in einem Feld 'field_coords' abgelegt)
Mein Problem:
Mein Problem ist jetzt, dass ich nicht einfach hergehen kann und einen View mit DisplayType = Page erstelle, der mir die Mitarbeiter anzeigt. Dann sehe ich ja auf dieser Seite nur alle Mitarbeiter und nicht gefiltert in mehreren Views? Zudem kann ich da ja auch kein Bild mit einbauen (vielleicht schon, aber damit habe ich mich noch nicht beschäftigt...).
Die Umsetzung
Die Imagemap habe ich jetzt wie folgt umgesetzt:
- Das Bild ist Content meines neu erstellten ContentTypes 'staff_overview' (für das Bild verwende ich CKK_IMCE) und wird darüber eingebunden
- Erstellen einer Funktion in der Datei template.php, die mir alle nodes eines bestimmten Types (hier staff_member) aus der DB liest.
- Bauen des map-Tags mit den entsprechenden Area-Tags aus dem den Informationen dieser node-Daten
Dies funktioniert ohne Probleme. Ist aber schon ein workaround. Geht das aus eurer Sicht einfacher?
Weiterhin bleibt das Problem mit den Views (Leider gibt es zu Views2 noch ziemlich wenig Material):
Nach langem Suchen im Netz, ist mir folgende Idee gekommen: Leider weiss aber noch nicht, ob das auch so funktioniert wie ich mir das vorstellen. Deshalb würde ich gerne mal eure Meinung dazu hören:
Es ist aus meiner Sicht nicht erforderlich für jede Gruppe einen eigenen View zu erstellen. Vielmehr möchte ich die Möglichkeiten von Argumenten bzw. Filtern (die beide dynamisch auf der Seite zugewisen werden) nutzen...
Also hier meine Idee:
- Wie oben beschrieben, habe ich mir für die Übersichtseite einen neuen ContentType 'staff_overview' gegönnt
- Ich habe Mitarbeiter als node-type staff_member voliegen. Erstelle nun einen View, der mir alle(!) Mitarbeiter am Lehrstuhl ausgibt.
- Nun füge beim ContentType 'staff_member' noch ein Feld 'staff_group' ein. Dieses ist für die Zugehörigkeit einer Person zu einer(!) Gruppe (Professoren, Lehrbeauftragte, etc.) nötig. Definiere diese Feld als Text-List... Man kann also einen Eintrag pro Mitarbeiter auswählen...Ich habe somit jetzt eine Unterscheidungsmöglichkeit der Mitarbeiter anhand dieses Feldes
- Nun möchte ich diesen View mit allen Mitarbeitern mehrfach auf meine neu erstellte Übersichtsseite vom Typ 'staff_overview' anzeigen. Hierzu habe ich folgenden Code gefunden:
<?php
$view = views_get_view('staff_all');
print $view->execute_display('default',$args);
?> - Über das $args-Array kann man nun Argumente mitgeben (Ich hoffe mal, dass ich das richtig verstanden habe und diese Argumente kann ich im View unter Argumente wieder nutzen?). Eine andere Möglichkeit wäre doch sicherlich an dieser Stelle händisch einen Filter zu definieren und auf den View anzuwenden.
- ... wie geht's weiter...
Genau an dieser Stelle komme ich nicht weiter. Ich habe noch nicht ganz die Verwendung von Argumenten verstanden. Wenn man im Netz sucht, dann findet man immer nur Erläuterungen, die sich auf die Übergabe von Argumenten über die URL beziehen. Filterung erfolgt somit anhand eines bestimmten Musters in der URL. Dies ist in meinem Fall ja nicht zutreffend. Ich möchte die Argumente im PHP-Code übergeben....
Wie kann ich also die übergebenen Argumente (aus dem PHP-Code) für die Anzeige in meinem View nutzen? Was muss ich in meine View einstellen, damit bspw. wenn ich als Argument 'prof' (key von Gruppe Professor) übergebe, nur die Mitarbeiter dieser Gruppe angezeigt werden?
Habe auch gelesen, dass man mit dem Modul Taxonomy Kategorisierungen vornehmen kann. Wäre das in diesem Fall sinnvoller sich in den Umgang mit dieses Modul einzuarbeiten und es zu nutzen? Eigentlich will ich ja nichts weiter als eine Kategorisierung von Mitarbeitern nach bst. Gruppen vornehmen und diese mit Hilfe von Views getrennt anzeigen...
Wenn Taxonomy die richtige Wahl wäre, hat da jemand vielleicht ein gutes Tutorial?
Alternativ würde mich interessieren, wie man in obigen Code einen Filter auf das view-Objekt anwendet, dass ebenfalls nur die Mitarbeiter einer bestimmten Gruppe anzeigt...
Prinzipiell die Frage an alle Entwickler die sich besser mit Drupal auskennen: Wie hättet ihr die Übersichtsseite ins System eingebunden?
Ich weiss, dass dies eine sehr lange und ausführliche Beschreibung des Problems ist, hoffe aber, dass sich trotzdem jemand bis zu diesem Punkt vorkämpft und mir eine Antwort geben kann...
Vielen Dank im Voraus,
Gruß
Marcel
- Anmelden oder Registrieren um Kommentare zu schreiben
Noch ein Nachtrag
am 27.06.2008 - 13:50 Uhr
Hallo,
bzgl. der Anwendung von Filtern auf einem View bin ich gerade fündig geworden. Somit könnte ich das jetzt wir oben angedeutet umsetzen. Folgender Code filtert mir alle Mitarbeiter der Gruppe Professoren (key=prof) heraus:
<?php
//view-Objekt holen -> Name des views staff_all
$view = views_get_view('staff_all');
//setzen des displays
$display_id = 'default';
$view->set_display($display_id);
//filter hinzufügen
$id = $view->add_item($display_id, 'filter', 'node_data_field_staff_group', 'field_staff_group_value');
$item = $view->get_item($display_id, 'filter', $id);
//setzen des Wertes nach dem gefiltert werden soll
$item['value'] = array('prof');
//aktualisieren des Filters
$view->set_item($display_id, 'filter', $item['id'], $item);
$view->is_cacheable = FALSE;
//Ausgabe des Views
print $view->execute_display('default', $args);
?>
Generell bleibt aber die Frage, ob man die ganze Sache nicht doch eleganter mit den von Drupal gegebenen Modulen lösen kann.
Würde mich über Anregungen und natürlich antworten zu den Fragen im ersten Post sehr freuen...
Gruß
Marcel
Also die HTML-Seite sowie
am 27.06.2008 - 14:09 Uhr
Also die HTML-Seite sowie ich sie sehe, lässt sich mit einer View erstellen. Erstellst ein View für das Bild, filterst es nach der Node-ID die das Bild hat.
Dann wählst Attach aus,hängst als eine View an die andere ran. Machst deine Einstellungen, nicht vergessen, dass diese View überschriebene Werte nehmen soll.
Dann kannst die Felder noch nach dem Feld was für Lehrbeauftragte usw zuständig ist, sortieren.
Ggf ist noch CSS angesagt. Da beide Views untereinander dargestellt werden.
----------------------------------------
Alle Angaben ohne Gewähr!!:D
http://www.tobiasbaehr.de/
Gelöste Forenbeiträge mit [gelöst] im Titel ergänzen
Das Verhältnis anderen zu helfen muss höher sein, als von anderen Hilfe zu erfragen/erwarten.
Hallo und vielen Dank für
am 27.06.2008 - 14:52 Uhr
Hallo
und vielen Dank für die Antwort. Leider bin ich noch nicht so fit im Umgang mit Drupal, so dass ich deine Antwort noch ein wenig hinterfragen muss...
Erstellst ein View für das Bild, filterst es nach der Node-ID die das Bild hat.
Ich soll also einen View erstellen, der über den festgelegten Filter Node->id = xyz nur den Inhlt meiner Node vom Typ 'staff_overview' (mein erstellter ContentType für die Überischtsseite)anzeigt? Wenn ja, soweit verstanden!
Dann wählst Attach aus,hängst als eine View an die andere ran...
Was ist Attach? Eine Objektmethode des view-Objektes oder was meinst du damit genau?
Machst deine Einstellungen, nicht vergessen, dass diese View überschriebene Werte nehmen soll...
Ich soll meine Einstellungen wie im obigen Code mit dem Filter beschrieben machen, oder worauf bezieht sich deine Aussage? Welche Konsequenz ergibt sich durch die Tatsache, dass der View überschriebene Werte nehmen soll? Was muss ich zusätzlich beachten?
Überschriften je nach Gruppe (Professor, etc.) (siehe mein Link zu der Vorgabeseite) wären bei deiner Lösung auch möglich?
Wenn du mir diese Dinge noch beantworten würdest, wäre ich dir sehr dankbar!
Gruß
Marcel
Ich mach ein Screencast,
am 27.06.2008 - 15:12 Uhr
Ich mach ein Screencast, wenn du Views für Drupal6 meinst.
Bild-->Imagemap
WErte überschreiben, da sonst die Eigenschaften der View vom Bild vererbt werden.(Felder,Filter etc)
Attach ist in der auswahlliste dabei.Vorausgesetzt du benutzt Drupal6.
Allgemein will ich sagen, du brauchst das nicht coden.
----------------------------------------
Alle Angaben ohne Gewähr!!:D
http://www.tobiasbaehr.de/
Gelöste Forenbeiträge mit [gelöst] im Titel ergänzen
Das Verhältnis anderen zu helfen muss höher sein, als von anderen Hilfe zu erfragen/erwarten.
Leider werde ich aus deinen
am 28.06.2008 - 15:16 Uhr
Leider werde ich aus deinen Antworten nicht schlau... Ich spreche von Drupal 6 und Views.
Ein Screencast wäre super...
Gruß
Marcel
Ich hab dir doch über das
am 28.06.2008 - 18:53 Uhr
Ich hab dir doch über das Kontaktformular eine Mail geschickt mit ein Link zum Video! Oder kontrollierst du dein Mails nicht?
----------------------------------------
Alle Angaben ohne Gewähr!!:D
http://www.tobiasbaehr.de/
Gelöste Forenbeiträge mit [gelöst] im Titel ergänzen
Das Verhältnis anderen zu helfen muss höher sein, als von anderen Hilfe zu erfragen/erwarten.
Sorry - hatte Mails noch nicht wieder abgerufen
am 29.06.2008 - 13:31 Uhr
Hallo Spartacus,
hatte meine Mails am WE noch nicht wieder abgerufen und nur kurz ins Forum geschaut ^^
In der Zwischenzeit habe ich die Mails gecheckt und prompt deine Mail gefunden...
Vielen, vielen Dank für deine Mühe. Werde mir den Screencast gleich mal anschauen...
Gruß
Marcel
Noch eine Frage...
am 30.06.2008 - 09:52 Uhr
Hallo Spartacus,
der Screencast hat mir sehr weitergeholfen. Konnte anhand deiner Schilderungen sehr gut die Verwendung von Views und den Anhängen nachvollziehen... Habe jetzt alles soweit nachgearbeitet und den View samt Attachment im System.
Was mir aber noch nicht so ganz klar ist: Du wählst als Gruppierungsmerkmal das Beitragsdatum aus. Prompt erscheint in deiner Vorschau und auch in deiner Anzeige das Gruppierungsmerkmal als Überschrift des jeweiligen Gruppierungsbereich (2008, darunter die Beiträge, 2007 -> etc) . Bei mir stehen da nur gruppiert nach dem gewählten Merkmal die Node->Titles als Link. Die Überschriften fehlen...
Wie kriege ich es jetzt hin, dass über den gruppierten Blöcken das Gruppierungsmerkmal steht?
Zur Info. Nutze als Gruppierungsmerkmal das Textfiled "field_staff_group" das selbst erstellten NodeTypes 'staff_member'. Dies ist, wie im ersten Beitrag beschrieben eine Text-Liste, wo genau ein Wert prof|Professor, wissM|Wissenschaftlicher Mitarbeiter .... etc. pro Mitarbeiter ausgewählt werden kann.
Ich hätte gerne, dass der 'Plained Text' als Überschrift über jedem gruppierten Block steht.
Hast du den View irgendwie gestylt um das Gruppierungsmerkmal zusätzlich mit anzuzeigen?
Vielen Dank,
Gruß
Marcel
Hat sich erledigt
am 30.06.2008 - 12:34 Uhr
Hallo,
lag scheinbar an der Ansicht in dem von mir genutzten Themee Amadou...
In meinem eigenen Theme, wo ich nichts gethemed habe sehe ich die Namen der Gruppierungsparameter...
Gruß
Marcel
Der Screencast würde mich
am 02.07.2008 - 16:47 Uhr
Der Screencast würde mich auch interessieren, kann der auch veröffentlicht werden? Mir persönlich würde natürlich auch eine PN reichen...
besser Veröffentlichen
am 19.12.2008 - 14:49 Uhr
... da auch mich dieser Screencast interesieren würde und bestimmt auch andere Drupaler.
Gruß
würde mich auch
am 20.12.2008 - 12:40 Uhr
würde mich auch interessieren.
Sport-Portal | Bodybuilding
Sport-Portal | Bodybuilding