Üzenet megjelenítése a felhasználónak a profiloldalán, ha nem töltött fel képet

simonp képe

Sziasztok!

A címben megfogalmazott feladatot szeretném kivitelezni. Kipróbáltam a következő kódot:

  if ($user->picture) {
    print ' ';
  }
  else {
    print 'Még nem töltöttél fel magadról képet.';
  }

Ezzel az a baj, hogy a megadott üzenetet minden alkalommal kiírja, ha a felhasználó egy olyan felhasználó profiloldalát nézi meg, aki nem töltött fel képet.

Hogyan tudom megoldani, hogy ez az üzenet csak a bejelentkezett felhasználó saját profiloldalán jelenjen meg?

Péter

Drupal verzió: 
Fórum: 
szantog képe

A user/% útvonalon a $user objektum az argumentumban szereplő uid alapján készül. Az aktuális userre így hivatkozhatsz:
$GLOBALS['user']->uid

  if (($GLOBALS['user']->uid) == $user->uid)) && (empty($GLOBALS['user']->picture)) {
    print 'Még nem töltöttél fel magadról képet.';
  }
0
0

----
Rájöttem, miért kérdezek olyan ritkán a drupal.hu-n. Amíg szedem össze az infokat a kérdéshez, mindig rájövök a megoldásra.

aboros képe

meg nem is túl szép.. :)

persze kérdés, hogy hol akarjuk ezt csinálni, tpl -ben? előfeldolgozóban? saját modulunkban? vagy hol?

na mindegy, kb így:

global $user;
 
if (arg(0) == 'user' && is_numeric(arg(1))) {
  if ($user->uid === arg(1) && !isset($user->picture)) {
    drupal_set_message(t('You did not upload an avatar yet!'));
  }
}

aztán persze a 'you did not...' szöveget szépen lefordítjuk arra a nyelvre, amire akarjuk.

0
0

-
clear: both;

simonp képe

Tényleg nem működik, de sajnos aboros megoldása sem. Az első kódra white page of death fogad. A másodikra egyszerűen semmi nem történik.

Elfelejtettem írni, hogy a user-profile.tpl.php-be gondoltam betenni a snippet-et.

Van még esetleg valakinek ötlete?

0
0
szantog képe

A template.php-ba írd, tpl.php-ban ez nem szép, igaz Ádám? :) Szóval az && is_numeric(arg(1))-et elhagyva jó.
Amit nem igazán értek, mert ugye a a második argumentum akárhogy is nézzük szám, tehát nem vágom, miért nem igaz a feltétel ezen ága..

function sminkedneve_preprocess_page(&$vars, $hook) {
  global $user;
  if (arg(0) == 'user') {
    if ($user->uid === arg(1) && !isset($user->picture)) {
      drupal_set_message(t('You did not upload an avatar yet!'));
  }
}
0
0

----
Rájöttem, miért kérdezek olyan ritkán a drupal.hu-n. Amíg szedem össze az infokat a kérdéshez, mindig rájövök a megoldásra.

simonp képe

Kipróbáltam, template.php-ben; megint üres lapot kaptam.

Fura, hogy neked működik. Megnéztem egy friss D6 telepítésen is, és ezt az üzenetet kaptam a kód utolsó sorára vonatkozóan:

Parse error: syntax error, unexpected $end in D:\www\drupal-6.13-sandbox\themes\garland\template.php on line 111

0
0
szantog képe

Naná, a végéről lemaradt egy } :)

0
0

----
Rájöttem, miért kérdezek olyan ritkán a drupal.hu-n. Amíg szedem össze az infokat a kérdéshez, mindig rájövök a megoldásra.

simonp képe

Sajnos nálam még mindig nem történik semmi, de legalább hibaüzenetet sem kapok már. Ez a kód csak a profiloldalon írná ki az üzenetet, vagy minden oldalon?

Mindenesetre köszönöm az eddigi erőfeszítéseiteket!

0
0
Bálint képe

0
0
simonp képe

Igen, az is megvolt.

0
0
Petik képe

Addig is áthidaló javaslatom ez a szöveg:"A felhasználó még nem töltött fel magáról képet"
Ezt már láttam valahol. Nem az én találmányom.

0
0

Üdv. Peti