[gelöst] PHP-Frage: ?-Zeichen wird nicht korrekt ausgegeben?
am 25.08.2010 - 16:28 Uhr in
Hallo,
ich versuche gerade einen Link mit einem ? (Fragezeichen) in der URL per PHP auszugeben.
Der Code lautet.
print l((t('Bewertung schreiben')), 'node/add/bewertungen/' . $node->nid . '?destination=' . urlencode(drupal_get_path_alias('users/'. strtolower($account->name))));
Leider wird aber das Fragezeichen in '?destination=' im html-Code als %3F ausgegeben - weil der Link ein Nodereference-Link ist und Nodereference mit %3F nicht klar kommt, erhalte ich ständig die Fehlermeldung "Referenced content not found".
Ersetze ich im Browser %3F per Hand durch ?, klappt alles wunderbar.
Leider schaffe ich es aber nicht per PHP gleich das Fragezeichen richtig auszugeben - es wird ständig codiert.
Könnte mir jemand sagen woran das liegt bzw. wie ich das Problem lösen kann?
Danke und Gruß
Matthias
- Anmelden oder Registrieren um Kommentare zu schreiben
Sind zwar meine ersten
am 25.08.2010 - 16:49 Uhr
Es sind zwar meine ersten PHP-Gehversuche aber ich habs jetzt rausbekommen.
Ich weiß zwar immer noch nicht warum das Fragenzeichen als %3F ausgegegebn wird aber mit ...
print l((t('neue Bewertung schreiben')), 'node/add/bewertungen/' . $node->nid, array('query' => array('destination' => urlencode(drupal_get_path_alias('users/'. strtolower($account->name))))));
funktioniert es und dei URL wird korrekt dargestellt.
Drupal rockt!!!
Hinweis: Der Text innerhalb
am 25.08.2010 - 16:59 Uhr
Hinweis: Der Text innerhalb der t() Funktion muss in Englisch sein, damit er korrekt übersetzt werden kann.
Wohin soll denn nach der Bewertung weitergeleitet werden, also wo kommt das $account her?
sense-design | online solutions | Do not hack core!
Drupalcenter Verhaltensregeln | Threads bitte auf [gelöst] stellen.
Hallo Sense, wie oben
am 25.08.2010 - 17:27 Uhr
Hallo Sense,
wie oben geschrieben - ich mache gerade meine ersten PHP-Gehversuche.
Um den Code (oben) zu bekommen habe ich mir aus verschiedenen Threads "Code-Schnipsel" zusammen gesucht.
z.B. von http://www.drupalcenter.de/node/29776#comment-105892
Du wirst jetzt sicher lachen aber ich dachte "t" steht für "title" bzw. "text".
Also t('neue Bewertung schreiben') steht für "neue Bewertung schreiben" soll als Link-Title verwendet werden.
Ich sehe nun auch, dass das Käse war .... PHP + API sind für mich - momentan noch - chinesisch ... ich arbeite aber dran ..
Gruß Matthias
Nachtrag:
Der gesamte Code lautet:
<?php
if (arg(0) == 'user' && is_numeric(arg(1))) {
$account = user_load(arg(1));
if (isset($account->uid)) {
$node = content_profile_load('model', $account->uid);
print l((t('neue Bewertung schreiben')), 'node/add/bewertungen/' . $node->nid, array('query' => array('destination' => urlencode(drupal_get_path_alias('users/'. strtolower($account->name))))));
}
}
?>
Das war vielleicht ein Marathon um den Code zusammen zu bekommen aber er funktioniert. ;-)
"t" entferne ich jetzt noch.
Drupal rockt!!!
Probier doch mal
am 25.08.2010 - 17:25 Uhr
Probier doch mal Folgendes:
<?php
if (arg(0) == 'user' && is_numeric(arg(1))) {
$account = user_load(arg(1));
if ($account->uid) {
$node = content_profile_load('model', $account->uid);
print l('neue Bewertung schreiben', 'node/add/bewertungen/' . $node->nid, array('query' => drupal_get_destination()));
}
}
?>
sense-design | online solutions | Do not hack core!
Drupalcenter Verhaltensregeln | Threads bitte auf [gelöst] stellen.
Hallo Sense, danke für den
am 25.08.2010 - 17:40 Uhr
Hallo Sense,
danke für den Code aber leider ist der für mein Problem nicht ganz geeeignet.
Das alleinige
$node->nid, array('query' => drupal_get_destination())
würde dafür sorgen, dass der User z.B. auf "user/1" zurück geleitet wird ...
Bei mir sollen sie aber auf das Profil + Name zurückkehren z.B. "users/benny" ... deshalb benötige ich immer noch
urlencode(drupal_get_path_alias('users/'. strtolower($account->name)))
dazu.
Es klappt jetzt aber wunderbar - dank Dir für die Hilfe.
Schöne Grüße
Matthias
Drupal rockt!!!