أنا أستبدل موقع drupal 6 بموقع a drupal 7 واحد بنفس المحتوى. على ذلك Drupal 6 موقع هناك هي كتلة تظهر عندما تسجل الدخول. كعنوانها تظهر الرسالة "مرحبًا {username}" في تلك الكتلة.
أنا أبحث عن طريقة للقيام بذلك في Drupal 7 ، حاولت القيام بذلك باستخدام الوحدة النمطية "Token" ولكني لا أعمل. ما هي أفضل طريقة للقيام بذلك؟
إذا كنت تريد القيام بذلك في وحدة نمطية (مستحسن بدلاً من إضافة كود 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));
}
استخدم وحدة المشاهدات. إنشاء عرض جديد> إظهار المستخدمين> عرض كتلة. إضافة عامل تصفية سياقي> تقديم وسيطة افتراضية> معرف المستخدم من المستخدم الذي قام بتسجيل الدخول. قم بتكوين الحقول (يمكنك إعادة كتابة النتائج) لتضمين أي حقول نص/رموز مميزة أو حقول ملف تعريف المستخدم التي تريدها. حفظ وإضافة كتلة إلى المنطقة.
حررت من وحدة واحدة ولا رمز.
-lunk_rat