Tort qat
com_weblinks komponenti və Joomla səhifəsinin html işarələnməsi haqqında danışacağıq. Joomla veb saytında asanlıqla və sadə bir keçid kataloqu yaratmaq haqqında.
Bu CMS birbaşa kodlaşdırmadan qeydiyyatdan keçmiş istifadəçi ilə interaktiv iş üçün yaradılmışdır. Baxmayaraq ki, Joomla-nın inkişaf tendensiyası com_weblinks komponentinin saytda tamamilə yararsız olduğu üçün tərk edilməsinə və artıq “ağır” sistemə sadəcə əlavə çəki (100 kb-dən çox - 90 fayl) əlavə edilməsinə gətirib çıxarır. Ancaq hələlik bu komponent hələ də paylamada mövcuddur və bəzi proqramçılar tərəfindən istifadə olunur.
Ekranda görünən Joomla veb səhifəsi eyni vaxtda bir çox blokun (və buna görə də bir çox şablonun) qurulmasında iştirak edən bir təbəqə tortudur. Joomla fəlsəfəsi burada işə düşür - böyük bloklu saytın qurulması. Hər blokun öz HTML işarələmə şablonu (layout) olmalıdır.
Əsas bloklar:
Əsas səhifə şablonu (site_template/index.php), html işarələməsi ilə modullar və komponentlər üçün mövqeləri müəyyənləşdirir və bu modulları və komponentləri göstərir.
- səhifə şablonu
- modul şablonları
- komponent şablonları
Bu böyük blokların hər biri redaktə (dəyişikliklər) üçün mövcuddur. Yəni, məsələn, hər hansı modulun və ya komponentin şablonunu ayrıca redaktə edə bilərsiniz və o, səhifədə yeni görünəcək. Eyni şey səhifə şablonuna da aiddir.
Təcrübəsiz bir proqramçı üçün səhifənin məzmun hissəsindəki birinci sətirin səhifə başlığı kimi göstərildiyini və bu səhifəyə işarə edən menyu elementinin redaktə səhifəsində redaktə olunduğunu başa düşmək çətin ola bilər. İkinci sətir com_content və ya com_weblinks komponent şablonundan əldə edilir. Şablonlardakı sətirlər adətən sətir dəyişənləridir və onların işə salınması və lokallaşdırılması dil\ru-RU\ru-RU.mod_weblinks.ini və s. kimi dil fayllarında həyata keçirilir.
Bəzən bir başlanğıc çaşqınlıq içində olur: hansı şablon bu və ya digər sətirləri yaratdı, ekran səhifəsində eyni povestin məntiqi davamı kimi görünür. Belə çıxır ki, bir sətir bir şablonda, digəri ikinci şablonda, üçüncüsü üçüncü şablondadır. Aşağıdakı sekmeli cədvəl mod_tabform modul şablonunun çıxışıdır.
Bəzən modul şablonlarına layouts deyilir. Ancaq bu, terminologiya məsələsidir. Mahiyyət eynidir - məzmun üçün "paltar" dır. İşarələmə demək daha düzgün olardı. Beləliklə, bir ekran səhifəsinin tərtibatı var müxtəlif fayllar Joomla kataloqları.
Menyu
Bir çox yeni Joomla proqramçıları tez-tez başa düşmürlər ki, menyu elementlərinin müxtəlif növləri ola bilər. Başqa sözlə - menyu elementləri Joomla obyektlərinə istinad edə bilər müxtəlif növlər. Bunlar müxtəlif obyektlər ola bilər, məsələn: komponentlər (səsvermə, axtarış, keçid kataloqu və s.).
Menyu elementinin növünün seçilməsi:
Əlaqələr (com_contact)
Əlaqə kateqoriyalarının siyahısı (kateqoriyalar)
Müəyyən bir kateqoriyanın kontaktlarının siyahısı (kateqoriya)
Əlaqə ( əlaqə saxlayın)
Sevimli kontaktlar (seçilmiş)
Materiallar (com_content)
Arxiv materialları (arxiv)
Material (məqalə)
Bütün kateqoriyaların siyahısı ( kateqoriyalar)
Bloq kateqoriyası
Kateqoriya materiallarının siyahısı (kateqoriya)
Seçilmiş materiallar
Material yaradın
Ağıllı Axtarış (com_search)
Axtar ( axtarış)
Salam Dünya! ( com_helloworld)
Mesaj ( salamat dünya)
Xəbər lentləri (com_newsfeeds)
Bütün xəbər lenti kateqoriyalarının siyahısı ( kateqoriyalar)
Kateqoriyada xəbər lentlərinin siyahısı (kateqoriya)
Xəbər lenti
Axtar ( com_axtar)
Axtarış forması və axtarış nəticələrinin siyahısı (axtarış)
İstifadəçi Meneceri (com_users)
Avtorizasiya forması (giriş)
İstifadəçi profili (profil)
İstifadəçi profilini dəyişdirin
Qeydiyyat forması
İstifadəçi adının bərpası (xatırlatma)
Parolun dəyişdirilməsi (sıfırlanması)
Sarmalayıcı (com_wrapper)
Sarğı
Gördüyünüz kimi, burada bütün menyu növləri komponentlərdir. Adı ilə menyu elementinin növü əslində onun komponent tipinin şablonunun adını göstərir. Komponent şablonları isə baxış qovluqlarında yerləşir:
joomla\components\com_weblinks\views\categories
joomla\components\com_weblinks\views\category
joomla\components\com_weblinks\views\weblink
joomla\components\com_users\views\login
Gördüyünüz kimi, menyudakı link növlərinin adları və vews kataloqlarındakı şablonların adları eynidir.
Tərtibatçı komponentlər üçün yeni qeyri-standart şablonlar (layouts) yaratmaq imkanına malikdir. Bu yeni tərtibatlar menyu növünün seçim pəncərəsində yeni menyu növləri kimi də əks olunacaq. Bu ayrı bir mövzudur.
Joomla paylama demo məzmunu
Gəlin görək "Joomla haqqında" Menyu elementlərinin iyerarxiyası com_weblinks Komponentini standart demo məzmunda (Beez2 - Defolt) Joomla şablonunda göstərmək üçün necə qurulub.
com_weblinks komponentini redaktə etmək üçün admin panelinə keçək: Components->Links. Dağıtımla birlikdə gələn demo məzmunda com_weblinks komponenti üçün beş kateqoriyanın yaradıldığını görürük. Bu o deməkdir ki, bağlantılar beş kateqoriyaya bölünəcək. Bütün yaradılmış kateqoriyalar #_categories verilənlər bazası cədvəlində saxlanılacaq. Digər komponentlər üçün kateqoriyalar da eyni cədvəldə saxlanılır.
Nümunə Data-Weblinks
|-Park Bağlantıları
|-Joomla! Xüsusi Linklər
|-|-Digər Resurslar
Kateqoriyasız
Joomla haqqında menyuda (menyu redaktorunda) müvafiq olaraq menyu elementlərinin iyerarxiyası yaradılmışdır:
Menyu elementlərinin iyerarxiyası:
Joomla istifadə! (növ: material)
|-Uzantılardan istifadə (növ: bütün kateqoriyaların siyahısı) :: materiallardakı kateqoriyaların siyahısı
|-|-Komponentlər (növ: kateqoriya blogu) :: materiallarda kateqoriya
|-|-|-Weblinks Komponenti (növ: material)
|-|-|-|-Linklər komponentində Veb-link göndərin (növ: link yarat) ::
|-|-|-|-Weblinks Single Category (növ: kateqoriyadakı keçidlərin siyahısı) :: Links komponentində
|-|-|-|-Weblinks Kateqoriyaları (növ: keçid kateqoriyalarının siyahısı) :: Bağlantılar komponentində
Biz görürük ki, bəzi menyu elementlərinin növləri var: kateqoriyalar siyahısı, kateqoriyadakı keçidlərin siyahısı və keçid yaratmaq.
"Bağlantı Kateqoriyalarının Siyahısı" iyerarxiyanın göstəriləcəyi üst kateqoriyanı müəyyən edir.
"Kateqoriyadakı keçidlərin siyahısı" keçidləri göstəriləcək kateqoriyanı müəyyən edir.
"Bağlantı yarat" bəndində qeydiyyatdan keçmiş istifadəçinin doldurmalı olduğu bir forma görünəcək.
Yeri gəlmişkən, bu formaya keçid redaktorda belə görünür (in ünvan çubuğu onun görünüşü dəyişəcək):
index.php?option=com_weblinks&view=form&layout=edit
Bəzi menyu elementləri yalnız qeydiyyatdan keçmiş istifadəçilərə göstərilə bilər! Məsələn, "Bağlantı yarat" tipli menyu elementi yalnız qeydiyyatdan keçmiş istifadəçilər üçün görünəcək. Bu xüsusiyyət qeydiyyatdan keçmiş istifadəçilərin səhifədə yerləşdiriləcək linklər yarada bilməsi üçün xüsusi olaraq yaradılmışdır.
Beləliklə, com_weblinks komponenti verir yaxşı yol interaktiv şəkildə səhifəni maraqlı bağlantılarla doldurur. Üstəlik, belə bir səhifəyə yerləşdiriləcək bütün bağlantılar yönləndirməyə malikdir, yəni xarici olaraq indekslənməyəcəkdir. Yəqin ki, forumlarda belə bağlantıları görmüsünüz. Siçanı belə bir keçidin üzərinə gətirdiyiniz zaman saytınızın ünvanını görəcəksiniz və yalnız onun üzərinə kliklədikdən sonra qeyd etdiyiniz ünvana yönləndiriləcəksiniz.
İstifadəçinin xarici saytlara keçidlər əlavə etmək imkanı com_weblinks komponentinin əsas üstünlüyü və mənasıdır, istifadəçinin yeni məzmun - məqalələr, şəkillər, video faylları və s. əlavə etmək imkanı.
Qeydiyyatdan keçmiş istifadəçiyə saytı birbaşa kodlaşdırmadan məzmunla doldurmaq hüququ vermək CMS Joomla-nın əsas fəlsəfəsidir.
Kateqoriyasız
Nümunə Data-Məqalələr
|- Joomla!
|-|- Genişləndirmələr
|-|-|- Komponentlər
|-|-|- Modullar
|-|-|-|- Məzmun Modulları
|-|-|-|- İstifadəçi Modulları
|-|-|-|- Ekran Modulları
|-|-|-|- Kommunal Modullar
|-|-|-|- Naviqasiya modulları
|-|-|- Şablonlar
|-|-|-|- Atom
|-|-|-|- Beez 20
|-|-|-|- Beez 5
|-|-|- Dillər
|-|-|- Pluginlər
|- Park yeri
|-|- Park Blog
|-|- Foto Qalereya
|-|-|- Heyvanlar
|-|-|- Mənzərə
|- Meyvə Dükanı Saytı
|-|-Becərənlər
|-|- Reseptlər
Məzmun üçün çoxlu kateqoriyalar yoxdur!
Siz həmçinin verilənlər bazasında kateqoriya cədvəlinə sorğudan istifadə edərək materiallardakı kateqoriyaların iyerarxiyasına baxa bilərsiniz:
SEÇİN * FROM `#_categories` HARADA `uzatma` = "com_content"
Mən sizinlə münasibətinizi yaxşılaşdırmağa kömək edən kiçik, lakin çox faydalı veb sayt skriptlərini paylaşmağa davam edirəm axtarış motorları saytınıza. Bu dəfə düzgün səhifə keçidi haqqında danışacağıq.
Əvvəlcə səhifə ünvanları və onların hər biri üçün mümkün ankerlər bazası yaradaq. Biz əsas kimi *.txt faylından istifadə edəcəyik. Fayl strukturu belə olacaq:
Page_address_1; anchor_1, anchor_2, anchor_3,..., anchor_n page_address_2, anchor_3,..., anchor_n page_address_3, anchor_3, anchor_2, anchor_3,..._nch; anchor_3, ..., anchor_n
Gördüyünüz kimi, skriptin sonrakı istifadəsi istənilən sayda səhifə ünvanları və onlar üçün lövbərlərlə mümkündür. Səhifənin ünvanı http://www.site.ru/ olmadan yazılır, yəni. dərhal kökdən ilk tire olmadan. Ünvan lövbərlərdən nöqtəli vergüllə, lövbərlər isə sadəcə vergüllə ayrılır. Tam ünvanı da yaza bilərsiniz, şəxsən mənim üçün daha əlverişlidir, ancaq nəticənin doldurulmasını və çıxışını özünüz dəyişə bilərsiniz, məncə, intuitiv olaraq özünüz anlayacaqsınız.
Beləliklə, onlar üçün bağlantılar və lövbərlər verilənlər bazası yaradıldı, aşağıda mən saytda keçid üçün bağlantıları birbaşa göstərmək üçün PHP koduna bir nümunə verəcəyəm:
Bu kodu saytın istənilən yerinə yapışdırırıq, burada verilənlər bazasından 5 təsadüfi keçid və təsadüfi lövbər göstərilir. Linkə yalnız 1 yazmaqdansa, lövbərləri sulandırmaq daha yaxşıdır. Veb saytınızda düzgün əlaqə ilə siz dərhal trafikin artdığını və digər veb-sayt göstəricilərində yaxşılaşma görəcəksiniz.
Suallarınızı bu yazıya şərhlərdə gözləyirəm.
Dərc tarixi: 03 mart 2014-cü il- Rəylər və şərhlər:
Dmitri:
Ssenari üçün təşəkkür edirəm, onu həyata keçirəcəyəm. From mənbə kodu Saytdan köçürmək mümkün deyil, yalnız kiçik keçidlərlə köçürülür, bütövlükdə daha rahat olardı.
Kirill:
Kopyalama haqqında qeyd üçün təşəkkürlər, indi gördüm, tezliklə düzəltməyə çalışacağam.
Aleksey Pavlov:
Sətirdə xəta $tex = explode(":",$sendlist[$count] Sizə iki nöqtə yox, nöqtəli vergül lazımdır. Daha aydın olması üçün kodu bir az dəyişdim:$lövbər";
}
?>
Matrk:
Məqalə tamamilə yararsızdır, çünki... Bloqda mətn nüsxəsindən qorunma var.
Kirill:
js-də balaca bir səhv var bəli onu düzəltməyə vaxt yoxdur, amma yəqin ki, başqa birisi faydasızdır, çünki onlar kifayət qədər ağıllı deyillər, bu halda səhifənin mənbə koduna baxın və oradan götürün.
Matrk:
Bunlar. Mən hələ də mənbə kodundan keçməliyəm və onu bütün zibillərdən təmizləməliyəmmi? Sən gülməlisən.
Kirill:
Bu, kiməsə borclu olduğumu bildirir? Pulunuzu götürdüm, burda calışırsınız, pulsuz məsləhət verirsiniz :))) Pulsuz pendir ancaq siçan tələsindədir, yaşlandıqca başa düşəcəksiniz.
Kirill:
Mürəbbəni çıxardım, sağlamlığınız üçün istifadə edin.
Andrey Kopaev:
1 - yəqin ki, bunu mysql verilənlər bazasından istifadə etməklə etmək daha yaxşıdır, o, daha sürətli işləyəcək və əlavə etmək daha asandır 2 - Mən başa düşmürəm ki, hər dəfə bağlantılar siyahısını yaratmağın mənası nədir? Bu, trafik artımına necə təsir edir? Ajax-dan istifadə edərək yükləmək mümkündürmü, yəni. bu insanlar üçündür yoxsa botlar üçündür?
www.site:
Təqdimat üçün, baxmayaraq ki, mən şəxsən PS ilə bu cür manipulyasiyaların tərəfdarı deyiləm.
Joomla-ya giriş nöqtəsi! komponent əksər komponentlər üçün oxşardır. Bu nümunə üçün biz Joomla əsas komponentlərindən birini istifadə edəcəyik - Web Links. Front-enddə icra ediləcək ilk fayl: …/components/com_weblinks/weblinks.php.
Əvvəlcə heç kimin bu səhifəyə birbaşa zəng edə bilməyəcəyinə əmin olmaq üçün hazırlanmış təhlükəsizlik yoxlamasını görürük. Bu, bütün php fayllarınızda istifadə edilməli olan standartdır (bir neçə istisna olsa da):
Müəyyən bir nəzarətçi adının göndərilib-göndərilmədiyini görmək üçün sorğu sətirini yoxlayırıq. Əgər belədirsə, lazımi faylı nəzarətçilər qovluğuna yükləyə biləcəyimizə əmin olaq:
// Əgər tələb olunarsa, xüsusi nəzarətçi tələb olunur if ($controller = JRequest::getWord("nəzarətçi") ) ( $path = JPATH_COMPONENT. DS. "nəzarətçilər" . DS. $kontroller . ".php" ; əgər (fayl_mövcuddur ($yol ) ) ( tələb_once $yol ; ) else ( $controller = "" ; ) ) |
İndi yuxarıda müəyyən etdiyimiz addan istifadə edərək nəzarətçi sinifimizi işə salırıq:
Tapşırığı yerinə yetirən kimi, tələb olunarsa, yönləndirmə həyata keçiririk:
// Nəzarətçi tərəfindən təyin edilibsə, yönləndirmə$controller -> yönləndirmə (); |
Nəzarətçi sinfi
Bağlantılar komponenti üçün ümumi (xüsusi) nəzarətçi buradadır: …/components/com_weblinks/controller.php.
Bütün bu sinif, istifadəçi başqa tapşırığı təyin etmədiyi halda istifadə olunan standart metod olan ekran metodunu müəyyən edir.
müəyyən edilmiş ("_JEXEC") və ya ölmək ("Məhdud giriş"); jimport() ; "joomla.application.component.controller"/** * Veb Bağlantıları Komponent Nəzarətçisi * * @package Joomla * @subpackage Veb bağlantıları * @1.5-dən bəri */ class WeblinksController JController-i genişləndirir (/** * Veb keçid görünüşünü göstərmək üsulu * * @access public * @1.5-dən bəri */ funksiya ekranı () (// Əgər heç biri yoxdursa, standart görünüşü təyin edin if ( ! JRequest:: getCmd ( "görünüş" ) ) ( JRequest:: setVar ( "görünüş", "kateqoriyalar" ) ; )//veb-link üçün hit sayını yeniləyin əgər (JRequest:: getCmd ("görünüş" ) == "weblink" ) ( $model =& $this -> getModel ( "weblink" ) ; $model -> vur () ; )// Keşləmə məntiqinə baxın -- sadə... biz daxil olmuşuq? |
$user = &JFactory::getUser(); $view = JRequest::getVar("görünüş");.
$viewcache = JRequest::getVar("viewcache" , "1" , "POST" , "INT" ); if ($user -> get ("id" ) || ($view == "kateqoriya" && $viewcache == 0 ) ) ( valideyn:: displey (yanlış) ; ) else ( valideyn:: ekran (doğru) ; ))) Bu üsulda, sorğu sətirinin parametri kimi başqa bir görünüş keçilmədiyi halda kateqoriyaları göstərmək üçün standart görünüşü təyin etdik. Əgər tələb olunan görünüş veb-linkdirsə, biz linkə baxış sayğacını artırırıq. Sonra view dəyişəninin qiymətini təyin edirik və zəng edirik JController ana sinifimizin ekran metodu.
GetModel metoduna çağırışa xüsusi diqqət yetirməyə dəyər. Lazım olanı yükləyir
Sonra, görünüş sinfini açırıq.
Sinfi Baxın
Kateqoriya görünüşü istədiyimizi güman etdiyimiz üçün bu icra ediləcək aşağıdakı fayldır: …/components/com_weblinks/views/categories/view.html.php
// Bu faylın Joomla!-a daxil olduğundan əmin olun. müəyyən edilmiş("_JEXEC") və ya öl("Məhdud giriş"); jimport() ; "joomla.application.component.view"/** * WebLinks komponenti üçün HTML Görünüşü sinfi * * @static * @package Joomla * @subpackage Weblinks * @1.0-dan bəri */ sinif WeblinksViewCategories JView-i genişləndirir (funksiyanın ekranı ( $tpl = null ) ( qlobal $mainframe ; $document =& JFactory:: getDocument () ; $categories =& $this -> get ( "data" ) ; $total =& $this -> get ("total" ) $state =& $this -> get ( "state" );// Səhifə/komponent konfiqurasiyasını əldə edin $params = & $mainframe -> getParams (); $menuslar = &JSite::getMenu();$menu = $menus -> getActive (); // tətbiq standart səhifə başlığını təyin etdiyi üçün onu əldə etməliyik// sağ menyunun özündən if (is_object ( $menu ) ) ( $menu_params = new JParameter( $menu -> params ) ; if (! $menu_params -> get ( "page_title" ) ) ( $params -> set ( "page_title" , JText:: _( "Web Links" ) ) ) ) else ( $params -> set ( "page_title" , JText:: _( "Web Links" ) ) ; ) $document -> setTitle ( $params -> get ( "page_title" " ) ;// Paramlar üçün təyin olunmayıbsa, bəzi defoltları təyin edin $params -> def ("comp_description" , JText::_("WEBLINKS_DESC" ) );// Şəkil etiketinin atributlarını təyin edin< count ($categories ) ; $i ++ ) { $category =& $categories [ $i ] ; $category ->if ($params -> get ("şəkil" ) != - 1 ) ( if ($params -> get ("image_align" ) != "" ) $attribs [ "align" ] = $params -> get (" image_align" ) ; else $attribs [ "align" ] = "" ; $attribs [ "hspace" ] = 6 ; // Şəkil teqini yaratmaq üçün statik HTML kitabxanasından istifadə edin$image = JHTML:: _("şəkil" , "şəkillər/hekayələr/" . $params -> almaq ("şəkil") , JText:: _("Veb keçidləri" ), $attribs ); ) üçün ($i = 0 ; $i keçid = JRoute::_( |
Yenə də bu, bir ekran metodu ilə çox sadə bir sinifdir. Buradakı məntiqin əksəriyyəti keçid komponentinə xasdır, lakin diqqətlə baxsanız, əksər komponent baxış siniflərində istifadə olunan funksionallığı tapa bilərsiniz. Göstərmə metodunun sonunda bu sinif valideyni çağırır (JView) göstərmə üsulu, nümayiş etdiriləcək şablonun adının ötürülməsi. Göstərilən şablonun adı keçməzsə, "defolt" şablondan istifadə edilir.
Və nəhayət, şablon sinfini açırıq.
Şablon sinfi
Gəlin razılaşaq ki, konkret şablon adı keçməyib, ona görə də defolt şablon istifadə olunacaq. Bu halda, aşağıdakı fayl nəzərdən keçiriləcək: …/components/com_weblinks/views/categories/tmpl/default.php
-> escape ($this -> params -> get ("səhifə_başlıq" ) );