Submitted by zmove on
Hello,
J'essaye de personnaliser l'affichage de mes vues, ca marche pas trop mal, je commence à saisir tout le potentiel de Drupal de ce coté là.
Voici la code que j'ai dans mon template.php pour personaliser ma vue (c'est basé sur le code par défaut que j'ai adapté un peu à des besoins spécifiques).
function phptemplate_views_view_list($view, $nodes, $type) {
$fields = _views_get_fields();
$j = 0;
$last = '';
$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'];
}
}
/* !MOFIF! -> On attribue la classe "last" au dernier ou aux deux derniers éléments de la vue suivant sa parité */
if (sizeof($nodes)%2 == 0) {
if ($i >= (sizeof($nodes)-2)) { $last = 'last '.'number-'.sizeof($nodes).' '; } else { $last = ''; }
} else {
if ($i >= (sizeof($nodes)-1)) { $last = 'last '.'number-'.sizeof($nodes).' '; } else { $last = ''; }
}
$items[] = array(
'data' => _phptemplate_callback('views-list-actualite', $vars),
'class' => $last.'disc-' . $j,
'name' => $view->name,
);
if ($j >= 1) {
$j = 0;
} else {
$j++;
}
}
if ($items) {
return theme('view_item_list', $items);
}
}
function phptemplate_view_item_list($items = array(), $title = NULL, $type = 'ul') {
#$output = '<div class="item-list">';
$output = '';
if (isset($title)) {
$output .= '<h3>'. $title .'</h3>';
}
if (!empty($items)) {
$class = $items[0]['name'];
$output .= "<$type class="view view-$class">";
foreach ($items as $item) {
$output .= phptemplate_view_item_list_item($item);
}
$output .= "</$type>";
}
#$output .= '</div>';
return $output;
}
function phptemplate_view_item_list_item($item) {
$attributes = '';
if (is_array($item)) {
$data = $item['data'];
foreach ($item as $key => $value) {
if ($key != 'data') {
$attributes .= " $key="$value"";
}
}
}
else {
$data = $item;
}
return "<li$attributes>$data</li>";
}
Ca marche plutot bien jusqu'ici, mais j'ai encore 2 div indésirable au début de ma vue
<div class='view view-actualite'><ul class="view view-actualite">
J'ai trouvé dans le handbook comment redéfinir ces div, c'est en mettant la fonction "theme_views_view function" dans mon template.php
function phptemplate_views_view($view, $type, $nodes, $level = NULL, $args = NULL) {
$num_nodes = count($nodes);
if ($type == 'page') {
drupal_set_title(views_get_title($view, 'page'));
views_set_breadcrumb($view);
}
if ($num_nodes) {
$output .= views_get_textarea($view, $type, 'header');
}
if ($type != 'block' && $view->exposed_filter) {
$output .= views_theme('views_display_filters', $view);
}
if ($num_nodes) {
if ($level !== NULL) {
$output .= views_theme('views_summary', $view, $type, $level, $nodes, $args);
}
else {
$plugins = _views_get_style_plugins();
$view_type = ($type == 'block') ? $view->block_type : $view->page_type;
$output .= views_theme($plugins[$view_type]['theme'], $view, $nodes);
}
$output .= views_get_textarea($view, $type, 'footer');
if ($type == 'block' && $view->block_more && $num_nodes >= $view->nodes_per_block) {
$output .= theme('views_more', $view->real_url);
}
}
else {
$output .= views_get_textarea($view, $type, 'empty');
}
if ($view->use_pager) {
$output .= theme('pager', '', $limit, $view->use_pager);
}
if ($output) {
$output = "$output\n";
}
return $output;
}
Ca marche, les div que je voulais supprimer ne sont plus là, mais j'ai une erreur en haut de ma vue :
warning: Missing argument 3 for phptemplate_views_view_list() in D:\Taf\Mysociety\www\sites\mysite.com\themes\mytheme\template.php on line 118.
La ligne 118 c'est la ligne ou il y a ca : function phptemplate_views_view_list($view, $nodes, $type) { ... }
Un petit coup de pouce serait le bienvenue ^^
Merci