
Înțelegând hook_theme() din Drupal 7
Ce este hook_theme()?
hook_theme() funcționează ca un component fundamental în sistemul de teme Drupal 7. Acesta oferă un loc centralizat unde modulele pot defini implementările lor de teme, care pot fi apoi personalizate de alte module sau teme. Această flexibilitate permite dezvoltatorilor să modifice modul în care variabilele sunt procesate înainte de a ajunge la funcția de temă finală sau fișierul șablon.
Implementarea Funcțiilor de Temă
Implementarea de bază a unei funcții de temă urmează acest model:
theme('poll_results', array(
'raw_title' => 'title',
'results' => $results,
// Variabile adiționale după cum este necesar
));
Înțelegerea Array-urilor de Redare
În Drupal 7, array-urile de redare oferă o modalitate structurată de a construi output-ul. Iată cum să creați unul:
$build = array(
'#theme' => 'poll_choices',
'#form' => $form
);
Cheia '#theme' îi spune lui Drupal ce implementare de temă să folosească, în timp ce alte chei furnizează datele necesare pentru redare. Această abordare oferă o flexibilitate și o întreținere mai bună comparativ cu output-ul HTML direct.
## Definirea Implementărilor de Temă
Când definiți o implementare de temă care folosește un formular, ați structura-o astfel:
$hooks['poll_vote'] = array(
'template' => 'poll-vote',
'render element' => 'form',
);
Să descompunem asta:
- 'template': Specifică numele fișierului șablon (fără extensia .tpl.php)
- 'render element': Indică ce variabilă conține structura principală de date (în acest caz, un formular)
Funcții de Temă vs Fișiere Șablon
Aveți două opțiuni pentru implementarea output-ului de temă:
1. Funcții de Temă:
function theme_poll_results($variables) {
$raw_title = $variables['raw_title'];
$results = $variables['results'];
// Procesează și returnează output-ul tematizat
return $output;
}
2. Fișiere Șablon (poll-results.tpl.php):
<?php
// Variabilele sunt extrase automat din $variables
// Deci $raw_title și $results sunt direct disponibile
?>
<div class="poll-results">
<h3><?php print $raw_title; ?></h3>
<!-- Output tematizat adițional -->
</div>
Când să Folosiți Fiecare Abordare:
Fișierele Șablon sunt preferate când:
- Aveți un output HTML substanțial
- Doriți să separați markup-ul de logica
- Structura de output trebuie să fie ușor modificată de dezvoltatorii de teme
Funcțiile de Temă sunt mai bune când:
- Output-ul este relativ simplu
- Aveți nevoie de logică complexă pentru a genera output-ul
- Formatul de output variază semnificativ în funcție de condiții
Practici de Bază
1. Documentați întotdeauna variabilele:
/**
* Implementează hook_theme().
*/
function mymodule_theme() {
return array(
'poll_results' => array(
'variables' => array(
'raw_title' => NULL,
'results' => NULL,
),
),
);
}
2. Folosiți nume de variabile semnificative care descriu scopul lor
3. Furnizați valori implicite atunci când este potrivit
4. Luați în considerare funcțiile de preprocesare pentru logica complexă
5. Păstrați fișierele șablon concentrate doar pe logica de prezentare
Această abordare structurată a temelor asigură că codul dvs. rămâne întreținut și permite o flexibilitate maximă în personalizarea output-ului. Amintiți-vă că practicile bune de tematizare contribuie semnificativ la sustenabilitatea pe termen lung a proiectului dvs. Drupal.
