it-swarm.asia

كيفية تعيين الصفحة الأمامية برمجيا؟

أرغب في تعيين Drupal الصفحة الأولى برمجياً في وقت التشغيل.
كيف يمكنني أن أفعل هذا؟ هل هذا ممكن؟

22
Ek Kosmos

يمكنك استخدام variable_set() لذلك.

variable_set('site_frontpage', $value);
22
Rafael Caceres

هناك وحدة ( Frontpage ، وهي واحدة احتفظت بها) تسمح بتعيين صفحة أمامية مختلفة للمستخدمين المجهولين والمستخدمين المصادق عليهم. تسمح الوحدة النمطية لوحدات الطرف الثالث بتغيير الصفحة التي يتم إعادة توجيه المستخدمين إليها بدلاً من ذلك ، أو تغيير صفيف البنية المستخدم لعرض الصفحة. يُسمح لوحدات الطرف الثالث بتغيير عنوان URL الخاص بإعادة التوجيه فقط عندما لا يتم تعيين الصفحة الأمامية للمجهول أو المصادقة داخل وحدة Frontpage ، أو عندما يكون هناك خطأ أثناء تحميل العقدة ؛ من المحتمل أن يتم تغيير الوحدة في المستقبل للسماح لوحدات الطرف الثالث بإعادة توجيه المستخدمين إلى صفحة محددة يختارونها.

كبديل ، يمكنك إنشاء وحدة نمطية مخصصة ، باستخدام تعليمات برمجية مشابهة لتلك التي تستخدمها Frontpage ، لإعادة توجيه المستخدمين إلى صفحة معينة ، بناءً على معايير محددة.

يجب أن تنفذ الوحدة hook_menu () وتربط استدعاء القائمة ، على سبيل المثال ، http://example.com/frontpage ؛ يجب أن يقوم رد الصفحة لعنصر القائمة هذا بالتحقق من صحة أحد الشروط ، ثم إعادة توجيه المستخدمين إلى عنوان URL محدد.

يمكن أن يكون الهيكل العظمي للتعليمة البرمجية مشابهًا لما يلي:

/**
 * Implements hook_menu().
 */
function mymodule_menu() {
  $items = array();

  $items['frontpage'] = array(
    'page callback' => 'mymodule_frontpage_view',
    'access arguments' => array('access content'),
    'type' => MENU_CALLBACK,
  );

  return $items;
}

function mymodule_frontpage_view() {
  // These variables can be useful to redirect the users
  // to specific pages, basing on the language currently set for
  // the content, or on the fact the user is logged in.
  $langcode = $GLOBALS['language_content']->language;
  $logged_in = user_is_logged_in();

  if ($condition) {
    drupal_goto($redirect);
  }
}
16
kiamlaluno

الحل المرن للغاية هو استخدام لوحات . يمكن تقديم عروض مختلفة بناءً على أي معايير ، ويتم التحكم فيها من خلال واجهة المستخدم.

9
tim.plunkett

لقد أصلحت مثل هذا:

/**
 * Implements hook_page_alter.
 * @param type $page
 */
function my_module_page_alter(&$page){
  global $user;

  $is_fron_page = drupal_is_front_page();
  if($is_fron_page && $user->uid){
    $redirect = 'users/'.$user->name.'/my-argument';
    drupal_goto($redirect);
  }
}
4
r0ber

يمكن استخدام الوحدة Rules أيضًا لتعيين الصفحة الأمامية "برمجيًا".

القاعدة الفعلية التي سيتم إنشاؤها هي تنوع في الإجابة على إعادة توجيه المستخدمين الذين تم تسجيل دخولهم (مصادق عليهم) إلى صفحة أمامية مختلفة باستخدام القواعد أو كود php .

ودمجها اختياريًا مع الوحدة Flag ، قد يزيد من تحسين تجربة المستخدم. على سبيل المثال للمستخدمين الذين قاموا بتسجيل الدخول للإشارة إلى أي من الصفحات الأمامية المحتملة التي يعتبرونها "المفضلة".

1
Pierre.Vriens

إذا كنت تتطلع إلى تعيين هذا برمجيًا بشكل عام ، فيمكنك تعيين المتغير في الإعدادات. php:

$conf['site_frontpage'] = 'some/custom/path';
1
Charlie Schliesser

لقد قمت بتغيير عقدة الصفحة الرئيسية (على النطاقات الفرعية) بإعدادات المتغير في hook_url_outbound_alter ()

variable_set('site_frontpage', $value);

ثم إعادة التوجيه:

$_GET['q'] = 'node/' . $domain_homepage_node_id;
0
TvC