Baza weblink-urilor php. Layer Cake și com_weblinks Joomla. Cum să includeți texte complete de știri în fluxul dvs. RSS, nu doar titlurile acestora

18.05.2020 Știri

Punct de intrare în Joomla! componenta este similară pentru majoritatea componentelor. Pentru acest exemplu vom folosi una dintre componentele de bază ale Joomla - Web Links. Primul fișier care va fi executat în front-end: …/components/com_weblinks/weblinks.php.

Mai întâi vedem o verificare de securitate menită să ne asigurăm că nimeni nu poate apela direct această pagină. Acesta este standardul care ar trebui utilizat în toate fișierele dvs. php (deși există câteva excepții):

Verificăm șirul de interogare pentru a vedea dacă a fost trimis un anumit nume de controler. Dacă da, ne asigurăm că putem încărca fișierul necesar în directorul controlere:

// Solicită un controler specific dacă este solicitat if ($controller = JRequest::getWord("controller") ) ( $cale = JPATH_COMPONENT. DS. "controlere" . DS. $controller . ".php" ; if (fișier_există ($cale ) ) ( require_once $cale ; ) altfel ( $controller = "" ; ) )

Acum instanțiem clasa noastră de controler folosind numele pe care l-am definit mai sus:

De îndată ce sarcina este finalizată, efectuăm o redirecționare, dacă este necesar:

// Redirecționare dacă este setată de controler$controller -> redirecționare () ;

Clasa de controler

Controlerul generic (specific) pentru componenta link-uri este aici: …/components/com_weblinks/controller.php.
Această întreagă clasă definește o metodă de afișare, care este metoda implicită folosită, cu excepția cazului în care utilizatorul specifică o altă sarcină.

definit ("_JEXEC" ) sau die ("Acces restricționat" ); jimport( „joomla.application.component.controller”) ; /** * Weblinks Component Controller * * @pachet Joomla * @subpackage Weblinks * @din 1.5 */ clasa WeblinksController extinde JController ( /** * Metoda de a afișa o vizualizare a link-urilor web * * @access public * @de la 1.5 */ afisare functie() ( // Setați o vizualizare implicită dacă nu există dacă ( ! JRequest:: getCmd ( „vizualizare”) ) ( JRequest:: setVar ( „vizualizare” , „categorii” ) ; ) //actualizează numărul de accesări pentru link-ul web if (JRequest:: getCmd ("vizualizare" ) ​​== "weblink" ) ( $model =& $this -> getModel ( "weblink") ; $model -> hit () ; ) // Vizualizați logica de stocare în cache -- simplu... suntem conectați?$utilizator = &JFactory::getUser(); $view = JRequest::getVar("vizualizare"); $viewcache = JRequest::getVar("viewcache" , "1" , "POST" , "INT" ); if ($user -> get ("id" ) || ($view == "categorie" && $viewcache == 0 ) ) ( parent:: display (false) ; ) else ( parent:: display (true) ; ) ) )

În această metodă, am setat vizualizarea implicită să arate categorii, cu excepția cazului în care o altă vizualizare a fost transmisă ca parametru șir de interogare. Dacă vizualizarea necesară este link-ul web, creștem contorul de vizualizare a link-ului. Apoi setăm valoarea variabilei de vizualizare și apelăm metoda de afișare a clasei noastre părinte JController.
Merită să acordați o atenție deosebită apelului la metoda getModel. Descarcă necesarul model pentru componentă. În acest exemplu, această metodă va încărca modelul de link-uri web situat aici: …/components/com_weblinks/models/weblink.php.
Aici vom fi de acord că nu am solicitat o anumită vizualizare și, prin urmare, vizualizarea noastră va fi setată pe categorii.
Apoi, deschidem clasa de vizualizare.

Vizualizați clasa

Deoarece presupunem că vrem o vizualizare de categorie, acesta este următorul fișier care va fi executat: …/components/com_weblinks/views/categories/view.html.php

// Verificați pentru a vă asigura că acest fișier este inclus în Joomla! definit("_JEXEC") sau die ("Acces restricționat"); jimport( „joomla.application.component.view”) ; /** * Clasa HTML View pentru componenta WebLinks * * @static * @package Joomla * @subpackage Weblinks * @din 1.0 */ clasa WeblinksViewCategories extinde JView ( function display( $tpl = null ) ( global $mainframe ; $document =& JFactory:: getDocument () ; $categories =& $this -> get ( "date" ); $total =& $this -> get ("total" ); $state =& $this -> get ( "state" ); // Obține configurația paginii/componentelor$params = & $mainframe -> getParams () ; $meniuri = &JSite::getMenu(); $meniu = $meniuri -> getActive () ; // deoarece aplicația setează un titlu de pagină implicit, trebuie să-l obținem // chiar din elementul de meniu în sine if (este_obiect ( $meniu ) ) ( $menu_params = new JParameter( $meniu -> parametri ) ; if (! $menu_params -> get ( "page_title") ) ( $params -> set ( "page_title" , JText:: _( „Legături web” ) ) ; ) ) else ( $params -> set ( „page_title” , JText:: _( „Web Link-uri”) ) ); ) $document -> setTitle ( $params -> get ( „page_title”) " ) ) ; // Setați unele valori implicite dacă nu sunt setate pentru parametri$params -> def ("comp_description" , JText::_("WEBLINKS_DESC" ) ); // Definiți atributele etichetei imaginii if ($params -> get ("imagine" ) != - 1 ) ( if ($params -> get ("image_align" ) != "" ) $atribs [ "align" ] = $params -> get (" image_align" ); else $atribs [ "align" ] = "" ; $atribs [ "hspace" ] = 6 ; // Folosiți biblioteca HTML statică pentru a construi eticheta de imagine$image = JHTML:: _("imagine" , "imagini/povestiri/" . $params -> get ("imagine") , JText:: _("Web Link-uri" ) , $atribs ) ; ) pentru ($i = 0 ; $i< count ($categories ) ; $i ++ ) { $category =& $categories [ $i ] ; $category ->link = JRoute::_( „index.php?option=com_weblinks&view=category&id=". $categorie -> slug ) ; // Pregătește descrierea categoriei$categorie -> descriere = JHTML:: _("conținut.pregătiți" , $categorie -> descriere ) ; ) $this -> assignRef ( "imagine" , $image ) ; $this -> assignRef ("params" , $params ); $this -> assignRef ("categorii" , $categorii ); parent::display($tpl); ) ) ?>

Din nou, aceasta este o clasă foarte simplă cu o singură metodă de afișare. Cea mai mare parte a logicii de aici este specifică componentei link, dar dacă te uiți cu atenție, poți găsi funcționalitate folosită în majoritatea claselor de vizualizare a componentelor. La sfârșitul metodei de afișare, această clasă apelează părintele metoda de afișare (JView)., trecând numele șablonului de afișat. Dacă numele șablonului de afișare nu este transmis, se folosește șablonul „implicit”.
Și, în sfârșit, deschidem clasa șablonului.

Clasa șablon

Să fim de acord că nu a fost transmis un anumit nume de șablon, așa că va fi folosit șablonul implicit. În acest caz, va fi luat în considerare următorul dosar: …/components/com_weblinks/views/categories/tmpl/default.php
-> escape ($this -> params -> get ("page_title" ) ); ?>

params -> def ("imagine" , - 1 ) != - 1 ) || $this -> params -> def ("show_comp_description" , 1 ) ) : ?>
imagine ) ): echo $this -> imagine ; endif ; echo $this -> params -> get ("comp_description" ); ?>
    categorii ca $category ) : ?>
  • escape ($categorie -> titlu) ; ?> (legături numerice; ?>)

O mare parte din logica de aici este specifică componentei care se execută. Puteți vedea și din cod că în acest fișier tot HTML, amestecat cu PHP - acestea sunt caracteristicile și scopul său.

Alte fișiere utilizate în componente

Câteva dintre celelalte tipuri de fișiere pe care le puteți găsi în componente:

  • Helpers - componentele folosesc adesea un fișier helper.php sau un director helpers cu multe fișiere. Aceste fișiere conțin de obicei numai general funcţionalitate pentru componenta.
  • Assets pare a fi un folder cuprinzător pentru alte fișiere incluse în componentă.
  • router.php - acest fișier este folosit, când setarea URL SEF este activată, pentru a traduce URL-ul în ambele direcții (în mod citibil de om cu aliasuri și în vizualizarea sistemului Joomla cu parametri).
  • fișiere xml - de obicei definesc parametrii și alte informații despre componentă și prezentarea ei de ansamblu. Ele sunt utilizate, de exemplu, la crearea elementelor de meniu componente.
  • index.html - Este o practică bună să aveți un fișier index.html gol în toate directoarele dvs. Aceasta este o măsură de securitate atât de pasivă.
  • css/images/js - Foldere care conțin diferite fișiere pentru a implementa designul și funcționalitatea pe partea client (în browser).

Există o sugestie în dosar /include/joomla.phpîn funcțiune cleanTextînlocuiți linia

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

Acest hack este destinat numai pentru imaginile care sunt inserate ca imagini normale. Pentru imaginile inserate de un mambot (mosimage), acest hack nu va funcționa.

Cum să faci să apară un link direct în componenta com_weblinks

ÎN weblinks.html.php trebuie să înlocuiți linia:

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

Cum să faci Joomla să funcționeze pe două gazde (domenii) în același timp. Acestea. de exemplu, în rețeaua locală la 10.0.0.15 și de pe site-ul de Internet-firmy.ru. În ciuda faptului că ambele adrese sunt atribuite aceleiași mașini.

În primul rând, scopul problemei este că Joomla afișează toate imaginile și fișierele CSS (căile lor în șablon) în raport cu variabila $mosConfig_live_site - adresa de bază a site-ului introdusă în timpul instalării. Și dacă cineva încearcă să-l acceseze cu o altă adresă, atunci nimic din logica funcționării sale nu se schimbă - adresa de bază este preluată din fișierul de configurare. De exemplu, dacă configurația afirmă că Joomla se află pe localhost, atunci accesați de la retea locala, chiar dacă un Apache configurat corect care ascultă adresa 192.168.0.1 nu schimbă nimic în ea - src-ul imaginilor va începe în continuare cu „localhost”, care pentru alte mașini va fi deja propriul localhost. Focalizarea soluțiilor pentru astfel de cazuri este variabila de substituție $mosConfig_live_site pentru gazda solicitată, astfel încât toate funcțiile să poată produce legăturile corecte și să ghideze deja utilizatorul către unul sau altul site virtual (produce căile de bază corecte către imagini și căile de bază către adrese). un mambot de site Auto live care îl poate automatiza.Dacă nu ți se potrivește într-un fel, atunci în principiu se poate repeta, în acest scop în configurație.phpÎn locul definiției $mosConfig_live_site, trebuie să scrieți codul. Ceva asemănător cu:

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

Este necesar să acordați atenție faptului că, dacă utilizați un cache, trebuie să aveți, de asemenea, două directoare de cache diferite pentru două gazde, deoarece link-urile către gazde diferite se pot intersecta în cache, iar atunci un utilizator din rețeaua greșită nu va ajunge nicăieri deloc . Variabila $mosConfig_cachepath este responsabilă pentru cache.

Cum să faci două componente să apară simultan pe o singură pagină

Vă spun imediat - nu totul este atât de simplu. La urma urmei, nu este un modul. Prin urmare, în primul rând, merită să căutați o alternativă, de exemplu. Cu siguranță o componentă populară vine cu module care îi pot replica funcționalitatea. Dacă nu există așa ceva, atunci aceasta este o opțiune. Poate fi realizat ca modul sau, teoretic, poate fi inserat într-un șablon. Ideea este aceasta - apelarea componentei prin index2.php (ce și de ce - citiți întregul fapt). Acestea. puteți face un iframe cu src="index2.php?option=com_component&no_html=1" la punctul de inserare dorit pentru a doua componentă. Și va fi afișat acolo. Un alt lucru este că este puțin probabil să se poată asigura pe deplin funcționalitatea. Dar, cu toate acestea, aceasta este o cale de ieșire.

Sau utilizați construcția: mosLoadComponent("com_mycomp");

Dar, dacă componenta este executată în acest fel, atunci trebuie să înțelegeți că nu știe despre manipulările dvs. și va funcționa în funcție de $opțiunea și $sarcina.

Cum să mărești lungimea titlului într-un articol

Trebuie să rulați următoarele două comenzi în phpMyAdmin (există o pagină specială pentru executarea interogărilor SQL), trebuie doar să înlocuiți ###_ cu prefixul real de tabel. Numărul maxim posibil este 255. În exemplu, se utilizează 200.

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

Cum să includeți texte complete de știri în fluxul dvs. RSS, nu doar titlurile acestora

Pentru a face acest lucru, în fișierul /components/com_rss/rss.php, trebuie să înlocuiți

$descriere_articol = $rând ->introtext ; $descriere_articol = $rând ->text complet ;

Cum pot face două site-uri Joomla folosind aceeași bază de date sau folosind aceleași fișiere?

În ceea ce privește utilizarea unei baze de date, trebuie să scrieți o bază de date în configuration.php pentru două motoare, dar trebuie să înțelegeți ce faceți. Pentru că menținerea sesiunilor pentru utilizatori în acest caz va fi foarte problematică, deoarece domeniile sunt diferite. Acestea. intrările de conectare din tabelul #__sessions se vor (pot) suprapune.

Dacă doriți să utilizați aceleași fișiere fără a copia o distribuție mare, atunci, în principiu, puteți utiliza comanda „ln -s” în Linux pentru a crea legături simbolice către fișierele existente și nu le copiați pentru noul site.

Cum să creați o pagină virtuală accesibilă la o anumită adresă în designul general Joomla (http://site.ru/super_page)

  • Prima modalitate este să utilizați un fel de componentă SEF, în care specificați calea virtuală dorită pentru o pagină statică. Există un minus aici - această componentă va începe să refacă toate celelalte link-uri (și, în general, aceste componente sunt foarte consumate de energie și necesită o mulțime de resurse pentru a funcționa).
  • Creați un alias pentru o astfel de pagină folosind mod_rewriteȘi .htaccess. Pentru a face acest lucru aveți nevoie de:
    • Creați o pagină statică cu textul de care aveți nevoie, aflați-i ID-ul și adresa (nu este necesar să creați o astfel de pagină, poate exista deja și în general este orice componentă, nu neapărat com_content)
    • Vino cu un alias, lasă-l să fie " super_puper"
    • Deschideți .htaccess și înainte de linia „RewriteCond %(REQUEST_FILENAME) !-f” scrieți:
RewriteRule ^(super_puper) index.php?option=com_content&task=view&id=12 RewriteCond %(REQUEST_FILENAME) !-f
    • Și acum, cu condiția ca Joomla să fie localizat pe site.ru, când deschideți linkul http://site.ru/super_puper pagina statică necesară cu informațiile dvs. se va deschide. Link-ul în sine „index.php?option=com_content&task=view&id=12” poate fi orice aveți nevoie, principalul lucru este că linkul nu a fost absolut (adică cu http:/ /...) și relativ ( trebuie saîncepe cu index.php?...)

Cum să dezactivați memoria cache pentru un anumit articol

Acest lucru poate fi necesar dacă utilizați mambotul rd_addphp pentru a insera orice scripturi care ar trebui să genereze numere aleatorii sau text aleatoriu de fiecare dată, indiferent de sistemul de stocare în cache Joomla. Pentru a dezactiva stocarea în cache a unui anumit articol, trebuie să aflați ID-ul acestuia (în panoul de administrare, când editați, uitați-vă la bara de adrese, va spune ceva de genul „...&id=123...”). Deci 123 va fi ID-ul articolului nostru. Este necesar să înlocuiți în fișierul /components/com_content/content.php aproximativ pe linia 1600

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

Unde 123 este ID-ul articolului de care aveți nevoie.

Am instalat o mulțime de componente, dar lista de componente din meniul de administrare arată un număr redus de componente și apoi scrie „Mai multe componente...”. Cum să afișați toate componentele.

Aveți nevoie de o linie în fișierul /administrator/modules/mod_fullmenu.php

$topLevelLimit = 19 ;

inlocuit de

$topLevelLimit = 199 ;

Cum se instalează o copie a unei componente

Trebuie spus că sarcina este extrem de dificilă. Dacă nu înțelegeți cum funcționează componenta, atunci nici nu ar trebui să încercați. Pentru cei care doresc totuși să noteze punctele principale:

  • În fișierul XML, redenumiți numele componentei în eticheta de nume
  • Apoi, trebuie să redenumiți tabelele utilizate (în primul rând în fișierul XML și, în al doilea rând, în toate fișierele componente, oriunde este utilizat obiectul bazei de date $bază de date si metoda setQuery)
  • Redenumiți și toate căile din componente. Căile pot fi folosite în referințe la sine sau în numele fișierelor incluse. Cel mai adesea, acest lucru se reduce la căutarea subșirului com_componentname și la înlocuirea acestuia cu unul nou.

Dar aceasta metoda nu garanteaza nimic. Cu cele simple, acest lucru este posibil și va trece, dar cu cele complexe, nimeni nu poate garanta.

Cum să faci o poziție să arate aleatoriu unul dintre modulele atribuite acesteia

  • Opțiunea 1 - piratați funcția mosLoadModules. În șablon, în locul în care este necesar să afișați unul dintre N module, scriem (atenție la al treilea argument):
mosLoadModules(„poziție”, display_setup,true);

Și corectăm ușor funcția de mai sus în sine:

funcția mosLoadModules( $position ="left" , $style =0 , $show_random = false ) ( ... $allModules =& initModules() ; if (isset ( $GLOBALS [ "_MOS_MODULES" ] [ $position ] ) ) ( $module = $GLOBALS [ "_MOS_MODULES" ] [ $poziție ] ; ) else ( $module = matrice () ; ) //adăugați aici dacă ($show_random && sizeof ($module ) >0 ) ( $tmp = $module [ rand (0 ,sizeof ($module ) -1 ) ] ; $module = array ($tmp ) ; ) //sfârșitul instrucțiunii if (count ($module)< 1 ) { $style = 0 ; }

I-am adăugat un al treilea argument (care este folosit în șablon, unde am scris adevărat) și am modificat codul.

  • Opțiunea a doua este mai nedureroasă, modificăm doar șablonul. Dar mai intensivă în muncă - trebuie să creăm mai multe poziții. Mai întâi creăm mai multe posturi noi module, de exemplu new1 ... new10. Salva. În locul potrivit în șablon, înainte de a apela funcția mosLoadModules, adăugați codul necesar:
$rand_num = rand(1,10); //de la 1 la 10 - ca în numele poziției mosLoadModules ( "nou" . $rand_num , display_settings );

Cred că prin redenumirea folderului /adminisrator/ îmi voi face site-ul mai sigur

Această opțiune nu este furnizată standard. Dar, de fapt, este posibil, prin organizarea unei căutări în fișierele Joomla, să înlocuiești orice apariție a unui astfel de cuvânt cu al tău - secret. Uneori, mai târziu, pot apărea erori legate de incapacitatea de a accesa fișierele, dar cunoscând fișierul și numărul de linie, acestea pot fi corectate. Prin urmare, problema este, în principiu, rezolvabilă.

Să începem să ne uităm la componente analizând modul în care componenta de bază Weblinks funcționează în porțiunea de administrare a unui site web. Această componentă, care este tipică pentru această parte a site-ului web, este foarte asemănătoare cu celelalte componente ale sale concepute pentru a gestiona articole, utilizatori, module etc.

Fișierele de program pentru această componentă sunt enumerate mai jos. Toate aceste fișiere se află în folder administator/components/com_weblinks. În restul acestui capitol, toate numele de fișiere ale componentelor Weblinks sunt menționate în raport cu acest folder de pornire, dacă nu este menționat altfel. Majoritatea fișierelor sunt organizate conform modelului MVC. Mai exact, toate fișierele de vizualizare sunt în subfolderul vizualizări și toate fișierele principale de model și controler sunt în subfolderele modele și, respectiv, controlere. Ele sunt completate și de fișiere de instalare, configurare și auxiliare.

Fișiere ale părții administrative a componenteiLink-uri web, cu excepția fișierelor index.html

  • controllers/weblink.php - Controler principal pentru editare Controler unic weblink
  • controllers/weblinks.php - Controler principal pentru compilarea Controllerului și afișarea unei liste de link-uri web pe ecranul Weblinks Manager
  • helpers/weblinks.php - Oferă diferite metode utilizate în controlere și vizualizări
  • models/fields/ordering.php - Modelul JformField care afișează coloana de ordonare a linkurilor web pe ecranul Manager de linkuri web
  • models/forms/weblink.xml - Fișier XML folosit în clasa Jform-Model Field pentru a dispune un formular cu câmpuri de intrare și pentru a edita link-uri web pe ecran
  • models/weblink.php - Model pentru un singur formular de ecran Model de link Web
  • models/weblinks.php - Model pentru formularul de ecran al managerului Model de link-uri web
  • sql/install.mysql.utf8.sql - fișier SQL pentru a crea un tabel de link-uri web în timpul instalării
  • sql/uninstall.mysql.ut8.sql - fișier SQL pentru a elimina tabelul de linkuri web în timpul instalării
  • tables/weblink.php - Oferă clasa Model
  • views/weblink/tmpl/edit_metadata.php - Fișier de aspect sursă pentru editarea metadatelor link-urilor web

Partea administrativă a componentei Weblinks

  • views/weblink/tmpl/edit_params.php - Fișier de aspect sursă pentru editarea opțiunilor de selecție a linkurilor web unice
  • views/weblink/tmpl/edit.php - Fișier de aspect sursă pentru editarea unui link web
  • views/view.html.php - Clasa de vizualizare principală pentru afișarea unui singur link web în format HTML Fișier de aspect sursă pentru managerul de linkuri web
  • views/weblinks/view.html.php - Clasa de vizualizare principală pentru afișarea legăturilor web în format HTML direct pe ecranul Weblinks Manager
  • access.xml - fișier XML care oferă o listă de acțiuni pentru un sistem de listă de control al accesului (ACL).
  • config.xml - fișier XML care oferă o listă de opțiuni pentru selectarea configurației componentei
  • controller.php - Clasa de controler principal
  • weblinks.php - Punct de intrare pentru cerere
  • weblinks.xml - fișier XML folosit pentru a controla procesul de instalare

Tort stratificat

Vom vorbi despre componenta com_weblinks și despre marcajul html Pagini Joomla. Despre cum să creați ușor și simplu un director de link-uri pe un site Joomla.

Acest CMS a fost creat pentru lucrul interactiv cu un utilizator înregistrat, fără codare directă. Deși tendința de dezvoltare a Joomla duce la abandonarea componentei com_weblinks ca fiind complet inutilă pe site și pur și simplu adăugarea unei greutăți suplimentare (mai mult de 100 kb - 90 de fișiere) unui sistem deja „greu”. Dar deocamdată această componentă este încă prezentă în distribuție și este folosită de unii programatori.

Pagina site-ului Joomla vizibilă pe ecran este un tort stratificat, în construcția căruia sunt implicate simultan multe blocuri (și, prin urmare, multe șabloane). Aici intervine filozofia Joomla - construirea de blocuri mari. Fiecare bloc trebuie să aibă propriul șablon de markup HTML (aspect).

Blocuri principale:

Probă pagina principala(site_template/index.php), care, cu marcajul său html, definește pozițiile pentru module și componente și afișează aceste module și componente.
- șablon de pagină
- modele de module
- sabloane de componente

Fiecare dintre aceste blocuri mari este disponibil pentru editare (modificări). Adică puteți edita separat, de exemplu, șablonul oricărui modul sau componentă și va arăta nou pe pagină. Același lucru este valabil și pentru șablonul de pagină.

Poate fi dificil pentru un programator începător să înțeleagă că prima linie din partea de conținut a paginii este afișată ca titlu de pagină și este editată pe pagina de editare a elementului de meniu care indică această pagină. Că a doua linie este derivată din șablonul de componentă com_content sau com_weblinks. Și șirurile din șabloane sunt de obicei variabile și inițializarea și localizarea lor se realizează în fișiere de limbă, cum ar fi language\ru-RU\ru-RU.mod_weblinks.ini și altele asemenea.

Uneori, un începător este perplex de ce șablon a produs cutare sau cutare linie, care pe pagina ecranului arată ca o continuare logică a aceleiași narațiuni. Se pare că o linie este într-un șablon, alta în al doilea șablon și a treia în al treilea. Și tabelul cu file de mai jos este rezultatul din șablonul modulului mod_tabform.

Uneori, șabloanele de module sunt numite machete. Dar aceasta este o chestiune de terminologie. Esența este aceeași - este „îmbrăcăminte” pentru conținut. Ar fi mai corect să spunem marcaj. Deci aspectul unei pagini de ecran este în fișiere diferite directoare Joomla.

Meniul

Mulți programatori noi Joomla adesea nu înțeleg că elementele de meniu pot avea diferite tipuri. Cu alte cuvinte - elementele de meniu se pot referi la obiecte Joomla tipuri diferite. Acestea pot fi diferite obiecte, cum ar fi: componente (votare, căutare, director de linkuri etc.).

Selectarea unui tip de element de meniu:

Contacte (com_contact)
Lista categoriilor de contact (categorii)
Lista de contacte dintr-o anumită categorie (categorie)
A lua legatura ( a lua legatura)
Persoane de contact preferate (prezentate)

Materiale (com_content)
Materiale de arhivă (arhivă)
Material (articol)
Lista tuturor categoriilor ( categorii)
Categoria blog
Lista materialelor din categoria (categorie)
Materiale prezentate
Creați material

Căutare inteligentă (com_search)
Căutare ( căutare)

Salut Lume! ( com_helloworld)
Mesaj ( Salut Lume)

Fluxuri de știri (com_newsfeeds)
Lista tuturor categoriilor de fluxuri de știri ( categorii)
Lista fluxurilor de știri din categorie (categorie)
Fluxuri de stiri

Căutare ( com_search)
Formular de căutare și lista rezultatelor căutării (căutare)

Manager de utilizatori (com_users)
Formular de autorizare (autentificare)
Profil de utilizator (profil)
Schimbați profilul utilizatorului
Formular de înregistrare
Recuperare nume de utilizator (reamintire)
Schimbarea parolei (resetare)

Wrapper (com_wrapper)
Înveliș

După cum puteți vedea, aici toate tipurile de meniu sunt componente. Prin numele său, tipul de element de meniu indică de fapt numele șablonului tipului său de componentă. Și șabloanele de componente se află în directoarele de vizualizări:

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

După cum puteți vedea, numele tipurilor de link-uri din meniu și numele șabloanelor din directoarele vews sunt aceleași.

Dezvoltatorul are capacitatea de a crea noi șabloane (aspecte) non-standard pentru componente. Aceste noi aspecte se vor reflecta și ca noi tipuri de meniu în fereastra de selecție a tipului de meniu. Acesta este un subiect separat.

Conținut demonstrativ de distribuție Joomla

Să vedem cum este construită ierarhia elementelor din meniul „Despre Joomla” pentru a afișa Componenta com_weblinks pe șablonul Joomla de conținut demonstrativ implicit (Beez2 - Implicit).

Să mergem la panoul de administrare pentru a edita componenta com_weblinks: Components->Links. Vedem că în conținutul demo care vine odată cu distribuția au fost create cinci categorii pentru componenta com_weblinks. Aceasta înseamnă că linkurile vor fi distribuite în cinci categorii. Toate categoriile create vor fi salvate în tabelul bazei de date #_categories. Categoriile pentru alte componente sunt de asemenea stocate în același tabel.

Exemplu de date-linkuri web
|-Legături de parc
|-Joomla! Link-uri specifice
|-|-Alte resurse
Necategorizat

În meniul Despre Joomla (în editorul de meniu), a fost creată o ierarhie de elemente de meniu în consecință:

Ierarhia elementelor de meniu:

Folosind Joomla! (tip: material)
|-Utilizarea extensiilor (tip: lista tuturor categoriilor) :: lista categoriilor din materiale
|-|-Componente (tip: categorie blog) :: categorie in materiale
|-|-|-Componenta Weblinks (tip: material)
|-|-|-|-Trimiteți un Weblink (tip: create link) :: în componenta Link-uri
|-|-|-|-Weblinkuri Single Category (tip: lista de link-uri dintr-o categorie) :: in componenta Link-uri
|-|-|-|-Categorii de linkuri web (tip: lista categoriilor de linkuri) :: în componenta Linkuri

Vedem că unele elemente de meniu au tipuri: listă de categorii, listă de linkuri dintr-o categorie și creați link.
„Lista categoriilor de linkuri” specifică categoria de sus din care va fi afișată ierarhia.
„Lista de linkuri dintr-o categorie” specifică categoria ale cărei linkuri vor fi afișate.
În elementul „Creare link”, va fi afișat un formular pe care utilizatorul înregistrat va trebui să îl completeze.
Apropo, așa arată linkul către acest formular în editor (aspectul său se va schimba în bara de adrese):

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

Unele elemente de meniu pot fi afișate numai utilizatorilor înregistrați! De exemplu, un element de meniu cu tipul „Creare link” va fi vizibil numai pentru utilizatorii înregistrați. Această caracteristică a fost creată special pentru ca utilizatorii înregistrați să poată crea link-uri care vor fi postate pe pagină.

Deci componenta com_weblinks dă mod bun umplerea interactivă a paginii cu link-uri interesante. Mai mult, toate linkurile care vor fi plasate pe o astfel de pagină au o redirecționare, adică nu vor fi indexate ca externe. Este posibil să fi văzut astfel de link-uri pe forumuri. Când treceți mouse-ul peste un astfel de link, veți vedea adresa site-ului dvs. și numai după ce dați clic pe acesta veți fi redirecționat către adresa specificată de dvs.

Capacitatea utilizatorului de a adăuga link-uri către site-uri externe este principalul avantaj și semnificația componentei com_weblinks, la fel ca și capacitatea utilizatorului de a adăuga conținut nou - articole, imagini, fișiere video etc.

Permiterea unui utilizator înregistrat cu drepturi de a umple site-ul cu conținut fără codare directă este filozofia de bază a CMS Joomla.

Necategorizat
Exemplu de date-articole
|- Joomla!
|-|- Extensii
|-|-|- Componente
|-|-|- Module
|-|-|-|- Module de conținut
|-|-|-|- Module utilizator
|-|-|-|- Module de afișare
|-|-|-|- Module utilitare
|-|-|-|- Module de navigare
|-|-|- Șabloane
|-|-|-|- Atomic
|-|-|-|- Beez 20
|-|-|-|- Beez 5
|-|-|- Limbi
|-|-|- Pluginuri
|- Site-ul parcului
|-|- Blogul Parcului
|-|- Galerie foto
|-|-|- Animale
|-|-|- Peisaj
|- Site-ul magazinului de fructe
|-|- Cultivatori
|-|- Rețete

Nu par să existe prea multe categorii pentru conținut!
De asemenea, puteți vizualiza ierarhia categoriilor din materiale folosind o interogare la tabelul de categorii din baza de date:

SELECTAȚI * FROM `#_categories` WHERE `extension` = "com_content"

Continui să vă împărtășesc scripturi mici, dar foarte utile, care vă ajută să vă îmbunătățiți atitudinea motoare de căutare către site-ul dvs. De data aceasta vom vorbi despre legarea corectă a paginii.

Mai întâi, să creăm o bază de date cu adrese de pagini și posibile ancore pentru fiecare dintre ele. Vom folosi un fișier *.txt ca bază. Structura fișierului va fi astfel:

Page_address_1; anchor_1, anchor_2, anchor_3,..., anchor_n page_address_2; ​​​​anchor_1, anchor_2, anchor_3,..., anchor_n page_address_3; anchor_1, anchor_2, anchor_3,..., anchor_n ... page_address_n; anchor_2_1, anchor_n; ancora_3, ..., ancora_n

După cum puteți vedea, utilizarea ulterioară a scriptului este posibilă cu orice număr de adrese de pagină și ancore pentru acestea. Adresa paginii este scrisă fără http://www.site.ru/, adică. imediat de la rădăcină fără prima bară oblică. Adresa este separată de ancore printr-un punct și virgulă, iar ancorele sunt separate doar printr-o virgulă. De asemenea, puteți scrie adresa completă, este mai convenabil pentru mine personal și puteți modifica singur umplerea și ieșirea rezultatului, cred că vă veți da seama intuitiv.

Și astfel, a fost creată o bază de date de link-uri și ancore pentru acestea, mai jos voi da un exemplu de cod PHP pentru afișarea directă a link-urilor pentru link-ul pe site:

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

Lipim acest cod oriunde pe site, care afișează 5 link-uri aleatorii din baza de date și o ancoră aleatoare. Este mai bine să diluați ancorele decât să scrieți doar 1 pe link. Cu linkuri adecvate pe site-ul dvs., veți observa imediat o creștere a traficului și o îmbunătățire a altor indicatori de site.

Aștept cu nerăbdare întrebările tale în comentariile la această postare.

Data publicării: 03 martie 2014
    Recenzii și comentarii:

    Dmitrii:
    Mulțumesc pentru script, îl voi implementa. Din cod sursa Este imposibil de copiat de pe site, este copiat doar în pasaje mici, ar fi mai convenabil în întregime.

    Kirill:
    Mulțumesc pentru nota despre copiere, tocmai am văzut-o acum, voi încerca să o repar în curând.

    Alexei Pavlov:
    Eroare la linia $tex = explode(":",$sendlist[$count] Ai nevoie de punct și virgulă, nu de două puncte. Am schimbat puțin codul pentru a fi mai clar:$ancoră"; } ?>

    Matrk:
    Articolul este complet inutil, pentru că... Blogul are protecție împotriva copierii textului.

    Kirill:
    Există o mică eroare în js, da, nu este timp să-l remediem, dar probabil altcineva este inutil, deoarece nu sunt suficient de deștepți, în acest caz, uită-te la codul sursă al paginii și ia-l de acolo

    Matrk:
    Acestea. Ar trebui să parcurg în continuare codul sursă și să-l curăț de tot gunoiul? Ești haios.

    Kirill:
    Înseamnă că datorez cuiva ceva? Ți-am luat banii, încerci aici, dai sfaturi gratuite :))) Brânza gratuită este doar într-o capcană de șoareci, pe măsură ce îmbătrânești vei înțelege.

    Kirill:
    Am scos jambul, bucură-te de el pentru sănătatea ta.

    Andrei Kopaev:
    1 - probabil că este mai bine să faceți acest lucru folosind o bază de date mysql, va funcționa mai repede și este mai ușor să adăugați 2 - nu înțeleg ce rost are să generez o listă de link-uri de fiecare dată? Cum afectează acest lucru creșterea traficului? Este posibil să se încarce folosind Ajax, de ex. este pentru oameni sau pentru roboți?

    www.site:
    Pentru promovare, însă, eu personal nu sunt un susținător al unor astfel de manipulări cu PS.