DRUPAL6: في theme_preprocess_page (& $ vars) ، من أين تأتي $ vars؟ (كيفية التلاعب بالخبز)
-
05-07-2019 - |
سؤال
أريد إزالة الخبز عندما يكون مجرد إدخال واحد ("الصفحة الرئيسية"). أنا في موضوعي theme_preprocess_page(&$vars)
وظيفة. $ vars ['Breadcrumb'] متاح ، لكنه مجرد html. هذا قليلا إلى أخرق للعمل معه. أفضل الحصول عليها كمجموعة من العناصر الموجودة في قائمة الخبز ، وأفعل شيئًا كهذا:
if (count($breadcrumb) == 1) {
unset($breadcrumb);
}
أين $vars
يأتي من؟ كيف يمكنني تجاوز الكود الذي ينشئه في الأصل؟
المحلول
يتم تمرير مجموعة $ vars بين جميع وظائف المعالجة المسبقة. في حالة وظائف _preprocess_page ، يتم إنشاء معظم القيم في $ vars في template_preprocess_page (انظر http://api.drupal.org/api/function/template_preprocess_page/6). في هذه الوظيفة ، سترى:
$variables['breadcrumb'] = theme('breadcrumb', drupal_get_breadcrumb());
هنا ، تقوم DRUPAL_GET_BREACRUMB بإرجاع مجموعة من عناصر الخبز ، والتي يتم تحت عنوانها بعد ذلك من خلال وظيفة theme_breadcrumb (أو تجاوزها).
أسهل طريقة للحصول على ما تريد هو تجاوز وظيفة theme_breadcrumb. للقيام بذلك ، تأخذ وظيفة theme_breadcrumb الأصلية (http://api.drupal.org/api/function/theme_breadcrumb/6) ، انسخه إلى القالب الخاص بك.
function THEMENAME_breadcrumb($breadcrumb) {
if (count($breadcrumb) > 1) { // This was: if (!empty($breadcrumb))
return '<div class="breadcrumb">'. implode(' » ', $breadcrumb) .'</div>';
}
}
للحصول على فهم أفضل لتجاوزات موضوع دروبال ووظائف المعالجة المسبقة ، انظر حول تجاوز الإخراج القابل للإلغاء و إعداد المتغيرات للاستخدام في قالب (وظائف المعالجة المسبقة).