Ich weiß nicht warum, aber Views fügt den von ihm erstellten Blöcken keine "vom Menschen lesbaren" CSS-Klassennamen (wie z. B. den Computernamen der Ansicht) hinzu ( es fügt seine Klassen nur dann dem generierten Teil "content" hinzu, wenn Hinzufügen von Klassen zum Teil " CSS-Klasse " im Ansichtseditor (siehe Screenshots unten!)).
Es fügt nur die üblichen block block-views
und möglicherweise contextual-links-region
CSS-Klassen zu den Blöcken hinzu und generiert eine eindeutige ID (keine Klasse) wie block-views-3d8f7966168beeec655c8ead69336789
folgt : (weil das Delta dieser generierte Hash-Code ist).
Es ist nicht sinnvoll, CSS-Regeln für diese Klassen und IDs (wie .block-views-3d8f7966168beeec655c8ead69336789 { /* ... */ }
) zu schreiben , da sich diese Klassen / IDs beim Ändern des Views-Blocks ändern können.
Wie kann ich in einer Implementierung von einige benutzerdefinierte CSS-Klassen hinzufügen hook_block_view_alter()
, wenn ich diese Blöcke aufgrund ihres generierten Hash-Deltas nicht einmal identifizieren kann?
Ich will nicht verwenden Block - Klasse , weil ich es ist wie ein Overkill fühlen für nur einige Klassen Hinzufügen zu ein oder zwei Ansichten generierten Blöcke (BTW ich das Modul überprüft, und ich fühle mich SELECT css_class, module, delta FROM {block_class}
Abfrage in block_class_preprocess_block()
wie ein übertrieben, denn es überprüft alle Klassen hinzugefügt, auch wenn der Block ausgeblendet ist ...).
Also möchte ich es aus meinem eigenen Modul lösen.
BEARBEITEN
Ein Beispiel:
Meine Ansicht mit dem Computernamen und den hinzugefügten CSS-Klassen:
block--views--3d8f7966168beeec655c8ead69336789.tpl.php
Datei verwenden, und in diesem Fall bin ich an der gleichen Stelle, als hätte ich eineif($variables['block']->delta == '3d8f7966168beeec655c8ead69336789')
Bedingung in verwendethook_preprocess_block()
. Dies wollte ich vermeiden, weil ich dachte, ich könnte einen besser lesbaren Namen in meinem Haken verwenden. Was ist beispielsweise, wenn ich die Ansicht mit denselben Parametern in eine andere verschieben möchte, die vorherige lösche, aber denselben Computernamen und dieselben CSS-Klassen verwende, der generierte eindeutige Hash sich jedoch ändert? In diesem Fall verliere ich meine Änderungen.Das ist eine alte Frage, aber es gibt keine richtige Antwort. Ich bin auf das gleiche Problem gestoßen. Die Lösungen, an die ich denken konnte, waren CSS Parent Selector (der noch nicht existiert) ODER eine Drupal-Manipulation.
Ich habe einen hook_preprocess_block hinzugefügt, um allen Ansichtsblöcken, die eine CSS-Klasse definieren, eine Wrapper-CSS-Klasse hinzuzufügen. Das ist nicht trivial, also werde ich meinen Code hier einfügen. Es funktioniert möglicherweise nicht mit allen Ansichtsblöcken. Wenn Sie ein Problem mit diesem Code haben, können Sie ihn aktualisieren und Ihre eigene Version veröffentlichen.
Beispiel: Die Ansicht mit der CSS-Klasse "test" wird in einem Block mit der CSS-Klasse "test-wrapper" enthalten sein.
quelle
Zu diesem Zweck gibt es ein Modul.
Block erstklassig anzeigen
quelle
Für mich
hook_preprocess_block()
hat nicht funktioniert. (Vielleicht, weil ich den Block direkt aus einer Vorlagendatei über hinzufügen mussteviews_embed_view()
.)Mit
hook_preprocess_views_view()
einer einfachen Überprüfung auf hat$vars['view']->current_display
jedoch funktioniert:quelle
Der einfachste Weg für mich war, die Datei block.tpl.php zu duplizieren, sie umzubenennen
block--myregion.tpl.php
und dann meine Klassen darin hinzuzufügen.Siehe: Seite Themenblöcke .
quelle