User:Emanuele/guide/Installare mod manualmente

Introduzione
Certe volte quando si va ad installare un mod appare la famosa scritta " Errore nell'Installazione del Package" e vengono mostrati alcuni file come nell'immagine qui di seguito:

Cosa "realmente" significa tutto ciò?
Quando nella schermata qui di fianco, nella colonna Tipo, appare Esegui modifiche significa che SMF dovrà andare a modificare un file per apportarvi i dovuti cambiamenti. Per sapere dove andare a modificare il file, SMF si basa su coppie di istruzioni: 1) trova, 2) fa qualcosa.

Il trova dice al gestore dei pacchetti in quale posizione di un determinato file la modifica va applicata, per far ciò, viene indicato un pezzo di codice php presente nella versione originale dei file di SMF. Il fa qualcosa indica al gestore dei pacchetti cosa effettivamente fare. In questo caso vi possono essere 3 situazioni:
 * aggiungi prima (add before), dice di aggiungere il nuovo codice prima di dove si trova quello vecchio,
 * aggiungi dopo (add after), dice di aggiungere il nuovo codice dopo della posizione in cui si trova quello vecchio,
 * sostituisci (replace), dice di rimpiazzare completamente il vecchio codice con quello nuovo.

Facciamo un esempio pratico: nell'installazione del mod di cui sopra, cliccando su una delle due modifiche al file Admin.php possiamo vedere: queste istruzione dicono al gestore dei pacchetti di trovare il codice: ),		),		'layout' => array( ed aggiungervi prima: 'awards' => array( 'label' => $txt['awards'], ...etc.

Cosa vuol quindi dire che il test è fallito? Vuole dire che il gestore dei pacchetti non è stato in grado di trovare il codice ),		),		'layout' => array( all'interno di Admin.php.

Perché questo problema?
Perché probabilmente un altro mod installato in precedenza ha apportato qualche modifica allo stesso pezzo di codice rendendolo così più o meno diverso da quello originale (basta anche un solo carattere per rendere impossibile a SMF di riconoscere il blocco ed eseguire le operazioni richieste.

E' tutto perduto?
No. Quel che si può fare in questi casi è eseguire manualmente le modifiche.

Ovviamente c'è un "problema": se SMF non è stato in grado di trovare quel pezzo di codice significa che è cambiato, e che quindi una semplice ricerca all'interno del file in questione non sarà sufficiente, bisognerà invece "capire" dove la modifica deve essere fatta ed applicarla tenendo in considerazione anche eventuali differenze rispetto al codice originale di SMF.

Come procedere alla ricerca?
Il modo più semplice è di prendere una versione originale del file da modificare (ad esempio da un pacchetto d'installazione di SMF) e verificare dove il codice si trova, una volta fatto ciò si avrà un'indicazione di dove andare a cercare nel file attualmente in uso sul nostro forum.

Procedura "migliore" per modificare manualmente i file
Due sono gli approcci per la modifica manuale: La prima direi che non necessita di spiegazioni approfondite: semplicemente bisogna armarsi di pazienza ed eseguire manualmente tutte le modifiche che normalmente farebbe il gestore dei pacchetti. Facile. La seconda merita una descrizione un po' più dettagliata:
 * 1) fare tutto manualmente
 * 2) lasciar fare il possibile ad SMF e fare manualmente lo stretto indispensabile
 * 1) scaricare sul proprio computer via ftp tutti i file per cui almeno un test è fallito,
 * 2) applicare tutte le modifiche (non solo quelle che hanno test fallito) necessarie a questi file e mantenerli sul proprio computer,
 * 3) tornare nel pannello di admin di SMF ed applicare il mod tramite il gestore dei pacchetti (questo vi avvertirà che vi sono dei problemi e che l'installazione potrebbe non andare a buon fine, rispondete che volete installare comunque),
 * 4) finita l'installazione, prendete i file che avete preparato al punto 2 e caricateli sullo spazio online andando a sovrascrivere quelli presenti.

Il vostro mod è installato. Se avete seguito la prima procedura il mod non comparirà nella lista di quelli installati nel pannello di admin, se avete eseguito la seconda invece sarà presente.