Question

J'ai utilisé l’assistant Views Theming pour générer un modèle et il m’a donné le bloc de code suivant à insérer dans template.php.

Je préférerais simplement conserver le modèle unique, afin que toutes mes fonctions appellent le même et que, plutôt que d'écrire plusieurs versions de la même fonction, je me demande s'il est possible de chaîner les noms de fonctions ensemble. Quelque chose comme:

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

Était-ce utile?

La solution

Vous pouvez simplement demander aux modèles dont vous avez besoin d'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);
}

Autres conseils

Une correction ci-dessus m'a ralentie pendant une heure et demie ... votre besoin d'inclure une déclaration:

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

En dehors de cela, fonctionne très bien.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top