2008-12-09 10 views
0

J'ai utilisé l'assistant de présentation des vues pour générer un modèle et il m'a donné le morceau de code suivant à intégrer dans template.php. Je préférerais simplement conserver le modèle, donc toutes mes fonctions s'appelleront le même, et plutôt que d'écrire de nombreuses versions de la même fonction, je me demande s'il existe un moyen de chaîner les noms de fonctions ensemble ? Quelque chose comme:Pouvez-vous appeler un modèle de vues Drupal pour plusieurs vues?

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); 
    } 
} 

Merci,
Steve

+0

Pourquoi votre question purement Drupal/PHP est-elle marquée JavaScript? –

+0

Merci Eugene. Corrigée. –

Répondre

2

Vous pourriez avoir les modèles dont vous avez besoin appeler une version de la fonction réelle.

Quelque chose comme:

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); 
} 
0

Une correction ci-dessus qui me ralentissait pour une 1/2 heure ... votre besoin d'inclure un retour:

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

Autre que cela, fonctionne très bien .