Moduliposizione & nome
Tutti i moduli devono essere aggiunti nelmodulicartellanella tua directory principale in cui è installato il nostro CRM eogni modulo deveavere nome univoco della cartella e file init con lo stesso nome della cartella del modulonome.
Creazioneil tuo primo modulo
Primainiziare a sviluppare un modulo, assicurarsi di impostaremodalità di sviluppoper vedere qualsiasierrori e funzioni/ganci avvisi di deprecazione.
Per iniziare e creare il tuo primo modulo, segui ilpassaggi sottostanti.
·Passare alla nostra installazione CRM e aprire ilmodulidirectory
·Creare una nuova directory e nominala dopo il modulo(e.q.sample_module)
·Creare un nuovo file PHPcon lo stesso nome deldirectory modulo, in questo caso,sample_module.php,questo file agirà come "initfile"per questo modulo.
In questo caso, il modulo è già creato e registratoma non fa ancora nulla né ha alcun nome o descrizioni aggiunte, noiaggiungerà i metadati del modulo come nome, descrizione, URL, autore tramite PHPbloccare il commento che fungerà da intestazioni del modulo.
Le intestazioni del modulo devono essere aggiunte solo nel modulo initfile.
Ora apri il file sample_module.php che abbiamo creato prima eaggiungere il seguente commento nella parte superiore del file:
<?php
/***
* Garantisce che il file init del modulo non possa essereaccessibile direttamente, solo all'interno dell'applicazione.
*/
definito('BASEPATH') oexit('Nessun accesso diretto allo script consentito');
/*
Nome del modulo: Campione Il nostroModulo CRM
Descrizione sogno: Campionedescrizione del modulo.
Versione: 2.3.0
Richiede almeno: 2.3.*
*/
Dopo aver salvato il file, puoi navigare nel tuo CRMarea amministrativa aConfigurazione->Modulie sarete in grado di vedereil tuo modulo elencato.
Il commento fungerà da intestazione di file per il modulo, tudovrebbe controllare ilguida intestazioni filese vuoi ottenerepiù familiare.
Faresicuro di aggiungere sempre ilNome del modulointestazione
Èmolto importante aassicurarsi che il nome della cartella del modulo e il .phpIl nome del file è lo stesso, altrimenti, il modulo non verrà visualizzato nelelenco moduli
BasicGanci
Dovrai implementare alcuni ganci di base durante la creazionenuovo modulo, comeregister_activation_hook(),register_deactivation_hook()eregister_uninstall_hook()
Se hai familiarità con WordPress, probabilmente lo sapraiil lavoro che questi ganci fanno.
AggiuntaGanci
È possibile aggiungere hook nei file .php del modulo con:
hooks()->add_action($tag,$function_to_add, $priority = 10, $accepted_args = 1);
hooks()->add_filter($tag,$function_to_add, $priority = 10, $accepted_args = 1);
hooks()->do_action($tag,$arg = '');
hooks()->apply_filters($tag,$value, $additionalParams);
Puoi aggiungere i tuoi filtri e azioni in modo da poter utilizzareanche nell'implementazione del modulo, aggiungendo azioni e filtri aiuteràaltri moduli per interagire con il modulo ed estendere il modulofunzionalità.
PrefissoFunzioni personalizzate
Dovrestiprefisso sempre qualsiasi funzione personalizzataeclassi per prevenire eventuali conflitti con le nostre funzioni o classi predefinite CRM ocon qualsiasi altro modulo.
UtilizzoCodeigniter istanza nei file del modulo
Probabilmente si desidera utilizzare il framework Codeigniteristanza nel file init modulo o qualsiasi altro file di moduli che non sonoestendere le classi di base quadro.
$this, funziona solo all'interno dei controller,i tuoi modelli, o le tue opinioni.
Puoi raggiungere questo obiettivo ovunque nei tuoi file con ilseguente codice:
In primo luogo, assegnare l'oggetto CodeIgniter a una variabile:
$CI = &get_instance();
Una volta assegnato l'oggetto a una variabile, utilizzeraiquella variabileinvecedi$this
$Ci=&get_instance();
$CI->load->helper('module_name/helper_name');
$CI->load->library('module_name/library_name');
DatabasePrefisso
Dalla versione 2.3.0 Il nostro CRM ha la possibilità di definire personalizzatotabelle di database prefisso.
Il prefisso della tabella predefinito nel nostro CRM ètbl
Dovresti sempre utilizzare la nostra funzione personalizzatadb_prefix()aottenere il prefisso del database durante la query del database, questo garantirà che incaso in cui l'utente abbia cambiato il prefisso del database, il modulo funzionerà ancora con ilnuovo prefisso utente.
Ecco un esempio dalMonitoraggio degli obiettivimoduloinstall.phpfile.
<?php
definito('BASEPATH') oexit('Nessun accesso diretto allo script consentito');
se(!$CI->db->table_exists(db_prefix() . 'obiettivi')) {
$CI->db->query('CREATE TABLE '' .db_prefix() . "obiettivi' (
'id' int(11) NON NULL,
'soggetto' varchar(191) NON NULL,
'descrizione' testo NON NULL,
'start_date' data NULL,
'end_date' data NULL,
'goal_type' int(11) NON NULL,
'contract_type' int(11) NON NULL DEFAULT '0',
'raggiungimento' int(11) NON NULL,
'notify_when_fail' smallint(1) NON NULLDefault '1',
'notify_when_achieve' minuscolo(1) NON NULLDefault '1',
'notificato' int(11) NON NULL DEFAULT '0',
'staff_id' int(11) NON NULL DEFAULT '0'
) ENGINE=InnoDB DEFAULTCHARSET=" . $CI->db->char_set . ';');
CreareOpzioni modulo
Il nostro CRM ha tabella nel databaseopzionipermemorizzare varie impostazioni per l'uso interno e le impostazioni utilizzate incaratteristiche. Abbiamo sviluppato funzioni PHP personalizzate che eseguiranno query arecuperare le opzioni dal database.
I nomi delle opzioni sono stringhe e devono essere unici in modo chenon sono in conflitto con né il nostro CRM né altri moduli.
add_option($name,$value, $autoload)
$name
Richiesto (stringa). Il nome dell'opzione da aggiungere, faresicuro che sia unico e prefissato con E.q. il tuo nome del modulo.
$value
Il valore dell'opzione (string)
$autoload
(integer) 1 o 0
Se questa opzione dovrebbe essere caricata automaticamente con tutte le altre opzioni, se sieteutilizzando l'opzione troppo tempo nella vista, il meglio è quello di caricare automaticamente aimpedire più query per ottenere l'opzione. Difatti a 1
Tenete a mente cheadd_optionfunzionenon creerà l'opzione se il nome dell'opzione esiste già nella tabella delle opzioni.
get_option($option_name);
Recuperare un'opzione dal database,$option_name(stringa)il nome della tua opzione.
update_option($option_name,$new_value);
Theupdate_optionfunzione aggiornerà ilvalore opzione, dalla versione 2.3.3, quando si chiamaupdate_option se ilopzione non esiste, il nostro CRM creerà questa opzione.