Nie wiem dlaczego, ale widoki nie dodają nazw klas CSS „czytelnych dla człowieka” (takich jak np. Nazwa komputera widoku) do tworzonych bloków ( dodaje klasy tylko do wygenerowanej części „treści”, gdy dodawanie klas do części „ Klasa CSS ” w edytorze widoków (patrz zrzuty ekranu poniżej!)).
Dodaje tylko zwykłe block block-views
i prawdopodobnie contextual-links-region
klasy CSS do bloku (bloków) i generuje unikalny identyfikator (nie klasy), taki jak ten: block-views-3d8f7966168beeec655c8ead69336789
(ponieważ jego delta to wygenerowany kod skrótu).
Nie ma sensu pisać reguł CSS dla tych klas i identyfikatorów (jak .block-views-3d8f7966168beeec655c8ead69336789 { /* ... */ }
), ponieważ te klasy / identyfikatory mogą ulec zmianie podczas zmiany bloku Widoki.
Jak mogę dodać niektóre niestandardowe klasy CSS w implementacji hook_block_view_alter()
, jeśli nie mogę nawet zidentyfikować tych bloków z powodu ich wygenerowanej delty skrótu?
Nie chcę używać klasy bloku , ponieważ uważam, że to jak przesada w dodawaniu niektórych klas do jednego lub dwóch bloków generowanych przez widoki (BTW sprawdziłem moduł i czuję, że SELECT css_class, module, delta FROM {block_class}
zapytanie jest block_class_preprocess_block()
jak przesada, ponieważ sprawdza WSZYSTKIE dodane klasy, nawet jeśli blok jest ukryty ...).
Chciałbym więc rozwiązać to z własnego modułu.
EDYTOWAĆ
Przykład:
block--views--3d8f7966168beeec655c8ead69336789.tpl.php
pliku, aw tym przypadku jestem w tym samym momencie, jak gdybym użyłif($variables['block']->delta == '3d8f7966168beeec655c8ead69336789')
warunkuhook_preprocess_block()
. Właśnie tego chciałem uniknąć, ponieważ myślałem, że mogę użyć w haczyku bardziej czytelnej dla człowieka nazwy. Na przykład, jeśli chcę przenieść widok do innego z tymi samymi parametrami, usuwam poprzedni, ale używam tej samej nazwy komputera i klas CSS, ale wygenerowany unikatowy skrót zmienia się? W takim przypadku tracę modyfikacje.To stare pytanie, ale nie ma właściwej odpowiedzi. Natknąłem się na ten sam problem. Rozwiązaniami, o których mogłem pomyśleć, był selektor nadrzędny CSS (który jeszcze nie istnieje) LUB pewne manipulacje Drupalem.
Dodałem hook_preprocess_block, aby dodać opakowującą klasę CSS do wszystkich bloków widoku, które definiują klasę CSS. To nie jest trywialne, więc umieszczę tutaj mój kod. Może nie działać ze wszystkimi blokami widoku, jeśli masz problem z tym kodem, możesz go zaktualizować i opublikować własną wersję.
Przykład: Widok z klasą CSS „test” będzie zawarty w bloku z klasą CSS „test-wrapper”.
źródło
Do tego celu służy moduł.
Zobacz blok najwyższej klasy
źródło
Dla mnie
hook_preprocess_block()
nie działało. (Może dlatego, że musiałem dodać blok bezpośrednio z pliku szablonu przezviews_embed_view()
.)Jednak
hook_preprocess_views_view()
przy prostym sprawdzeniu,$vars['view']->current_display
czy zadziałało:źródło
Najprostszym sposobem było zduplikowanie pliku block.tpl.php, zmiana jego nazwy,
block--myregion.tpl.php
a następnie dodanie w nim moich klas.Zobacz: strona Bloki tematyczne .
źródło