Kurzversion:
Es erhält das Array von Tags des Knotens, ruft die ersten 10 Knoten, die mindestens eines dieses Tags und gibt einen Link für jeden davon 10 Ergebnisse.
Ausführlichere:
Zu allererst wird die Variable "$node
" ist ein Objekt, das die Daten zu einem bestimmten Knoten enthält (z.B. eine Seite oder Geschichte node). Zum Beispiel wäre "$node->title
" der Titel dieses Knotens.
„$node->taxonomy
“ Tests ist, dass der Knoten markiert ist (denn wenn es keine Tags hat, kann es nicht die anderen Knoten rufen Sie die gleichen Tag (en) aufnehmen. Wenn ein oder mehrere Tags dort mit diesem Knoten verbunden ist,/page/Geschichte, ist $node->taxonomy
ein array
Jetzt über die SQL-Abfrage. "node
" ist die Datenbanktabelle, die die Basisfelder (nicht-CCK) jedes Knotens speichert "term_node
" ist. die Datenbanktabelle t Hat enthält die Kombination aus Tag (taxonomy term
) und Knoten.
In beiden Tabellen "nid
" ist die "unique Node ID
" (das eine interne autoincrement Zahl ist). Da diese Spalte in beiden Tabellen enthalten ist, werden die Tabellen so miteinander verbunden.
In "term_node
", "tid
" ist die "unique Term ID
" (die auch eine interne autoincrement Zahl ist).
Die "node
" table "n
" aliased ist daher "n.nid
" bedeutet "the Node ID stored in table node
". Die Tabelle "term_node
" hat den Alias "t
", daher bedeutet "t.tid
" "the Term ID stored in table term_node
".
Die „foreach
“ Schleife geht durch das Array von Tags die TERMID jedes Etiketts durch den Knoten, um es in der SQL-Abfrage hinzuzufügen verwendet zu extrahieren und implodieren wandelt in einen String.
Die Schleife speichert ein Stück SQL-Abfrage für jede Variable in Variable $tids
und speichert der aktuelle Wert in Variable $args
da Drupal Datenbank Anrufe sind sicherer, wenn die Argumente getrennt von der SQL-Abfrage übergeben werden: „%d
“ bedeutet „integer number
“ .
"db_query_range
" ist eine Funktion, die mehrere Zeilen in der Datenbank auswählt: hier "0 10
" bedeutet "retrieve the first 10 results
".
"db_fetch_object
" in der "while
" Schleife ruft jedes Ergebnis und speichert ihn in der Variable "$o
", die ein Objekt ist.
Daher enthält "$o->title
" den Wert der Spalte "title
", die von der SQL-Abfrage abgerufen wird.
Die Funktion „l
“ ist die drupal functin, die den Code für einen HTML-Link erzeugt: Das erste Argument der Name der Verbindung ist, ist das zweite Argument der Drupal Pfad: in Drupal, kann jeder Knoten sein Standardmäßig wird mit "www.yoursite.com/node/NodeID
", zugegriffen, deshalb gibt es den Pfad "node/123
" (wobei 123
der "Node ID
" ist).
Diese Funktion ist nützlich, weil es transparent benutzerdefinierte Pfade behandelt, so dass, wenn Ihr Knoten einen benutzerdefinierten Pfad hat es den Zugriff auf „www.yoursite.com/my-great-page
“ statt verwenden, wird es einen Link zu dieser Seite anstelle von „www.yoursite.com/node/123
“ automatisch zu erstellen.
du bist mein Held. vielen, vielen Dank. aber es gibt einige Teile, denen ich nicht gut folgen kann. "n" term_node "," tid "ist die" eindeutige Term ID "(die auch eine interne autoincrementierte Nummer ist)." Ich habe mir die Tabelle "term_node" angesehen, da sind die gleichen Zeilen mit der gleichen tid. – runeveryday
Warum sollte ich diese zwei Zeilen machen? $ Args = array ($ node-> nid); $ tids = array(); " – runeveryday
in foreach Schleife, wo ist der $ Begriff aus, wie ich weiß, dass es ein Objekt ist. – runeveryday