Czy możliwe są zmienne przetwarzania wstępnego tylko dla niektórych bloków? Stworzyłem taką funkcję: mytheme_preprocess_block__aggregator(&$vars)
ale to nie działa.
-- EDYTOWAĆ --
Wydaje się, że zostało to naprawione w Drupal 8 https://drupal.org/node/1751194
Odpowiedzi:
Niestety nie ma takiej możliwości (podobnie jak hook_form_alter ()).
Najlepszym sposobem na to byłoby użycie zmiennych $ [„blok”] -> licytacja, aby zastosować modyfikacje tylko do bloków, które chcesz:
źródło
hook_preprocess_block_MODULE()
aniTHEME_preprocess_block_MODULE()
. W szczególny sposób obsługuje nazwy__
zawarte w nazwach funkcji motywu, gdy na przykładtheme()
jest wywoływanytheme('links__contextual__node', ...)
.$variables['block']->bid
a nie$variables['block_id']
dlatego, że „block_id” nie jest unikalny dla tego bloku.$variables['block']->delta
jeśli$variables['block']->module == 'MODULE'
Aby to potwierdzić, w Drupal 8 możesz pisać funkcje przetwarzania wstępnego dla określonych bloków. Na przykład:
Drupal 8
Ale możesz również użyć hook_preprocess_block i identyfikatora wtyczki:
Jak wspomniane przez Alexa, w Drupal 7 będziesz musiał trzymać się HOOK_preprocess_block i kontroli tożsamości:
Drupal 7
źródło
MYTHEME_preprocess_block__system_branding_block(&$vars)
działa, ani nie działaMYTHEME_preprocess_block__page_title_block(&$variables)
.mytheme_preprocess_block__{my_block_machine_name}(&$variables)
działa na D8.3