Taxonomy und bestimmte Art der Auflistung von verwandten Artikeln
am 03.12.2008 - 17:39 Uhr in
Moin moin!
Ich hätt mal eine Frage, und hoffe hier die Antwort zu finden.
Folgendes: Auf meiner Seite werden Bands behandelt (CD-Reviews, Interviews, News, Konzertberichte) und mittels des Taxonomy-Moduls wollte ich realisieren, dass unter den Artikeln eine Auflistung aller anderer Artikel gezeigt wird, die mit dieser Band zu tun haben. Der Bandname wird dabei beim Erstellen des Artikels in ein eigenes Taxonomy-Feld "Bandname" eingetragen. So weit so gut. Allerdings steh ich grad vor einer Wand und weiß nicht genau, wie ich nun weitermachen soll. Das "Similar Terms" Modul ist zwar ganz nett, aber ich würde es gern unter dem Artikel haben (nicht rechts! selbst nach Umstellen im Block-Menü bleibt es dennoch rechts) und soll sowohl Artikel-Typ (Review, Interview, etc.) als auch Erstellungsdatum anzeigen. Meiner Ansicht nach, wär das ein Fall für das Views-Modul, allerdings weiß ich jetzt nicht, wie ich das mit den Taxonomy-Terms handhaben muss, weil sie ja vorher nicht bekannt sind. Das ist schließlich abhängig von der Seite, wo man sich gerade aufhält (und welche Band in diesem Artikel besprochen wird).
So, ich hoffe, dass jemand eine Lösung weiß! :)
Vielen Dank schon mal
- Anmelden oder Registrieren um Kommentare zu schreiben
Drupalversion?
am 03.12.2008 - 18:21 Uhr
Drupalversion?
"Similar Terms" Modul ist zwar ganz nett, aber ich würde es gern unter dem Artikel haben
Nicht das Modul willst Du unter dem Artikel haben sondern den von Modul bereitgestellten Block. Stimmts?
Das ist schließlich abhängig von der Seite, wo man sich gerade aufhält (und welche Band in diesem Artikel besprochen wird)
Na und. Die Seite kann doch ueber die URL eindeutig identifiziert werden. Und weil dem so ist spielt die Frage welche Band auf einer Seite besprochen wird keine Rolle. Denn eine Band ist ja an ihren jeweiligen Term (Taxonomy-Feld "Bandname") identifizierbar. Ist das so korrekt?
Wenn Ja, dann ergibt sich daraus: Kennt man aus der URL die ID der Node so kennt man den Term der Band und damit die Band. Kennt man den Term kann man sich alle Nodes ermitteln lassen die ebenfalls mit diesem Term verbunden sind.
Wenn ich immer noch richtig liege dann ist das ein Fall fuer einen View der mit einem Argument arbeitet. Und das war Deine Frage.
========================================================
Aber man kann auch voellig anders vorgehen.
Ausgangspunkt ist die Node einer Band unter derem Inhalt weiter Links zu Nodes dieser BAnd angeziegt werden sollen.
Also gibt es einen konkreten Ausgangspunkt: Die Term ID der aktuellen Node. Diese Term ID verwendet man um alle Nodes (als Liste der Titelfelder - die sind Links zur Node) zu ermitteln die ebenfalls diesen Term haben. Das ist eine Aufgabe fuer einen View der als Argument eine Term ID entgegennimmt.
Die weitere Vorgehensweise ergibt sich aus der Vorliebe der Drupal-Handhabung.
Entweder in einem Panel die Band-Node und auch den View mit seiner Linkliste anzeigen
oder
den View mittels Nodetype-Template einbetten um seine Linkliste anzuzeigen.
-------------
quiptime
Nur tote Fische schwimmen mit dem Strom.
Danke für die schnelle
am 03.12.2008 - 18:35 Uhr
Danke für die schnelle Antwort! :)
Drupalversion?
6.2
Nicht das Modul willst Du unter dem Artikel haben sondern den von Modul bereitgestellten Block. Stimmts?
Ähm, ja genau ;)
Na und. Die Seite kann doch ueber die URL eindeutig identifiziert werden. Und weil dem so ist spielt die Frage welche Band auf einer Seite besprochen wird keine Rolle. Denn eine Band ist ja an ihren jeweiligen Term (Taxonomy-Feld "Bandname") identifizierbar. Ist das so korrekt?
Wenn Ja, dann ergibt sich daraus: Kennt man aus der URL die ID der Node so kennt man den Term der Band und damit die Band. Kennt man den Term kann man sich alle Nodes ermitteln lassen die ebenfalls mit diesem Term verbunden sind.
Wenn ich immer noch richtig liege dann ist das ein Fall fuer einen View der mit einem Argument arbeitet. Und das war Deine Frage.
Trifft alles zu! Nur bin ich mir jetzt nicht sicher, wie ich das mit den Argumenten genau machen muss. Bei Filter folgendes "Taxonomie: Vokabular = Band" und was muss ich beim Argument machen? Sorry für die blöde Frage...
6-er Version einschliesslich Module auf den aktuellen Stand ...
am 03.12.2008 - 18:43 Uhr
Bevor Du weiter machst empfehle ich Dir die gesamte 6-er Version einschliesslich aller Module auf den aktuellen Stand zu bringen.
Dies vor allem wegen dem Views Modul.
-------------
quiptime
Nur tote Fische schwimmen mit dem Strom.
Ist alles auf dem aktuellen
am 03.12.2008 - 18:55 Uhr
Ist alles auf dem aktuellen Stand!
..Drupal Voice Channel kommen damit wir per Mumble reden können?
am 03.12.2008 - 19:05 Uhr
Kannst Du in den Drupal Voice Channel kommen damit wir per Mumble reden koennen?
Mit Postings zu erklaeren ist es etwas komplex. Geht muendlich besser.
-------------
quiptime
Nur tote Fische schwimmen mit dem Strom.
Hmm sorry, hab aber kein
am 03.12.2008 - 19:19 Uhr
Hmm sorry, hab aber kein Mikro...
Ein paar Hinweise wären schon hilfreich! :)
Hinweise wozu?
am 03.12.2008 - 19:28 Uhr
Hinweise wozu?
PS
Ein Headset bekommt man fuer unter 10,-
-------------
quiptime
Nur tote Fische schwimmen mit dem Strom.
Hinweise was genau ich jetzt
am 03.12.2008 - 19:38 Uhr
Hinweise was genau ich jetzt einstellen muss.
Glaub mir ...
am 03.12.2008 - 19:47 Uhr
Glaub mir.
Mit Postings zu erklaeren ist es etwas komplex
Mit ein paar Einstellungen ist es nicht getan. Ich kenne Dein Verstaendnis von Views 2 nicht. Gehe aber davon aus das es eher bescheiden ist. Oder liege ich das falsch?
-------------
quiptime
Nur tote Fische schwimmen mit dem Strom.
Ich würd sagen es geht. Mit
am 03.12.2008 - 19:56 Uhr
Ich würd sagen es geht. Mit Argumenten hab ich aber bis jetzt noch nicht gearbeitet.
@senftube, Fragen ...
am 03.12.2008 - 20:21 Uhr
1. Haben die Terms fuer die Musiker ein eigenstaendiges Vocabulary? Sprich in diesem Vocabulary sind nur Musiker-Terms?
2. Werden die Musiker-Terms noch bei anderen Nodes verwendet die nichts mit einer Band zu tun haben?
3. Haben die Band-Nodes (notfalls) einen eigenen Nodetype?
4. Die Band-Nodes: Haben die nur den einen Term (den Band-Term) oder noch weitere Terms?
-------------
quiptime
Nur tote Fische schwimmen mit dem Strom.
1. Ja, nur Musiker-Terms 2.
am 03.12.2008 - 20:30 Uhr
1. Ja, nur Musiker-Terms
2. Nope
3. Nope
4. Nur diesen einen Term
@senftube, los gehts
am 03.12.2008 - 21:43 Uhr
4. Die Band-Nodes: Haben die nur den einen Term (den Band-Term) oder noch weitere Terms?
4. Nur diesen einen Term
Solltest Du dies eines Tages aendern wird die Uebergabe/der Aufruf des View nicht mehr funktionieren. Grund:
Um an einer Band-Node die Term ID zu verwenden wird einfach das Nodeobject verwendet und dabei wird jetzt der Einfachheit halber davon ausgegangen das sich im Array $node->taxonomy nur ein Term befindet.
An dieser Stelle geht es weiter wenn der View funktioniert um ihn von der Node aus im Nodetype Template anzusprechen. Im Nodetype Template wird dieser Code verwendet um als Viewargument die Term ID der Node verwenden zu koennen:
<?php
$node_terms = array_keys($node->taxonomy);
// $band_tid wird an den View als Argument uebergeben.
$band_tid = $node_terms[0];
?>
Nun zum View
Erstelle einen View: "Ansichtsname" bandnodes, Ansichtstyp -> Node
Erstelle im View eine Ansicht vom Typ Seite (Anzeige hinzufuegen).
Die Ansicht Typ Seite bekommt als Pfad: bandnodes/%
Argument hinzufuegen: "Taxonomie: Begriff-ID"
In Basiseinstellungen sollte bereits Felder stehen. wenn nicht -> Row style -> "Felder" auswaehlen
Feld hinzufuegen: Felder -> "Node: Titel" -> Option "Dieses Feld auf seinen Beitrag verweisen", "Bezeichnung" -> Titel entfernen
Filter hinzufuegen: "Node: Veröffentlicht" -> Option "Veröffentlicht" aktivieren
Bereits jetzt muss die "Live-Vorschau" des View Nodetitel als Link anzeigen wenn man ihr als Argument die ID eines Terms von einer Band gibt.
Funktioniert dies dann den View speichern und das Ganze im Browser aufrufen:
www.example.com/bandnodes/x
Der Browser sollte Nodetitel als Links anzeigen.=================================
Wenn Du hier angekommen bist machen wir weiter mit:
1. Den View um eine Block-Ansicht erweitern
2. Den View (als Seitenansicht) im Nodetype Template einbinden.
-------------
quiptime
Nur tote Fische schwimmen mit dem Strom.
Wow, danke für die
am 03.12.2008 - 22:00 Uhr
Wow, danke für die ausführliche Erklärung!
Hab bis dahin alles gemacht, und es funktioniert :)
Wie gehts nun weiter?
@senftube, hast Du fuer den <- Update
am 03.12.2008 - 22:07 Uhr
@senftube,
hast Du fuer den Nodetype der Nodes an denen die Links zu weiteren Nodes einer Band gezeigt werden sollen schon erstellt?
Darum geht es:
Auf meiner Seite werden Bands behandelt (CD-Reviews, Interviews, News, Konzertberichte) und mittels des Taxonomy-Moduls wollte ich realisieren, dass unter den Artikeln eine Auflistung aller anderer Artikel gezeigt wird, die mit dieser Band zu tun haben.
Fuer die Nodes dieser Artikel meine ich das Nodetype Template.
Diese Artikel haben den gleichen (und einzigen) Term wie eine in Frage kommende Band?
-------------
quiptime
Nur tote Fische schwimmen mit dem Strom.
Jap gmacht und diese Artikel
am 03.12.2008 - 22:19 Uhr
Jap gmacht und diese Artikel haben den gleichen Term wie die in Frage kommende Bands.
@senftube, poste Bescheid wenn ich weiter machen kann
am 03.12.2008 - 22:28 Uhr
Damit sich in den Links nicht der Node des Artikel wiederfindet der den View aufruft muss der View noch einen weiteren Filter erhalten:
Filter hinzufuegen: "Node: Typ" -> Operator "Ist eines von" -> den Nodetype der Bands auswaehlen.
View speichern. Den Block im View erstellen wir spaeter.
Jetzt zum Nodetype Template. So sollte das Nodetype Template aussehen:
<?php
// $Id: node.tpl.php,v 1.5 2007/10/11 09:51:29 goba Exp $
?>
<div id="node-<?php print $node->nid; ?>" class="node<?php if ($sticky) { print ' sticky'; } ?><?php if (!$status) { print ' node-unpublished'; } ?>">
<?php print $picture ?>
<?php if ($page == 0): ?>
<h2><a href="<?php print $node_url ?>" title="<?php print $title ?>"><?php print $title ?></a></h2>
<?php endif; ?>
<?php if ($submitted): ?>
<span class="submitted"><?php print $submitted; ?></span>
<?php endif; ?>
<div class="content clear-block">
<?php print $content ?>
</div>
<div class="clear-block">
<div class="meta">
<?php if ($taxonomy): ?>
<div class="terms"><?php print $terms ?></div>
<?php endif;?>
</div>
<?php if ($links): ?>
<div class="links"><?php print $links; ?></div>
<?php endif; ?>
</div>
</div>
Wenn das Nodetype Template bei Dir grob abweicht so poste bitte den Code Deines Nodetype Templates (zwischen code Tags).
Wenn nicht sag Bescheid das ich weiter machen kann.
-------------
quiptime
Nur tote Fische schwimmen mit dem Strom.
Jap passt alles!
am 03.12.2008 - 22:39 Uhr
Jap passt alles!
@senftube, hier der Code des kompletten Template
am 03.12.2008 - 22:54 Uhr
Nehmen wir an Du willst die Links der Nodes unterhalb der normalen Terms der Node platzieren. Die Stelle im Template ist eigentlich beliebig.
Hier der Code des kompletten Template:
<?php /* $Id: node.tpl.php,v 1.5 2007/10/11 09:51:29 goba Exp $ */
$node_terms = array_keys($node->taxonomy);
?>
<div id="node-<?php print $node->nid; ?>" class="node<?php if ($sticky) { print ' sticky'; } ?><?php if (!$status) { print ' node-unpublished'; } ?>">
<?php print $picture ?>
<?php if ($page == 0): ?>
<h2><a href="<?php print $node_url ?>" title="<?php print $title ?>"><?php print $title ?></a></h2>
<?php endif; ?>
<?php if ($submitted): ?>
<span class="submitted"><?php print $submitted; ?></span>
<?php endif; ?>
<div class="content clear-block">
<?php print $content ?>
</div>
<div class="clear-block">
<div class="meta">
<?php if ($taxonomy): ?>
<div class="terms"><?php print $terms ?></div>
<?php endif;?>
</div>
<div class="bandnodes clear-block">
<div class="bandnodes-info">Weitere Artikel der Band oder so bla bla:</div>
<div class="bandnodes-links">
<?php print views_embed_view('bandnodes', 'page_1', array($node_terms[0])); ?>
</div>
</div>
<?php if ($links): ?>
<div class="links"><?php print $links; ?></div>
<?php endif; ?>
</div>
</div>
Uebernimm den kompletten Code. Wenn nicht beachte es gib an 2 Stellen Aenderungen gegueber dem Ausganszustand.
Beim Einbetten des View wird die zusaetzlich definierte Ansicht des View angesprochen denn sie hat die URL definiert.
Den Text "Weitere Artikel der Band oder so bla bla:" kann man auch im View definieren und somit auf das div im Template verzichten.
Sag Bescheid wenn es funktioniert.
PS
Den zusaetzlichen Filter im View hast Du noch erstellt?
-------------
quiptime
Nur tote Fische schwimmen mit dem Strom.
Den zusätzlichen Filter hab
am 03.12.2008 - 23:24 Uhr
Den zusätzlichen Filter hab ich erstellt und deinen Code übernommen. Angezeigt wird aber noch nix, oder sollte das jetzt noch nicht gehen?
Angezeigt werden sollten die
am 03.12.2008 - 23:28 Uhr
Angezeigt werden sollten die Links, also das was der View ausgibt.
1. Funktioniert die Live Vorschau im View mit dem zusaetzlichen Filter?
2. Funktioniert der View wenn man ihn per URL bandnodes/x aufruft?
-------------
quiptime
Nur tote Fische schwimmen mit dem Strom.
1. Die View funktioniert in
am 03.12.2008 - 23:30 Uhr
1. Die View funktioniert in der Live Vorschau
2. Jap aber ich muss ?q=bandnodes/x eingeben
@senftube, Moment, Fehler
am 04.12.2008 - 00:15 Uhr
@senftube, Moment, Fehler gefunden.
-------------
quiptime
Nur tote Fische schwimmen mit dem Strom.
@senftube, korrigiere diese Zeile im Template
am 04.12.2008 - 00:22 Uhr
Korrigiere diese Zeile im Template
<?php print views_embed_view('bandnodes', 'page_1', array($node_terms[0])); ?>
zu
<?php print views_embed_view('bandnodes', 'page_1', $node_terms[0]); ?>
Ich habe das testhalber ebenfalls gemacht:
http://drupal6.quiptime.com/bandnodes/3
http://drupal6.quiptime.com/node/12
PS
Mir ist entgangen das man die API von Views 2 geaendert hat. Deswegen funktioniert die zuerst von mir beim Einbetten verwendete Array-Syntax der Parameter-Uebergabe nicht mehr.
-------------
quiptime
Nur tote Fische schwimmen mit dem Strom.
Vielen, vielen Dank für
am 04.12.2008 - 17:51 Uhr
Vielen, vielen Dank für Deine Mühen und dass Du dir soviel Zeit genommen hast! Hat wunderbar geklappt, jetzt werd ich noch bisschen weiterexperimentieren, hehe!
Beste Grüße! :)
Wolltest Du nicht noch einen Block zu der Geschichte haben?
am 04.12.2008 - 18:01 Uhr
Wolltest Du nicht noch einen Block zu der Geschichte haben?
-------------
quiptime
Nur tote Fische schwimmen mit dem Strom.
Ach....jetzt wo du es sagst
am 04.12.2008 - 18:06 Uhr
Ach....jetzt wo du es sagst :-P
Ja wär nett, wennst mir das auch kurz erklären könntest!
@senftube, Fragen
am 04.12.2008 - 18:26 Uhr
Na dann sag mir folgendes:
1.
Was soll der Block beinhalten?
Ist fuer den View.
1.1.
Was soll passieren wenn man auf einen Link im Block klickt?
1.2.
Vermutlich zeigt der Block eine begrenzte Zahl Links, also gibt es einen "mehr"-Link.
Was soll bei Klick auf mehr gezeigt werden?
2.
Wann soll der Block erscheinen?
Ist fuer die Block-Sichtbarkeitssteuerung + falls Du da mit PHP Code fuer die Sichtbarkeit unsicher bist
-------------
quiptime
Nur tote Fische schwimmen mit dem Strom.
1. Titel, Nodetype,
am 04.12.2008 - 18:29 Uhr
1. Titel, Nodetype, Erstellungsdatum des Artikels
1.1 Man soll zum Artikel gelangen
1.2 Nein sowas wie ein mehr-Link solls nicht geben
2. Jedesmal wenn ein Artikel angezeigt wird (entweder Interview, Review oder News)