En aquest article t'explique com m'he creat un mòdul personalitzat 'custom' de zero a Drupal 11 que crea un Block amb frases aleatòries de la pel·lícula "El reino de los cielos" (en anglès, el títol orginal, va ser Kingdom of Heaven) del director Ridley Scott, estrenada a l'any 2005.
A versions anteriors de Drupal 10, era comú instal·lar el mòdul PHP Filter, però des de fa anys es considera una mala pràctica i la comunitat de Drupal l'ha anat abandonant. Per a Drupal 10 i 11, ja no es manté oficialment perquè permetre PHP a la base de dades és un risc de seguretat enorme.
Aleshores, el que he fet és un mòdul de zero, que pot executar PHP des d'un block, i sóc jo l'únic que controla eixe PHP.
Crearem el mòdul /modules/custom/frase_aleatoria
Dins crearem el fitxer frase_aleatoria.info.yml amb el següent contingut:
name: 'Frase Aleatòria'
type: module
description: 'Mostra frases del Reino de los Cielos.'
package: Custom
core_version_requirement: ^9 || ^10 || ^11
Crearem l'abre de directoris següent: /modules/custon/frase_aleatoria/src/Plugin/Block/ (important respectar les majúscules)
I ara, dins del directori Block crearem el fitxer FraseBlock.php amb el següent contingut:
<?php
namespace Drupal\frase_aleatoria\Plugin\Block;
use Drupal\Core\Block\BlockBase;
/**
* @Block(
* id = "frase_aleatoria_block",
* admin_label = @Translation("Bloc de Frases Aleat\xc3\xb2ries"),
* )
*/
class FraseBlock extends BlockBase {
public function build() {
$frases = [
"No mostris por davant dels teus enemics. Digues sempre la veritat encara que t'arribi la mort. Protegeix els desemparats i no facis malament. Aquest \xc3\xa9s el teu jurament. - El regne del cel (Ridley Scott)",
"Jo no crec en la fe. En nom d'ella, he vist milers de fan\xc3\xa0tics de totes les confessions cometre atrocitats. La santedat est\xc3\xa0 en els bons actes, en el valor de protegir aquells que no es poden defensar. \xc3\x89s el que decidiu fer cada dia el que us far\xc3\xa0 un bon home o no. - El regne dels cels (Ridley Scott)",
"Quin home que es pre\xc3\xaf de ser-ho no vol millorar el m\xc3\xb3n? - El regne del cel (Ridley Scott)",
"Com pots estar a l'infern, si mores al meu cor? - El regne del cel (Ridley Scott)",
"Un rei pot commoure un home, un pare pot reclamar a un fill, però recorda que fins i tot quan els qui et commouen siguin reis o homes de poder, la teva ànima està només sota la teva cura. - El regne del cel (Ridley Scott)",
"D\xc3\xa9u ho comprendr\xc3\xa0, sin\xc3\xb3 \xc3\xa9s que no \xc3\xa9s D\xc3\xa9u i llavors no tenim de qu\xc3\xa8 preocupar-nos. - El regne del cel (Ridley Scott)",
"Tota mort \xc3\xa9s segura. - El regne del cel (Ridley Scott)",
"Prefereixo conviure amb els homes a matar-los. - El regne del cel (Ridley Scott)"
];
$frase = $frases[array_rand($frases)];
// AQUESTA LÍNIA és la que fa que funcioni per a usuaris anònims:
\Drupal::service('page_cache_kill_switch')->trigger();
return [
'#markup' => '<div id="peu_centrat">' .
'<p><a href="http://drupal.org" target="_blank"><img class="logos_peu" src="/sites/default/files/logo-drupal.png" alt="Drupal" /></a> <a href="http://freebsd.org" target="_blank"><img src="/sit
es/default/files/logo-freebsd.png" class="logos_peu" alt="FreeBSD" /></a></p>' .
'<p><a class="linkjoancatala" href="https://joancatala.net">joancatala.net</a></p>' .
'<p>' . $frase . '</p>' .
'</div>',
'#cache' => ['max-age' => 0],
];
}
}
I bé, ja podem instal·lar el mòdul des de Administració + Extend, veurem el mòdul "Frase Aleatòria".
Jo me l'he ficat al peu, junt amb el logo de Drupal i FreeBSD, i a baixa mostre la variable $frase.
El mòdul mostrarà una frase aleatòria tant per a usuaris registrats com per als usuaris anònims, saltant-se la caché.
DESCARREGA'T EL MÒDUL
Pots descarregar-te el mòdul des de l'enllaç següent.
Recorda instal·lar-ho a /modules/custom, instal·lar-ho i després simplement activar el Block.





