A tmpl komponens használata az ajax lekérdezésekhez a joomla! Az ajax lapozás példáján a blogban

A tmpl komponens használata az ajax lekérdezésekhez a joomla! Az ajax lapozás példáján a blogban

Az AJAX-kérelmeket használó bármely modern webhely funkcionalitása nem újdonság. Ezenkívül az AJAX kérelmek használata a Joomla! nagymértékben leegyszerűsíti a különböző eszközöket, amelyek külön történetet szentelhetnek. Ebben a cikkben szeretnék megosztani gondolataimat a tmpl = komponens paraméterének egy nem teljesen szokásos módon való használatával az AJAX kérések végrehajtása és a webhely tartalomblokk frissítése során. Figyeljetek továbbá arra is, hogy milyen buktatók okozzák ezt a módszert.

A probléma megfogalmazása

Mindenekelőtt meg kell fogalmazni a problémát annak megértése érdekében, hogy mely esetekben lehet az alább leírt módszert használni. Tegyük fel, hogy teljesen frissíteni kell a webhely tartalmának területét. A főegység a kupak nélkül, az alagsorban, stb. A Joomla! Webhely sablonjában ez a blokk megjelenik.

Ismeri a lekérdezést, amellyel új html-t kaphat. Nem kell semmilyen módszert létrehoznunk magunknak, hogy kiválasszuk az adatokat az adatbázisból, és felkészítsük őket a webhelyen történő megjelenítésre. Ez különösen akkor hasznos, ha nem vagyunk az összetevő fejlesztői, amelyekhez az AJAX funkciót szeretnénk hozzáadni. A legfontosabb feltétel az, hogy a kérést elküldjük az AJAX-nak, és a kapott html frissül a webhely tartalomblokkjában az oldal újratöltése nélkül.

Példa a Joomla!

A tmpl komponens használata az ajax lekérdezésekhez a joomla! Az ajax lapozás példáján a blogban

Ennek eredményeként azt szeretnénk, hogy az AJAX kérés elküldésre kerüljön, amikor a hivatkozásokat a lapozóblokkban klikkeljük, és az oldal tartalomblokkja új anyagok listájával és egy új lapozóegységgel frissül. Ugyanakkor magunk is tudjuk a kérést, a hivatkozás href-ben van jelen a lapozási blokkban. A Joomla! Anyaggazdálkodási összetevője! képes megjeleníteni mind oldalankénti navigációt, mind pedig az adott oldalakon található anyagok listáját. Itt nem kell feltalálni vagy hozzáadni semmit. Elég, hogy kihasználjuk a meglévő referenciát, ami a GET kérésünk. Ezt a kérelmet az AJAX használatával küldjük el. Például

A példa az AJAX lapozással az anyag blogjában itt inkább illusztrálja az elvet, és nem optimális vagy univerzális megoldás.

A tmpl = komponens paraméterről

E paraméter használatát a Joomla! a nyomtatási funkció komponens oldalainak létrehozása során a modális ablakban. Ez a funkció nem segít nekünk most, de a modális ablak rovására érdemes részletesebben megvizsgálni. A sajátossága az, hogy bármely összetevőre lekérdezhető a tmpl = komponens Joomla! visszaad egy HTML-kódot, amely egy címkét tartalmaz minden metacímke, css, js stb. összekapcsolásával. És a címkén Tartalmazza az oldal teljes tartalmát a fejléc, a lábléc és a sablon egyéb kiegészítő elemei nélkül.

A tmpl komponens használata az ajax lekérdezésekhez a joomla! Az ajax lapozás példáján a blogban

Ezt a viselkedést a component.php fájl jelenléte határozza meg az aktuális webhelyséma gyökérkönyvtárában. Hivatalos Joomla! azt mondja, hogy a Joomla! az 1.5-ös változatot, és úgy tervezték, hogy nyomtatható anyagokat tartalmazó oldalakat hozzon létre a webhelyen.

Például a Joomla! 3.6.4 a protostari sablonban. amely a CMS-hez tartozik, a következő formában van

Mindez jól működik, ha egy oldalat szeretnénk megjeleníteni a modális ablakban, például a nyomtatáshoz. De AJAX kérés, akkor frissítenie kell a tartalmat az aktuális oldalt az oldal, majd csatlakoztassa az összes script tönkreteheti a logikája a viselkedésüket. Persze, már tudjuk hol helyezkedik el a nagyon component.php tudta változtatni, amit akar, de ez viszont árthat a nyomtatási oldal (vagy valamilyen más, nem tudjuk előre, hogy ezt a funkciót, a fejlesztők más alkalmazások használata) . Ebből kiindulva a sablonfájl módosítása nélkül megoldjuk a beállított feladatot.

Megírjuk a kódot AJAX anyagméretezéssel

Folytassuk közvetlenül a fent leírt példa kódját. Célunk, hogy az AJAX anyagi blogjában szokásos oldalszámozással lapoljuk ki.

Joomla blogsablon anyagok!

Ahhoz, hogy cserélje ki a tartalmát az aktuális oldal egy új html, megkapjuk eredményeként egy AJAX kérés, csomagolja a teljes tartalom blog.php fájlt egy új blokk id = „blog_base_block”. Az ugyanazt a fájlt, akkor kell csatlakoztatni a jövőben script AJAX oldalszámozási amelynek célja, mint egy kis jQuery plugint és css fájl további stílusok (vannak stílusok, hogy blokkolja az oldalt, és megjeleníti az ikonok terhelés időtartama alatt egy AJAX kérés). Ennek eredményeként a blog.php fájl vázlatosan az alábbiak szerint alakul

Érdemes megjegyezni, hogy a plugin és a css stílusfájl jQuery fájlja betöltődik a média mappából. Ezeknek a fájloknak az elérési útjai a következők

Ennek megfelelően fájlok csatlakoztatásakor csak az összetevőkártya elérési útvonala és a com_content / jquery.ajax.pagination.js fájlnév van meghatározva. és a kapcsolatfüggvény harmadik paramétere $ relative = true.

jQuery plugin az AJAX lapozáshoz

Az AJAX-kérelem elküldéséért és a tartalomblokk frissítéséért a főoldalon a jquery.ajax.pagination.js címen található. Úgy tervezték, mint egy jQuery plugint. A JQuery maga már kapcsolódik a Joomla-hoz. vagy a sablonban a következő php kóddal tudod csatlakozni: JHtml :: _ ('jquery.framework');

Ebben a függvényben a lapozóblokk minden hivatkozására az eseménykezelő lenyomva tartja a kapcsolatot. Először is, a normál művelet megszakad, ha rákattintasz - ez egy ugrás a href paraméterben megadott URL-re. Ezután a szkript lekérdi a link href paraméterét, és átadja a vezérlést a sendNextPageRequest függvénynek.

Ebben a függvényben először ellenőrizzük a fogadott kapcsolaton a tmpl = komponens jelenlétét, és ha nincs ilyen paraméter, hozzáadjuk hozzá. Így kérésre az érdekes oldal tartalmát megkapjuk számunkra túlzott html kód nélkül. Ezután megjelenik az ikonkijelzés funkció, ha az AJAX lekérdezés végrehajtásra kerül. Az AJAX kérelmet maga a jQuery könyvtárban található szabványos módszerek végzik.

Az AJAX-kérelem az alábbiak szerint van inicializálva

url: nextPageUrl - meghatározza a kérés URL-jét, amelyben a tmpl = összetevő paraméter már hozzáadva van. Ebben az esetben az adott oldalra való áttérés összes paramétere (1., 2., 3. oldal stb.) A Joomla! függetlenül hozzák létre, amikor létrehoz egy oldaladat tartalmazó anyagot.

típus: "GET" egy paraméter, amely meghatározza a kérés típusát, ebben az esetben a GET

dataType: "html" - a kérelem eredményeként kapott adatok típusa

Ezen a funkción külön kell leállítani. Akkor hívják, ha az AJAX kérés sikeresen végrehajtásra kerül és a html működésének eredményeként érkezik. Ezt a html-kódot az eredményparaméterre írtuk, és a meglévő oldal tartalom helyett azt szeretnénk beilleszteni. De ahogy korábban már említettük, ha ezt a html-et beilleszti, akkor minden metacímke, js fájlkapcsolat és minden más, ami a címkén található, megismétlődnek az oldalon a jelenlegi Joomla sablon. A helyzet elkerülése érdekében ebben a kódban csak a fő blokkot kell választanunk, amelyet eredetileg egy címkére csomagoltunk

.

De itt van még egy víz alatti szikla. Ha az eredményül kapott html-t egyszerűen egy jQuery objektumgá alakítjuk, akkor olyan objektumokat kapunk, amelyekben nehéz lesz a kívánt címke keresését elvégezni.

a következő képernyőhöz hasonlít

Ahhoz, hogy a jQuery módszerekkel kényelmesen keresse meg a kívánt címkét, létrehozhatunk egy csomagolást és elhelyezhetjük az eredményül kapott html-et.

És már a keresőben lévő objektumban a keresési módszert használva megtaláljuk a szükséges tartalomcímkét, külön változóba helyezve. Csak az ugyanazon blokk tartalmának cseréje marad az aktuális oldalon, ami egyszerűen a replaceWith jQuery módszerével történik.

Ezt a funkciót akkor hívják meg, ha az AJAX-kérés végrehajtásakor hiba történik. Ebben a menüben hibaüzenetet küldünk a konzolnak.

Ezt a funkciót az AJAX kérés végén hívják, függetlenül attól, hogy végrehajtása során hiba történt-e. Ebben a programban csak eltávolítjuk az indító ikonot, amely az AJAX kérés futása közben jelenik meg.

A bővítmény inicializálása a blogsablonban

Miután befejezte a plugin jQuery fájljának feldolgozását, inicializálnia kell a blog.php fájlt. Ott is hozzá kell adnia egy címkét, amely felelős az AJAX lekérdezés végrehajtási ikonjának megjelenítéséért.

Ezenkívül a lapozás blokk egy id = "category_blog_pagination_block" címkével van ellátva. amelyet a plugin AJAX lapozásának inicializálásakor használunk.

Ezt követően ellenőrizheti a lapozás munkáját a bloganyagokban.

A tmpl komponens használata az ajax lekérdezésekhez a joomla! Az ajax lapozás példáján a blogban

Ennek eredményeként megtudtuk, hogy a Joomla! Hozzáadhatja a tmpl = komponens paramétert. amely lehetővé teszi, hogy az összetevő által létrehozott oldalnak csak azon része legyen, amely a sablon extra elemei nélkül készült. Emellett kiderült, hogyan kell a fogadott html-t módosítani a frissítéshez a webhely aktuális oldalán, egyszerű jQuery módszerekkel. Ez azt jelenti, hogy egyes esetekben nem szükséges írni a saját vezérlőit, hogy adatokat szerezzen, és speciálisan adaptálja őket egy adott sablonhoz, vagy használhatja a Joomla motor már elérhető és univerzális motorját.

Felhívjuk ismét a figyelmet arra a tényre, hogy az AJAX-oldalak példája az anyag blogjának az illusztrációja a leírt megközelítés munkájának. Végezze el az AJAX lapozását a Joomla! vagy egy másik összetevőhöz különböző megközelítéseket használhat, és ez a módszer nem úgy tesz, mintha az optimális lenne.

Hasonló elvet használtunk saját projektjeinkben is. Például a JoomShopping termékszűrő moduljában. amely szintén szemlélteti a leírt megközelítés munkáját. Megtekintheti munkáját a demo-site-en.

Töltse le az archívumot az összes AJAX lapozási fájllal a bloganyagokhoz, amelyekre kattintva a linkre kattint. A telepítéshez egyszerűen másolja az archív fájlokat a mappa gyökérkönyvébe, a Joomla telepítve.

A tesztelés a Joomla! a 3.6.4-es verzió és a standard sablon - protostar. De ugyanakkor blokkolhatja a Joomla-ban telepített anyagok blogját. sablont.