Views und Backlink auf Beitragsverweis
am 23.07.2008 - 10:00 Uhr in
Hallo,
mal wieder ein kleines Problem:
ich habe einen node-typen der über CCK und nodereference einen Link auf andere nodes in einem anderem node-typ bereitstellt. Hier ist eine Mehrfachselektion möglich.
Nun würde ich gerne bei den über nodereference verlinkten Beiträgen eine Art Backlink einfügen, also eine automatischen Link auf alle verweisenden Beiträge.
Bsp.:
Komponist X hat Werke vom Typ A, B und C geschrieben. A,B und C werden im node-typ Musikart beschrieben und beim Komponist erscheinen die Überschriften als Links im Text (eingebunden über nodereferenz). Jetzt Soll bei Musikart A automatisch eine Liste der Komponisten erscheinen, die auf die Musikart (über nodereference) verweisen. Also, immer wenn ein neuer Komponist angelegt wird, der auch auf die Musikart verweist, dann soll in der Musikart dieser Komponist in einer Liste auftachen (mit Link zur Beschreibung des Komponisten).
Wie könnte ich das nun verwirklichen?
Ich habe gedacht über Views, die ich dann einfach unten in den Musikarten einbinde. Aber irgendwie will Views nicht so richtig mit den nodereference als argument arbeiten (wahrscheinlich, weil die keinen einfachen Werte, sonder durch Mehrfachauswahl eine Liste an Werten enthalten???).
Auch ist die URL-Darstellung ein Problem, da ich ja hier Umlaute und Leerzeichen ersetzt habe, was dann nicht mit dem String in noderefenz übereinstimmt. --> Die Einbindung über Argumente wird so erschwert.
Eigentlich habe ich ja alles vorliegen was ich brauche: die Musikart hat einen Titel, der auch bei den Komponisten so in nodereference gespeichert wird.
Kann mir hier jemand weiterhelfen? Könnte man da irgendwie eine eigene DB-Abfrage erstellen?
Gruß
Kai
- Anmelden oder Registrieren um Kommentare zu schreiben
Verstehe deine Konstruktion
am 23.07.2008 - 10:55 Uhr
Verstehe deine Konstruktion vielleicht noch nicht,
sollte grundsätzlich mit Views möglich sein...
Komponist X hat Werke vom Typ A, B und C geschrieben. A,B und C werden im node-typ Musikart beschrieben und beim Komponist erscheinen die Überschriften als Links im Text (eingebunden über nodereferenz).
Also Komponist hat ein Reference Feld auf Musikart
Jetzt Soll bei Musikart A automatisch eine Liste der Komponisten erscheinen, die auf die Musikart (über nodereference) verweisen.
View in der Art?
Filter:
- NodeTyp = Komponist
Felder:
- Node Title
- field_nodereference
Argument:
- field_nodereference (nid von Musikart)
Die ausgeführte DB Abfrage müsstest du in Views sehen können
-----------
Luca Curella
Kooperative Netze - Berlin
Ah, das mit dem Argument
am 23.07.2008 - 12:43 Uhr
Ah, das mit dem Argument hatte ich schon drin - und das hat nicht gefunzt.
Jetzt habe ich mir aber noch die Beziehungen angeschaut - und siehe da, da taucht das field field_nodereference auf! Angeklickt - nichts passiert ;-( Dann noch mal das Argument geprüft - und, siehe mal an, da kann man jetzt die Beziehung auswählen. Mit dieser im Argument aktiviert funktioniert es!
Danke!!!
Noch nicht kapiert
am 29.07.2008 - 13:04 Uhr
Hi, ich hab (glaub ich) das selbe Problem, hab aber jetzt noch nicht ganz kapiert wie man das lösen kann.
Ich hab zwei Inhaltstypen, Rennen und Strecke.
Hier mal ein Link zu einem Rennen: http://www.wsv-dorfgastein.at/node/2
Wie man da sieht, hat das Rennen 2 Strecken, die ich manuell per Nodereference eingetragen habe. Wenn man jetzt auf eine Strecke klickt, möchte ich gerne dass dort ein weiteres Feld erscheint: "Rennen auf dieser Strecke:".
Hier sollten automatisch alle Rennen aufgelistet werden, die auf diese Strecke verweisen.
Ich hab bis jetzt ein View mit einem Argument node_id gemacht, das funktioniert eigentlich soweit: http://www.wsv-dorfgastein.at/test/353.
Wie bekomm ich aber das jetzt da hin wo ich es haben will?
Danke :)
Verwendest du Views2 und
am 29.07.2008 - 17:31 Uhr
Verwendest du Views2 und Drupal 6?
Jap
am 29.07.2008 - 18:39 Uhr
Jap
OK, dann folgende kurze
am 29.07.2008 - 21:09 Uhr
OK, dann folgende kurze Anleitung.
Ich gehe mal von 2 Beispiel-Inhaltstypen aus, die untereinander verlinkt werden sollen.
Typ A hat ein CCK-Feld vom Typ noderefenrence und bindet dort Typ 2 (den node title) ein.
Nun erstellst du eine neue View-Ansicht. Das bezieht sich zunächst noch einmal nur auf den Typ A!
Dort kannst du nun die Felder von Typ A auswählen, die du gerne bei Typ B auflisten möchtest oder auch vollständig als node darstellen. Filtern kannst du jetzt auch noch nach dem node typ Typ A.
Jetzt der erste wirklich wichtige Schritt:
Unter Beziehungen wählst du das nodereference-Feld aus Typ A aus (Inhalt: Beitragsverweis: deinnodereferencefield).
Jetzt unter Argumente node:nid auswählen und - in dem neue erscheinenden Dropdown Beziehungen - die zuvor erstellte Beziehung auswählen.
View abspeichern und verlassen.
Jetzt musst du das View noch in deinem Inhaltstyp Typ B einbinden. Ich habe dies über ein eigenes node-template für Typ B gemacht (node-Typ-B.tpl.php). Dazu einfach eine Kopie des Standard-node-Templates erzeugen (das bei den meisten Templates dabei ist) entsprechend benennen und vor dem schließen DIV (oder sonst wo ;-) das View einbetten:
<?php
print views_embed_view(Deinviewname, $display_id = 'attachment', arg(1));
?>
Ich habe bei meinem View neben dem default nur ein Attachement-Ansicht eingefügt - also kein Page.
Hoffe, die Info ist so nachvollziehbar und wünsche dir viel Erfolg.
Gruß
Kai
Danke für die tolle
am 30.07.2008 - 15:45 Uhr
Danke für die tolle Erklärung, leider klappts immernoch nicht :(
Hab das in meine node-course.tpl.php hinzugefügt:
<?php
print views_embed_view('race_backlinks', $display_id = 'attachment', arg(1));
?>
Hier mein View:
http://img528.imageshack.us/img528/6759/viewtz0.jpg
Ich kann mir nicht erklären wieso es immernoch nicht geht, hab alles genau so gemacht wie du beschrieben hast :/
Hi, du hast bei der
am 30.07.2008 - 16:24 Uhr
Klappt es, wenn du noch den Cache leerst? Dazu einfach in deinem View in der linken Spalte auf Informationen klicken und dort in dem erscheinenden Bereich unten auf Rescan template (oder so ähnlich) und dann OK klicken.
Gruß
Kai
... ach, und aus welchem
am 30.07.2008 - 16:30 Uhr
... ach, und aus welchem Inhaltstyp hast du die Felder in das View eingefügt?
Aus course oder race? Sollten alle aus race stammen.
Kai
Ähm Cache leeren? Ich hab
am 30.07.2008 - 17:54 Uhr
Ähm Cache leeren? Ich hab den "normalen" Cache geleert, hat Views auch sowas? Ich konnte leider nichts dergleichen finden.
Ich filtere nach Nodes vom Typ Race, falls du das meinst.
So, wie ich in meinem
am 30.07.2008 - 18:01 Uhr
So, wie ich in meinem vorletzten Beitrag geschrieben habe. Direkt in der View-Ansicht.
Oder einfach einmal über das admin-Menü das Template wechseln und wieder zurück und dann abspeichern.
Dann sollte er auch erkennen, dass da ne neue node-inahlt.tpl.php vorhanden ist.
Und auch noch meine 2te Antwort lesen und berücksichtigen.
Gruß
kai
Die php Datei wird erkannt,
am 30.07.2008 - 20:23 Uhr
Die php Datei wird erkannt, das hab ich schon getestet.
Ich filtere nach Nodes vom Typ Race, falls du das meinst.
Das bezieht sich auf deine zweite Antwort ;)
Ich hab jetzt wieder rumprobiert, ich bekomms einfach nicht hin. Vielleicht ist das ja bei mir verbugt?
Hmm, komisch. Das sollten
am 30.07.2008 - 22:32 Uhr
Hmm, komisch. Das sollten wir aber doch hinbekommen.
Also, wenn ich mal dein view mit meinem vergleiche fallen mir folgende Unterschiede auf:
Beim Anhang, anhängen an, habe ich NICHTS stehen.
In der Beziehung habe ich das Häkchen bei: "erfordert diese Beziehung" gesetzt.
Bei dem Argument habe ich unter:
Action to take if argument is not present: Leerer Text anzeigen
sonst keine Häkchen - Voreinstellungen übernommen.
Und: wo genau hast du die View-Einbindung in deinem node-template gemacht?
Kannst du das mal komplett posten?
Schönen Abend
Kai
Oh, da seh ich noch was:
am 30.07.2008 - 22:35 Uhr
Oh, da seh ich noch was: lass doch bitte beim race_backlins die beiden Anführungsstriche ' weg. Die hab ich bei mir nicht drin. Sollte zwar kein Problem sein - aber manchmal ....
<?php
print views_embed_view(race_backlinks, $display_id = 'attachment', arg(1));
?>
Ok, hab alle Änderungen wie
am 31.07.2008 - 14:45 Uhr
Ok, hab alle Änderungen wie von dir beschrieben übernommen, hab den php code in verschiedene Stellen eingesetzt, hab die Argumente verändert, hab das View neu erstellt, Cache geleert, alles 10x überprüft.
Funktioniert immer noch nicht.
Kannst du dir das vielleicht mal live ansehen? Ich würde dir Admin Zugang geben, du klingst vertrauenswürdig ;)
Wo ist eigentlich diese Funktion views_embed_view() dokumentiert? Vielleicht muss ich da ja irgendwas anderes machen um die zu aktivieren...
OK, kannst mir Daten an
am 31.07.2008 - 16:38 Uhr
OK, kannst mir Daten an fischerk[at]web.de schicken. Ich würde mir das dann anschauen.
Würde dann auch gerne einen Blick auf deine node-cource.tpl.php werfen.
Viele Grüße
Kai
Hab dir nen Benutzer
am 31.07.2008 - 18:33 Uhr
Hab dir nen Benutzer erstellt :)
Hier die php Datei:
http://drupal.pastebin.com/d1b1c343e
Sie wird erkannt, das hab ich schon getestet. Am der Stelle des Funktionsaufrufs liegts auch nicht, das hab ich auch schon ausgeschlossen.
Anderer Ansatz
am 31.07.2008 - 18:58 Uhr
Also, immer wenn ein neuer Komponist angelegt wird, der auch auf die Musikart verweist, dann soll in der Musikart dieser Komponist in einer Liste auftachen (mit Link zur Beschreibung des Komponisten).
Ist das nicht der klassische Anwendungsfall für die Taxonomie? Kannst Du das nicht ganz simpel über ein Mehrfach-Vokabular lösen, das für diesen Inhaltstyp aktiviert wird?
OK, und hast du mir auch
am 31.07.2008 - 19:19 Uhr
OK, und hast du mir auch schon die Zugangsdaten geschickt? Ich sehe da noch nichts.
Gruß
Kai
vistree schrieb OK, und
am 31.07.2008 - 21:40 Uhr
OK, und hast du mir auch schon die Zugangsdaten geschickt? Ich sehe da noch nichts.
Aber natürlich, das geht bei mir vollautomatisch :P
Sorry, ist aber nichts
am 31.07.2008 - 21:48 Uhr
Sorry, ist aber nichts angekommen. habe ich ne fasche E-Mail angegeben?
Also fischerk[at]web.de wobei das [at] natürlich zu ersetzen ist.
Gruß
Kai
Hmm, vllt spinnt mein
am 31.07.2008 - 22:32 Uhr
Hmm, vllt spinnt mein Mailer.
Hab dir ne neue Mail geschickt, diesmal von ner anderen Domain :P
Omg, ich hab den
am 02.08.2008 - 20:45 Uhr
Omg, ich hab den Fehler...
<?php
$display_id = 'attachment'
?>
Keine Ahnung wieso mir das nicht gleich aufgefallen ist. So offensichtliche Dinge überseh ich immer^^
Bezieht sich dein Code auf
am 03.08.2008 - 10:04 Uhr
Bezieht sich dein Code auf mein o.g. Code als Ausschnitt?
Der ist total korrekt! Der Fehler lag doch ganz woanders - nämlich in der Auswahl des korrekten noderefference-Feldes???
Nein, der
am 03.08.2008 - 22:54 Uhr
Nein, der Funktionsaufruf
<?php
print views_embed_view(race_backlinks, $display_id = 'attachment', arg(1));
?>
Es lag ganz sicher daran, ich habs grad nochmal getestet ;)
Wie gesagt, ich weiß auch nicht warum ich das nicht sofort gesehn hab, ich dachte wohl das ist so eine Drupal Eigenheit :P
Naja egal, jetzt funktionierts und wir sind schlauer als vorher.
Vielen Dank trotzdem für deine Hilfe und danke für den Tipp :)
Backlinks, die beiden Views ansehen
am 03.08.2008 - 23:02 Uhr
Ganz allgemein zu Deinen Backlinks.
Wenn Du eine D5 Installation hast installiere Dir http://drupal.org/project/backlinks und sehe Dir an wie die beiden Views dieses Modules funktionieren.
After enabling the module, two pre-configured views will be created for you: a "backlinks" view tab on each node page, and a backlinks block view, which generates a block with a list of backlinks on each node page (after you enable it at admin/build/block). With the Views UI module, you can configure these at admin/build/views; you may want to turn off the menu tab, add an RSS feed argument, change the view type, etc.
Eventuell ergibt sich daraus was Prinzipielles zu Deinem View unter D6.
-------------
quiptime
Nur tote Fische schwimmen mit dem Strom.
Da geht noch was.
OK, also, ich will hier
am 04.08.2008 - 11:32 Uhr
OK, also, ich will hier jetzt keinen "Streit" anfangen und werde mich dann auch aus dieser Diskussion zurückziehen:
ich habe auf deiner Seite erfolgreich die gewünschte Verknüpfung implementiert - und da lag der Fehler bei dem ausgewählent Beziehungsfeld, dem korrekten nodereference-Feld.
Bei mir wurde danach alles angezeigt wie gewünscht.
Auch habe ich mehrere Views wo ich es genau wie oben beschrieben durchgeführt habe - und auch dort funktioniert es ....
Du hast in deinem View einen Anhang kreiirt - und der ist eingebunden worden. Und dies über den zweiten Parameter
$display_id = 'attachment'
Siehe auch die Views2 Dokumentation (inoffiziell) unter
http://groups.drupal.org/node/10129 Punkt "Easy embed"
Aber dies nur, dass weitere Leser hier vielleicht noch mal genau prüfen ;-)
Ob beim ersten Parameter Anführungsstriche sein müssen oder nicht kann man vielleicht auch noch mal prüfen. Ich habe keine gesetzt - und es funktioniert.
Grüße
Kai
Hm komisch, ich versteh das
am 04.08.2008 - 12:02 Uhr
Hm komisch, ich versteh das jetzt nicht ganz. Ich hab dir ne Mail geschrieben, ich will auf Nummer sicher gehen, dass du das liest auch wenn du hier nicht mehr reinschaust.
Na Super wie geil ist das
am 22.12.2008 - 14:24 Uhr
Na Super
wie geil ist das denn mit der Funktion "views_embed_view". Damit kann man super einfache eine Rückereferenzierung vornehmen. Und vor allem Resourceschonend gleich im Template mit ausgeben.
Gibt es eine vollständige Referenz zum den Views Funktionen??
Also bei mir sieht der Code in der node-firma.tpl.php jetzt so aus:
<?php
print views_embed_view('ref_firma', 'default', $node->nid);
?>
Oder muss ich &node->nid als Array übergeben ??
--------
Active-Media-Production
Individual Web Development and Design
--------
Active-Media-Production
Individual Web Development and Design