it-swarm.com.de

Wie füge ich einer Zeile eine Klasse hinzu, die auf dem Wert eines Felds in dieser Zeile basiert?

Ich habe eine Ansicht mit einer Seitenanzeige, die eine Liste von Ereignissen zeigt. Ich möchte den Zeilen der Ereignisse in der Vergangenheit eine Klasse hinzufügen.

Das Problem, das ich habe, ist, dass views-view-list.tpl.php keinen Zugriff auf die Werte von Feldern in den Zeilen hat.

Und ich kann views-view-fields.tpl.php verwenden, um das Datumsfeld einer Zeile zu überprüfen und jedes Feld in dieser Zeile mit einem div oder span zu versehen, je nachdem, ob das Datumsfeld in der Vergangenheit liegt oder nicht.

Ich kann einfach nicht herausfinden, wie man den Wert eines Feldes innerhalb einer Zeile verwendet, um die gesamte Zeile in etwas mit einer Klasse zu verpacken.

4
user5035

Im Folgenden wird die Klasse 'Hallo' zum li-Tag hinzugefügt. Ich habe eine Ansicht mit dem Maschinennamen 'Datumsangaben' und dem Anzeigenamen 'Seite' verwendet. Das Zeitfeld ist die vom Knoten erstellte Zeit. Sie können Devel einfach installieren und die Anweisung dpm ($ vars) auskommentieren, um das zu erhalten, was Sie benötigen. Ich habe auch die bedingte Logik Ihnen überlassen.

Fügen Sie dies in die Datei template.php Ihres Themas ein:

function MYTHEME_preprocess_views_view_list(&$vars) {
  if ($vars['view']->name == 'dates' && $vars['view']->current_display == "page") {
    // dpm($vars); //uncomment to see variables
    foreach($vars['view']->result as $key => $value){
      $timestamp = $value->node_created;
      if ($timestamp) { // add whatever conditional logic you need here
        $vars['classes_array'][$key] .= ' hello'; // note the space in front of class
      }
    }
  }
}

Eine alternative Methode lautet wie folgt:

Fügen Sie dies in die Datei template.php Ihres Themas ein:

function MYTHEME_preprocess_views_view_fields(&$vars) {
  if ($vars['view']->name == 'dates' && $vars['view']->current_display == "page") {
    $timestamp = $vars['row']->node_created;
    if ($timestamp < strtotime('now')) {
      $vars['classes_array'][] = 'bye';
    }
  }
}

und verwenden Sie diese Datei views-view-fields - VIEWNAME.tpl.php:

<div class="<?php print $classes;?>">
<?php foreach ($fields as $id => $field): ?>
  <?php if (!empty($field->separator)): ?>
    <?php print $field->separator; ?>
  <?php endif; ?>

  <?php print $field->wrapper_prefix; ?>
  <?php print $field->label_html; ?>
  <?php print $field->content; ?>
  <?php print $field->wrapper_suffix; ?>
<?php endforeach; ?>
</div>
6
J. Reynolds