So fügen Sie einer mit Ansichten erstellten Tabelle eine CSS-Klasse hinzu

7

Ich möchte einer Tabelle, die mithilfe von Ansichten erstellt wird, eine CSS-Klasse hinzufügen. Ich habe versucht, "views-view-table.php" in meinem benutzerdefinierten Design zu überschreiben, aber das scheint nicht zu funktionieren. In "views-view-table.php" habe ich die Zeile " <table <?php if ($classes) { print 'class="'. $classes . '" '; } ?><?php print $attributes; ?>>" durch " <table class="responsive">" ersetzt und dann den Cache geleert , aber es hat nicht funktioniert. Kann jemand helfen. Danke im Voraus.

Maaz Siddiqui
quelle

Antworten:

3

Dies ist ein alter Beitrag, aber ich würde gerne ein paar Lösungen vorschlagen.

Erstens, und dies beantwortet Ihre Frage möglicherweise nicht direkt, aber Sie können die CSS-Selektoren ändern, mit denen Sie auf die Tabelle abzielen.

Also, anstatt zu verwenden table.yourclass, könnten Sie verwenden .yourclass table. Dies kann erreicht werden, indem im Abschnitt " Erweitert" eine benutzerdefinierte Klasse für die gesamte Ansicht festgelegt wird.

Dies funktioniert natürlich nicht, wenn Sie versuchen, Klassen direkt zum Element hinzuzufügen, wie dies möglicherweise mit Bootstrap erforderlich ist, d table.table.table-striped. H.

Mit der zweiten Lösung können Sie allen Ihren Tabellen dieselben Klassen hinzufügen. Fügen Sie in Ihrer template.phpDatei Folgendes hinzu:

function THEME_preprocess_views_view_table(&$vars) 
{
    $vars['classes_array'][] = 'table table-striped';
}

Wenn Sie auf eine bestimmte Tabelle abzielen müssen, können Sie auch zuerst die $varsVariable überprüfen , um den Namen der aufgerufenen Ansicht und Anzeige zu ermitteln, und Ihre Klassen nur auf diejenigen anwenden, auf die Sie abzielen möchten. Ich habe nicht überprüft, aber es ist wahrscheinlich in so etwas gefunden $vars['view']->current_display.

Schließlich ist anzumerken, dass Views tatsächlich benutzerdefinierte Klassen in der Tabelle unterstützt. Die Variablen werden in den Vorlagendateien aufgerufen, es gibt einfach keine Option dafür in der GUI der Ansichten. Dies ist meiner Meinung nach ein Versehen, aber die Entwickler des Moduls scheinen nicht zu planen, es zu beheben. Das sei gesagt, ein Patch für sie tut exist ( direkter Link ).

Shelton
quelle
2

Sie sollten hierfür keine Vorlagendatei benötigen. Unter der Registerkarte Erweitert> Andere in Ihrer Ansicht gibt es eine CSS-Klassenoption. Sie können es dort hinzufügen und dann die entsprechenden Selektoren zu Ihrem CSS verwenden. Sie können hook_preprocess_views_view()die Klasse auch zur $classesVariablen hinzufügen, die in der Vorlage verwendet wird.

sareed
quelle
Dies fügt der Ansicht selbst Klassen hinzu, nicht die Tabelle, die von der Ansicht generiert wird, wie das OP fragt
Undersound
0

Die Datei, die Sie überschreiben möchten, sollte "views-view-table.tpl.php" sein. Sie haben die ".tpl" vergessen. Verwenden Sie die Option "Erweitert -> Thema: Informationen" auf der Seite "Ansichtskonfiguration", um alle verfügbaren Dateien anzuzeigen, die Sie überschreiben können.

Ciprian
quelle
0

Sie thematisieren die Ansicht falsch. Führen Sie die folgenden Schritte aus, um das Thema anzuzeigen:

  1. Wechseln Sie in Ihrer Ansicht zur Registerkarte Erweitert.
  2. Klicken Sie auf Thema: Informationen.
  3. Erstellen Sie die Datei in Ihrem Themenvorlagenverzeichnis mit dem Namen, z. "views-view-table - abc.tpl.php", wenn Ihr Ansichtsname 'abc' lautet, dh 'abc' durch den gewünschten Ansichtsnamen ersetzen.
  4. Klicken Sie auf die Schaltfläche "Vorlagendatei erneut scannen" und prüfen Sie, ob der Name der von Ihnen erstellten Datei fett gedruckt wurde oder nicht. Wenn ja, wurde Ihre Ansicht thematisiert. Wenn nicht, ist der Dateiname möglicherweise nicht korrekt. Weitere Informationen finden Sie unter https://drupal.org/node/352970
Astha Chauhan
quelle
Entschuldigung, es war nur ein Tippfehler. Ich überschreibe "views-view-table.tpl.php". Der Name ist bereits fett gedruckt, noch bevor ich auf "Vorlagendatei erneut scannen" klicke. Ich habe gerade diese Datei (views-view-table.tpl.php) von "modules / views / theme / views-view-table.tpl.php" in "mytheme / templates / views-view-table.tpl.php" kopiert. und nahm die Änderungen wie in der Frage angegeben. Aber es hat nicht geholfen. Fehlt mir etwas?
Maaz Siddiqui
Ich bin in der Lage, .tpl.php-Dateien für bestimmte Tabellen wie "views-view-table - abc.tpl.php" zu überschreiben / zu erstellen, und es funktioniert hervorragend. Aber ich kann "views-view-table.tpl.php" nicht mit demselben Verfahren überschreiben. Ich weiß nicht, was falsch läuft.
Maaz Siddiqui