Implementare l'override dell'MVC di joomla mediante l'uso di un plugin.

 

Ciao Developer!
Nell'articolo di oggi ti spiegherò come fare l'override del codice dell'MVC di joomla, in modo da non dover fare Hacking al core, o scrivere lunghe e noiose procedure mediante la creazione di plugin personalizzati per ottemperare allo scopo.

Ora vi starete chiedendo: ma per quale motivo dovrei aver bisogno di fare l'override del codice di joomla? Bene, se la vostra esigenza è creare il solito sito "vetrina" con le solite 5-6 paginette, allora non andate oltre e cambiate articolo. Ma se state progettando ad esempio, un portale, e volete inserire al momento della registrazione di un utente (si presuppone che usiate la gestione utenti di Joomla) dei controlli particolari, o creare un'apposita area utente ( per gestire magari il GDPR...!!!) al momento della registrazione, ecco che sorge il problema: come faccio a scatenare un evento al momento della registrazione?
State tranquilli... a meno che non vogliate hackare il core di Joomla, NON SI PUO'!

Ecco quindi che nasce l'esegenza di fare un'override della procedura di registrazione (ma potrebbe essere una qualsiasi procedura di un componente), senza compromettere il core di Joomla, e quindi potendo anche, in seguito effettuare aggiornamenti del cms con tranquillità (Però un backup fatevelo sempre eh, che non si sa mai).

Detto questo, andiamo a vedere come fare.
Avremo bisogno di un plugin, che è stato creato appositamente allo scopo. Come funziona? Semplicissimo. installato e attivato il plugin "MVCOverride", tutto quello che dovete fare è creare una cartella "code" nella cartella del vostro template.

Fatto?

Ok, a questo punto bisogna prendere il path del file dove è contenuta la funzione (o le funzioni) che vogliamo sovrascrivere, nella cartella components. Nel caso volessimo sovrascrivere la funzione di registrazione dell'utente, dovremmo prendere il seguente percorso: "components/com_users/controllers/registration.php"
La cartella "Components" non va considerata. A questo punto, nella cartella "code" nel vostro template, create delle sottodirectory e file seguendo il percorso che avete precedentemente copiato (in questo caso, creeremo "code/com_users/controllers/registration.php")

Ora viene la parte "code-side". Nel file registratione.php, dovrete copiare il nome della classe, estendendola dalla classe "default". Mi spiego meglio.
nel file originale registration.php questo è quello che vi sipresenterà davanti:


class UsersControllerRegistration
{
	public function register()
    {
    	[...]
    }
}

Questo codice va copiato con una leggera modifica:


class UsersControllerRegistration extends UserControllerRegistrationDefault
{
	public function register()
    {
    	[...]
    }
}

In soldoni, basta estendere la classe dal <nomeclasse>Default

Il plugin che troverete in allegato, sempre scaricabile ed utilizzabile GRATUITAMENTE, è una mia versione del plugin, con una miglioria significativa: A volte veniva segnalato un errore, e tutto il sito andava in crash. Dopo innumerevoli mal di testa, e aver passato in rassegna tutti i Santi del calendario (si sa, noi nerd siamo così...), ho scoperto che questo errore derivava dal fatto che i plugin in circolazione, aprono il file originale del core di joomla, ma se succede che per qualche motivo, si verifica un errore di I/O, e il file non viene chiuso, il file originale viene troncato a lunghezza 0, il che vuol dire: NIENTE PIU' FILE ORIGINALE NEL CORE! Indubbiamente una bella seccatura.
La mia modifica sta nel fatto di eseguire una copia del file originale prima di aprirlo, in modo da lavorare sulla copia e non sul file del core originale.

... Spero che questo articolo ti sia stato utile, Developer! Ti metto a disposizione il link per scaricare il plugin gratuitamente. Come sempre ti ricordo che se vuoi, puoi supportarmi nella scrittura di articoli di qualità, offrendomi un caffè!

 

Donazione per 7software.it | 1 EUR

 

A presto Developer!