أنا لا أفهم تمامًا متى يجب أن أستخدم hook_page_alter (& $ page) أو template_preprocess_page (& $ vars، $ hook) في Drupal 7.
ما هي أفضل الممارسات حول ذلك لاستخدامه في template.php؟
شكر
الفرق هو غرضهم.
hook_page_build () و hook_page_alter () تُستخدم لإزالة العناصر أو تغييرها أو إضافتها على مستوى الصفحة.
يحتوي مصفوفة الصفحة التي تم تمريرها على hook_page_alter()
على عناصر المستوى الأعلى لكل منطقة كتلة. بشكل افتراضي هم التالية:
مثال على التنفيذ يمكن أن يكون المثال التالي:
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']);
}
}