Comment utiliser une classe div pour encapsuler certains champs sélectionnés d'une vue de vues de grille

9

Je suis passé par là:

mais je ne comprends pas comment utiliser une classe div pour encapsuler certains champs sélectionnés d'une vue de vues de grille. Dans mon cas, je veux envelopper trois champs d'une vue dans une classe div comme l'image montre ci-dessous:
entrez la description de l'image ici

rakibtg
la source
Qu'entendez-vous par div class? Voulez-vous juste dire une divbalise normale ?
Beebee

Réponses:

11

C'est vraiment simple en utilisant les remplacements de champs.

Tout d'abord, définissez les champs (author) User: Pictureet (author) User: Namesur "Exclure de l'affichage".

Ouvrez ensuite les paramètres du Content: Post datechamp et ouvrez le jeu de champs "Réécrire les résultats".

Cochez "Réécrire la sortie de ce champ". Cela révélera un autre jeu de champs "Modèles de remplacement" qui devrait vous montrer les jetons pour tous les champs au-dessus du champ actuel. Tout ce que vous devez faire est de mettre un <div>wrapper dans la zone de texte et de copier les jetons que vous souhaitez entre les balises div.

entrez la description de l'image ici

Abeille
la source
1
Consultez également ce message en utilisant la même méthode mediacurrent.com/blog/ultimate-markup-control-in-views
Andrew Welch
3

vous devez utiliser hook_views_pre_render (& $ views) ou theme_process_views_view_field ()

function YOUR_THEME_preprocess_views_view_fields(&$vars) {

  if ($vars['view']->name == 'view_name') {

    foreach( $vars['view']->result as $key => $value) { 
      $add_start_div = '<div class="add_div">';
      $markup_for_field_name_1 = $value->field_name1[0]['rendered']['#markup'] ; 
      $value->field_name1[0]['rendered']['#markup'] = $add_start_div . $markup_for_field_name_1;
      $markup_for_field_name_3 = $value->field_name3[0]['rendered']['#markup'];
      $add_end_div = '</div>';
      $value->field_name3[0]['rendered']['#markup'] = $value->field_name3[0]['rendered']['#markup'] . $add_end_div;
    }
  }
}
harshal
la source
manque quelques fermetures}}
Andrew Welch
2

Créez un modèle pour la sortie de style de lignes, par exemple: vues-champs-vue - frontpage-promu-news-story - block.tpl.php. Regardez dans les vues-> avancées-> thèmes pour les options. Copiez et collez le nom de la spécificité du modèle souhaité et créez un fichier avec ce nom, puis exécutez «rescan» pour que Drupal trouve le nouveau modèle.

Ensuite, faites quelque chose comme:

<?php
$field_vals = [];
foreach($fields as $id => $field){
    $field_vals[$id]= $field->content;
}
?>
<!-- layout fields -->
<div class="promoted-news-story">
<!-- image, title, date, body, link -->
    <div class="promoted-news-story__image-wrap">
        <?php print $field_vals['field_standard_header_image'];?>
    </div>
    <div class="promoted-news-story__content-wrap">
        <h2><?php print $field_vals['title'];?></h2>
        <?php print $field_vals['field_news_date'];?>
        <?php print $field_vals['body'];?>
        <?php print $field_vals['view_node'];?>
    </div>
</div>
Andrew Welch
la source