Startseite
  • » Home
  • » Handbuch & FAQ
  • » Forum
  • » Übersetzungsserver
  • » Suche
Startseite › Benutzerhandbuch › Entwicklung von Modulen und Themes › Leitfaden zur Entwicklung von Modulen › Erstellen von Modulen für Drupal 6.x › Das Menüsystem von Drupal ›

Platzhalter Argumente

Eingetragen von stBorchert (6003) am 18.01.2009 - 10:30 Uhr in
  • Drupal 6.x

Dies ist eine Übersetzung der Seite Wildcard Loader Arguments auf drupal.org.

Hinweis:In diesem Artikel bedeutet der Begriff Argument Argumente einer Funktion. Und Element bedeutet Argument des Pfades. Dieser Begriff kann ein wenig verwirrend sein, wenn man ihn für zwei verschiedene Dinge verwendet.

Die Grundlagen

Wenn ein Platzhalter in einen Pfad eingefügt wird, ist das Element an der Position der Platzhalterdefinition standardmässig das einzige Argument, das übergeben wird.

Beispiel:

<?php
$items
['node/%node/revisions'] = array(
 
'title' => 'Revisions',
 
'type' => MENU_CALLBACK,
);
?>

Das "%" definiert den zweiten Teil des Pfades als Argument. Der Teil "node" in "%node" sagt Drupal, dass der zweite Teil des Pfades an eine Funktion übergeben soll, deren Namen sich aus dem zweiten Teil (alles nach dem "%") und "_load" zusammensetzt. Für "%node" ist dies also "node" plus "_load", also node_load(). So wird also, wenn wir node/1337/revisions aufrufen, die Funktion node_load(1337) aufgerufen.

Mehrfache Platzhalter Argumente

Drupal ruft die Loader Funktion immer so auf, dass der erste Parameter das Pfadelement ist, in dem der Loaderdefiniert ist. Aber was ist, wenn mehrere Argumente an den Loader übergeben werden sollen?

Damit Drupal andere Elemente des Pfades einbindet, wie z.B. einen zweiten Platzhalter, muss der Menüparameter 'load arguments' verwendet werden.

Nicht vergessen: das erste Argument ist immer der Wert, in dem der Loader definiert wird. Die Argumente in 'load arguments' sind dann das 2., 3., ... Argument.

(Die 'load arguments' kann man sich auch als zusätzliche Argumente verstehen, da das erste Argument immer verwendet wird.)

Beispiel:

<?php
$items
['node/%node/revisions/%/view'] = array(
 
'title' => 'Revisions',
 
'load arguments' => array(3), // <-- hier
 
'page callback' => 'drupal_get_form',
 
'page arguments' => array('node_revision_revert_confirm', 1),
 
'type' => MENU_CALLBACK,
);
?>

Die Angabe in 'load arguments' im obigen Beispiel definiert zusätzliche Parameter die an die load Funktion übergeben werden. Standardmässig verwendet die load Funktion (in diesem Falle node_load() nur das erste Element des Pfades (den Text, der an der Stelle "%node" steht).

Wenn also ein zweiter Parameter an node_load() übergeben werden soll, können wir in 'load arguments' innerhalb eines Arrays weitere Argumente definieren. Positive Integerwerte in diesem Array werden besonders behandelt: sie werden durch die Teile des Pfades an den entsprechenden Position ersetzt. In diesem Beispiel wird 3 durch den 3. Teil des aktuellen Pfade (gezählt von 0 aufwärts) ersetzt, wenn ein Nutzer die entsprechende Seite im Browser aufruft. Wenn wir nun also node/1337/revisions/42/view aufrufen, wird node_load(1337, 42) aufgerufen.

Für gewöhnlich kann der von der load Funktion zurückgegebene Wert vom 'access callback' oder vom 'page callback' verwendet werden, indem der Index des Elementes als 'access argument' oder 'page argument' angegeben wird. Im Beispiel oben wird der Rückgabewert von node_load() an den 'page callback' wie folgt übergeben:

<?php
drupal_get_form
('node_revision_revert_confirm', $node_load_returned_value_here);
?>

Hinweis: Wenn drupal_get_form() als 'page callback' verwendet wird, is der erste an die Funktion übergebene Funktion $form_state. Zum Beispiel function node_revision_revert_confirm($form_state, $node_revision(). Wenn Du also zusätzliche Argumente übergibst, sind in der Funktion die als 2., 3., ... Parameter verfügbar.

Spezielle Platzhalter Argumente

Die Verwendung von Integerwerten zur Ersetzung von Pfadelementen ist sehr hilfreich, allerdings gibt es auch andere Wege um mehr Informationen zu bekommen.

%map und %index

  • %map: Alle Elemente des Pfades werden in ein Array umgewandelt. Dieses ist dann ebenfalls als referenzierte Variable verfügbar.
  • %index: Das Element des Pfades, an dem die load Funktion des Platzhalters definiert ist.

Beispiel:

<?php
$items
['user/%user_category/edit'] = array(
 
'title' => 'Edit',
 
'page callback' => 'user_edit',
 
'page arguments' => array(1),
 
'access callback' => 'user_edit_access',
 
'access arguments' => array(1),
 
'type' => MENU_LOCAL_TASK,
 
'load arguments' => array('%map', '%index'),
 
'file' => 'user.pages.inc',
);
?>

Wenn wir jetzt node/55 aufrufen, wird user_category_load($uid, $map_array, $index) aufgerufen.

Das erste Element der load Funktion ist denn der Integerwert 55.

Das zweite Element ist:

<?php
array(
  [
0] => "user",
  [
1] => 55,
  [
2] => "edit",
)
?>

Das dritte Argument der load Funktion ist der Integerwert 1, da dies die Position des Pfades ist, an der der Loader definiert wurde.

Mehr Informationen

Wenn eine load Funktion eines Platzhalters FALSE zurückgibt, ist das äquivalent zu 'page not found'.

Solltest Du schauen wollen, wie das alles intern arbeitet, schau Dir die Funktion _menu_load_objects in includes/menu.inc an.

‹ Neue hooks zum Verändern von Menüpunkten nach oben Übersicht des Menüsystems ›
  • Anmelden oder Registrieren um Kommentare zu schreiben

Benutzeranmeldung

  • Registrieren
  • Neues Passwort anfordern

Aktive Forenthemen

  • für drupal11 ein Slider Modul
  • [gelöst] W3CSS Paragraphs Views
  • Drupal 11 neu aufsetzen und Bereiche aus 10 importieren
  • Wie erlaubt man neuen Benutzern auf die Resetseite zugreifen zu dürfen.
  • [gelöst] Anzeigeformat Text mit Bild in einem Artikel, Drupal 11
  • Social Media Buttons um Insteragram erweitern
  • Nach Installation der neuesten D10-Version kein Zugriff auf Website
  • Composer nach Umzug
  • [gelöst] Taxonomie Begriffe zeigt nicht alle Nodes an
  • Drupal 11 + Experience Builder (Canvas) + Layout Builder
  • Welche KI verwendet ihr?
  • Update Manger läst sich nicht Installieren
Weiter

Neue Kommentare

  • melde mich mal wieder, da ich
    vor 1 Tag 11 Stunden
  • Hey danke
    vor 2 Tagen 6 Stunden
  • Update: jetzt gibt's ein
    vor 3 Tagen 16 Minuten
  • Hallo, im Prinzip habe ich
    vor 1 Woche 9 Stunden
  • Da scheint die Terminologie
    vor 1 Woche 13 Stunden
  • Kannst doch auch alles direkt
    vor 1 Woche 4 Tagen
  • In der entsprechenden View
    vor 1 Woche 4 Tagen
  • Dazu müsstest Du vermutlich
    vor 1 Woche 4 Tagen
  • gelöst
    vor 4 Wochen 1 Tag
  • Ja natürlich. Dass ist etwas,
    vor 4 Wochen 2 Tagen

Statistik

Beiträge im Forum: 250233
Registrierte User: 20449

Neue User:

  • Mroppoofpaync
  • 4aficiona2
  • AppBuilder

» Alle User anzeigen

User nach Punkten sortiert:
wla9461
stBorchert6003
quiptime4972
Tobias Bähr4019
bv3924
ronald3857
md3717
Thoor3678
Alexander Langer3416
Exterior2903
» User nach Punkten
Zur Zeit sind 0 User und 21 Gäste online.

DrupalCenter durchsuchen:

Benutzerhandbuch

  • FAQ - Häufig gestellte Fragen.
  • Links & Downloads
  • Über Drupalcenter.de und das deutschsprachige Benutzerhandbuch
  • Über Drupal
  • Einsteiger
  • Fortgeschrittene
  • Entwicklung von Modulen und Themes
    • Das Drupal Theme System (PHPTemplate)
    • Theme Handbuch (Drupal 6)
    • 5.x Themes in 6.x konvertieren
    • Leitfaden zur Entwicklung von Modulen
      • 5.x
      • Erstellen von Modulen für Drupal 6.x
        • Erstellen von Modulen - ein Handbuch: Drupal 6.x
        • Die Verwendung der Theme-Schicht
        • .info Dateien schreiben
        • .install Dateien schreiben
        • Schreiben von actions (Aktionen)
        • Das Menüsystem von Drupal
          • Anatomie von hook_menu
          • Mehrere Seiten unter einem dynamischen Pfad
          • Neue hooks zum Verändern von Menüpunkten
          • Platzhalter Argumente
          • Übersicht des Menüsystems
      • Verwendung von Icons
    • Module zu Drupal CVS hinzufügen
    • Resourcen für den Theming-Ninja
  • Drupalcenters Community
  • Drupal 7 Video-Trainings (Deutsch)
  • Drupal-Testumgebung erstellen
  • Drupal 6 Module
  • Drupal 7 Module
  • Drupal Screencasts auf deutsch
  • Archiv

Das Copyright des deutschsprachigen Drupal-Benutzerhandbuches unterliegt den jeweiligen Autoren. Übersetzungen des englischsprachigen Drupal-Benutzerhandbuches unterliegen der Creative Commons License, Attribution-ShareAlike 2.0.

Hauptmenü

  • » Home
  • » Handbuch & FAQ
  • » Forum
  • » Übersetzungsserver
  • » Suche

Quicklinks I

  • Infos
  • Drupal Showcase
  • Installation
  • Update
  • Forum
  • Team
  • Verhaltensregeln

Quicklinks II

  • Drupal Jobs
  • FAQ
  • Drupal-Kochbuch
  • Best Practice - Drupal Sites - Guidelines
  • Drupal How To's

Quicklinks III

  • Tipps & Tricks
  • Drupal Theme System
  • Theme Handbuch
  • Leitfaden zur Entwicklung von Modulen

RSS & Twitter

  • Drupal Planet deutsch
  • RSS Feed News
  • RSS Feed Planet
  • Twitter Drupalcenter
Drupalcenter Team | Impressum & Datenschutz | Kontakt
Angetrieben von Drupal | Drupal is a registered trademark of Dries Buytaert.
Drupal Initiative - Drupal Association