[gelöst] Wie kann ich eine bestimmte View filtern?
am 21.07.2010 - 09:23 Uhr in
Guten Morgen,
ich kämpfe mich schon seit Tagen mit folgendem Problem ab und komme aber zu keiner Lösung. Darum wäre ich echt dankbar wenn mir bitte jemand einen brauchbaren Tipp geben könnte.
Also es gibt einen Inhaltstyp "Ansprechpartner".
In diesem habe ich verschiedene Felder definiert (Name, Tel, Bereich, ...). Den Feldtyp Bereich habe ich als Ankreuzfelder/Auswahlknöpfe definiert und in die Werteliste die Bereiche (Geschäftsleitung, Marketing, Buchhaltung, ...) geschrieben und eine Mehrfachauswahl zugelassen. Das heisst ein Ansprechpartner kann mehr als einem Bereich zugeordnet werden.
Dann gibt es noch einen Inhaltstyp "Produkt".
In diesem habe ich auch verschiedene Felder definiert. Und ab hier habe ich das Problem. Wie kann hier bitte ein Feld erzeugen das auf die Bereiche referenziert? Auf die Ansprechpartner gehts ja.
Ich möchte einen Link erzeugen können, der in der Produktansicht angezeigt wird. Wenn man darauf klickt kommt man auf eine View in der dann die Bereiche mit deren Ansprechpartner dargestellt werden, die vorher ausgwählt wurden.
Bin knapp am verzweifeln ... Würde mir bitte jemand helfen?
Vielen Dank!
- Anmelden oder Registrieren um Kommentare zu schreiben
Leg doch einfach noch einen
am 21.07.2010 - 12:05 Uhr
Leg doch einfach noch einen Inhaltstyp "Bereiche" an und erstelle für jeden Bereich einen Node, dann kannst du die doch ganz einfach über NodeReference referenzieren und in Views ausgeben.
Wie wäre es wenn Du die Bereiche mit taxonomie ein gibst
am 21.07.2010 - 12:10 Uhr
Hallo,
wie wäre es wenn du die Bereiche nicht als CCK Feld in die Node schreibst sondern über Taxonomie. Dann gibst Du beide Inhaltstypen für das Taxonomie Vokabular Bereiche frei. Über Views kannst Du dann die Taxonomie begriffe wählen.
Gruß
Tom
Danke euch beiden für die
am 21.07.2010 - 12:15 Uhr
Danke euch beiden für die Antworten.
Entschuldigt bitte meine Frage. Da ich aber Neuling bin, weiss ich jetzt nicht welche Variante ich bevorzugen soll. Für mich klingen beide Lösungen gut.
Welche Lösung kann ich als Anfänger besser umsetzen?
Ich kann Dir da schlecht
am 21.07.2010 - 13:41 Uhr
Ich kann Dir da schlecht raten da ich selber noch Neuling bin. Mir ist halt Taxonomie eingefallen weil ich damit arbeite und ich komme mit dem Taxonomie Modul gut zurecht.
Wie würdest du mit Taxonomie
am 21.07.2010 - 13:57 Uhr
Wie würdest du mit Taxonomie in diesem Falle vorgehen?
Taxonomy ist natürlich auch
am 21.07.2010 - 14:22 Uhr
Taxonomy ist natürlich auch eine ganz gute Idee.
Lege ein neues Vokabular an und ordne diesem die Begriffe für die einzelnen Bereiche zu. Außerdem fügst du dieses Vokabular bei den beiden genannten Inhaltstypen ein.
Nun kannst du Nodes für Ansprechpartner erstellen und dabei die Bereiche des Taxonomy-Feldes auswählen. Das gleiche geht auch bei den Produkten.
Außerdem erstellst du eine neue View. Dieser fügst du als Argument einen Taxonomy-Begriff zu und filterst das ganze nach dem Inhaltstyp "Ansprechpartner".
Dann noch eine Seite, welche als Pfad z.B. so aussieht: bereiche/%
Das %-Zeichen wird später durch den Taxonomy-Begriff ersetzt. Ruft man also bereiche/bereich-1 auf, bekommt man alle Nodes aufgelistet, die zu Bereich 1 gehören.
Danke für die ausführliche
am 21.07.2010 - 14:31 Uhr
Danke für die ausführliche Erklärung.
Ich werd es jetzt mal versuchen wie von dir beschrieben umzusetzen.
Also ich habe jetzt ein
am 21.07.2010 - 15:00 Uhr
Also ich habe jetzt ein Taxonomie Vokabular mit Begriffen erstellt. Diese habe ich auch bei den 2 Inhaltstypen eingebunden. Beim erstellen einer Node habe ich diese auch wie gewünscht ausgewählt.
Jetzt habe ich eine neue View "Ansprechgruppen" erstellt. In dieser View habe ich als Argument Taxonomie gewählt. Als Validator habe ich Taxonomie-Begriff / Vokabular: Bereich gewählt. Und dann habe ich in dieser View noch eine Seite mit dem Pfad bereiche/% erstellt.
Jetzt habe ich aber bitte noch 2 Fragen:
Welche Felder muss ich definieren?
Und wie kann ich aus der Produktansicht heraus dann auf diese View verlinken?
Danke nochmals für die Hilfe!
Zitat: Welche Felder muss ich
am 21.07.2010 - 16:10 Uhr
Welche Felder muss ich definieren?
Da du auf Ansprechpartner filterst irgendwelche aus dem Inhaltstypen. Kommt drauf an welche du definiert hast...
Vielleicht Name + Vorname?
Und wie kann ich aus der Produktansicht heraus dann auf diese View verlinken?
Ist die Produktansicht ein Node? Wenn ich das ganze richtig verstanden habe hat ein Produkt einen Bereich(Taxonomy-Term), angenommen mp3...
Der Pfad zu deiner View wäre dann bereiche/mp3
Ist auch die Frage finde ich wie willst du die Ansprechpartner einblenden - auf einer neuen Seite?
Oder nicht eher als Block beim Produkt?
-----------
Luca Curella
Kooperative Netze - Berlin
Zitat: Welche Felder muss ich
am 21.07.2010 - 16:13 Uhr
Welche Felder muss ich definieren?
Die Felder, die du haben willst. Die hier gewählten Felder dienen nur der Darstellung. Wenn du also nur den Titel darstellen willst, nimmst du auch nur den Titel.
Wenn du allerdings die Teaser der Nodes angezeigt haben möchtest, dann stellst du in den Basis-Einstellungen das "Zeilendesign" von "Felder" auf "Node" um.
Dazu bräuchte ich nochmal einen kurze Erklärung, was genau du haben willst. Du möchtest also für jeden zugeordneten Bereich bei "Produkte" bei der Node-Ansicht (nicht beim Node-Eingabeformular) einen Link ausgegeben haben, der dann auf "bereiche/bereich_1" zeigt usw. Stimmt das so? Hast du evtl. eine Beispiel-Seite, auf der sowas praktiziert wird?
Und zu guter letzt: Welches Theme verwendest du?
Danke euch beiden nochmals
am 21.07.2010 - 16:36 Uhr
Danke euch beiden nochmals für die Antworten.
Also die Ansprechpartner können ja nur in einer neuen View dargstellt werden, da es ja nicht ein einziger ist, sondern immer mehr als einer. Es soll ja auch nicht nur der Ansprechpartner, sondern auch seine Bereich ausgegeben werden. Also ich kann pro Produkt mehrere Bereiche bzw. Ansprechpartner definieren. zB kann das Produkt den Bereichen Vetrieb und Kundencenter unterliegen. Wenn man dann in der Produktansicht auf den Link "Ansprechpartner" klickt, sollen in der neuen View dann auch die 2 Bereiche (Vertrieb + Kundencenter) mit deren Ansprechpartnern (Personen) erscheinen.
Beispiel wenn man in einer Produkansicht auf den Link klickt:
Vetrieb
----------------------
Marianna Mustermann
Tel. 012345678
Max Musterhausen
Tel. 012345678
Kundencenter
-----------------------
Hans Gans
Tel. 012345678
Hannelore Haus
Tel. 012345678
Du möchtest also für jeden zugeordneten Bereich bei "Produkte" bei der Node-Ansicht (nicht beim Node-Eingabeformular) einen Link ausgegeben haben, der dann auf "bereiche/bereich_1" zeigt usw. Stimmt das so?
Ja so sollte es sein bitte.
Ist auch die Frage finde ich wie willst du die Ansprechpartner einblenden - auf einer neuen Seite?
Oder nicht eher als Block beim Produkt?
In einem Block kann ich es leider nicht einblenden, da es zu viele werden und die Site damit extrem hoch werden würde.
Ich benutze das Framework Theme.
Und eine Beispielseite habe ich leider nicht. Ich kann dir sofern du möchtest aber gerne einen Screen im Photoshop zusammen setzen, damit du siehst wie ich es meine.
Vielen Dank für eure Hilfestellung!
Komplexer als gedacht
am 21.07.2010 - 16:56 Uhr
Das funktioniert dann mit dem Views-Argument so nicht. Denn du hast bei x möglichen Bereichen pro Produkt x mögliche Argumente/Pfade für die View und nicht nur eins.
Ausserdem muss die View alle Bereiche der Produktnode "kennen" um die entsprechenden Ansprechpartner auszugeben.
Das ist dann vielleicht doch eher was für Nodereference und Beziehungen in der View.
Hat Bereich auch eigene Felder eigentlich?
-----------
Luca Curella
Kooperative Netze - Berlin
Habs mir schon so gedacht
am 21.07.2010 - 17:04 Uhr
Habs mir schon so gedacht dass es kompliziert wird.
Nein, Bereich hat keine Felder. Also Bereich ist nur ein Vokabular und besteht nur aus Begriffen.
Wenn ich eine Node Ansprechpartner oder Produkt erstelle kann man dann einen oder mehrere Begriffe aus diesem Vokabular auswählen.
Ich hoffe dass ich euch damit nicht auf die Nerven gehe, aber ich weiss echt nicht weiter.
Danke!
Allerdings hat Luzer recht,
am 21.07.2010 - 19:54 Uhr
Allerdings hat Luzer recht, so wird das mit den Argumenten nicht ohne weiteres klappen.
Was relativ problemlos möglich wäre:
Man bekommt für jeden Bereich einen Link ausgegeben.
Dann steht z.B. bei einem Node "Ansprechpartner: Vertrieb Kundencenter" und die beiden verlinken jeweils auf eine View, welche die Einträge des Entsprechenden Bereichs listet.
Klickt man also auf "Vertrieb", bekommt man das hier ausgegeben:
Vetrieb
----------------------
Marianna Mustermann
Tel. 012345678
Max Musterhausen
Tel. 012345678
Und klickt man auf Kundencenter, bekommt man eben diese Ausgabe:
Kundencenter
-----------------------
Hans Gans
Tel. 012345678
Hannelore Haus
Tel. 012345678
Wie man beides gleichzeitig in einer View unterbringen soll, weiß ich leider nicht so recht.
Man könnte das vermutlich mit einem eigenen Modul regeln, aber ob deine Kenntnisse dafür ausreichen, weiß ich nicht.
Danke für deine Antwort. Ich
am 21.07.2010 - 21:58 Uhr
Danke für deine Antwort. Ich besitze leider zu wenig PHP Kenntnisse um mir das Modul selbst schreiben zu können.
Ich komme aus der klassischen Grafik und setze mich erst seit sehr kurzer Zeit mit Drupal auseinander. Ich kläre das morgen mal mit meinem Bruder ab und ich würd mich dann nochmals melden.
Schönen Abend noch!
Guten Morgen, danke nochmals
am 22.07.2010 - 09:43 Uhr
Guten Morgen,
danke nochmals für die Hilfestellungen. Wärst du oder ihr bitte so nett und erklärt mir ich es dann so umsetzen kann? Das zumindest pro Bereich dann ein Link erscheint, durch den man dann auf die Ansprechpartner View kommt.
Vielen Dank!
Ich hab es jetzt erfolgslos
am 23.07.2010 - 08:49 Uhr
Ich hab es jetzt erfolgslos versucht. Aber ich bekomme das mit den Argumenten einfach nicht hin. Das mit den Links in der Produktansicht schaffe ich auch nicht.
Wäre wirklich dankbar über jede Hilfe.
Danke!
Ich hab eine Idee wie man das
am 23.07.2010 - 10:54 Uhr
Ich hab eine Idee wie man das machen könnte:
Content Taxonomy installieren.
Zum Produkt ein Content Taxonomy Feld für das Vokabular "Bereiche" hinzufügen.
Das Feld heißt in diesem Bsp. auch bereiche. Die Anzahl der möglichen Werte stellst du so ein wie du es möchtest
Dann den folgenden code einfach in deine node.tpl.php einfügen
<?php
$items = $node->field_bereiche; //Inhalt des Feldes laden
foreach ($items as $item) {
$argument = $argument . $item ['value'] . '+'; //Die ausgelesenen Terme verknüpfen
}
$argument = substr($argument,0,strlen($argument)-1); // Am Ende ist ein Plus zuviel, wird hier entfernt
?>
<a href="http://example.com/view_argument/<?php echo $a ?>">
Link zu view mit Argumenten Hier wird der Link mit Argumenten ausgeben. Im Beispiel hat der view den Pfad "view_argument"
Ob das eine gute Lösung ist kann ich nicht sagen, aber es funktioniert
Danke für deine Antwort und
am 23.07.2010 - 11:11 Uhr
Danke für deine Antwort und das Beispiel. Sitze grad im Zug und kann es erst morgen testen. Ich meld mich morgen dann nochmal.
Cool, das mit dem "+"
am 23.07.2010 - 13:18 Uhr
Cool, das mit dem "+" zwischen den Argumenten war mir bisher noch nie aufgefallen. Dann dürfte das alles natürlich kein großes Problem sein, allerdings muss man daran denken, bei den Argumenten die Option für mehrere Argumente zu aktivieren, sonst klappt's nicht ;-)
Muss ich den das Content
am 26.07.2010 - 09:51 Uhr
Muss ich den das Content Taxonomy Modul auch beim Inhaltstyp "Ansprechpartner" definieren? Damit dann jeder Bereich weiss welche Ansprechpartner diesem Bereich unterliegen.
Dafür benötigst du nichtmal
am 26.07.2010 - 14:51 Uhr
Dafür benötigst du nichtmal unbedingt Content Taxonomy, das funktioniert auch mit dem normalen Core-Taxonomy-Modul, die Taxonomy-Terms kann man in der node.tpl.php auch leicht auslesen.
Danke für deine Antwort. Nur
am 26.07.2010 - 15:03 Uhr
Danke für deine Antwort.
Nur wenn ich den Code von shopdogg in meine node.tpl.php einfüge, bekomme ich einen Error:
warning: Invalid argument supplied for foreach() in /home/.sites/28/site1/web/themes/meintheme/node.tpl.php on line 37.
Erklärst mir bitte noch was ich bei den Taxonomie Einstellungen in der View alles definieren muss. Irgendetwas fehlt hier noch, da wenn ich über einen Direktlink auf eine gefilterte View wie zB www.xxx.at/bereiche/bereich-1 zugreifen möchte, bekomme ich eine Fehlermeldung das die Seite nicht gefunden wurde.
Und wie soll ich bitte den angegebenen Link von shopdogg
<a href="http://example.com/view_argument/<?php echo $a ?>">
in der Produkt Node einbinden?Danke!
Na und wie hast du es jetzt
am 27.07.2010 - 12:46 Uhr
Na und wie hast du es jetzt gelöst?
-----------
Luca Curella
Kooperative Netze - Berlin
Ich habs so wie von shopdogg
am 27.07.2010 - 12:50 Uhr
Ich habs so wie von shopdogg vorgeschlagen gemacht.
Ein weiteres Modul "computed field" war noch erforderlich. Denn Code Schnippsel von shopdogg habe ich in das Template meiner Produkt Node gesteckt.
Das einfügen von extra code
am 27.07.2010 - 15:06 Uhr
Das einfügen von extra code in das Node Template ist durch Computed Field nicht mehr nötig.
Computed Field wird verwendet, damit den Ansprechpartnerlink als Views Feld verwenden kann. Deswegen müssen die Ergebnisse des Computed Field auch in der Datenbank gespeichert werden.
Content Taxonomy wird verwendet, damit die Produkte, denen ein Bereich zugewiesen wird, nicht in eben diesem auftauchen, bzw. damit die Produkt-Nodes keine Bereichs-Tags bekommen.
Man könnte noch prüfen ob einem Produkt Bereiche zugewiesen wurden und nur in diesem Fall einen Link ausgeben. Ich bin allerdings davon ausgegangen, dass jedes Produkt einen Ansprechpartner hat.
Ich hoffe die Screenshots helfen weiter.
Schritt 1: benötigte Felder
Schritt 2: Einstellungen für das content taxonomy field
Schritt 3: Konfiguration des computed field
Code für das Computed Field:
--------------------------------------
Berechneter Code:
$items = $node->field_produkt_bereiche; //Inhalt des Feldes laden
foreach ($items as $item) {
$argument = $argument . $item ['value'] . '+'; //Die ausgelesenen Terme verknüpfen
}
$argument = '/' . substr($argument,0,strlen($argument)-1); // Am Ende ist ein Plus zuviel, wird hier entfernt
$node_field[0]['value'] = l('Ansprechpartner', 'bereiche'.$argument);
Anzeigeformat:
$display = $node_field_item['value'];
Schritt 4: Der View für die Bereiche
Schritt 5: Argument Einstellungen für den view
So ausführlich konnte ich es
am 27.07.2010 - 15:09 Uhr
So ausführlich konnte ich es natürlich nicht beschreiben.
Vielen Dank nochmals an dieser Stelle!