it-swarm.asia

كيفية إضافة "مرحبًا {username}" في كتل مع Drupal 7

أنا أستبدل موقع drupal 6 بموقع a drupal 7 واحد بنفس المحتوى. على ذلك Drupal 6 موقع هناك هي كتلة تظهر عندما تسجل الدخول. كعنوانها تظهر الرسالة "مرحبًا {username}" في تلك الكتلة.

أنا أبحث عن طريقة للقيام بذلك في Drupal 7 ، حاولت القيام بذلك باستخدام الوحدة النمطية "Token" ولكني لا أعمل. ما هي أفضل طريقة للقيام بذلك؟

14
Guan23

إما في كتلة أو في وحدة مخصصة تضيف كتلة ، أضف التعليمات البرمجية التالية:

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

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

هذا أكثر فائدة إذا كنت تريد معلومات المستخدم الحالية. ربما هذا كذلك لـ user_is_logged_in وظيفة.

11
Chapabu

إذا كنت تريد القيام بذلك في وحدة نمطية (مستحسن بدلاً من إضافة كود php إلى كتلة ، والتي لن تكون في ذلك الحين في التحكم في الإصدار) ، فيمكنك القيام بذلك:

(في هذه الحالة ، سيتم وضع كل هذا الرمز في وحدة مخصصة تسمى userwelcome.)

/**
 * @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;
}

إذا أردت بعد ذلك تجاوز مظهر هذه الكتلة في موضوع ، فستفعل ذلك (في ملف template.php الخاص بك من السمة):

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

لاحظ أنه نظرًا لأن هذه وحدة مخصصة ، يمكنك أيضًا تحديث السمة funciton في الوحدة مباشرة.

إذا كنت لا تريد استخدام وحدة مخصصة ، يمكنك إنشاء كتلة مخصصة برمز php وإضافة هذا:

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

استخدم وحدة المشاهدات. إنشاء عرض جديد> إظهار المستخدمين> عرض كتلة. إضافة عامل تصفية سياقي> تقديم وسيطة افتراضية> معرف المستخدم من المستخدم الذي قام بتسجيل الدخول. قم بتكوين الحقول (يمكنك إعادة كتابة النتائج) لتضمين أي حقول نص/رموز مميزة أو حقول ملف تعريف المستخدم التي تريدها. حفظ وإضافة كتلة إلى المنطقة.

حررت من وحدة واحدة ولا رمز.

-lunk_rat

5
Link Swanson