يمكنك استدعاء قالب وجهات النظر دروبال واحد لوجهات نظر متعددة؟

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

سؤال

ولقد استعملت المشاهدات معالج سمات لإخراج القالب وأعطاني قطعة التعليمات البرمجية التالية للذهاب في template.php.

وكنت أفضل أن فقط الحفاظ على قالب واحد، لذلك كل مهامي سيتم استدعاء نفس واحدة، وبدلا من كتابة العديد من الإصدارات من نفس الوظيفة، وأنا أتساءل عما اذا كان هناك طريقة لأسماء الدالة سلسلة معا؟ شيء من هذا القبيل:

function phptemplate_views_view_list_recent_articles($view, $nodes, $type),
phptemplate_views_view_list_popular_articles($view, $nodes, $type) {
  $fields = _views_get_fields();

  $taken = array();

  // Set up the fields in nicely named chunks.
  foreach ($view->field as $id => $field) {
    $field_name = $field['field'];
    if (isset($taken[$field_name])) {
      $field_name = $field['queryname'];
    }
    $taken[$field_name] = true;
    $field_names[$id] = $field_name;
  }

  // Set up some variables that won't change.
  $base_vars = array(
    'view' => $view,
    'view_type' => $type,
  );

  foreach ($nodes as $i => $node) {
    $vars = $base_vars;
    $vars['node'] = $node;
    $vars['count'] = $i;
    $vars['stripe'] = $i % 2 ? 'even' : 'odd';
    foreach ($view->field as $id => $field) {
      $name = $field_names[$id];
      $vars[$name] = views_theme_field('views_handle_field', $field['queryname'], $fields, $field, $node, $view);
      if (isset($field['label'])) {
        $vars[$name . '_label'] = $field['label'];
      }
    }
    $items[] = _phptemplate_callback('views-list-first-with-abstract', $vars);
  }
  if ($items) {
    return theme('item_list', $items);
  }
}

شكرا،
ستيف

هل كانت مفيدة؟

المحلول

هل يمكن أن يكون مجرد القوالب التي تحتاج إليها الدعوة إصدار واحد من وظيفة فعلية.

وشيء من هذا القبيل:

function phptemplate_views_view_list_recent_articles($view, $nodes, $type){
          actual_template_function($view, $nodes, $type);
}

function phptemplate_views_view_list_popular_articles($view, $nodes, $type){
          actual_template_function($view, $nodes, $type);
}

نصائح أخرى

وتصحيح واحدة فوق ذلك تباطأ لي باستمرار ل1/2 ساعة ... حاجتك لتشمل العودة:

return actual_template_function($view, $nodes, $type);

وبخلاف ذلك، يعمل كبيرة.

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