Drupal 7 ile bloklara 'Hoş geldiniz {kullanıcıadı}' nasıl eklenir


15

Bir drupal 6 web sitesini aynı içeriğe sahip bir drupal 7 web sitesiyle değiştiriyorum. Bu Drupal 6 web sitesinde oturum açtığınızda görünen bir blok var. Başlık olarak o bloktaki 'Welcome {username}' mesajını gösteriyor.

Bunu Drupal 7'de yapmanın bir yolunu arıyorum, bunu 'Token' modülü ile yapmaya çalıştım ama çalışmıyor. Bunu yapmanın en iyi yolu nedir?


İşte bunun hakkında bir blog yazısı: is.gd/j2q0Uu
AyeshK

Yanıtlar:


12

Bir blokta veya blok ekleyen özel bir modülde aşağıdaki kodu ekleyin:

if (user_is_logged_in() == TRUE) {
    global $user;

    print "Welcome " . $user->name;
}
else {
    print "Please log in.";
}

Bu , CURRENT kullanıcı bilgisi istiyorsanız daha kullanışlıdır. Muhtemelen buuser_is_logged_in işlev için de .


Bu iyi çalıştı. Bunun altındaki ilk cevabı okuyarak çözümü buldum. Ancak, standart Drupal ile teslim php içeriği modülü hakkında bilmiyordum, bu yüzden biraz daha aramak zorunda kaldı. Cevabın için teşekkürler.
Guan23

$_ global değişkenini kullanarak halihazırda ne yaptığınızı yaptığı için user_is_oked_in () çağrısına gerek yoktur. Sadece aşağıdaki cevabım doğrultusunda $ user-> uid'yi kontrol edin.
rooby

5

Bunu bir modülde (daha sonra sürüm kontrolünde olmayacak bir bloğa php kodu eklemenin aksine önerilir) yapmak istiyorsanız, bunu yapabilirsiniz:

(bu durumda, tüm bu kod userwelcome adlı özel bir modüle gider.)

/**
 * @file
 * Adds a block that welcomes users when they log in.
 */

/**
 * Implements hook_theme().
 */
function userwelcome_theme($existing, $type, $theme, $path) {
  return array(
    'userwelcome_welcome_block' => array(
      'variables' => array('user' => NULL),
    ),
  );
}

/**
 * Implements hook_block_info().
 */
function userwelcome_block_info() {
  // This example comes from node.module.
  $blocks['welcome'] = array(
    'info' => t('User welcome'),
    'cache' => DRUPAL_CACHE_PER_USER,
  );

  return $blocks;
}

/**
 * Implements hook_block_view().
 */
function userwelcome_block_view($delta = '') {
  global $user;
  $block = array();

  switch ($delta) {
    case 'welcome':
      // Don't show for anonymous users.
      if ($user->uid) {
        $block['subject'] = '';
        $block['content'] = array(
          '#theme' => 'userwelcome_welcome_block',
          '#user' => $user,
        );
      }
      break;
  }
  return $block;
}

/**
 * Theme the user welcome block for a given user.
 */
function theme_userwelcome_welcome_block($variables) {
  $user = $variables['user'];
  $output = t('Welcome !username', array('!username' => theme('username', array('account' => $user))));
  return $output;
}

Daha sonra bir temada bu bloğun temasını geçersiz kılmak isterseniz bunu yaparsınız (temanızın template.php dosyasında):

/**
 * Theme the userwelcome block.
 */
function THEMENAME_userwelcome_welcome_block(&$variables) {
  // Return the output of the block here.
}

Bu özel bir modül olduğundan, doğrudan modüldeki tema işlevini de güncelleyebileceğinizi unutmayın.

Özel bir modül kullanmak istemiyorsanız php kodu ile özel bir blok oluşturabilir ve bunu ekleyebilirsiniz:

global $user;
// Only for logged in users.
if ($user->uid) {
  print 'Welcome ' . theme('username', array('account' => $user));
}

Bu harika bir yanıt, ancak her bir işlevin adlandırılması ve konumu hakkında biraz belirsizim. İşte varsayımlarım - doğru olup olmadığımı tavsiye edebilir misiniz? Varsayarsak tema adını almaktadır theme_userwelcomeçalışması, gerektiği theme_userwelcome_welcome_blockyerleştirilmelidir tema değil userwelcomemodülü. Muhtemelen, userwelcome_themeişlev aslında çağrılmalıdır userwelcome_theme_theme(evet, temanın adı olarak 2 tema kelimesi hook) ve temaya yerleştirilmelidir theme_userwelcome. çalışır userwelcome_block_viewve userwelcome_block_infokalır userwelcome.
Instagram Hesabındaki Resim ve Videoları therobyouknow

Bu bilgi ile cevap güncelledim: Tüm bu kod userwelcome adlı bir modül gidiyor. Bir temanın üzerindeki bloğun temasını geçersiz kılmak isterseniz THEMENAME_userwelcome_welcome_block (& ​​$ değişkenleri)
rooby

5

Görünümler modülünü kullanın. Yeni görünüm oluştur> kullanıcıları göster> ekranı engelle. Bağlamsal filtre ekle> varsayılan bağımsız değişkeni sağla> oturum açan kullanıcıdan kullanıcı kimliği. Alanları istediğiniz metni / jetonları veya kullanıcı profili alanlarını içerecek şekilde yapılandırın (sonuçları yeniden yazabilirsiniz). Kaydedin ve bölgeye blok ekleyin.

Bir modül ve kod olmadan yapılır.

-lunk_rat


Bu cevabın daha fazla oyu hak ettiğine inanıyorum. Bu daha çok 'Drupal yolu' hisseder. Yapılandırma ile çözebiliyorsanız, kodu kullanmak yerine bu şekilde yapın.
İdeogram

@Deogram da bu benim yaklaşımım, bu yüzden diğer çözümlerin birçoğu çalışsa bile cevabı gönderdim. Görünüşe göre biraz oy alıyor ...
Link Swanson
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.