Modulul PHP Filter a fost eliminat din nucleul Drupal, deoarece utilizarea necorespunzătoare a acestuia ar cauza probleme de securitate. Problemele de securitate au fost atenuate de faptul că numai utilizatorii cu utilizați PHP pentru setări permisiunea ar putea folosi filtrul de intrare, dar asta nu igienizează codul introdus de editori. Dacă atunci permisiunea a fost acordată necondiționat fiecărui editor, este ca și cum acea permisiune nu ar exista.
Modulul de bază Drupal este acum disponibil ca PHP modul, dar nu l-aș folosi.
Aș prefera să fac ce sugeră Hudri, și folosiți Filtru de jetoane modul. Cu acel modul și adăugând filtrul său de intrare la formatul de intrare utilizat pentru noduri, un utilizator ar putea introduce un simbol care ar fi înlocuit cu valoarea acestuia. În loc de fragmente PHP, aș implementa token-uri personalizate care sunt înlocuite cu valoarea returnată din codul PHP executat în hook_tokens()
, unul dintre cârligele necesare modulelor care doresc să implementeze jetoane personalizate.
funcția mymodule_token_info() {
$tip = [
'nume' => t('Jetoane personalizate'),
'description' => t('Jetoane personalizate de utilizat în câmpul corpului nodului.'),
];
// Jetoane globale personalizate.
$custom['custom01'] = [
'nume' => t("Personalizat 01"),
];
$custom['custom02'] = [
'nume' => t("Personalizat 02"),
];
întoarcere [
'tipuri' => [
'personalizat' => $type,
],
'jetoane' => [
'personalizat' => $personalizat,
],
];
}
funcția mymodule_tokens($tip, $tokens, array $date, array $opțiuni, BubbleableMetadata $bubbleable_metadata) {
$inlocuiri = [];
if ($tip == 'personalizat') {
foreach ($tokens ca $name => $original) {
dacă ($nume == 'personalizat01') {
$replacements[$original] = // Setați valoarea token-ului custom01.
}
elseif ($nume == 'personalizat02') {
$replacements[$original] = // Setați valoarea token-ului custom02.
}
}
}
returneaza $inlocuiri;
}
hook_tokens()
ar putea returna, de asemenea, marcajul HTML folosit pentru câmpul corpul nodului. $bubbleable_metadata
poate fi folosit pentru a adăuga dependențe de cache.
Această metodă este mai sigură, deoarece nu permite utilizatorilor să introducă cod PHP arbitrar care, potențial, ar putea schimba și parola pentru orice cont de utilizator, șterge tot conținutul site-ului sau trimite informații utilizatorilor către site-uri externe.
Chiar dacă numai utilizatorilor de încredere li s-a permis să utilizeze filtrul de intrare PHP, există întotdeauna șanse ca codul introdus să cauzeze probleme.