Kullanıcı profili değişkenleri erişme

3 Cevap php

Ben kayıt sırasında kullanıcı doldururken profile_real_name adında bir metin alanını oluşturduk profil modülünü kullanarak. Nasıl bu değişken node.tpl.php erişebilirim?

Ben çıktı kullanıcı değişkenleri için dsm($user) işlevi kullanılır ve profile_real_name için verilerin dışında her şeyi içeriyordu

Ben de dsm($vars) phptemplate_preprocess_user_profile koştu ve ben ben gerekli ama bu nesne $ kullanıcı değişkeni mevcut değildir bilgi içeren yaptım bir nesne denir hesabı bulunan görebiliyordu.

Çok teşekkürler

3 Cevap

Eğer node.tpl.php yazarın profil bilgilere erişmek istiyorsanız, o zaman bir phptemplate_preprocess_node işlevi yerine user_profile biri ile çalışmak istiyoruz. Düğüm preprocess işlevi olsa varsayılan bir $ hesap nesnesi yoktur, bu yüzden onu yüklemek gerekir:

Bu template.php dosyasında phptemplate_preprocess_node işlevinde gider:

if ($vars['uid']) {
  $vars['account'] = user_load(array('uid' => $vars['uid']));
}

Sonra node.tpl.php yazarın profil değerlerine erişmek mümkün olacaktır. Sorduğun değeri özellikle olacaktır:

print($account->profile_real_name);

Eğer düğüm yazarın ismi yerine kendi hesap isim daha profile_real_name değer olarak görünmesini isteyebilirsiniz gibi Ancak, bu sesler?

Eğer öyleyse, çok daha verimli bir şekilde theme_username işlevi geçersiz olacaktır.

That's not directly what you asked about so I won't go into it here, but this post on the drupal.org forums would be an excellent place to start for Drupal 5 or 6: http://drupal.org/node/122303#comment-204277

$account genellikle kazara kullanıcı neden olacaktır küresel kullanıcıya o kullanıcı olarak oturum almak edilmesi üzerine yazılmasını önlemek için global kullanıcı olmayan bir kullanıcı diyoruz.

Ben sadece denetleme biraz yaptım ve sorunu çözmek için en kolay yolu şablonun yerine $ kullanıcı $ hesabı kullanmaktır.

$user şablonda veya WmasterJ gibi yapıyor önerir kullanarak arızalı. Sen yanlış veri yayınlayacağız. Profile izleniyor bulunuyor kullanıcının logged in user değil verilerin verileri yayınlayacağız. Kendi dışında diğer tüm kullanıcıların profilini görmek bu hata olur.

Preprocess işlevleri tema sadece değiştirin phptemplate temanızın adı ile kodunu tanımladığınız template.php dosyasında, yapmak zor değildir. Zaten ne gerek var çünkü bu durumda alışkanlık, preprocess işlevini değiştirmek gerekir.

Eğer örneğin kullanıcı profile.tpl.php size ihtiyacınız olan tüm bilgileri $account dizi içinde var için içinde bunu yapmak istiyorum.

Aksi halde (şu anda, ya da DB sorgulamak ve uid bu şekilde alabilirsiniz eğer kişinin oturum açmış) bu kadar kimliği dayalı bir kullanıcı nesnesi yüklenerek kullanıcı verilerine erişebilirsiniz.

İlk uid geçerli kullanıcı olsun:

$uid = $user->uid;

Sonra bir kullanıcı nesneyi yüklemek:

// Create user objets based on uid ()
$user_obj = user_load($user->uid);

Sonra kullanıcılar değişkenleri profile ki yük:

// Load profile
profile_load_profile($user_obj);

Şimdi $user_obj değişkeni (referans tarafından geçirilen profile_load_profile) bu gibi erişilebilir profil bilgileri içeren bir nesne vardır:

$user_obj->profile_real_name

Umarım yardımcı olur!