it-swarm.asia

الفرق بين صفحة ربط_الصفحة و صفحة المعالجة المسبقة؟

أنا لا أفهم تمامًا متى يجب أن أستخدم hook_page_alter (& $ page) أو template_preprocess_page (& $ vars، $ hook) في Drupal 7.

ما هي أفضل الممارسات حول ذلك لاستخدامه في template.php؟

شكر

10
gagarine

الفرق هو غرضهم.

hook_page_build () و hook_page_alter () تُستخدم لإزالة العناصر أو تغييرها أو إضافتها على مستوى الصفحة.
يحتوي مصفوفة الصفحة التي تم تمريرها على hook_page_alter() على عناصر المستوى الأعلى لكل منطقة كتلة. بشكل افتراضي هم التالية:

  • أعلى الصفحة
  • العنوان
  • الشريط الجانبي الأول
  • المحتوى
  • الثواني الجانبية
  • page_bottom

مثال على التنفيذ يمكن أن يكون المثال التالي:

function mymodule_page_alter(&$page) {
  // Add help text to the user login block.
  $page['sidebar_first']['user_login']['help'] = array(
    '#weight' => -10, 
    '#markup' => t('To post comments or add new content, you first have to log in.'),
  );
}

يتم استدعاء وظائف ما قبل المعالجة لتغيير المتغيرات التي يتم تمريرها إلى ملف القالب. لا يمكنهم تغيير بنية الصفحة ، ولكن يمكنهم تغيير محتوى بعض عناصر الصفحة بتغيير محتوى هذه المتغيرات.
على سبيل المثال ، تزيل وحدة التراكب علامات التبويب الأساسية عندما تكون الصفحة التي يتم تصورها هي التراكب.

function overlay_preprocess_page(&$variables) {
  if (overlay_get_mode() == 'child') {
    unset($variables['tabs']['#primary']);
  }
}
16
kiamlaluno