Réteges torta
Szó lesz a com_weblinks komponensről és a Joomla oldal html jelöléséről. Arról, hogyan lehet egyszerűen és egyszerűen létrehozni egy hivatkozási könyvtárat egy Joomla webhelyen.
Ez a CMS egy regisztrált felhasználóval való interaktív munkavégzéshez készült, közvetlen kódolás nélkül. Bár a Joomla fejlesztési trendje a com_weblinks komponens elhagyásához vezet, mint teljesen haszontalanul az oldalon, és egyszerűen csak plusz súlyt (több mint 100 kb - 90 fájl) ad egy amúgy is „nehéz” rendszerhez. De egyelőre ez az összetevő még mindig jelen van a disztribúcióban, és néhány programozó használja.
A képernyőn látható Joomla weboldal egy rétegtorta, melynek felépítésében sok blokk (és így sok sablon) vesz részt egyszerre. Itt jön képbe a Joomla filozófiája – a nagytömbös oldalépítés. Minden blokknak saját HTML jelölősablonnal (elrendezéssel) kell rendelkeznie.
Fő blokkok:
A főoldal sablonja (site_template/index.php), amely html jelölésével meghatározza a modulok és komponensek pozícióit, és megjeleníti ezeket a modulokat és összetevőket.
- oldalsablon
- modul sablonok
- komponens sablonok
Ezen nagy blokkok mindegyike elérhető szerkesztésre (módosításra). Vagyis külön szerkesztheti például bármelyik modul vagy komponens sablonját, és újszerű lesz az oldalon. Ugyanez vonatkozik az oldalsablonra is.
Egy kezdő programozó számára nehéz lehet megérteni, hogy az oldal tartalmi részének első sora oldalcímként jelenik meg, és az erre az oldalra mutató menüpont szerkesztő oldalán kerül szerkesztésre. A második sor a com_content vagy a com_weblinks komponens sablonjából származik. A sablonokban lévő karakterláncok pedig általában karakterlánc-változók, és inicializálásuk és lokalizálásuk nyelvi fájlokban történik, például language\ru-RU\ru-RU.mod_weblinks.ini és hasonlókban.
A kezdő néha tanácstalan: melyik sablon hozta létre ezt vagy azt a sort, amely a képernyőn ugyanazon narratíva logikus folytatásának tűnik. Kiderült, hogy egy sor az egyik sablonban, egy másik a második sablonban, egy harmadik pedig a harmadikban van. Az alábbi füles táblázat pedig a mod_tabform modulsablon kimenete.
Néha a modulsablonokat elrendezésnek nevezik. De ez terminológiai kérdés. A lényeg ugyanaz – ez a tartalom „ruházata”. Helyesebb lenne jelölést mondani. Tehát az egyik képernyőoldal elrendezése be van kapcsolva különböző fájlokat Joomla könyvtárak.
Menü
Sok új Joomla programozó gyakran nem érti, hogy a menüelemek különböző típusúak lehetnek. Más szóval - a menüelemek utalhatnak Joomla objektumokra különböző típusok. Ezek lehetnek különböző objektumok, például: komponensek (szavazás, keresés, hivatkozási könyvtár stb.).
A menüelem típusának kiválasztása:
Névjegyek (com_contact)
Kapcsolati kategóriák listája (kategóriák)
Adott kategória névjegyeinek listája (kategória)
Kapcsolat ( érintkezés)
Kedvenc névjegyek (kiemelt)
Anyagok (com_content)
Archív anyagok (archívum)
Anyag (cikk)
Az összes kategória listája ( kategóriákat)
Blog kategória
Kategória anyagok listája (kategória)
Kiemelt anyagok
Készítsen anyagot
Intelligens keresés (com_search)
Keresés ( keresés)
Hello Világ! ( com_helloworld)
Üzenet ( helloworld)
Hírcsatornák (com_newsfeeds)
Az összes hírfolyam kategória listája ( kategóriákat)
Hírfolyamok listája kategóriában (kategória)
Hírfolyam
Keresés ( com_search)
Keresési űrlap és a keresési eredmények listája (keresés)
Felhasználókezelő (com_users)
Engedélyezési űrlap (bejelentkezés)
Felhasználói profil (profil)
Felhasználói profil módosítása
Regisztrációs űrlap
Felhasználónév helyreállítása (emlékeztető)
Jelszó módosítása (reset)
Burkoló (com_wrapper)
Csomagolás
Mint látható, itt minden menütípus komponens. A menüelem típusa a nevével tulajdonképpen a komponenstípusához tartozó sablon nevét jelzi. Az összetevősablonok pedig a nézetek könyvtárában találhatók:
joomla\components\com_weblinks\views\categories
joomla\components\com_weblinks\views\category
joomla\components\com_weblinks\views\weblink
joomla\components\com_users\views\login
Mint látható, a menüben található hivatkozástípusok és a vews könyvtárak sablonjainak neve megegyezik.
A fejlesztőnek lehetősége van új, nem szabványos sablonokat (elrendezéseket) létrehozni az összetevőkhöz. Ezek az új elrendezések új menütípusként is megjelennek a menütípus-választó ablakban. Ez egy külön téma.
Joomla disztribúciós demó tartalom
Nézzük meg, hogyan épül fel az „A Joomla névjegye” menüelemek hierarchiája a com_weblinks komponens megjelenítéséhez az alapértelmezett demótartalom (Beez2 – alapértelmezett) Joomla sablonon.
Lépjünk az adminisztrációs panelre a com_weblinks komponens szerkesztéséhez: Összetevők->Linkek. Azt látjuk, hogy a disztribúcióhoz mellékelt demótartalomban öt kategória jött létre a com_weblinks komponenshez. Ez azt jelenti, hogy a linkeket öt kategóriába soroljuk. Az összes létrehozott kategória a #_categories adatbázistáblába kerül mentésre. A többi összetevő kategóriái is ugyanabban a táblázatban vannak tárolva.
Minta adat-weblinkek
|-Park Linkek
|-Joomla! Konkrét linkek
|-|-Egyéb források
Nincs kategorizálva
A Joomla névjegye menüben (a menüszerkesztőben) ennek megfelelően létrejött a menüelemek hierarchiája:
A menüelemek hierarchiája:
A Joomla! (típus: anyag)
|-Kiterjesztések használata (típus: az összes kategória listája) :: kategóriák listája az anyagokban
|-|-Összetevők (típus: kategória blog) :: kategória az anyagokban
|-|-|-Weblinkek komponens (típus: anyag)
|-|-|-|-Webhivatkozás beküldése (típus: link létrehozása) :: a Linkek komponensben
|-|-|-|-Weblinkek Egyetlen kategória (típus: egy kategóriába tartozó linkek listája) :: a Linkek komponensben
|-|-|-|-Weblink kategóriák (típus: linkkategóriák listája) :: a Linkek komponensben
Azt látjuk, hogy egyes menüelemek a következő típusúak: kategóriák listája, kategórián belüli hivatkozások listája és hivatkozás létrehozása.
A "Hivatkozási kategóriák listája" meghatározza azt a legfelső kategóriát, amelyből a hierarchia megjelenik.
A "Kategória hivatkozásainak listája" meghatározza azt a kategóriát, amelynek hivatkozásai megjelennek.
A „Link létrehozása” menüpontban megjelenik egy űrlap, amelyet a regisztrált felhasználónak ki kell töltenie.
Egyébként így néz ki egy link erre az űrlapra a szerkesztőben (in címsor megjelenése megváltozik):
index.php?option=com_weblinks&view=form&layout=edit
Egyes menüpontok csak regisztrált felhasználók számára jeleníthetők meg! Például egy „Hivatkozás létrehozása” típusú menüelem csak a regisztrált felhasználók számára lesz látható. Ez a funkció kifejezetten azért jött létre, hogy a regisztrált felhasználók linkeket hozzanak létre, amelyek megjelennek az oldalon.
Tehát a com_weblinks komponens megadja jó út interaktívan kitöltve az oldalt érdekes linkekkel. Sőt, minden hivatkozás, amely egy ilyen oldalra kerül, átirányítással rendelkezik, azaz nem indexelődik külsőként. Lehet, hogy láttál már ilyen linkeket a fórumokon. Ha egy ilyen hivatkozás fölé viszi az egeret, látni fogja webhelyének címét, és csak a rákattintás után kerül át az Ön által megadott címre.
A com_weblinks komponens fő előnye és jelentése, hogy a felhasználó külső webhelyekre mutató hivatkozásokat adhat hozzá, valamint új tartalmat – cikkeket, képeket, videofájlokat stb. – adhat hozzá.
A CMS Joomla alapfilozófiája, hogy egy jogosultsággal rendelkező regisztrált felhasználónak megengedjük, hogy tartalommal töltse fel az oldalt közvetlen kódolás nélkül.
Nincs kategorizálva
Mintaadat-cikk
|- Joomla!
|-|- Kiterjesztések
|-|-|- Alkatrészek
|-|-|- Modulok
|-|-|-|- Tartalom modulok
|-|-|-|- Felhasználói modulok
|-|-|-|- Kijelző modulok
|-|-|-|- Segédmodulok
|-|-|-|- Navigációs modulok
|-|-|- Sablonok
|-|-|-|- Atom
|-|-|-|- Beez 20
|-|-|-|- Beez 5
|-|-|- Nyelvek
|-|-|- Beépülő modulok
|- Park oldal
|-|- Park Blog
|-|- Fotógaléria
|-|-|- Állatok
|-|-|- Tájkép
|- Gyümölcsbolt webhelye
|-|-Tenyésztők
|-|- Receptek
Úgy tűnik, nincs túl sok kategória a tartalomhoz!
Az anyagok kategóriáinak hierarchiáját is megtekintheti az adatbázis kategóriatáblázatának lekérdezésével:
SELECT * FROM `#_categories` WHERE `extension` = "com_content"
Továbbra is megosztok veled apró, de nagyon hasznos webhely-szkripteket, amelyek segítenek a hozzáállásod javításában keresőmotorok webhelyére. Ezúttal a megfelelő oldallinkelésről lesz szó.
Először is hozzunk létre egy adatbázist az oldalcímekből és az egyes oldalak lehetséges horgonyaiból. Egy *.txt fájlt fogunk használni alapként. A fájl szerkezete a következő lesz:
horgony_1, horgony_2, horgony_3,..., horgony_2, horgony_3,..., horgony_1, horgony_2, rögzítő_n horgony_3, ..., horgony_n
Amint látja, a szkript további felhasználása tetszőleges számú oldalcímmel és a hozzájuk tartozó horgonyokkal lehetséges. Az oldal címe a http://www.site.ru/ nélkül van írva, azaz. azonnal a gyökértől az első perjel nélkül. A címet pontosvessző választja el a horgonyoktól, a horgonyokat pedig csak vessző választja el. Leírhatod a teljes címet is, csak nekem személy szerint kényelmesebb, de a kitöltést és az eredmény kimenetét te magad is módosíthatod, szerintem intuitív módon magad is kitalálod.
Így létrejött a hivatkozások és horgonyok adatbázisa, az alábbiakban példát mutatok a PHP kódra a linkek közvetlen megjelenítéséhez a webhelyen:
Ezt a kódot bárhová beillesztjük a webhelyre, amely 5 véletlenszerű hivatkozást jelenít meg az adatbázisból és egy véletlenszerű horgonyt. Jobb hígítani a horgonyokat, mint csak 1-et írni a linkre. Ha megfelelő linket helyez el a webhelyén, akkor azonnal megnő a forgalom, és javulnak a webhely egyéb mutatói.
Várom kérdéseiteket a bejegyzéshez fűzött kommentekben.
Megjelenés időpontja: 2014. március 03- Vélemények és megjegyzések:
Dmitrij:
Köszönöm a forgatókönyvet, megvalósítom. Tól forráskód Az oldalról nem lehet másolni, csak kis részekben másolják, egészében kényelmesebb lenne.
Kirill:
Köszönöm a megjegyzést a másolással kapcsolatban, most láttam, hamarosan megpróbálom megjavítani.
Alekszej Pavlov:
Hiba a $tex = explode(":",$sendlist[$count] sorban, pontosvessző kell, nem kettőspont. Kicsit módosítottam a kódon, hogy világosabb legyen:$horgony";
}
?>
Matrk:
A cikk teljesen használhatatlan, mert... A blog szövegmásolás elleni védelemmel rendelkezik.
Kirill:
Van egy kis bug a js-ben, igen, nincs idő javítani, de valószínűleg másnak nincs értelme, mert nem elég okos, ilyenkor nézd meg az oldal forráskódját és szedd onnan
Matrk:
Azok. Még mindig át kell mennem a forráskódon, és meg kell tisztítanom minden szeméttől? Vicces vagy.
Kirill:
Ez azt jelenti, hogy tartozom valakinek valamivel? Elvettem a pénzed, itt próbálkozol, ingyen tanácsot adsz :)))) Az ingyen sajt csak egérfogóban van, ahogy öregszel, meg fogod érteni.
Kirill:
Eltávolítottam az ajtófélfát, élvezd az egészségedért.
Andrej Kopaev:
1 - valószínűleg jobb ezt mysql adatbázis használatával megtenni, gyorsabban fog működni, és könnyebb hozzáadni 2 - Nem értem, mi értelme van minden alkalommal létrehozni egy linklistát? Hogyan befolyásolja ez a forgalom növekedését? Lehet-e Ajax segítségével betölteni, pl. ez embereknek vagy botoknak való?
www.site:
A promóció miatt azonban személy szerint nem vagyok híve az ilyen manipulációknak a PS-sel.
Belépés a Joomla! komponens hasonló a legtöbb komponenshez. Ebben a példában a Joomla egyik alapvető összetevőjét, a webes hivatkozásokat fogjuk használni. Az első kezelőfelületen végrehajtott fájl: …/components/com_weblinks/weblinks.php.
Először egy biztonsági ellenőrzést látunk, amelynek célja, hogy megbizonyosodjon arról, hogy senki sem hívhatja fel közvetlenül ezt az oldalt. Ez az a szabvány, amelyet minden php fájlban használni kell (bár van néhány kivétel):
Ellenőrizzük a lekérdezési karakterláncot, hogy megnézzük, elküldtek-e egy adott vezérlőnevet. Ha igen, akkor gondoskodunk arról, hogy a szükséges fájlt be tudjuk tölteni a vezérlők könyvtárába:
// Szükség esetén speciális vezérlő szükséges if ($controller = JRequest::getWord("vezérlő") ) ( $elérési út = JPATH_COMPONENT. DS. "vezérlők" . DS. $vezérlő . ".php" ; if (fájl_létezik ($útvonal ) ) ( igényel_egyszer $útvonal ; ) else ( $controller = "" ; ) ) |
Most példányosítjuk a vezérlő osztályunkat a fent meghatározott névvel:
Amint a feladat befejeződött, szükség esetén átirányítást végzünk:
// Átirányítás, ha a vezérlő beállította$vezérlő -> átirányítás () ; |
Vezérlő osztály
A linkek összetevő általános (specifikus) vezérlője itt található: …/components/com_weblinks/controller.php.
Ez az egész osztály meghatároz egy megjelenítési metódust, amely az alapértelmezett metódus, hacsak a felhasználó nem ad meg más feladatot.
definiált ("_JEXEC" ) vagy die ( "Korlátozott hozzáférés" ); jimport() ; "joomla.application.component.controller"/** * Weblinkek komponensvezérlő * * @package Joomla * @subpackage Weblinkek * @1.5 óta */ osztályú WeblinksController kiterjeszti a JController (/** * A weblinkek nézetének megjelenítési módja * * @access public * @asce 1.5 */ függvény display() (// Alapértelmezett nézet beállítása, ha nem létezik if ( ! JRequest:: getCmd ( "nézet" ) ) ( JRequest:: setVar ( "view" , "categories" ) ; )//frissítse a weblink találati számát if (JRequest:: getCmd ("view" ) == "weblink" ) ( $model =& $this -> getModel ( "weblink" ) ; $model -> hit () ; )// Gyorsítótárazási logika megtekintése -- egyszerű... be vagyunk jelentkezve? |
$user = &JFactory::getUser(); $view = JRequest::getVar("view");.
$viewcache = JRequest::getVar("viewcache" , "1" , "POST" , "INT" ) ; if ($user -> get ("id" ) || ($view == "category" && $viewcache == 0 ) ) ( szülő:: display (false) ; ) else ( szülő:: megjelenítés (igaz) ; ) ) ) Ebben a módszerben az alapértelmezett nézetet úgy állítjuk be, hogy kategóriákat mutasson, kivéve, ha másik nézetet adtunk át lekérdezési karakterlánc-paraméterként. Ha a szükséges nézet weblink, akkor növeljük a linknézet számlálóját. Ezután beállítjuk a nézet változó értékét és hívjuk A szülőosztályunk JController diplay metódusa.
Külön érdemes odafigyelni a getModel metódus meghívására. Letölti a szükségeset
Ezután megnyitjuk a nézet osztályt.
Osztály megtekintése
Mivel feltételezzük, hogy kategórianézetet akarunk, ez a következő fájl kerül végrehajtásra: …/components/com_weblinks/views/categories/view.html.php
// Ellenőrizze, hogy ez a fájl szerepel-e a Joomla! defined("_JEXEC") or die("Korlátozott hozzáférés"); jimport() ; "joomla.application.component.view"/** * HTML View osztály a WebLinks összetevőhöz * * @static * @package Joomla * @subpackage Weblinks * @1.0 óta */ osztály WeblinksViewCategories kiterjeszti a JView-t ( függvény megjelenítése( $tpl = null ) ( globális $ mainframe ; $document =& JFactory:: getDocument () ; $categories =& $this -> get ( "data" ) ; $total =& $this -> get ("összesen" ) ; $state =& $this -> get ( "állapot" );// Az oldal/összetevő konfigurációjának lekérése $params = & $mainframe -> getParams () ; $menus = &JSite::getMenu();$menü = $menük -> getActive () ; // mivel az alkalmazás alapértelmezett oldalcímet állít be, ezt be kell szereznünk// közvetlenül a menüpontból if (is_object ( $menu ) ) ( $menu_params = new JParameter( $menu -> params ) ; if (! $menu_params -> get ( "page_title" ) ) ( $params -> set ( "oldal_címe" , JText:: _( "Web hivatkozások" ) ; ) ) else ( $params -> set ( "page_title" , JText:: _( "Web Links" ) ) ) ; ) $document -> setTitle ( $params -> get ( "oldal_címe") " ) ;// Állítson be néhány alapértelmezett értéket, ha nincs beállítva a paramétereknél $params -> def ("comp_description" , JText::_("WEBLINKS_DESC" ) ) ;// Képcímke attribútumok meghatározása< count ($categories ) ; $i ++ ) { $category =& $categories [ $i ] ; $category ->if ($params -> get ("image" ) != - 1 ) ( if ($params -> get ("image_align" ) != "" ) $attribs [ "align" ] = $params -> get (" image_align" ) ; else $attribs [ "align" ] = "" ; $attribs [ "hspace" ] = 6 ; // Használja a statikus HTML könyvtárat a képcímke felépítéséhez$image = JHTML:: _("image" , "images/stories/" . $params -> get ("image") , JText:: _("Web hivatkozások" ) , $attribs ) ; ) for ($i = 0 ; $i link = JÚtvonal::_( |
Ez ismét egy nagyon egyszerű osztály egyetlen megjelenítési módszerrel. A legtöbb logika itt a linkkomponensre jellemző, de ha alaposan megnézzük, megtalálhatjuk a legtöbb komponensnézet-osztályban használt funkciókat. A megjelenítési metódus végén ez az osztály meghívja a szülőt (JView) megjelenítési mód, átadja a megjelenítendő sablon nevét. Ha a megjelenítési sablon neve nem kerül átadásra, a rendszer az "alapértelmezett" sablont használja.
És végül megnyitjuk a sablon osztályt.
Sablon osztály
Egyezzünk meg abban, hogy egy adott sablonnevet nem adtunk át, így az alapértelmezett sablon kerül felhasználásra. Ebben az esetben a következő fájlt veszik figyelembe: …/components/com_weblinks/views/categories/tmpl/default.php
-> escape ($this -> params -> get ("page_title" ) ) ;