View > problème de theming

Information importante

En raison d'un grand nombre d'inscriptions de spammers sur notre site, polluant sans relache notre forum, nous suspendons la création de compte via le formulaire de "sign up".

Il est néanmoins toujours possible de devenir adhérent•e en faisant la demande sur cette page, rubrique "Inscription" : https://www.drupal.fr/contact


De plus, le forum est désormais "interdit en écriture". Il n'est plus autorisé d'y écrire un sujet/billet/commentaire.

Pour contacter la communauté, merci de rejoindre le slack "drupalfrance".

Si vous voulez contacter le bureau de l'association, utilisez le formulaire disponible ici, ou envoyez-nous un DM sur twitter.

Bonjour à tous,

Je rencontre un problème pour styler ma view. J'ai utilisé le "theme wizard" et il m'a générer du code autommatiquement que j'ai placé aux bons endroits, et ca marche. Cependant, j'ai encore des <div> indésirable et je ne sais pas comment les enlever.

voici mon code :

dans template.php

/**
* views template to output a view.
* This code was generated by the views theming wizard
* Date: jeu, 05/04/2007 - 14:44
* View: en_actualite
*
* This function goes in your template.php file
*/
function phptemplate_views_view_list_en_actualite($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-en_actualite', $vars);
  }
  if ($items) {
    return theme('item_list', $items);
  }
}

Dans views-list-fr_actualite.tpl.php

<?php
/**
 * views template to output one 'row' of a view.
 * This code was generated by the views theming wizard
 * Date: jeu, 05/04/2007 - 14:21
 * View: fr_actualite
 *
 * Variables available:
 * $view -- the entire view object. Important parts of this object are
 *   fr_actualite, .
 * $view_type -- The type of the view. Probably 'page' or 'block' but could
 *   also be 'embed' or other string passed in from a custom view creator.
 * $node -- the raw data. This is not a real node object, but will contain
 *   the nid as well as other support fields that might be necessary.
 * $count -- the current row in the view (not TOTAL but for this page) starting
 *   from 0.
 * $stripe -- 'odd' or 'even', alternating. * $title -- Montre l titre du noeud
 * $title_label -- The assigned label for $title
 * $created -- Montre l'heure de publication du noeud.
 * $created_label -- The assigned label for $created
 * $field_image_fid --
 * $field_image_fid_label -- The assigned label for $field_image_fid
 * $body -- Montrer le contenu principal
 * $body_label -- The assigned label for $body
 * $link -- This will create a link to the node; fill the option field with the text for the link. If you want titles that link to the node, use Node: Title instead.
 * $link_label -- The assigned label for $link
 *
 * This function goes in your views-list-fr_actualite.tpl.php file
 */
 

 //now we add the stylesheet...
  drupal_add_css(path_to_theme() .'/views.css');
 
 
?>

  <?php print $title_label ?>

  <?php print $title?>

  <?php print $created_label ?>

  <?php print $created?>

  <?php print $field_image_fid_label ?>

  <?php print $field_image_fid?>

  <?php print $body_label ?>

  <?php print $body?>

  <?php print $link_label ?>

  <?php print $link?>

et voila le code source de me page au niveaux de la vue :

<div class="content">

    <p><div class='view view-fr-actualite'><div class='view-content view-content-fr-actualite'><div class="item-list"><ul><li>
 
  <a href="/fr/test">mon Titre</a>
 
  28/03/2007 - 15:36
 
  <img src="monimage.jpg" alt="3" title="3" width="125" height="100" />
 
  <p>Lorem Ipsum is simply dummy</p>

 
  <a href="/fr/test">[En savoir plus]</a>

</li>

j'aimerais donc supprimer les div "

<

div class='view view-fr-actualite'>", "

<

div class='view-content view-content-fr-actualite'>" et "

<

div class="item-list">" mais je ne vois pas comment faire cela.

Est-ce possible ? si oui, comment faire ?

D'avance merci !

Version de Drupal : 

Il est me semble-t'il natif dans le package views

Voilà ce que j'ai dans views/views_theme_wizard.info

; $Id: views_theme_wizard.info,v 1.3.2.3 2007/01/19 00:22:46 merlinofchaos Exp $
name = Views Theme Wizard
description = The views theme wizard helps create stub theming for views.
version = "$Name: DRUPAL-5--1-5 $"
package = Views
dependencies = views

; Information added by drupal.org packaging script on 2007-01-22
version = "5.x-1.5"
project = "views"

Accès à partir de l'administration des Views par le menu (lien theme Wizard)
http://www.tonsite.com/admin/build/views/wizard

hummm....je ne trouve pas cela. c'est parce que j'ai la 4.7...
j'ai mis les fichiers du theme wizard dans mon module view 4.7. j'active le module, mais j'ai pas wizard dans les menu.
dommage, ca m'interresse ce truc.

Oui, j'ai le theme wizard par défaut avec la dernière version de view sur une drupal 5. C'est une case a cocher dans module > view

Pour ce qui est du theming, oui, j'ai pu design comme je voulais mais j'aurais voulu faire l'économie des div en trop, étant donné que je suis assez pointilleux sur le XHTML et la sémantique. Et j'aurais aimé résoudre ce problème de la facon la plus "propre" possible, comme ca ca me fait apprendre le fonctionnement de drupal par la même occasion.

Ce ne sont pas les classes qui me gênent, ce sont les div en trop. les class je suis d'accord sur le fait qu'elles sont bien par défaut et si j'en ai pas besoin, ben je ne les utilise pas.

Par contre les div c'est plus génant, ils parasitent la structure de la page, et cela peut influer sur la qualité du référencement ou encore l'accessibilité du site...

Par contre les div c'est plus génant, ils parasitent la structure de la page, et cela peut influer sur la qualité du référencement ou encore l'accessibilité du site...
Comment ca ?
Cote referencement, je ne vois pas trop en quoi ca le generait car les moteurs de recherches (a ma connaissance) n'ont rien a faire des balises "div" qui sont la principalement pour faire du positionnement/design de contenu. Bien sur tu peux mettre du formattage de texte mais la encore d'un point de vue semantique ta page ne devrait pas se fier a du CSS pour l'importance des termes.

C'est bien pour cela que Drupal fait un usage intensif des h1, h2 & co...

De meme, niveau accessibilite, la encore, tu peux matter ta page avec Lynx ou avec Opera qui propose ce genre de mode d'accessibilite et si elle est construite correctement (h1 et bla bla), le navigateur se fiche totalement qu'il y est un million de div qui trainent ds ton code ;)

My 2 cts...

Disons que la structure n'est pas optimale, quand un div ne sert à rien je préfers l'enlever. On m'a suffisament sensibilisé contre la "divite aigue" pendant mes études pour que j'en sois parano.

Et c'est également une bonne excuse pour comprendre un peu plus le fonctionnement de Drupal, le système phptemplate sensé être révolutionnaire et ultra puissant, je voulais apprendre à l'utiliser dans ses moindre retranchement.

C'est sur que les 2 div en trop sur mon site ne vont pas me faire perdre 1000000 places sur les moteurs de recherche mais ils n'apportent rien non plus.

Pire, il y a tellement de div que cela me génère une margin indésirable vu que mes éléments sont positionnés en float. Obligé de mettre un overflow:hidden pour enlever cette margin (avec tous les problèmes que cela implique...)

Donc ce n'est pas dramatique, mais c'était une bonne occaz de comprendre pourquoi la manipulation que j'ai faite ne marchait pas au moment ou je pensais avoir compris le fonctionnement de phptemplate...