Panels: User miteinander vergleichen, um PM-Link in eigenem Profil zu vermeiden
am 04.05.2010 - 09:49 Uhr in
Hallo zusammen,
ich hab mal wieder etwas Kniffligeres:
Ich benutze Content Profile und das Advanced Profile Kit mit Panels. Das funktioniert auch recht schön, ich habe Felder aus verschiedenen Nodes nach meinem Gutdünken in die verschiedenen Panes geschoben.
Nun soll in einer Pane auch ein Link angezeigt werden, um dem User, auf dessen Profil man ist, eine PM zu schicken. Funktioniert auch, nur: Der Link wird auch beim eigenen Profil angezeigt, das ist natürlich unschön.
Jetzt habe ich ein wenig PHP eingefügt, komme aber nicht weiter. Normal würde ich $user->uid
und $account->uid
miteinander vergleichen, wie an anderer Stelle auch. Die sind hier aber nicht sichtbar. Stattdessen hat man die Context Keywords wie etwa %user:uid
- und hier liegt der Knackpunkt: %user:uid
bezieht sich nicht wie $user->uid
auf den User, der die Seite aufruft, sondern auf den betrachteten User, also quasi $account->uid
. Für den aufrufenden User gibt es kein Context Keyword.
Wie kann ich an der Stelle - wie auch immer - an die uid des aufrufenden Users gelangen, um die in eine Variable für einen ganz simplen Vergleich zu schubsen???
Alternativ: Wie kann ich den PM-Link an dieser Stelle möglicherweise anders anzeigen, so dass er nicht angeziegt wird, wenn ein User sein eigenes Profil aufruft?
LG
Sonja
- Anmelden oder Registrieren um Kommentare zu schreiben
So, ein Teil des Problem ist
am 06.05.2010 - 10:36 Uhr
So, ein Teil des Problem ist gelöst, ein Teil des Problems bleibt, und hier bin ich echt ratlos, das ist wohl ein Fall für PHP-Spezialisten.
Mein code in Panels sieht gerade so aus:
<?php
global $user;
$id1="%user:uid";
echo $id1." ist ".gettype($id1);
$id1=trim($id1);
$id1a = (int) $id1;
echo $id1a." ist ".gettype($id1a);
$id2=$user->uid;
echo $id2." ist ".gettype($id2);
$id2=trim($id2);
$id2a = (int) $id2;
echo $id2a." ist ".gettype($id2a);
echo $id1a . " ist gleich ".$id2a;
if ($id1a != $id2a) {
echo "<a href='/messages/new/%user:uid?destination=user/%user:uid'>Jetzt %user:name eine Nachricht schicken!</a>";
}
?>
Ich habe also rausgefunden, dass ich an den handelnden Benuter über
global $user
komme, und bekomme auch die richtigen Werte. Das Einzige, woran es hakt: Der Vergleich.Ich habe da ja jede Menge echo-Befehle drin, um die Werte und Variablentypen zu testen. Beide Variablen kommen zunächst als String-Datentyp rein, eventuell vorhandene Leerzeichen schneide ich ab. Die Strings sind dann trotzdem ungleich, auch wenn ich beide Male z.B. "14" da stehen habe.
Wenn ich eine Typumwandlung zum Integer mache, dann wird bei der $id1 eine 0 daraus, bei der $id2 bleibt mir die 14 erhalten.
Ausgabe in etwa so:
14 ist string
0 ist integer
14 ist string
14 ist integer
0 ist gleich 14
Sehr mysteriös, kennt sich da einer aus oder muss ich mir ein PHP-Forum suchen? Ich kann mir das jedenfalls nicht mehr erklären.
LG
Sonja
Drupal Freelancer im Rheinland gesucht?
Okay, einen Schritt weiter
am 06.05.2010 - 10:53 Uhr
Okay, einen Schritt weiter bin ich grad noch gekommen: Wenn ich mit
dsm($id)
arbeite, bekomme ich als Ausgabe%user:uid
und nicht den Zahlenwert, den ich aber beiecho $id1
bekomme. Ich denke, da liegt der Hund irgendwo begraben. Der String%user:uid
kann logischerweise nicht in einen Integer konvertiert werden. Aber wie komme ich jetzt an den konkreten Zahlenwert (ob als String oder Integer ist sekundär), den ich doch inecho $id1
so schön ausgeben kann?Mit
global $account
komme ich hier leider nicht an die Daten des angezeigten Benutzers.Drupal Freelancer im Rheinland gesucht?
Wenn Du den Code so aufbaust,
am 06.05.2010 - 13:50 Uhr
Wenn Du den Code so aufbaust, solltest Du den Zahlenwert in $uid bekommen
global $user;
$uid = $user->uid;
User ist ein Object und muß auch entsprechend angespochen werden. Die Variante %user:uid kommt aus dem Token Modul und kann nicht im PHP-Code verwendet werden.
Beste Grüße
Werner
.
Werner
drupal-training.de
Moderator und Drupal Trainer
* - - - - - - - - - - - - - - - - - - - - - - - - - - - *
Danke Werner, auch wenn die
am 06.05.2010 - 14:21 Uhr
Danke Werner, auch wenn die Antwort die Problemstellung nicht ganz erfasst hat (die $user->uid hatte ich ja schließlich schon). Ich hab aber mittlerweile die Lösung und werde sie nachher ausführlich posten, ist leider gerade zeitlich etwas zu eng dazu.
Drupal Freelancer im Rheinland gesucht?