DRUPAL6: في theme_preprocess_page (& $ vars) ، من أين تأتي $ vars؟ (كيفية التلاعب بالخبز)

StackOverflow https://stackoverflow.com/questions/1403048

  •  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>';
  }
}

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

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top