Ich bin mir nicht sicher, was der Unterschied zwischen ihnen ist
- menu_get_object () gibt das Objekt zurück, das der aktuell angezeigten Seite zugeordnet ist. Wenn der Code ausgeführt wird, während Drupal die Seite example.com/node/1 anzeigt,
menu_get_object()
wird das Knotenobjekt für den Knoten mit der ID 1 zurückgegeben. Wenn die angezeigte Seite example.com/user/1 lautet, menu_get_object('user')
wird das Benutzerobjekt für den Benutzer mit der ID 1 zurückgegeben.
- menu_get_item () gibt ein Array zurück, das einen Index für jedes in der Tabelle "menu_router" enthaltene Feld enthält. Das beinhaltet:
- Pfad: Der aktuelle Pfad des Menü-Rückrufs
- load_functions: Ein Array von Funktionsnamen (like
node_load
), die aufgerufen werden sollen, um ein Objekt zu laden, das einem Teil des aktuellen Pfads entspricht
- access_callback: Der Rückruf, der prüft, ob der aktuell angemeldete Benutzer Zugriff auf den Menüpunkt hat
- page_callback: Der Name der Funktion, mit der die Seite gerendert wird
- title: Der Titel der Seite, die dem Menüelement zugeordnet ist
- drupal_lookup_path () ist die Funktion, die den internen Pfad zurückgibt, der dem als Argument übergebenen Alias zugeordnet ist. Wenn "homepage" der mit example.com/node/1 verknüpfte Alias ist,
drupal_lookup_path("homepage")
wird zurückgegeben "node/1"
. Pfadaliase können mit beliebigen internen Pfaden verknüpft werden, nicht nur mit Knotenpfaden.
und welches geeigneter ist, um die Knoten-ID in einer Blockvorverarbeitungsfunktion zu erhalten.
Wenn Sie nur die Knoten-ID des aktuell angezeigten Knotens erhalten möchten, müssen Sie nur den folgenden Code verwenden:
if (arg(0) == 'node') {
$nid = arg(1);
}
Wenn Sie das Knotenobjekt abrufen müssen, können Sie den folgenden Code verwenden:
if ($node = menu_get_object()) {
// Use the node object.
}
Von diesen Snippets ist das zweite besser, da es das richtige Knotenobjekt für interne Pfade wie node / 1 / revisions / 3 / view zurückgibt.
Beachten Sie, dass einige Vorverarbeitungsfunktionen, z. B. die für die Seite oder den Knoten, bereits über a verfügen $variables['node']
. Dies bedeutet, dass Sie in diesen Fällen nur das folgende Snippet in Ihrer Vorverarbeitungsfunktion verwenden müssen, ohne sich Gedanken über die zu verwendende Funktion zu machen.
if (isset($variables['node'])) {
// Check the node ID or other properties.
}
Überprüfen Sie für andere Vorverarbeitungsfunktionen die Dokumentation, um festzustellen, ob eine Variable das Knotenobjekt enthält. Zum Beispiel ist das der Fall für template_preprocess_comment()
das macht $variables['node']
die Vorprozess Funktionen für Kommentare zur Verfügung.