Osnova web poveznica php. Layer Cake i com_weblinks Joomla. Kako uključiti cijele tekstove vijesti u svoj RSS feed, a ne samo njihove naslove

18.05.2020 Vijesti

Ulazna točka u Joomla! komponenta je slična za većinu komponenti. Za ovaj primjer koristit ćemo jednu od osnovnih Joomla komponenti - Web veze. Prva datoteka koja će se izvršiti u prednjem dijelu: …/components/com_weblinks/weblinks.php.

Prvo vidimo sigurnosnu provjeru osmišljenu kako bi bili sigurni da nitko ne može izravno nazvati ovu stranicu. Ovo je standard koji bi se trebao koristiti u svim vašim php datotekama (iako postoji nekoliko iznimaka):

Provjeravamo niz upita da vidimo je li poslan određeni naziv kontrolera. Ako je tako, osiguravamo da možemo učitati potrebnu datoteku u direktorij kontrolera:

// Zahtijeva određeni kontroler ako se traži if ($controller = JRequest::getWord("controller") ) ( $path = JPATH_COMPONENT. DS. "controllers" . DS. $controller. ".php" ; if (file_exists ($path) ) ( require_once $path ; ) else ( $controller = "" ; ))

Sada instanciramo našu klasu kontrolera koristeći naziv koji smo gore definirali:

Čim se zadatak završi, vršimo preusmjeravanje, ako je potrebno:

// Preusmjeri ako je postavio kontroler$kontrolor -> preusmjeriti () ;

Klasa kontrolera

Generički (specifični) kontroler za komponentu veza je ovdje: …/components/com_weblinks/controller.php.
Cijela ova klasa definira metodu prikaza, koja je zadana metoda koja se koristi osim ako korisnik ne specificira drugi zadatak.

definirano ("_JEXEC" ) ili die ( "Ograničeni pristup" ); jimport( "joomla.application.component.controller") ; /** * Weblinks Component Controller * * @package Joomla * @subpackage Weblinks * @od 1.5 */ klasa WeblinksController proširuje JController ( /** * Metoda za prikaz prikaza web veza * * @access public * @od 1.5 */ funkcija display() ( // Postavite zadani pogled ako nijedan ne postoji if ( ! JRequest:: getCmd ( "view" ) ) ( JRequest:: setVar ( "view" , "categories" ) ; ) //ažuriraj broj pogodaka za web vezu if (JRequest:: getCmd ("view" ) == "weblink" ) ( $model =& $this -> getModel ( "weblink" ) ; $model -> hit () ; ) // Pregledajte logiku predmemoriranja -- jednostavno... jesmo li prijavljeni?$korisnik = &JFactory::getUser(); $view = JRequest::getVar("view"); $viewcache = JRequest::getVar("viewcache" , "1" , "POST" , "INT" ) ; if ($user -> get ("id" ) || ($view == "category" && $viewcache == 0 ) ) ( parent:: display (false) ; ) else ( parent:: display (true) ; ) ) )

U ovoj metodi postavljamo zadani prikaz da prikazuje kategorije osim ako neki drugi prikaz nije proslijeđen kao parametar niza upita. Ako je traženi prikaz web veza, povećavamo brojač prikaza veze. Zatim postavljamo vrijednost varijable pogleda i pozivamo diplay metoda naše nadređene klase JController.
Vrijedno je obratiti posebnu pozornost na poziv getModel metode. Preuzima potrebne model za komponentu. U ovom primjeru, ova metoda će učitati model web veze koji se nalazi ovdje: …/components/com_weblinks/models/weblink.php.
Ovdje ćemo se složiti da nismo tražili određeni prikaz, pa će stoga naš pogled biti postavljen na kategorije.
Zatim otvaramo klasu pogleda.

Pogledaj razred

Budući da pretpostavljamo da želimo prikaz kategorije, ovo je sljedeća datoteka koja će se izvršiti: …/components/com_weblinks/views/categories/view.html.php

// Provjerite je li ova datoteka uključena u Joomla! definirano("_JEXEC") ili die("Ograničeni pristup"); jimport( "joomla.application.component.view") ; /** * HTML View klasa za WebLinks komponentu * * @static * @package Joomla * @subpackage Weblinks * @od 1.0 */ klasa WeblinksViewCategories proširuje JView ( funkcija display( $tpl = null ) ( globalni $mainframe ; $document =& JFactory:: getDocument () ; $categories =& $this -> get ( "data" ) ; $total =& $this -> dobiti ("ukupno"); $state =& $ovo -> dobiti ("stanje"); // Dobivanje konfiguracije stranice/komponente$params = & $mainframe -> getParams () ; $izbornici = &JSite::getMenu(); $menu = $menus -> getActive () ; // budući da aplikacija postavlja zadani naslov stranice, moramo ga dobiti // odmah iz same stavke izbornika if (is_object ( $menu ) ) ( $menu_params = new JParameter( $menu -> params ) ; if (! $menu_params -> get ( "page_title" ) ) ( $params -> set ( "page_title" , JText:: _( "Web veze" ) ) ; ) ) else ( $params -> set ( "page_title" , JText:: _( "Web veze" ) ) ;) $document -> setTitle ( $params -> get ( "page_title " ) ; // Postavite neke zadane vrijednosti ako nisu postavljene za parametre$params -> def ("comp_description" , JText::_("WEBLINKS_DESC" ) ) ; // Definirajte atribute oznake slike if ($params -> get ("image" ) != - 1 ) ( if ($params -> get ("image_align") != "" ) $attribs [ "align" ] = $params -> get (" image_align" ); else $attribs [ "align" ] = "" ; $attribs [ "hspace" ] = 6 ; // Koristite statičku HTML biblioteku za izradu oznake slike$image = JHTML:: _("image" , "images/stories/" . $params -> get ("image") , JText:: _("Web Links") , $attribs ) ; ) za ($i = 0 ; $i< count ($categories ) ; $i ++ ) { $category =& $categories [ $i ] ; $category ->veza = JRoute::_( "index.php?option=com_weblinks&view=category&id=". $kategorija -> puž ) ; // Pripremite opis kategorije$category -> description = JHTML:: _("content.prepare", $category -> description) ; ) $this -> assignRef ("slika", $slika) ; $this -> assignRef ("params" , $params ) ; $this -> assignRef ("kategorije" , $kategorije) ; roditelj::prikaz($tpl); ) ) ?>

Opet, ovo je vrlo jednostavna klasa s jednom metodom prikaza. Većina logike ovdje je specifična za komponentu veze, ali ako pažljivo pogledate, možete pronaći funkcionalnost koja se koristi u većini klasa prikaza komponente. Na kraju metode prikaza, ova klasa poziva roditelja (JView) način prikaza, prosljeđujući naziv predloška za prikaz. Ako naziv predloška za prikaz nije proslijeđen, koristi se "zadani" predložak.
I na kraju, otvaramo klasu predloška.

Predložak klase

Složimo se da određeni naziv predloška nije proslijeđen, pa će se koristiti zadani predložak. U ovom slučaju razmatrat će se sljedeća datoteka: …/components/com_weblinks/views/categories/tmpl/default.php
-> escape ($this -> params -> get ("page_title" ) ) ; ?>

parametri -> def ("slika" , - 1 ) != - 1 ) || $this -> parametri -> def ("show_comp_description", 1 ) ) : ?>
slika ) ): echo $ovo -> slika ; završi ako ; echo $this -> params -> get ("comp_description" ) ; ?>
    kategorije kao $category ) : ?>
  • bijeg ($kategorija -> naslov) ; ?> (numlinks; ?> )

Velik dio logike ovdje je specifičan za komponentu koja se izvršava. To također možete vidjeti iz koda u ovoj datoteci sav HTML, pomiješan s PHP-om - to su njegove karakteristike i svrha.

Ostale datoteke koje se koriste u komponentama

Nekoliko drugih vrsta datoteka koje možete pronaći u komponentama:

  • Pomoćnici - komponente često koriste datoteku helper.php ili pomoćni direktorij s mnogo datoteka. Ove datoteke obično sadrže samo općenite funkcionalnost za komponentu.
  • Čini se da su sredstva sveobuhvatna mapa za druge datoteke uključene u komponentu.
  • router.php - ova datoteka se koristi, kada je postavka SEF URL-a omogućena, za prevođenje URL-a u oba smjera (u čovjeku čitljiv s aliasima i u prikaz sustava Joomla s parametrima).
  • xml datoteke - obično definiraju parametre i druge informacije o komponenti, te njezin pregled. Koriste se, na primjer, pri stvaranju stavki izbornika komponente.
  • index.html - Dobra je praksa imati praznu datoteku index.html u svim vašim imenicima. Ovo je takva pasivna sigurnosna mjera.
  • css/images/js - mape koje sadrže razne datoteke za implementaciju dizajna i funkcionalnosti na strani klijenta (u pregledniku).

Postoji prijedlog u datoteci /uključuje/joomla.php u funkciji cleanText zamijeniti liniju

$tekst = strip_tags($tekst); $text = strip_tags ( $text , " " ) ;

Ovaj hack je namijenjen samo za slike koje su umetnute kao normalne slike. Za slike koje je umetnuo mambot (mosimage), ovaj hack neće raditi.

Kako učiniti da se izravna veza pojavi u komponenti com_weblinks

U weblinks.html.php morate zamijeniti liniju:

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

Kako natjerati Joomlu da radi na dva hosta (domene) u isto vrijeme. Oni. na primjer, na lokalnoj mreži na 10.0.0.15 i s internetske stranice-firmy.ru. Unatoč činjenici da su obje adrese dodijeljene istom stroju.

Prvo, cijela poanta problema je u tome što Joomla prikazuje sve slike i CSS datoteke (njihove staze u predlošku) u odnosu na svoju varijablu $mosConfig_live_site - osnovnu adresu stranice unesenu tijekom instalacije. A ako mu netko pokuša pristupiti s drugom adresom, tada se ništa u logici njegovog rada ne mijenja - osnovna adresa se uzima iz konfiguracijske datoteke. Na primjer, ako konfiguracija navodi da se Joomla nalazi na lokalnom hostu, pristupite s lokalna mreža, čak i ako ispravno konfiguriran Apache koji osluškuje adresu 192.168.0.1 ne mijenja ništa u njoj - src slika i dalje će počinjati s "localhost", što će za druga računala već biti njegov vlastiti lokalni host. Fokus rješenja za takvi slučajevi su zamjenska varijabla $mosConfig_live_site za traženi host, tako da sve funkcije mogu proizvesti ispravne veze i već voditi korisnika do jedne ili druge virtualne stranice (proizvesti ispravne osnovne staze do slika i osnovne staze do adresa). Auto live site mambot koji to može automatizirati. Ako vam na neki način ne odgovara, onda se u principu može ponoviti, za tu svrhu u konfiguracija.php Umjesto definicije $mosConfig_live_site trebate napisati svoj kod. Nešto kao:

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

Potrebno je obratiti pozornost da ako koristite predmemoriju, morate imati i dva različita direktorija za predmemoriju za dva hosta, jer se linkovi na različite hostove mogu presijecati u predmemoriji, a onda korisnik s pogrešne mreže neće nikamo stići . Varijabla $mosConfig_cachepath odgovorna je za predmemoriju.

Kako učiniti da se dvije komponente pojavljuju istovremeno na jednoj stranici

Odmah ću vam reći - nije sve tako jednostavno. To ipak nije modul. Stoga, prvo, vrijedi tražiti alternativu, tj. Zacijelo popularna komponenta dolazi s modulima koji mogu ponoviti njezinu funkcionalnost. Ako nema ništa takvo onda je ovo opcija. Može se napraviti kao modul, ili se, teoretski, može umetnuti u predložak. Ideja je sljedeća - pozivanje komponente preko index2.php (što i zašto - pročitajte cijelu činjenicu). Oni. možete napraviti iframe sa src="index2.php?option=com_component&no_html=1" na željenoj točki umetanja za drugu komponentu. I bit će prikazan tamo. Druga stvar je da je malo vjerojatno da će biti moguće u potpunosti osigurati funkcionalnost. Ali ipak, ovo je izlaz.

Ili upotrijebite konstrukciju: mosLoadComponent("com_mycomp" ) ;

Ali, ako se komponenta izvršava na ovaj način, onda morate shvatiti da ona ne zna za vaše manipulacije i da će raditi u skladu sa svojom $opcijom i $zadatkom.

Kako povećati dužinu naslova u članku

Morate pokrenuti sljedeće dvije naredbe u phpMyAdmin-u (postoji posebna stranica za izvršavanje SQL upita), samo zamijenite ###_ svojim stvarnim prefiksom tablice. Najveći mogući broj je 255. U primjeru se koristi 200.

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

Kako u svoj RSS feed uključiti cijele tekstove vijesti, a ne samo njihove naslove

Da biste to učinili, u datoteci /components/com_rss/rss.php morate zamijeniti

$item_description = $row ->introtext ; $item_description = $row ->fulltext ;

Kako mogu napraviti dvije Joomla stranice koristeći istu bazu podataka ili koristeći iste datoteke?

Što se tiče korištenja jedne baze podataka, morate napisati jednu bazu podataka u configuration.php za dva motora, ali morate razumjeti što radite. Budući da će održavanje sesija za korisnike u ovom slučaju biti vrlo problematično, jer su domene različite. Oni. unosi za prijavu u tablici #__sessions (mogu se) preklapati.

Ako želite koristiti iste datoteke bez kopiranja velike distribucije, tada u načelu možete koristiti naredbu “ln -s” u Linuxu za stvaranje simboličkih poveznica na postojeće datoteke i ne kopirati ih za novo mjesto.

Kako stvoriti virtualnu stranicu dostupnu na određenoj adresi u općem Joomla dizajnu (http:/ /site.ru/super_page)

  • Prvi način je korištenje neke vrste SEF komponente, u kojoj specificirate željeni virtualni put za statičnu stranicu. Ovdje postoji minus - ova komponenta će početi prepravljati sve ostale veze (i općenito su te komponente vrlo gladne energije i zahtijevaju puno resursa za rad).
  • Stvorite alias za takvu stranicu pomoću mod_prepisati I .htaccess. Da biste to učinili potrebno vam je:
    • Napravite statičnu stranicu s tekstom koji vam je potreban, saznajte njen ID i adresu (nije potrebno kreirati takvu stranicu, možda već postoji i općenito je to bilo koja komponenta, ne nužno com_content)
    • Smisli pseudonim, neka bude " super_puper"
    • Otvorite .htaccess i prije retka "RewriteCond %(REQUEST_FILENAME) !-f" napišite:
RewriteRule ^(super_puper) index.php?option=com_content&task=view&id=12 RewriteCond %(REQUEST_FILENAME) !-f
    • I sada, pod uvjetom da se Joomla nalazi na site.ru, kada otvorite vezu http:/ /site.ru/super_puper otvorit će se potrebna statična stranica s vašim podacima. Sam link "index.php?option=com_content&task=view&id=12" može biti kakav god vam treba, glavno je da link nije apsolutni (tj. s http:/ /...) i relativni ( mora početi s index.php?...)

Kako onemogućiti predmemoriju za određeni članak

Ovo može biti potrebno ako koristite mambota rd_addphp za umetanje bilo kakvih skripti koje bi trebale generirati nasumične brojeve ili nasumični tekst svaki put, bez obzira na Joomla sustav predmemoriranja. Da biste onemogućili predmemoriju određene stavke, morate saznati njen ID (u administratorskoj ploči, prilikom uređivanja, pogledajte adresnu traku, pisat će nešto poput "...&id=123..."). Dakle, 123 će biti naš ID članka. Potrebno je zamijeniti u datoteci /components/com_content/content.php otprilike na liniji 1600

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

Gdje je 123 ID članka koji vam je potreban.

Instalirao sam puno komponenti, ali popis komponenti u administratorskom izborniku prikazuje njihov smanjeni broj, a zatim piše “Više komponenti...”. Kako prikazati sve komponente.

Potreban vam je redak u datoteci /administrator/modules/mod_fullmenu.php

$topLevelLimit = 19 ;

zamijenjen sa

$topLevelLimit = 199 ;

Kako instalirati kopiju komponente

Mora se reći da je zadatak izuzetno težak. Ako ne razumijete kako komponenta radi, ne biste trebali ni pokušavati. Za one koji još uvijek žele primijetiti glavne točke:

  • U XML datoteci preimenujte naziv komponente u oznaci imena
  • Zatim trebate preimenovati korištene tablice (prvo u XML datoteci, a zatim u svim sastavnim datotekama, gdje god se koristi objekt baze podataka $baza podataka i metoda setQuery)
  • Također preimenujte sve staze u komponentama. Staze se mogu koristiti u referencama na sebe ili u imenima uključenih datoteka. Najčešće se to svodi na traženje podniza com_componentname i njegovu zamjenu novim.

Ali ovu metodu ne jamči ništa. Kod jednostavnih to može i proći će, ali kod složenih nitko ne garantira.

Kako napraviti da jedna pozicija nasumično prikazuje jedan od modula koji su joj dodijeljeni

  • Opcija 1 - hakirajte funkciju mosLoadModules. U predlošku na mjestu gdje je potrebno prikazati jedan od N modula upišemo (obratite pažnju na treći argument):
mosLoadModules("pozicija", display_setup,true);

I malo ispravljamo samu gornju funkciju:

funkcija mosLoadModules( $position ="left" , $style =0 , $show_random = false ) ( ... $allModules =& initModules() ; if (isset ( $GLOBALS [ "_MOS_MODULES" ] [ $position ] ) ) ( $modules = $GLOBALS [ "_MOS_MODULES" ] [ $position ] ; ) else ( $modules = array () ; ) //dodajte ovdje if ($show_random && sizeof ($modules ) >0 ) ( $tmp = $modules [ rand (0 ,sizeof ($modules ) -1 ) ] ; $modules = array ($tmp ) ; ) //kraj izjave if (count ( $modules )< 1 ) { $style = 0 ; }

Dodali smo mu treći argument (koji se koristi u predlošku, gdje smo napisali true) i modificirali kod.

  • Druga opcija je bezbolnija, samo mijenjamo predložak. Ali više radno intenzivan - moramo stvoriti nekoliko pozicija. Prvo stvaramo nekoliko nove pozicije moduli, na primjer new1 ... new10. Uštedjeti. Na pravo mjesto u predlošku, prije pozivanja funkcije mosLoadModules, dodajte potreban kod:
$rand_num = rand(1,10); //od 1 do 10 - kao u nazivu pozicije mosLoadModules ("novo". $rand_num, display_settings);

Vjerujem da ću preimenovanjem mape /administrator/ učiniti svoju stranicu sigurnijom

Ova opcija nije standardna. Ali zapravo je moguće, organiziranjem pretraživanja u Joomla datotekama, svako pojavljivanje takve riječi zamijeniti vašom - tajna. Ponekad se kasnije mogu pojaviti pogreške o nemogućnosti pristupa datotekama, ali znajući datoteku i broj retka, one se mogu ispraviti. Dakle, problem je, načelno, rješiv.

Počnimo promatrati komponente tako što ćemo pogledati kako osnovna komponenta Weblinks radi u administratorskom dijelu web stranice. Ova komponenta, tipična za ovaj dio web stranice, vrlo je slična svojim ostalim komponentama namijenjenim upravljanju člancima, korisnicima, modulima itd.

Programske datoteke za ovu komponentu navedene su u nastavku. Sve ove datoteke nalaze se u mapi administator/components/com_weblinks. U ostatku ovog poglavlja, svi nazivi datoteka komponenti Weblinks se odnose na ovu početnu mapu osim ako nije drugačije navedeno. Većina datoteka organizirana je prema MVC uzorku. Konkretno, sve datoteke pogleda nalaze se u podmapi pogleda, a sve glavne datoteke modela i kontrolera nalaze se u podmapama modela i kontrolera. Također su dopunjene instalacijskim, konfiguracijskim i pomoćnim datotekama.

Datoteke administrativnog dijela komponenteWeb veze, osim datoteka index.html

  • controllers/weblink.php - Glavni kontroler za uređivanje Jednostruki kontroler weblinka
  • controllers/weblinks.php - Glavni kontroler za kompajliranje Controllera i prikaz popisa web poveznica na zaslonu Weblinks Managera
  • helpers/weblinks.php - Pruža različite metode koje se koriste u kontrolerima i prikazima
  • modeli/polja/ordering.php - JformField model koji prikazuje stupac redoslijeda web veza na zaslonu Upravitelja web veza
  • modeli/forms/weblink.xml - XML ​​datoteka koja se koristi u klasi Jform-Model Field za raspored obrasca s poljima za unos i uređivanje web poveznica na ekranu
  • models/weblink.php - Model za model poveznice s jednim zaslonom
  • models/weblinks.php - Model za zaslonski obrazac upravitelja Model web poveznica
  • sql/install.mysql.utf8.sql - SQL datoteka za stvaranje tablice web veza tijekom instalacije
  • sql/uninstall.mysql.ut8.sql - SQL datoteka za uklanjanje tablice web veza tijekom instalacije
  • tables/weblink.php - Pruža klasu Model
  • views/weblink/tmpl/edit_metadata.php - Izvorna datoteka izgleda za uređivanje metapodataka web veze

Administrativni dio komponente Weblinks

  • views/weblink/tmpl/edit_params.php - Datoteka izgleda izvora za uređivanje opcija odabira pojedinačne web veze
  • views/weblink/tmpl/edit.php - Izvorna datoteka izgleda za uređivanje web veze
  • views/view.html.php - Glavna klasa prikaza za prikaz jedne web veze u HTML formatu Datoteka izvornog rasporeda za upravitelja web vezama
  • views/weblinks/view.html.php - Glavna klasa prikaza za prikaz web poveznica u HTML formatu izravno na zaslonu Upravitelja web veza
  • access.xml - XML ​​datoteka koja pruža popis radnji za sustav kontrole pristupa (ACL).
  • config.xml - XML ​​datoteka koja pruža popis opcija za odabir konfiguracije komponente
  • controller.php - Glavna klasa kontrolera
  • weblinks.php - Ulazna točka za zahtjev
  • weblinks.xml - XML ​​datoteka koja se koristi za kontrolu procesa instalacije

Slojeviti kolač

Govorit ćemo o komponenti com_weblinks i html označavanju Joomla stranice. O tome kako lako i jednostavno stvoriti direktorij poveznica na Joomla web stranici.

Ovaj CMS je kreiran za interaktivni rad s registriranim korisnikom, bez izravnog kodiranja. Iako razvojni trend Joomle dovodi do napuštanja komponente com_weblinks kao potpuno beskorisne na web stranici, i jednostavnog dodavanja dodatne težine (više od 100 kb - 90 datoteka) ionako "teškom" sustavu. Ali za sada je ova komponenta još uvijek prisutna u distribuciji i koriste je neki programeri.

Stranica Joomla web stranice vidljiva na ekranu je slojevita torta u čiju su konstrukciju istovremeno uključeni mnogi blokovi (a time i mnogi predlošci). Ovdje na scenu stupa Joomla filozofija - izgradnja web stranice velikih blokova. Svaki blok mora imati vlastiti predložak HTML oznake (izgled).

Glavni blokovi:

Uzorak početna stranica(site_template/index.php), koji svojim html označavanjem definira pozicije za module i komponente i prikazuje te module i komponente.
- predložak stranice
- predlošci modula
- predlošci komponenti

Svaki od ovih velikih blokova dostupan je za uređivanje (promjene). To jest, možete zasebno uređivati, na primjer, predložak bilo kojeg modula ili komponente, i on će izgledati novo na stranici. Isto vrijedi i za predložak stranice.

Programeru početniku može biti teško razumjeti da je prvi redak u sadržajnom dijelu stranice prikazan kao naslov stranice i da se uređuje na stranici za uređivanje stavke izbornika koja upućuje na ovu stranicu. Da je drugi redak izveden iz predloška komponente com_content ili com_weblinks. I stringovi u predlošcima su obično string varijable i njihova inicijalizacija i lokalizacija se provodi u jezičnim datotekama, kao što su language\ru-RU\ru-RU.mod_weblinks.ini i slično.

Ponekad je početnik zbunjen koji je predložak proizveo ovaj ili onaj redak, koji na stranici na ekranu izgleda kao logičan nastavak iste priče. Ispada da je jedan red u jednom predlošku, drugi u drugom predlošku, a treći u trećem. Tablica s karticama ispod je izlaz iz predloška modula mod_tabform.

Ponekad se predlošci modula nazivaju izgledi. Ali ovo je pitanje terminologije. Suština je ista - to je "odjeća" za sadržaj. Ispravnije bi bilo reći označavanje. Dakle, izgled jedne stranice zaslona je in različite datoteke Joomla imenici.

Jelovnik

Mnogi novi Joomla programeri često ne razumiju da stavke izbornika mogu imati različite vrste. Drugim riječima - stavke izbornika mogu se odnositi na Joomla objekte različiti tipovi. To mogu biti različiti objekti, kao što su: komponente (glasovanje, pretraživanje, imenik poveznica itd.).

Odabir vrste stavke izbornika:

Kontakti (com_contact)
Popis kategorija kontakata (kategorije)
Popis kontakata određene kategorije (kategorija)
kontakt ( kontakt)
Omiljeni kontakti (istaknuti)

Materijali (com_content)
Arhivski materijali (arhiva)
Materijal (članak)
Popis svih kategorija ( kategorije)
Kategorija bloga
Popis materijala kategorije (kategorija)
Istaknuti materijali
Stvorite materijal

Pametno pretraživanje (com_search)
Traži ( traži)

Pozdrav svijete! ( com_helloworld)
Poruka ( Pozdrav svijete)

Feed vijesti (com_newsfeeds)
Popis svih kategorija feedova vijesti ( kategorije)
Popis feedova vijesti u kategoriji (kategorija)
Newsfeed

Traži ( com_search)
Obrazac za pretraživanje i popis rezultata pretraživanja (pretraživanje)

Upravitelj korisnika (com_users)
Obrazac za autorizaciju (prijava)
Korisnički profil (profil)
Promjena korisničkog profila
Upisnica
Oporavak korisničkog imena (podsjetnik)
Promjena lozinke (poništavanje)

Omotač (com_wrapper)
Omot

Kao što vidite, ovdje su sve vrste izbornika komponente. Svojim imenom tip stavke izbornika zapravo označava naziv predloška tipa svoje komponente. Predlošci komponenti nalaze se u direktorijima pogleda:

joomla\components\com_weblinks\views\categories
joomla\components\com_weblinks\views\category
joomla\components\com_weblinks\views\weblink
joomla\components\com_users\views\login

Kao što vidite, nazivi tipova veza u izborniku i nazivi predložaka u direktorijima vews su isti.

Programer ima mogućnost stvaranja novih nestandardnih predložaka (izgleda) za komponente. Ovi novi izgledi također će se odraziti kao nove vrste izbornika u prozoru za odabir vrste izbornika. Ovo je posebna tema.

Demo sadržaj Joomla distribucije

Pogledajmo kako je izgrađena hijerarhija stavki izbornika "O Joomli" za prikaz komponente com_weblinks na zadanom demo sadržaju (Beez2 - Zadano) Joomla predlošku.

Idemo na administrativnu ploču za uređivanje komponente com_weblinks: Komponente->Veze. Vidimo da je u demo sadržaju koji dolazi s distribucijom stvoreno pet kategorija za komponentu com_weblinks. To znači da će poveznice biti raspoređene u pet kategorija. Sve stvorene kategorije bit će spremljene u tablici baze podataka #_categories. Kategorije za ostale komponente također su pohranjene u istoj tablici.

Uzorak podataka-Weblinkovi
|-Veze za park
|-Joomla! Specifične veze
|-|-Ostali izvori
Nekategorizirano

U izborniku About Joomla (u uređivaču izbornika), hijerarhija stavki izbornika stvorena je u skladu s tim:

Hijerarhija stavki izbornika:

Korištenje Joomla! (vrsta: materijal)
|-Korištenje proširenja (tip: popis svih kategorija) :: popis kategorija u materijalima
|-|-Komponente (tip: blog kategorije) :: kategorija u materijalima
|-|-|-Komponenta web poveznica (tip: materijal)
|-|-|-|-Pošaljite web vezu (upišite: kreirajte vezu) :: u komponenti Veze
|-|-|-|-Weblinks Pojedinačna kategorija (tip: popis poveznica u kategoriji) :: u komponenti Linkovi
|-|-|-|-Kategorije web veza (tip: popis kategorija veza) :: u komponenti Veze

Vidimo da neke stavke izbornika imaju tipove: popis kategorija, popis poveznica u kategoriji i stvaranje veze.
"Popis kategorija veza" navodi gornju kategoriju iz koje će se prikazati hijerarhija.
"Popis poveznica u kategoriji" određuje kategoriju čije će poveznice biti prikazane.
U stavci “Kreiraj poveznicu” prikazat će se obrazac koji će registrirani korisnik morati ispuniti.
Usput, ovako izgleda poveznica na ovaj obrazac u uređivaču (izgled će se promijeniti u adresnoj traci):

index.php?option=com_weblinks&view=form&layout=edit

Neke stavke jelovnika mogu se prikazati samo registriranim korisnicima! Na primjer, stavka izbornika tipa "Stvori vezu" bit će vidljiva samo registriranim korisnicima. Ova je značajka stvorena posebno kako bi registrirani korisnici mogli stvarati poveznice koje će biti objavljene na stranici.

Dakle, komponenta com_weblinks daje dobar način interaktivno ispunjavanje stranice zanimljivim poveznicama. Štoviše, svi linkovi koji će biti postavljeni na takvu stranicu imaju preusmjeravanje, odnosno neće biti indeksirani kao vanjski. Možda ste vidjeli takve poveznice na forumima. Kada prijeđete mišem preko takvog linka, vidjet ćete adresu svoje stranice, a tek nakon klika na nju bit ćete preusmjereni na adresu koju ste naveli.

Mogućnost da korisnik doda poveznice na vanjske stranice glavna je prednost i smisao komponente com_weblinks, kao i mogućnost da korisnik doda novi sadržaj - članke, slike, video datoteke itd.

Omogućiti registriranom korisniku s pravima da popuni stranicu sadržajem bez izravnog kodiranja osnovna je filozofija CMS Joomla.

Nekategorizirano
Ogledni podaci-članci
|- Joomla!
|-|- Proširenja
|-|-|- Komponente
|-|-|- Moduli
|-|-|-|- Sadržajni moduli
|-|-|-|- Korisnički moduli
|-|-|-|- Moduli zaslona
|-|-|-|- Pomoćni moduli
|-|-|-|- Navigacijski moduli
|-|-|- Predlošci
|-|-|-|- Atomski
|-|-|-|- Beez 20
|-|-|-|- Beez 5
|-|-|- Jezici
|-|-|- Dodaci
|- Mjesto parka
|-|- Blog parka
|-|- Galerija fotografija
|-|-|- Životinje
|-|-|- Krajolik
|- Stranica voćarne
|-|- Uzgajivači
|-|- Recepti

Čini se da nema previše kategorija za sadržaj!
Također možete vidjeti hijerarhiju kategorija u materijalima pomoću upita prema tablici kategorija u bazi podataka:

SELECT * FROM `#_categories` WHERE `extension` = "com_content"

Nastavljam s vama dijeliti male, ali vrlo korisne skripte za web stranice koje vam pomažu poboljšati stav tražilice na svoju stranicu. Ovaj put ćemo govoriti o pravilnom povezivanju stranica.

Prvo, stvorimo bazu podataka adresa stranica i mogućih sidara za svaku od njih. Kao bazu koristit ćemo *.txt datoteku. Struktura datoteke će biti ovakva:

Stranica_adresa_1; sidro_1, sidro_2, sidro_3,..., sidro_n adresa_stranice_2; ​​sidro_1, sidro_2, sidro_3,..., sidro_n adresa_stranice_3; sidro_1, sidro_2, sidro_3,..., sidro_n ... adresa_stranice_n; ​​sidro_1, sidro _2, sidro_3, ..., sidro_n

Kao što vidite, daljnja upotreba skripte moguća je s bilo kojim brojem adresa stranica i sidrišta za njih. Adresa stranice je napisana bez http://www.site.ru/, tj. odmah iz korijena bez prve kose crte. Adresa je odvojena od sidra točkom i zarezom, a sidra su odvojena samo zarezom. Također možete napisati punu adresu, to je meni osobno prikladnije, a možete sami promijeniti punjenje i izlaz rezultata, mislim da ćete to sami intuitivno shvatiti.

I tako je stvorena baza podataka veza i sidra za njih, u nastavku ću dati primjer PHP koda za izravno prikazivanje veza za povezivanje na web mjestu:

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

Ovaj kod zalijepimo bilo gdje na web mjesto, što prikazuje 5 nasumičnih veza iz baze podataka i nasumično sidro. Bolje je razrijediti sidra nego napisati samo 1 na vezu. S pravilnim povezivanjem na vašoj web stranici, odmah ćete vidjeti povećanje prometa i poboljšanje ostalih pokazatelja web stranice.

Veselim se vašim pitanjima u komentarima na ovaj post.

Datum objave: 03.03.2014
    Recenzije i komentari:

    Dmitrij:
    Hvala na scenariju, implementirat ću ga. Iz izvorni kod Nemoguće je kopirati sa stranice, kopira se samo u malim dijelovima, bilo bi zgodnije u cijelosti.

    Kiril:
    Hvala na napomeni o kopiranju, tek sam to vidio, pokušat ću to uskoro popraviti.

    Aleksej Pavlov:
    Greška u retku $tex = explode(":",$sendlist[$count] Treba vam točka-zarez, a ne dvotočka. Malo sam promijenio kod da bude jasniji:$sidro"; } ?>

    Matrk:
    Članak je potpuno beskoristan, jer... Blog ima zaštitu od kopiranja teksta.

    Kiril:
    Postoji mala greška u js-u, da, nema vremena da se to popravi, ali vjerojatno je netko drugi beskoristan, jer nije dovoljno pametan, u ovom slučaju pogledajte izvorni kod stranice i preuzmite ga od tamo

    Matrk:
    Oni. Trebam li ipak proći kroz izvorni kod i očistiti ga od svog smeća? Ti si duhovit.

    Kiril:
    Znači li to da nekome nešto dugujem? Jesam li ti uzeo pare, trudiš li se ovdje, daješ besplatne savjete :))) Besplatan sir je samo u mišolovci, shvatit ćeš kako budeš stariji.

    Kiril:
    Uklonio sam dovratnik, uživajte u svom zdravlju.

    Andrej Kopaev:
    1 - vjerojatno je bolje to učiniti pomoću mysql baze podataka, radit će brže i lakše je dodati 2 - Ne razumijem koja je svrha generiranja popisa veza svaki put? Kako to utječe na rast prometa? Da li je moguće učitavanje pomoću Ajaxa, tj. jel ovo za ljude ili za botove?

    www.site:
    Za napredovanje, doduše, osobno nisam pristalica takvih manipulacija PS-om.