Aggiungi Plugin
I plugin sono le estensioni che espandono le capacità del Light Portal. Per creare il tuo plugin, basta seguire le istruzioni seguenti.
Note
Puoi utilizzare PluginMaker come assistente per creare i tuoi plugin. Scaricalo e abilitalo nella pagina Amministrazione -> Portale -> Plugins.
Scelta del tipo di plugin
Scelta del tipo di plugin
block
Plugin che aggiungono nuovi tipi di blocchi per il portale.
ssi
Plugin (solitamente blocchi) che utilizzano le funzioni SSI per recuperare dati.
editor
Plugin che aggiungono un editor di terze parti per diversi tipi di contenuti.
comment
Plugin che aggiungono un widget di terze parti invece del widget integrato.
parser
Plugin che implementano l'analisi del contenuto di pagine e blocchi.
article
Plugin per l'elaborazione del contenuto delle schede degli articoli nella pagina principale.
frontpage
Plugin per modificare la pagina principale del portale.
impex
Plugin per importare ed esportare vari elementi del portale.
block_options
| page_options
Plugin che aggiungono parametri aggiuntivi per l'entità corrispondente (blocco o pagina).
icons
Plugin che aggiungono nuove librerie di icone per sostituire gli elementi dell'interfaccia o da utilizzare nelle intestazioni dei blocchi
seo
Plugin che in qualche modo influenzano la visibilità del forum in rete.
other
Plugin che non sono correlati a nessuna delle categorie sopra indicate.
Creazione della cartella del plugin
Crea una cartella separata per i file dei plugin, all'interno di /Sources/LightPortal/Plugins
. Ad esempio, se il tuo plugin si chiama "HelloWorld", la struttura delle cartelle dovrebbe assomigliare a questa:
...(Plugins)
└── HelloWorld/
├── langs/
│ ├── english.php
│ └── index.php
├── index.php
└── HelloWorld.php
Il file index.php
può essere copiato da cartelle di altri plugin. Il file HelloWorld.php
contiene la logica del plugin:
<?php
namespace Bugo\LightPortal\Plugins\HelloWorld;
use Bugo\Compat\{Config, Lang, Utils};
use Bugo\LightPortal\Plugins\Plugin;
if (! defined('LP_NAME'))
die('No direct access...');
class HelloWorld extends Plugin
{
// FA icon (for blocks only)
public string $icon = 'fas fa-globe';
// Your plugin's type
public string $type = 'other';
// Optional init method
public function init(): void
{
// Access to global variables: Utils::$context['user'], Config::$modSettings['variable'], etc.
// Access to language variables: Lang::$txt['lp_hello_world']['variable_name']
}
// Custom properties and methods
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
Uso di SSI
Se il plugin deve recuperare dati utilizzando le funzioni SSI, utilizzare il metodo integrato getFromSsi(string $function, ...$params)
. Come parametro $function
bisogna passare il nome di una delle funzioni contenute nel file SSI.php, senza prefisso ssi_
. Ad esempio:
<?php
// See ssi_topTopics function in the SSI.php file
$data = $this->getFromSSI('topTopics', 'views', 10, 'array');
uso di Composer
Il tuo plugin può utilizzare librerie di terze parti installate tramite Composer. Assicurati che il file composer.json
, che contiene le dipendenze necessarie, si trovi nella cartella del plugin. Prima di pubblicare il tuo plugin, apri la cartella dei plugin con il terminale ed esegui il comando: composer install --no-dev -o
. Successivamente, l'intero contenuto della cartella dei plugin può essere impacchettato come una modifica separata per SMF (vedi ad esempio il pacchetto PluginMaker).