Bonjour à tous,
J’ai une Vue de type Page avec un Affichage par Champs.
Je voudrais mettre plusieurs des champs de chaque résultat entre des
<
div> pour les styler ensemble. Les autres champs peuvent être affichés normalement.
De plus, certains de ces champs disparaissent quand ils sont vides.
Comme vous y prendriez-vous pour regrouper ces champs entre des div ?
Avec les templates de Vues ?
A ce que j’y comprends, Vues ne permet de styler qu’un champs à la fois (sur le modèle views-view-field—nomduchamps.tpl.php).
Comment je dois m’y prendre pour récupérer plusieurs champs et les styler ensemble ?
- Vous devez vous identifier ou créer un compte pour écrire des commentaires

2 solutions :
ou
-dans les templates de view, soit en sortie de ligne (row) soit pour chaque champ
voici un exemple pour le style de ligne ou j’affiche des div en fonction des champs appelés
<?php// $Id: views-view-fields.tpl.php,v 1.6 2008/09/24 22:48:21 merlinofchaos Exp $
/**
* @file views-view-fields.tpl.php
* Default simple view template to all the fields as a row.
*
* - $view: The view in use.
* - $fields: an array of $field objects. Each one contains:
* - $field->content: The output of the field.
* - $field->raw: The raw data for the field, if it exists. This is NOT output safe.
* - $field->class: The safe class id to use.
* - $field->handler: The Views field handler object controlling this field. Do not use
* var_export to dump this object, as it can't handle the recursion.
* - $field->inline: Whether or not the field should be inline.
* - $field->inline_html: either div or span based on the above flag.
* - $field->separator: an optional separator that may appear before a field.
* - $row: The raw result object from the query, with all data it fetched.
*
* @ingroup views_templates
*/
?>
<?phpforeach ($fields as $id => $field):
?>
<?phpif (!empty($field->separator)):
?>
<?phpprint $field->separator;
?>
<?phpendif;
?>
<?php
if($field->class=="field-profil-logo-fid"){
print '<div class="bloc-logo">';
}
?>
<?php
if($field->class=="title"){
print '<div class="bloc-adresse">';
}
?>
<?php
if($field->class=="nothing-1"){
print '<div class="bloc-tel">';
}
?>
<
<?phpprint $field->inline_html;
?>
class=»views-field-
<?phpprint $field->class;
?>
«>
<?phpif ($field->label):
?>
<?phpprint $field->label;
?>
:
<?phpendif;
?>
<?php
// $field->element_type is either SPAN or DIV depending upon whether or not
// the field is a 'block' element type or 'inline' element type.
?>
<
<?phpprint $field->element_type;
?>
class=»field-content»>
<?phpprint $field->content;
?>
</
<?phpprint $field->element_type;
?>
>
</
<?phpprint $field->inline_html;
?>
>
<?php
if($field->class=="field-profil-logo-fid" || $field->class=="nothing" || $field->class=="nothing-1"){
print '</div><!-- /bloc logo-->';
}
?>
<?phpendforeach;
?>
selinav
1233
Super, merci. Tu m’a mis sur la piste.
Or donc, voici ma recette avec Views.
Ce je veux plus précisément : une vue qui affiche une liste de teaser. Dans ces teaser des icônes signalent s’il y a du contenu vidéo, audio et des pièces jointes. Je veux que ces icônes se retrouvent dans une div avec la date de parution pour que tout tienne ensemble et soit facile à styler.
Pour ça, dans ma Vue avec Affichage par Champ, j’appelle mes champs CCK.
Par exemple, pour la vidéo, je paramètre le champ de la manière suivante.
[x] Exclure de l'affichage[x] Rewrite the output of this field
<span class="icone_video">Video</span>
[x] Hide if empty
[x] Grouper plusieurs valeurs Afficher [1] valeur(s) en commençant à [0]
[x] Aucune étiquette
Format: Générique
Même chose pour les autres.
Après,je paramètre le champ «Date de parution» qui se trouve à la suite des trois autres champs pour avoir accès à leur modèle de remplacement.
[x] Rewrite the output of this field<div class="metadata">
<span>[created]</span>
<span>[field_video_embed]</span>
<span>[field_mp3_fid]</span>
<span>[field_pieces__fid] </span>
</div>
Je me retrouve avec tous mes champs dans un DIV, tous mes champs sont transformés un mot précis (Audio, Vidéo, PDF).
Fantastique outil que Views, et sans un ligne de code.
__mathieu__
16