ModuleLocație și nume
Toate modulele trebuie adăugate înModulefolderulîn directorul rădăcină unde este instalat CRM-ul nostru șiFiecare modul trebuieAu nume unic de folder și fișier init cu același nume ca folderul modululuinumeÎn limba engleză
CreareaPrimul modul
ÎnainteÎncepeți să dezvoltați un modul, asigurați-vă că setațiModul de dezvoltarePentru a vedea oriceErorile și funcțiile / cârligele avertismentele de depreciere.
Pentru a începe și a crea primul modul, urmațiPași de mai jos.
· ȘtiriNavigați la Instalarea noastră CRM și deschidețiModuleDirectorul
· ȘtiriCreați un director nou și denumiți-l după modul(de.q.eșantion_modulÎn limba engleză
· ȘtiriCrearea unui fișier PHP noucu același nume ca șiDirectorul modulelor, în acest caz,eșantion_module.php,Acest fișier va acționa ca "Init-ulFișier"Pentru acest modul.
În acest caz, modulul este deja creat și înregistratDar nu face nimic încă și nici nu a adăugat nici un nume sau descrieri, noiVa adăuga metadatele modulului cum ar fi numele, descrierea, adresa URL, autorul printr-un PHPBloc comentariu care va acționa ca anteturi modulului.
Anteturile modulului trebuie adăugate numai în modulul initFișier.
Acum deschideți fișierul eșantion_module.php pe care l-am creat înainte șiAdăugați următorul comentariu în partea de sus a fișierului:
<?php
/**
* Asigură că fișierul init modul nu poate fiaccesat direct, numai în cadrul aplicației.
*/
definit('BASEPATH') sauieșire('Nu este permis accesul direct al scriptului');
/*
Nume modul: Exemplu nostruModul CRM
Descriere: EșantionDescrierea modulului.
Versiune: 2.3.0
Necesită cel puțin: 2.3.* Știri
*/
După ce salvați fișierul, puteți naviga în CRM-ul nostruZona de administrare pentru aConfigurare-> ModuleȘi veți putea vedeaModulul listat.
Comentariul va acționa ca un antet de fișiere pentru modul, tuAr trebui să verificeGhidul anteturilor de fișiereDacă vrei să obțiiMai familiar.
MarcaAsigur că adăugați întotdeauna întotdeaunaNumele modululuiantet
Este vorba de:Foarte important săAsigurați-vă că numele folderului modulului și .phpNumele fișierului este același, în caz contrar, modulul dvs. nu va fi afișat înLista de module
BazăCârlige
Va trebui să implementați câteva cârlige de bază atunci când creațimodul nou, cum ar firegister_activare_cârlig(),registru_deactivare_cârlig()șiÎnregistrare_uninstall_hook()
Dacă sunteți familiarizat cu WordPress, probabil veți știMunca pe care o fac aceste cârlige.
AdăugareaCârlige
Puteți adăuga cârlige în modulul .php fișiere cu:
cârlige()>ad_action($ tag,$function_to_add, $priority = 10, $accepted_args = 1);
cârlige()>add_filter($ tag,$function_to_add, $priority = 10, $accepted_args = 1);
cârlige()>do_action($ tag,$arg = '');
cârlige()>aplica_filters($ tag,Valoarea $, Params suplimentare $);
Puteți adăuga propriile filtre și acțiuni, astfel încât să puteți utilizaEle în implementarea modulului, de asemenea, adăugarea de acțiuni și filtre vă va ajutaAlte module pentru a interacționa cu modulul și a extinde modululfuncționalități.
PrefixulFuncții personalizate
Ar trebui să-ți faciÎntotdeauna prefixați orice funcții personalizateșiClase pentru a preveni orice conflicte cu funcțiile sau clasele noastre implicite CRM saucu orice alte module.
UtilizareaCodeigniter Instance în fișierele modulului
Probabil că veți dori să utilizați cadrul Codeigniterinstanță în fișierul init al modulului sau în orice alte fișiere de module care nu suntextinderea claselor-cadru de bază.
$acestea, funcționează numai în cadrul controlerelor dvs.,Modelele dvs. sau opiniile.
Puteți realiza acest lucru oriunde în fișierele cuUrmătorul cod:
În primul rând, atribuiți obiectul CodeIgniter unei variabile:
$CI = &get_instance();
Odată ce ați atribuit obiectul unei variabile, veți utilizaacea variabilăîn schimba$acestea
$CI (în engleză)=&get_instance();
$CI->load->ajutor('modul_name/ajutor_name');
$CI->load->bibliotecă('modul_name/bibliotecă_name');
Baza de datePrefixul
Din versiunea 2.3.0 CRM-ul nostru are opțiunea de a defini personalizatePrefixul tabelelor bazei de date.
Prefixul implicit al tabelului în CRM-ul nostru estecu tbl
Ar trebui să utilizați întotdeauna funcția noastră personalizatădb_prefix()Laobțineți prefixul bazei de date atunci când interogați baza de date, acest lucru se va asigura că înîn cazul în care utilizatorul a schimbat prefixul bazei de date, modulul dvs. va funcționa în continuare cuPrefixul utilizatorului nou.
Iată un exemplu de laUrmărirea obiectivelormodululInstalare.phpFișier.
<?php
definit('BASEPATH') sauieșire('Nu este permis accesul direct al scriptului');
dacă(!$CI->db->table_exists(db_prefix() . 'Țintă')) {
$CI->db->interogare('CREA tabelul '' .db_prefix() . "Țintă" (
'id' int(11) NU NULL,
'subiect' varchar(191) NU NULL,
Textul 'descriere' NU NULL,
'data_de' NU NULL,
'data de sfârșit' NU NULL,
'tip de țintă' int(11) NU NULL,
'contract_type' int(11) NU NUL DEFAULT '0',
Int(11) NU NULL,
'notify_când_eșu' micuță(1) NU NULLDefault '1',
'notify_când_achieve' tinyint(1) NU NULLDefault '1',
'notificat' int(11) NU NUL DEFAULT '0',
'personal_id' int(11) NU NUL DEFAULT '0'
) Motor=InnoDB DEFAULTCARSET=" . $CI->db->char_set . ';');
CreeazăOpțiuni modul
CRM-ul nostru are tabelul în baza de dateOpțiunipentrustocarea diferitelor setări pentru utilizare internă și a setărilor care sunt utilizate înCaracteristici. Am dezvoltat funcții PHP personalizate care vor efectua interogări pentruPreia opțiunile din baza de date.
Numele opțiunii sunt șiruri de caractere și trebuie să fie unice, astfel încâtEi nu intră în conflict nici cu CRM-ul nostru, nici cu alte module.
add_option($name,Valoare $, $autoload)
$nume
Necesar (șir). Numele opțiunii care urmează să fie adăugată, facețiAsigurați-vă că este unic și prefixat cu E.q. Numele modulului.
Valoare $
Valoarea opțiunii (șir)
$autoload
(întreg) 1 sau 0
Indiferent dacă această opțiune ar trebui să fie automată cu toate celelalte opțiuni, dacă suntețiFolosind opțiunea prea mult timp în vizualizare, cel mai bun este să-l autoload lapreveniți mai multe interogări pentru a obține opțiunea. Implicit la 1
Rețineți căAdresă_opțiuneFuncțieNu va crea opțiunea dacă numele opțiunii există deja în tabelul opțiuni.
get_option($opțiune_nume);
Recuperarea unei opțiuni din baza de date,$option_nume(șir)Numele opțiunii.
update_option($opțiune_nume,$noua_valoare);
Încă mai multeActualizare_opțiuneFuncția va actualizaValoarea opțiunii, începând cu versiunea 2.3.3, atunci când apelațiupdate_option dacăOpțiunea nu există, CRM-ul nostru va crea această opțiune.