[gelöst]PHP-Frage: nid aus Alias

am 08.11.2010 - 17:26 Uhr in
Hallo Freunde,
ich habe einen Node - der Alias-Pfad lautet status/1
Nun möchte ich aus diesem Pfad die Nid extrahieren.
Dazu nutze ich folgenden Code.
<?php
$path = 'status/1';
$nid = drupal_get_normal_path($path, $path_language = '');
print $nid;
?>
Das ergibt als Ausgabe bei mir node/368.
Wie bekomme ich jetzt node/ aus dieser Ausgabe heraus sodass ich nur die nid 368 alleine habe.
Meine PHP-Kentnisse reichen leider nicht aus - ich habe split versucht - da kam aber nur Blödsinn bei raus.
Danke schonmal und schöne Grüße
Matthias
- Anmelden oder Registrieren um Kommentare zu schreiben
Ich habs selbst heraus
am 08.11.2010 - 17:39 Uhr
Ich habs selbst heraus gefunden.
Das geht mit explode
<?php
$path = 'status/1';
$nid = drupal_get_normal_path($path, $path_language = '');
$nid = explode("/",$nid);
print $nid[1];
?>
Wann bzw. wo genau wird
am 08.11.2010 - 23:46 Uhr
Wann bzw. wo genau wird dieser Code denn ausgeführt? Denn wenn der Code bei der Seitendarstellung eines Nodes ausgeführt wird (wenn er z. B. in der node.tpl.php steht - nur als Beispiel), dann kannst du dir den explode sparen, dann steht die Node-ID in arg(1):
<?php
if ((arg(0) == 'node') && (is_numeric(arg(1))))
{
$nid = arg(1);
}
print $nid;
?>
Nabend Toni, wenn sich bei
am 09.11.2010 - 00:17 Uhr
Nabend Toni,
wenn sich bei mir ein User registriert - wird gleichzeitg - über Rules - ein Node des Inhaltstypen "Status" erstellt - der automatische Alias-Pfad des Nodes erfolgt nach folgendem Muster.
status/uid
Für den Admin ergibt das z.B. status/1 - für "User Benny" status/2 usw.
Jetzt soll das Edit-Form dieses Nodes über einen View im Kopfbereich des Profiles eingebunden werden (Anzeige/Einblendung erfolgt über jQuery-Toogle) - denn dort soll der User seine Statusmitteilung verfassen/ändern können. Um aber an node_load automatisch die richtige NID übergeben zu können (die ich ja nicht kenne) muss vorher aus dem jeweiligen Status-Node-Alias diese NID extrahiert werden damit die richtige Edit-Form aufgerufen werden kann.
global $user;
if ($user->uid == arg(1) && arg(0) == 'user') {
module_load_include('inc', 'node', 'node.pages');
.......
......
......
$path = ('status/' . $user->uid);
$nid = drupal_get_normal_path($path, $path_language = '');
$nid = explode("/",$nid);
$nid = $nid[1];
$node = node_load($nid);
$output = drupal_get_form($form_id, $node);
usw. usw.
Anschließend leite ich über ein eigenes kleines Modul - nach dem Speichern der Statusmitteilung - sofort wieder aufs Profil zurück und fertig ist die User-Statusmitteilung. ;-)
Schöne Grüße
Matthias
Nachtrag: Es kann sein, dass es noch einen anderen Weg gibt aber das obige ist mir heute Nachmittag eingefallen und dann habe ich es einfach mal umgsetzt.