Saya tidak tahu mengapa, tetapi Tampilan tidak menambahkan nama kelas CSS "yang dapat dibaca manusia" (seperti misalnya nama mesin tampilan) ke blok yang dibuatnya ( itu hanya menambahkan kelasnya ke bagian "konten" yang dihasilkan saat menambahkan kelas ke bagian " kelas CSS " di editor tampilan (lihat tangkapan layar di bawah!)).
Ini hanya menambahkan kelas CSS yang biasa block block-views
, dan mungkin contextual-links-region
ke blok, dan menghasilkan id unik (bukan kelas) seperti ini: block-views-3d8f7966168beeec655c8ead69336789
(karena delta-nya adalah kode hash yang dihasilkan ini).
Tidak masuk akal untuk menulis aturan CSS untuk kelas dan id ini (seperti .block-views-3d8f7966168beeec655c8ead69336789 { /* ... */ }
), karena kelas / id ini dapat berubah ketika mengubah blok Views.
Bagaimana saya bisa menambahkan beberapa kelas CSS khusus dalam implementasi hook_block_view_alter()
, jika saya bahkan tidak dapat mengidentifikasi blok-blok ini karena delta hash yang dihasilkan?
Saya tidak ingin menggunakan Block Class , karena saya merasa itu seperti kerja keras untuk hanya menambahkan beberapa kelas ke satu atau dua blok yang dihasilkan Views (BTW saya memeriksa modul, dan saya merasa SELECT css_class, module, delta FROM {block_class}
permintaan block_class_preprocess_block()
seperti berlebihan, karena memeriksa SEMUA menambahkan kelas, bahkan jika bloknya disembunyikan ...).
Jadi saya ingin menyelesaikannya dari modul saya sendiri.
EDIT
Sebuah contoh:
Pandangan saya dengan nama mesin dan kelas CSS yang ditambahkan:
block--views--3d8f7966168beeec655c8ead69336789.tpl.php
file, dan dalam hal ini, saya pada titik yang sama seolah-olah saya menggunakanif($variables['block']->delta == '3d8f7966168beeec655c8ead69336789')
kondisi dalamhook_preprocess_block()
. Inilah yang ingin saya hindari, karena saya pikir saya bisa menggunakan nama yang lebih bisa dibaca manusia di kait saya. Misalnya, bagaimana jika saya ingin memindahkan tampilan ke yang lain dengan parameter yang sama, saya menghapus yang sebelumnya, tetapi menggunakan nama mesin dan kelas CSS yang sama, tetapi hash unik yang dihasilkan berubah? Dalam hal ini, saya kehilangan modifikasi saya.Itu pertanyaan lama, tetapi tidak ada jawaban yang tepat. Saya menemukan masalah yang sama. Solusi yang dapat saya pikirkan adalah pemilih induk CSS (yang belum ada) ATAU beberapa manipulasi Drupal.
Saya menambahkan hook_preprocess_block untuk menambahkan kelas CSS wrapper ke semua blok tampilan yang mendefinisikan kelas CSS. Itu tidak sepele jadi saya akan meletakkan kode saya di sini. Ini mungkin tidak bekerja dengan semua blok tampilan, jika Anda memiliki masalah dengan kode ini, silakan memperbaruinya dan memposting versi Anda sendiri.
Contoh: Tampilan dengan kelas CSS "test" akan terkandung dalam sebuah blok dengan kelas CSS "test-wrapper".
sumber
Ada modul untuk tujuan ini.
Lihat blok kelas atas
sumber
Bagi saya
hook_preprocess_block()
tidak bekerja. (Mungkin karena saya harus menambahkan blok langsung dari file template viaviews_embed_view()
.)Namun,
hook_preprocess_views_view()
dengan cek sederhana untuk$vars['view']->current_display
berhasil:sumber
Cara termudah bagi saya adalah menduplikasi file block.tpl.php, ganti nama itu
block--myregion.tpl.php
dan kemudian tambahkan kelas saya di dalamnya.Lihat: Halaman blok Mereka .
sumber