Continuând tema parserilor. Una dintre cele mai comune sarcini pe care le întâlnesc în mod constant este să completez site-ul Joomla în baza unui alt site. O miscare completa, de obicei cu o versiune mai veche a lui Joomla, dar poate si cu un alt CMS, nu conteaza.
De obicei, este mai ușor să copiați manual toate textele de pe site decât să scrieți un grabber separat pentru această problemă. Când vine vorba de câteva sute de articole, pragmatistul meu intern mă interzice să lucrez cu mâinile și creierul intră în acțiune.
În mod ideal, parserul ar trebui să mănânce doar o singură pagină a site-ului la intrare și să ocupe toate paginile găsite de el însuși. În articolul Cum să scriu un parser universal pentru o oră, ți-am spus deja cum să faci asta. Când vine vorba de a se muta pe Joomla, este necesar să se recreeze cu exactitate structura site-ului donator, prin urmare, un pic simplifica problema și va analiza doar lista specificată de referințe, care va fi un anumit fel legat de o anumită secțiune a site-ului sursă. Și această secțiune de pe site-ul nostru, vom crea manual.
Vom scrie pe php. Mai întâi, avem nevoie de o funcție de parser care să încarce pagina site-ului.
Nu este nimic nou aici:
Apoi, trebuie să creați un material standard Joomla
Aceasta este o copie a codului de pe Internet. După cum puteți vedea, în cazul în care există o eroare, nu este procesată în nici un fel, ci pur și simplu afișată pe ecran. Dacă doriți, gestionați-vă singuri erorile.
Funcția returnează ID-ul materialului creat. Vom avea nevoie de ea în următoarea funcție.
Și ultima funcție de care avem nevoie este funcția de a crea un element din elementul de meniu:
Acest lucru este, de asemenea, în practică, copy-paste de pe Internet.
Vom analiza ceea ce se întâmplă aici. Fișierul script în sine conectează punctul de intrare standard Joomla și chiar inițiază noua aplicație. După aceasta, puteți folosi toate metodele și clasele Joomla, la fel cum ați face în componente sau plug-in-uri.
Mai departe, pe un ciclu, vom enumera un link $ matrice și vom primi conținutul link-ului dat, prin intermediul funcției get. Apoi vine o bucată de cod incomprehensibil. Este specific pentru acest site, dar va fi diferit pentru dvs. Eu iau titlul articolului doar din eticheta titlului. În majoritatea site-urilor, în această etichetă va exista orice gunoi - titlul articolului - numele site-ului - cuvintele-cheie. Prin urmare, trebuie să procesați singur acest moment.
Conținutul principal al site-ului a fost inclus în eticheta articolului, iar pe linia 29 am retras-o de acolo.
Poate că site-ul dvs. este un donator, va fi mai complicat și aș recomanda dezasamblarea acestor date utilizând biblioteca SimpleHTMLDom