Passa al contenuto principale

Creare un Override del Modulo

Per estendere e ottimizzare le parti critiche dei moduli di terze parti, dobbiamo creare degli override delle classi e dei metodi che ci interessano.

Ector offre un sistema di override e versionamento integrato, facilitando la creazione di questi override.

Creazione dell'Override

Tramite un comando di Ector CLI possiamo fare lo scaffold di un override tipo e utilizzarlo come base per sovrascrivere il comportamento del modulo che intendiamo ottimizzare.

Passaggi per Creare un Override

  1. Identifica il Modulo e il Metodo:

    • Individua il modulo e il metodo che desideri sovrascrivere.
  2. Usa Ector CLI:

    • Recati nella cartella modules/ector_cli e lancia il comando:
    php bin/ector_cli override:create
    • Il comando chiederà il nome del modulo, il nome della classe e il nome del metodo da sovrascrivere, creando per te il file di override pronto per essere modificato.
  3. Trova gli Override:

    • Gli override si trovano dentro modules/ector_core/override/modules, dove troverai una cartella con il nome del modulo sovrascritto e il file di override.

Esempio di Override

Ecco un esempio di override per il modulo blockreassurance:

<?php

require_once _PS_MODULE_DIR_ . 'ector_core/vendor/autoload.php';

class blockreassuranceOverride extends blockreassurance
{
use Ector\Core\EctorOverride;

#[Ector\Core\EctorOverrideAlias([
'5.1.4' => ['5.1.4']
])]
public function hookActionFrontControllerSetMedia()
{
return $this->ectorOverrideMethod(__FUNCTION__, $this->version);
}

public function hookActionFrontControllerSetMedia_5_1_4()
{
Media::addJsDef([
'psr_icon_color' => Configuration::get('PSR_ICON_COLOR'),
]);
}
}

In questo caso, abbiamo sovrascritto il metodo hookActionFrontControllerSetMedia del modulo blockreassurance e aggiunto un metodo specifico per la versione 5.1.4 che aggiunge una variabile JS.

Dettagli dell'Override

Alias

Gli alias sono annotazioni che permettono di creare un alias per un metodo, rendendolo chiamabile anche su più versioni del modulo.

#[Ector\Core\EctorOverrideAlias([
'5.1.4' => ['5.1.4']
])]

Se l'override scritto per la versione 5.1.4 è compatibile anche con la versione 5.1.5, possiamo aggiungere un alias:

#[Ector\Core\EctorOverrideAlias([
'5.1.4' => ['5.1.4', '5.1.5']
])]

EctorOverrideMethod

Il metodo ectorOverrideMethod consente di chiamare il metodo sovrascritto senza dover riscrivere tutto il codice del metodo originale. Questo metodo cerca automaticamente di richiamare il metodo corrispondente alla versione registrata dall'alias.

public function hookActionFrontControllerSetMedia()
{
return $this->ectorOverrideMethod(__FUNCTION__, $this->version);
}

Se è specificato un override per la versione 5.1.4, ectorOverrideMethod cercherà di chiamare il metodo hookActionFrontControllerSetMedia_5_1_4 se presente, altrimenti farà fallback al metodo originale.

Conclusione

Creare override per i moduli di terze parti con Ector è un processo semplice e strutturato, grazie al sistema di override e versionamento integrato. Utilizzando Ector CLI, possiamo rapidamente creare gli override necessari per ottimizzare le prestazioni e personalizzare il comportamento dei moduli in modo sicuro ed efficiente.