A weblinkek alapja php. Layer Cake és com_weblinks Joomla. Hogyan helyezhet el teljes hírszöveget az RSS-hírcsatornájába, nem csak a címsorokat

18.05.2020 hírek

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 JController szülőosztályunk diplay metódusa.
Külön érdemes odafigyelni a getModel metódus meghívására. Letölti a szükségeset az alkatrész modelljét. Ebben a példában ez a módszer az itt található weblink modellt tölti be: …/components/com_weblinks/models/weblink.php.
Itt megállapodunk abban, hogy nem kértünk konkrét nézetet, ezért nézetünk kategóriákra lesz beállítva.
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, azt 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 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< count ($categories ) ; $i ++ ) { $category =& $categories [ $i ] ; $category ->link = JÚtvonal::_( "index.php?option=com_weblinks&view=category&id=". $kategória -> slug ) ; // Kategórialeírás elkészítése$category -> description = JHTML:: _("content.prepare" , $category -> description ) ; ) $this -> assignRef ( "image" , $image ) ; $this -> assignRef ("params" , $params ) ; $this -> assignRef ("categories" , $categories ) ; szülő::megjelenítés($tpl); ) ) ?>

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" ) ) ; ?>

params -> def ("image" , - 1 ) != - 1 ) || $this -> params -> def ("show_comp_description" , 1 ) ) : ?>
kép ) ): echo $this -> image ; endif ; echo $this -> params -> get ("comp_description" ) ; ?>
    kategóriák mint $kategória ) : ?>
  • escape ($kategória -> cím) ; ?> (numlinks ; ?> )

A logika nagy része itt a végrehajtott összetevőre jellemző. A kódból is láthatja, hogy ebben a fájlban minden HTML, PHP-vel keverve – ezek a tulajdonságai és célja.

Az összetevőkben használt egyéb fájlok

Számos egyéb fájltípus, amelyet az összetevőkben találhat:

  • Segítők – az összetevők gyakran használnak helper.php fájlt vagy helpers könyvtárat sok fájllal. Ezek a fájlok általában csak általánosakat tartalmaznak funkcionalitás az alkatrészhez.
  • Úgy tűnik, hogy az Assets az összetevőben található egyéb fájlok összesítő mappája.
  • router.php - ez a fájl akkor használható, ha a SEF URL-beállítás engedélyezve van, hogy lefordítsa az URL-t mindkét irányba (ember által olvashatóan álnevekkel és rendszernézet Joomla paraméterekkel).
  • xml fájlok – általában paramétereket és egyéb információkat határoznak meg az összetevőről és annak áttekintéséről. Ezeket például az összetevő menüelemek létrehozásakor használják.
  • index.html – Jó gyakorlat, ha minden könyvtárában üres index.html fájl található. Ez egy ilyen passzív biztonsági intézkedés.
  • css/images/js – Különféle fájlokat tartalmazó mappák, amelyek a kliens oldalon (a böngészőben) megvalósítják a tervezést és a funkcionalitást.

Van egy javaslat a fájlban /includes/joomla.php funkcióban cleanText cserélje ki a vonalat

$szöveg = strip_tags($szöveg); $szöveg = strip_tags ( $szöveg , " " ) ;

Ez a hack célja csak normál képként beszúrt képekhez. Mambot (mosimage) által beillesztett képek esetén ez a feltörés nem működik.

Hogyan jeleníthet meg közvetlen hivatkozást a com_weblinks komponensben

BAN BEN weblinks.html.php ki kell cserélni a sort:

$link = sefRelToAbs( "index.php?option=com_weblinks&task=view&catid=". $catid ."&id=" . $sor ->id ) ; $link = $sor ->url ;

Hogyan lehet a Joomlát egyszerre két gazdagépen (domain) működtetni. Azok. például a 10.0.0.15 helyi hálózaton és a-firmy.ru webhelyről. Annak ellenére, hogy mindkét cím ugyanahhoz a géphez van rendelve.

Először is, a probléma lényege az, hogy a Joomla az összes képet és CSS-fájlt (az elérési útjukat a sablonban) a $mosConfig_live_site változójához - a telepítés során megadott webhely alapcíméhez - viszonyítva jeleníti meg. És ha valaki más címmel próbál hozzáférni, akkor működési logikájában semmi sem változik - az alapcímet a konfigurációs fájlból veszik. Például, ha a konfiguráció azt állítja, hogy a Joomla a localhost-on található, akkor a hozzáférés innen helyi hálózat, még ha a 192.168.0.1 címet hallgató, helyesen konfigurált Apache nem is változtat rajta semmit - a képek src-je továbbra is „localhost”-val kezdődik, ami más gépeknél már a saját localhostja lesz. ilyen esetekben a $mosConfig_live_site helyettesítő változó a kért gazdagéphez, így minden függvény elő tudja állítani a megfelelő hivatkozásokat, és máris elvezeti a felhasználót egyik vagy másik virtuális webhelyre (a képekhez a megfelelő alapútvonalakat és a címekhez vezető alapútvonalakat állítja elő). egy Auto live site mambot, ami automatizálni tudja. Ha valamiben nem felel meg, akkor elvileg megismételhető, erre a célra a konfiguráció.php A $mosConfig_live_site definíciója helyett meg kell írnia a kódot. Valami hasonló:

if ($_SERVER [ "HTTP_HOST" ] =="host1.ru" ) $mosConfig_live_site = "host1.ru" ; else $mosConfig_live_site = "host2.ru" ;

Ügyelni kell arra, hogy ha gyorsítótárat használunk, akkor két különböző gyorsítótárnak is kell lennie két gazdagéphez, mert a különböző hostokra mutató hivatkozások keresztezhetik egymást a gyorsítótárban, és akkor a rossz hálózatról érkező felhasználó egyáltalán nem jut el sehova. . A gyorsítótárért a $mosConfig_cachepath változó felel.

Hogyan lehet két összetevőt egyszerre megjeleníteni egy oldalon

Azonnal megmondom - nem minden olyan egyszerű. Végül is ez nem egy modul. Ezért először is érdemes alternatívát keresni, pl. Egy népszerű komponens minden bizonnyal olyan modulokkal érkezik, amelyek képesek megismételni a funkcionalitást. Ha nincs ilyen, akkor ez egy lehetőség. Készíthető modulként, vagy elméletileg sablonba illeszthető. Az ötlet a következő - a komponens meghívása az index2.php-n keresztül (mi és miért - olvassa el a teljes tényt). Azok. létrehozhat egy iframe-et az src="index2.php?option=com_component&no_html=1" paraméterrel a második komponens kívánt beszúrási pontján. És ott megjelenik. A másik dolog az, hogy nem valószínű, hogy teljes mértékben biztosítható lesz a funkcionalitás. De ennek ellenére ez egy kiút.

Vagy használja a következő konstrukciót: mosLoadComponent("com_mycomp" ) ;

De ha az összetevőt így hajtják végre, akkor meg kell értenie, hogy nem tud a manipulációiról, és a $opció és a $feladata szerint fog működni.

Hogyan lehet növelni a cím hosszát egy cikkben

A következő két parancsot kell futtatnia a phpMyAdminban (van egy speciális oldal az SQL-lekérdezések végrehajtására), csak cserélje ki a ###_-t a valódi táblázat előtagjával. A maximális lehetséges szám 255. A példában 200-at használunk.

ALTER TABLE `###_content` CHANGE `title_alias` `title_alias` VARCHAR(200) NOT NULL; ALTER TABLE `###_content` CHANGE `title` `title` VARCHAR(200) NOT NULL;

Hogyan helyezhet el teljes hírszöveget az RSS-hírcsatornájába, nem csak a címsorokat

Ehhez a /components/com_rss/rss.php fájlban le kell cserélni

$item_description = $sor ->introtext ; $elem_leírása = $sor ->teljes szöveg ;

Hogyan készíthetek két Joomla webhelyet ugyanazzal az adatbázissal vagy ugyanazokkal a fájlokkal?

Ami egy adatbázis használatát illeti, egy adatbázist kell írnia a configuration.php fájlba két motorhoz, de értenie kell, hogy mit csinál. Mivel ebben az esetben a felhasználók munkameneteinek fenntartása nagyon problémás lesz, mivel a tartományok eltérőek. Azok. A #__sessions tábla bejelentkezési bejegyzései átfedésben lesznek (lehet).

Ha ugyanazokat a fájlokat nagy disztribúció másolása nélkül szeretné használni, akkor elvileg használhatja az „ln -s” parancsot Linuxban, hogy szimbolikus hivatkozásokat hozzon létre a meglévő fájlokhoz, és ne másolja azokat az új webhelyre.

Hogyan lehet létrehozni egy virtuális oldalt, amely egy adott címen elérhető az általános Joomla-dizájnban (http://site.ru/super_page)

  • Az első módszer valamilyen SEF komponens használata, amelyben megadjuk a statikus oldal kívánt virtuális elérési útját. Van itt egy mínusz - ez az összetevő elkezdi az összes többi hivatkozást átdolgozni (és általában ezek az összetevők nagyon energiaigényesek, és sok erőforrást igényelnek a működésükhöz).
  • Hozzon létre egy álnevet egy ilyen oldalhoz a segítségével mod_rewriteÉs .htaccess. Ehhez szüksége van:
    • Hozzon létre egy statikus oldalt a kívánt szöveggel, találja meg az azonosítóját és címét (nem szükséges ilyen oldalt létrehozni, lehet, hogy már létezik, és általában csak bármilyen komponens, nem feltétlenül com_content)
    • Találj ki egy álnevet, legyen " szuper_puper"
    • Nyissa meg a .htaccess fájlt, és a "RewriteCond %(REQUEST_FILENAME) !-f" sor elé írja be:
RewriteRule ^(super_puper) index.php?option=com_content&task=view&id=12 RewriteCond %(REQUEST_FILENAME) !-f
    • És most, feltéve, hogy a Joomla a site.ru webhelyen található, amikor megnyitja a http://site.ru/super_puper hivatkozást, megnyílik a szükséges statikus oldal az Ön adataival. Maga a link "index.php?option=com_content&task=view&id=12" bármi lehet, amire szüksége van, a lényeg az, hogy a link nem volt abszolút (azaz http:// /...-vel) és relatív ( kell index.php-vel kezdd?...)

Hogyan lehet letiltani a gyorsítótárazást egy adott cikknél

Erre akkor lehet szükség, ha az rd_addphp mambotot használja olyan szkriptek beszúrására, amelyeknek minden alkalommal véletlenszerű számokat vagy véletlenszerű szöveget kell generálniuk, függetlenül a Joomla gyorsítótárazási rendszerétől. Egy bizonyos elem gyorsítótárának letiltásához meg kell találnia az azonosítóját (az adminisztrációs panelen szerkesztéskor nézze meg a címsort, valami ilyesmit fog írni: "...&id=123..."). Így a 123 lesz a cikkazonosítónk. Cserélni kell a /components/com_content/content.php fájlban körülbelül az 1600-as sorban.

$cache ->call ( "HTML_content::show" , $sor , $params , $access , $page ) ; if ($row ->id !="123" ) $cache ->call ( "HTML_content::show" , $sor , $params , $access , $page ) ; else HTML_content::show ($sor, $params, $access, $page) ;

Ahol a 123 a szükséges cikkazonosító.

Nagyon sok összetevőt telepítettem, de az admin menüben a komponensek listája csökkentett számot mutat be, majd azt írja ki, hogy „További összetevők...”. Az összes komponens megjelenítése.

Szüksége van egy sorra a /administrator/modules/mod_fullmenu.php fájlban

$topLevelLimit = 19 ;

kicserélve

$topLevelLimit = 199 ;

Hogyan telepítsünk egy komponens másolatát

Azt kell mondanunk, hogy a feladat rendkívül nehéz. Ha nem érti az összetevő működését, akkor ne is próbálkozzon. Azok számára, akik még mindig szeretnék megjegyezni a főbb pontokat:

  • Az XML-fájlban nevezze át az összetevő nevét a névcímkében
  • Ezután át kell neveznie a használt táblákat (elsősorban az XML-fájlban, másodsorban az összes összetevőfájlban, bárhol is használják az adatbázis-objektumot $adatbázisés módszer setQuery)
  • Nevezze át az összes elérési utat a komponensekben is. Az elérési utak felhasználhatók önmagukra való hivatkozásokban vagy a mellékelt fájlok nevében. Ez leggyakrabban a com_componentname részkarakterlánc megkeresésére és egy újra cseréjére vezethető vissza.

De ez a módszer nem garantál semmit. Az egyszerűeknél ez lehetséges és elmúlik, de az összetetteknél senki sem garantálja.

Hogyan lehet egy pozíciót véletlenszerűen megjeleníteni a hozzá rendelt modulok közül

  • 1. lehetőség – törje fel a mosLoadModules funkciót. A sablonban azon a helyen, ahol meg kell jeleníteni az N modul egyikét, ezt írjuk (ügyeljen a harmadik argumentumra):
mosLoadModules("pozíció", display_setup,true);

És kissé javítjuk magát a fenti függvényt:

function mosLoadModules( $position ="left" , $style =0, $show_random = false ) ( ... $allModules =& initModules() ; if (isset ( $GLOBALS [ "_MOS_MODULES" ] [ $pozíció ] ) ) ( $modules = $GLOBALS [ "_MOS_MODULES" ] [ $pozíció ] ; ) else ( $modules = array () ; ) //add ide if ($show_random && sizeof ($modules ) >0 ) ( $tmp = $modules [ rand (0 ,sizeof ($modules ) -1 ) ] ; $modules = tömb ($tmp ) ; ) //utasítás vége if (count ( $modules )< 1 ) { $style = 0 ; }

Adtunk hozzá egy harmadik argumentumot (amit a sablonban használunk, ahol igazat írtunk), és módosítottuk a kódot.

  • A második lehetőség fájdalommentesebb, csak a sablont módosítjuk. De munkaigényesebb - több pozíciót kell létrehoznunk. Először létrehozunk néhányat új pozíciók modulok, például új1 ... új10. Megment. A sablon megfelelő helyén a mosLoadModules függvény meghívása előtt adja hozzá a szükséges kódot:
$rand_szám = rand(1,10); //1-től 10-ig - mint a pozíciónévben mosLoadModules ( "új" . $rand_num , display_settings ) ;

Úgy gondolom, hogy az /adminisrator/ mappa átnevezésével biztonságosabbá teszem a webhelyemet

Ez az opció nem alapfelszereltség. Valójában azonban lehetséges, hogy a Joomla-fájlokban keresést szervezve egy ilyen szó előfordulását a tiédre cserélje - titkos. Időnként később felbukkanhatnak a fájlokhoz való hozzáférés hiányával kapcsolatos hibák, de a fájl és a sorszám ismeretében ezek javíthatók. Ezért a probléma elvileg megoldható.

Kezdjük az összetevők megvizsgálásával, hogy megnézzük, hogyan működik az alapvető Weblinks összetevő a webhely adminisztrátori részében. Ez a webhely ezen részére jellemző komponens nagyon hasonlít a cikkek, felhasználók, modulok stb. kezelésére szolgáló egyéb összetevőihez.

Az ehhez az összetevőhöz tartozó programfájlok az alábbiakban találhatók. Mindezek a fájlok a mappában találhatók administator/components/com_weblinks. A fejezet további részében az összes Weblinks-összetevő fájlnevére a kezdőmappához képest hivatkozunk, hacsak nincs másképp jelezve. A fájlok többsége az MVC minta szerint van rendezve. Pontosabban, az összes nézetfájl a nézetek almappájában, az összes fő modell- és vezérlőfájl pedig a modellek, illetve a vezérlők almappájában található. Kiegészülnek telepítési, konfigurációs és segédfájlokkal is.

Az összetevő adminisztratív részének fájljaiWeblinkek, kivéve az index.html fájlokat

  • controllers/weblink.php - Fő vezérlő a szerkesztéshez Egyetlen weblink vezérlő
  • controllers/weblinks.php - Fő vezérlő a Vezérlő összeállításához és a webhivatkozások listájának megjelenítéséhez a Weblinks Manager képernyőn
  • helpers/weblinks.php – Különféle módszereket biztosít a vezérlőkben és nézetekben
  • models/fields/ordering.php – JformField modell, amely a webhivatkozások rendezési oszlopát jeleníti meg a Weblinks Manager képernyőn
  • models/forms/weblink.xml – a Jform-Model Field osztályban használt XML-fájl beviteli mezőket tartalmazó űrlap elrendezésére és webhivatkozások szerkesztésére a képernyőn
  • models/weblink.php - Modell egyetlen képernyős űrlap webhivatkozási modelljéhez
  • models/weblinks.php - Modell a menedzser képernyő űrlaphoz Webes hivatkozások modellje
  • sql/install.mysql.utf8.sql – SQL fájl a webhivatkozások táblázatának létrehozásához a telepítés során
  • sql/uninstall.mysql.ut8.sql – SQL-fájl a webhivatkozás-tábla eltávolításához a telepítés során
  • tables/weblink.php – A Model osztályt biztosítja
  • views/weblink/tmpl/edit_metadata.php – Forráselrendezési fájl a webhivatkozás metaadatainak szerkesztéséhez

A Weblinkek összetevő adminisztratív része

  • views/weblink/tmpl/edit_params.php – Forráselrendezési fájl egyetlen webhivatkozás-kiválasztási beállítások szerkesztéséhez
  • views/weblink/tmpl/edit.php – Forrás elrendezési fájl webhivatkozás szerkesztéséhez
  • views/view.html.php - Főnézet osztály egyetlen webhivatkozás megjelenítéséhez HTML formátumban Forrás elrendezési fájl a webes hivatkozáskezelőhöz
  • views/weblinks/view.html.php - Főnézet osztály a webhivatkozások HTML formátumban történő megjelenítéséhez közvetlenül a Webhivatkozáskezelő képernyőn
  • access.xml - XML-fájl, amely a hozzáférés-vezérlési lista (ACL) rendszer műveleteinek listáját tartalmazza
  • config.xml - XML-fájl, amely az összetevő konfigurációjának kiválasztására szolgáló lehetőségek listáját tartalmazza
  • controller.php - Fő vezérlő osztály
  • weblinks.php - Belépési pont a kérelemhez
  • weblinks.xml - a telepítési folyamat vezérlésére használt XML-fájl

Réteges torta

Szó lesz a com_weblinks komponensről és a html jelölésről Joomla oldalak. 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:

Minta kezdőlap(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 összetevősablonból származik. A sablonokban lévő karakterláncok pedig általában karakterlánc-változók, inicializálásuk és lokalizálásuk pedig nyelvi fájlokban történik, például language\ru-RU\ru-RU.mod_weblinks.ini és hasonlókban.

Néha a kezdőt zavarja, hogy 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 különböző objektumok lehetnek, mint például: komponensek (szavazás, keresés, linkkö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)
Kapcsolatba lépni ( kapcsolatba lépni)
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)

Helló Világ! ( com_helloworld)
Üzenet ( Helló Világ)

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írcsatorna

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 az összetevő tí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

Amint látja, a menü hivatkozástípusainak és a vews könyvtárakban lévő sablonok nevei megegyeznek.

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 Hivatkozások 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 néhány menüpontnak van típusa: 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 kell kitöltenie.
Egyébként a szerkesztőben így néz ki az űrlapra mutató hivatkozás (megjelenése megváltozik a címsorban):

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, vagyis 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á, csakúgy, mint az új tartalom hozzáadásának képessége – cikkek, képek, videofájlok stb.

A CMS Joomla alapfilozófiája, hogy egy jogosultsággal rendelkező regisztrált felhasználó közvetlen kódolás nélkül töltse fel tartalommal az oldalt.

Nincs kategorizálva
Mintaadatok-cikkek
|- 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
|-|- Termesztő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 a 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:

1. oldal címe 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, és te magad módosíthatod az eredmény kitöltését és kimenetét, 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:

".$tex2[$tex3].""; } ?>

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 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énzedet, itt próbálkozol, ingyen tanácsot adsz :)))) 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.