[gelöst] Nodereference - auch mit noch nicht existierenden Nodes
am 12.03.2010 - 17:53 Uhr in
Hallo,
ich suche nach einer Möglichkeit, ein CCK-Feld zu erstellen, dass zwar grundsätzlich auf andere Nodes verweist (=Nodereference), aber es soll auch möglich sein, kein Referenz auf einen anderen Node sondern lediglich einen Titel einzutragen.
Konkret geht es um die Realisierung eines Terminkalenders, bei dem es zu jedem Termin die Felder Veranstalter und Ort gibt. Analog gibt es auch entsprechende Inhaltstypen, die sich dem Termin zuweisen lassen. Das ganze soll aber möglichst flexibel sein und ich möchte auch einen Ort eintragen können, der (noch) nicht als Node existiert und evtl gar nicht zu existieren braucht, also quasi nur die Bezeichnung.
Meine momentane Lösung besteht einfach aus einem Textfeld, in dem der Name des Veranstalters bzw. Ortes eingegeben werden kann und bei der Darstellung wird gesucht, ob ein entsprechender Node mit diesem Titel existiert und dieser dann verlinkt:
<?php
$venue = node_load(array('title' => $node->field_venu[0]['view'], 'type' => 'venue'));
if($venue){
print l($venue->title, $venue->path);
}else{
print $node->field_ort[0]['view'];
}
?>
Natürlich ist das jetzt erst mal recht primitiv, aber auf diese Weise lassen sich z.B. auch weitere Infos direkt einbinden, z.B. die Adresse des Veranstaltungsortes (CCK-Field in Ort-Nodes). Oder wenn ein entsprechender Node nicht existiert, lässt sich für User mit entsprechenden Rechten ein Link anzeigen, um den Node zu erstellen (per Prepopulate).
Das ganze ist eigentlich recht simpel aber dadurch eigentlich auch ziemlich gut und flexibel: wenn ein Node mit dem entsprechenden Titel in der Zwischenzeit angelegt oder auch gelöscht wurde, hat das direkt Einfluss auf die Darstellung. Aufgrund der Simplizität mag ich es sogar sehr =)
Diese Methode bietet mir zunächst mal genau die Funktionsweise, die ich möchte, aber es gibt auch ein paar Kritikpunkte:
- Da die Verbindung zum verlinkten Node nur zur Darstellung "erzeugt" (bzw. vielmehr vorgegaukelt) wird, ist sie nicht direkt in der Datenbank vorhanden, was die Verwendung in Views einschränkt.
- Die Performance leidet auch darunter, dass bei jeder Darstellung alle verlinkten Nodes aus der Datenbank gelesen werden müssen. Oder ist das vernachlässigbar? Kann ich schlecht einschätzen...
- Letzter Kritikpunkt ist die nur teilweise Funktionsfähigkeit von Autocomplete. Es werden zwar die Titel angezeigt, die bereits in anderen Terminen eingetragen worden sind, aber Veranstalter-Nodes, die nocht nicht verwendet werden, fehlen in der Liste. Dadurch kann es bei unterschiedlichen möglichen Schreibweisen zu ungewollten Dopplungen kommen.
Daher möchte ich einfach mal die Frage in die Runde stellen, ob sich jemand eine andere Herangehensweise vorstellen kann oder sogar eine passende Lösung existiert (hab in der Moduldatenbank aber nichts gescheites gefunden). Oder gibt es Vorschläge, meinen Weg zu verbessern und die obengenannten Kritikpunkte zu beseitigen?
- Anmelden oder Registrieren um Kommentare zu schreiben
Falsche Begriffe?
am 12.03.2010 - 19:38 Uhr
http://drupal.org/project/modules?text=create%20and%20reference
Die ersten 2 oder 3 Module auf dieser Seite dürften dein Problem lösen. das 1. habe ich mal angetestet und scheint wirklich sehr komfortable Möglichkeiten zu bieten.
Gruss Roger
Gelöste Forenbeiträge mit [gelöst] im Titel ergänzen (1. Posting vom Thema) <==> das erleichtert das finden von Lösungen
Falsche Begriffe!
am 12.03.2010 - 20:15 Uhr
:o Öhm ja, scheint so, als hätte ich mich da zu sehr auf eine Idee fixiert, dass ich rundherum nix gesehen habe :)
Herzlichen Dank fürs mit der Nase draufstoßen :D
Werde Node Relationships mal ausprobieren, aber das scheint tatsächlich geeignet zu sein. Einziger Wehmutstropfen ist die damit einhergehende Komplexität, da mag ich meine nette kleine Lösung fast lieber...*g*
Nur halb so schlimm!
am 12.03.2010 - 20:50 Uhr
Einziger Wehmutstropfen ist die damit einhergehende Komplexität, da mag ich meine nette kleine Lösung fast lieber...*g*
Das sieht koplexer aus als es ist, bringt dich recht schnell, sehr nahe an deine Lösung. Ausserdem kannich dir zum Einstieg noch dieses empfehlen: http://cocoate.com/de/2009/08/16/beziehungen-zwischen-inhalten-das-modul...
Ist zwar ein etwas anderes Thema aber erklärt die Möglichkeiten des Moduls recht gut.
Gruss Roger
Gelöste Forenbeiträge mit [gelöst] im Titel ergänzen (1. Posting vom Thema) <==> das erleichtert das finden von Lösungen