Herkese merhaba. PHP ile yazılmış başka bir bisikleti sunmak istiyorum. Belge Nesnesi modeli. Aynı türün diğer üç tekerlekli temsilcilerinden farkı nedir? Aslında çok fazla fark yok, pek çoğunun en iyisini bir araya getiriyor. Örneğin:
1. Html ve php'nin tamamen ayrılması.
2. Şuna benzer şablonlarda ek etiket yok
3. Hem php'den hem de mizanpajda özel bir etiket kullanarak diğer şablon dosyalarının içeriğini mizanpaja gömme yeteneği.
4. Anında herhangi bir html etiketi oluşturabilme.
5. Kaydetme yeteneği html dosyası oluşturulan ve toplanan her şey.
6. Şablonu oluşturmadan önce istenen sayfanın html dosyasının varlığının kontrol edilmesi.
Kullanımının ne kadar rahat ve kolay olduğunu herkese hemen açıklamak için, projelerimden birini oluşturmak için nasıl kullandığımı anlatacağım ve göstereceğim (tüm projelerimi bunun için yeniden yazacağımdan şüpheleniyorum).
Genelde yaptığım ilk şey, veritabanından sayfa hakkındaki tüm bilgileri almaktır ( anahtar kelimeler, sayfa açıklaması, şablon adı ve css ve js dosya adresleri). Bütün bunları $ head dizisinde saklıyorum. Sonra içeriği veritabanından alıyorum ve onu $ sayfa dizisine kaydediyorum. Ve sınıfla çalışmaya başlıyorum.
Bu yüzden önce sınıf yapıcısını çağırıyorum ve gerekli tüm parametreleri ona iletiyorum:
$ tpl = yeni Şablon; $ tpl -> dahili = TPL_EXTENSION; # şablon dizinindeki dosyaların uzantısı $ tpl -> htm = CACHE_EXTENSION; # önceden oluşturulmuş sayfalar için uzantı $ tpl -> skin_dir = DIR_TEMPLATES; # tüm site şablonlarını içeren dizin (örneğin şablonlar) $ tpl -> js_dir = DIR_JS; # JS dosyalarını aramanız gereken dizin $ tpl -> css_dir = DIR_CSS; # CSS'nin bulunduğu dizin $ tpl -> img_dir = DIR_IMG; # resimlerin bulunduğu dizin $ tpl -> skin = $ _SESSION ["skin"]; # kullanmak istediğim şablonun adı $ tpl -> cache = DIR_CACHE; # bitmiş html'nin nereye kaydedileceği $ tpl -> log = FILE_T_LOGS; # günlüklerin nereye yazılacağı $ tpl -> tag_start = SYMBOL_START_TAG; # Şablondaki değişkenlerin $ tpl ile başladığı karakter -> tag_end = SYMBOL_END_TAG; # Şablondaki değişkenleri sonlandıran karakter $ tpl -> dir_delimeter = DIRECTORY_SEPARATOR; $ tpl -> boşluk = SYMBOL_SPACE; # karakter bir boşluğun yerini alıyor.
Fuf, tüm değişkenler geçilmiş gibi görünüyor, devam edelim.
Sınıfı gereksiz işler yapmaya zorlamamak için öncelikle talep edilen sayfanın hazır Html dosyamız olup olmadığını kontrol ediyoruz.
if ($ tpl -> TestPageStatus () === DOĞRU) ($ tpl -> cacheFileName; gerektirir) else ($ tpl -> page ("index"); # bu arada şablon dosyasının adını iletin, siz birkaç tanesini virgülle ayırarak geçebilir $ tpl -> assign ("HEAD", $head); $ tpl -> assign ("İÇERİK", $page); $ tpl -> build(); # komutu ver $ tpl -> ShowPage (); # çıktı şablonunu oluşturun.)
Sayfayı görüntülemek için kullanmanız gereken tüm yöntemler burada.
Şimdi bu sınıfın birkaç kullanışlı yöntemine bir göz atalım. Diyelim ki ihtiyacımız olan her şeyi sınıfa geçtik, ancak henüz çıktı için bir komut vermedik, çünkü aniden şablonda birkaç Html etiketi oluşturmamız gerektiğini hatırladık. Bunu yapmak da çok kolaydır. İlk olarak, içine bir şeyler eklemek istediğimiz bloğu bulmamız gerekiyor. 2 şekilde bulabilirsiniz:
$ tpl -> findById ("findMe"); $ tpl -> findByTagName ("div");
findById yöntemi, mantıksal olarak şablondaki tüm etiket kimliklerinin benzersiz olduğunu varsayar. Ve findByTagName yöntemi eşleşen ilkini döndürür.
Bulunan öğede alt etiketler oluşturabilmemiz için $ tpl -> createChild() yöntemine arama yaparak elde ettiğimiz sonucu iletmeliyiz. Bu arada createChild yöntemi, yeni bir öğe oluşturduktan sonra onu bize döndürür, böylece yeni oluşturulan öğeyi başka bir yerde kullanabiliriz.
Etrafta dolaşıp denemeler yaparak, bir şablonda etiket oluşturmanın 3 yolunu buldum, bu yüzden size aynı anda 3 örnek göstereceğim. Örnek 1:
yaratmamız gerekiyor
içeri$ ebeveyn = $ tpl -> findById ("ebeveyn"); $ tpl -> createChild ($ ebeveyn, "div", "id = alt, sınıf = test");
Alırız:
Örnek 2:
yaratmamız gerekiyor
$ ebeveyn = $ tpl -> findById ("ebeveyn"); $ tpl -> createChild ($ ebeveyn, "div", "id = alt, sınıf = test", "Biraz metin");
Alırız:
Örnek3:
yaratmamız gerekiyor
$ parent = $ tpl -> findByTagName ("span"); # (1) $ tpl -> createChild ($ parent, "div", "Yeni Öğe"); # (2)
(1) Bir ebeveyni kimliğe göre değil de etikete göre aramak, eşleşen ilk kişiyi bulacaktır.
(2) Niteliklere değil, yalnızca yeni öğenin değerine ihtiyacımız varsa, bunlar atlanabilir.
Alırız:
Ve bu manipülasyonlardan sonra zaten ShowPage'i aradım. Ve burada sorunsuz bir şekilde 2 ilginç noktaya daha geliyoruz.
Bir şablonumuz olduğunu hayal edin, diyelim ki cep telefonlarının bir listesini içeren bir list.tpl şablonu olduğunu varsayalım:
(İÇERİK.Marka)
(İÇERİK.Model)
(İÇERİK.Bilgi)Bilgiyi sadece 1 telefon ile iletmişsek, değişkenler basitçe değerleri ile değiştirilecektir ve aynı anda birkaç telefon ile bilgi iletmişsek, sınıf bu bölümü değerlerin varyantlarının sayısı kadar kopyalayacaktır. ona geldi. Ve bunu, örneğin her bir değer için atayan ve ayrıştıran xTemplate sınıfının aksine, kendisi yapacaktır.
Doğru, çok uygun olmayan bir an var, eğer bu bloktan sonra başkaları varsa, örneğin:
(İÇERİK.Marka)
(İÇERİK.Model)
(İÇERİK.Bilgi)O zaman böyle bir durumda cep telefonumuzu paketleyerek küçük bir hile kullanmamız gerekecek.
(İÇERİK.Marka)
(İÇERİK.Model)
(İÇERİK.Bilgi)Bu durumda, tüm cep telefonları birbiri ardına içeride görünecektir. ve "Başka bir blok" aşağıda kalacaktır.
Ve hiçbir şeyi unutmadıysam, son an diğer şablonların içeriğini mevcut şablona eklemektir.
Tekrar hayal gücünüze sesleniyorum.
Mizanpaj tasarımcısının page.html dosyasının içeriğinin list.html dosya bloğuna eklenmesini istediğini düşünün, bunun için list.html dosyasında doğru yere ekler.
Bu tür eklerin sayısı sınırlı değildir ve yerleri kesinlikle kritik değildir, bu nedenle bunları istediğiniz gibi ve istediğiniz miktarda yerleştirebilirsiniz.
Muhtemelen hepsi bu, bir şey hatırlarsam, sizi ayrıca bilgilendiririm. Sonuna kadar okuduğunuz için teşekkür ederiz.
Etiketler: php, sınıf, şablon, şablon motoru, ayrıştırıcı
oluşturulduktan sonra bilgi-file, prensipte konu zaten tanımlanmıştır. Bu, temaları yönetme bölümüne gidebileceğiniz anlamına gelir. http://mysite.ru/admin/build/themes ve temanızı oraya ekleyin. Doğal olarak, açtıktan sonra herhangi bir tasarım görmeyeceksiniz - sayfa "beyaz üzerine siyah" stilini alacak - beyaz bir arka plan üzerinde siyah metin.
Ancak şunu belirtmek isterim ki temamızda bunun dışında dosya olmamasına rağmen. efsane.info yalan söylemez, site eskisi gibi çalışır - tüm içeriği görüntüleyin, bölgelere blok ekleyin ( http://mysite.ru/admin/build/block) vb. Bu, Drupal'ın çekirdeğinin içerdiği gerçeğinden kaynaklanmaktadır. gerekli modüller, temanızda herhangi bir dosya olmasa bile (bilgi dosyası hariç), Drupal ile çalışmaya devam etmenize izin verir.
Prensipte, tüm şablon oluşturma, çakışan şablon dosyalarına indirgenir (uzantıları vardır). .tpl.php) standart modüllerimiz İYS.
En önemli tpl dosyası (tpl, şablon, desen) sayfa.tpl.php... Sitenin her sayfasını oluşturmaktan sorumludur. Şablon dosyasının nelerden oluştuğunu görelim:
- HTML Kodu
- php kodu
- javascript kodu(gerekli değil)
Drupal, site verilerini her şablon dosyasına standart değişkenler biçiminde aktarır. Her şablon dosyası için 2 tür değişken vardır:
- yalnızca bu dosyaya iletilen değişkenler
- tüm dosyalara iletilen değişkenler
İşte tüm değişkenlerin bir listesi sayfa.tpl.php:
Ortak değişkenler (tüm dosyalar için):
- $ base_path- drupal'ın kurulu olduğu temel yol
- $ css- geçerli şablon dosyasına bağlı bir dizi css dosyası
- $ dizini- temanın kurulu olduğu klasörün yolu
- $ is_front- ana sayfadaysanız DOĞRU döndürür
- $ login_in- giriş yaptıysanız DOĞRU döndürür
- $ is_admin- yönetici paneline erişiminiz varsa DOĞRU döndürür
Sayfa meta verileri
- $ dil- (bir obje) Mevcut dil sitede gösterilen
- $ dil-> dil- metinsel temsilini içerir
- $ dil-> dizin- dilin yönünü içerir. Ya "ltr" (soldan sağa) ya da "rtl" (sağdan sola) olacaktır.
- $ head_title- etiketler arasında kullanım için sayfa başlığının değiştirilmiş versiyonu
- $ kafa- etiketler arasına eklendi ... Meta etiketleri, anahtar kelimeleri vb. içerir.
- $ stilleri- hepsini indirmeye yarar css- geçerli sayfadaki dosyalar
- $ komut dosyası- hepsini indirmeye yarar javascript "ler geçerli sayfaya
- $ body_classes- bir dizi sınıf css etiket için ... Sitedeki sütunların mevcut konumu, sayıları, mevcut url "e, vb. hakkında bilgi içerir.
site hakkında bilgi
- $ front_page- sitenin ana sayfasının adresi. Bu değişkeni başvurmak için kullanmak daha iyidir ana sayfa dan beri etki alanı dilini ve önekini içerir
- $ logosu- sitede yer alıyorsa site logosunun yolu
- $ site_adı- site adı. Bilgi dosyasındaki özelliklerden devre dışı bırakırsanız boş olabilir. mysite.ru/admin/settings/site-information adresinde yapılandırılabilir
- $ site_slogan'ı- sitenin sloganı. Bilgi dosyasındaki özelliklerden devre dışı bırakırsanız boş olabilir. mysite.ru/admin/settings/site-information adresinde yapılandırılabilir
- $ görev- sitenin misyonu. Bilgi dosyasındaki özelliklerden devre dışı bırakırsanız boş olabilir. mysite.ru/admin/settings/site-information adresinde yapılandırılabilir
Navigasyon
- $ search_box- arama dizesini görüntüleyen html kodunu içerir. Bilgi dosyasında kapatırsanız boş olabilir
- $ birincil_bağlantılar
- $ ikincil_bağlantılar- bilgi dosyası özelliklerinde izin veriliyorsa, site için gezinme bağlantılarını içeren bir dizi
Varsayılan sayfa içeriği
- $ kaldı- bölge. Sol sütun için html kodunu içerir. Bilgi dosyasında herhangi bir bölge belirtirseniz kaybolur
- $ ekmek kırıntısı - "galeta unu" için geçerli sayfa
- $ başlık- sayfa başlığı
- $ yardım- çoğunlukla yönetici panelinde gösterilen dinamik ipuçları
- $ mesajları- sitedeki hatalar ve uyarılar hakkında mesajlar görüntüler
- $ sekmeleri- mevcut sayfayı alt sayfalarına bağlayan bağlantılar (sekmeler) (örneğin, bir makale için - düzenleme sayfasıyla)
- $ içerik- geçerli sayfanın içeriği
- $ sağ- bölge. Sağ sütun için html kodunu içerir. Bilgi dosyasında herhangi bir bölge belirtirseniz kaybolur
Alt alan / kaplama verileri
- $ feed_icon- tüm simgelerle satır geri bildirim geçerli sayfa için
- $ footer_message- sayfanın altındaki mesaj. mysite.ru/admin/settings/site-information adresinde yapılandırılabilir
- $ altbilgi- bölge. Sayfanın alt kısmı için html kodunu içerir. Bilgi dosyasında herhangi bir bölge belirtirseniz kaybolur
- $ kapanış- sayfayı değiştiren tüm modüller için kapanış etiketi. Bu değişken, tüm dinamik içerikten sonra görüntülenmelidir. BODY etiketini kapatmadan önce en iyisi
Hepsi burada listelenmiştir standart değişkenler... Ancak değişkenlerinizi buraya bölge olarak ekleyebilirsiniz. bilgi-file veya dosya aracılığıyla başka bir rolde şablon.php(biraz sonra onun hakkında).
Şimdi size hangi kodun içinde olması gerektiğini göstereceğim sayfa.tpl.php ve daha sonra tarayıcılar tarafından hangi koda yorumlanır. İşte bir kod parçası sayfa.tpl.php:
İlk satır, geçerli sayfanın bir başlığı olup olmadığını kontrol eder. Orada değilse, hata ayıklayıcı bu kodu atlayacak ve girmeyecektir. Başlık varsa, etiket sayfanın html koduna eklenecektir.
, bundan sonra sayfa başlığı yazdırılacak ve tüm bunlar etiketle kapatılacaktır.
... Bu sayfanın koduna bir tarayıcıda bakarsanız, şöyle görünür:
Ders 4. Şablon oluşturmak için gerekli dosyalar. Sayfa.tpl.php
Hemen hemen tüm site değişkenleri bu şekilde sarılır. Bu, içeriğin ne olacağını önceden bilmeden biçimlendirebilmemiz için yapılır.
böyle görünüyor standart dosya sayfa.tpl.php Drupal ile birlikte gelir. Sınıfların adını değiştirin, değişkenleri yeniden düzenleyin ve ne olduğunu görün. Bu, nasıl çalıştığını ve sonuç olarak neyin görüntülendiğini "hissetmek" için gereklidir.
"- // W3C // DTD XHTML 1.0 Katı // EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> "http://www.w3.org/1999/xhtml" xml: dil = "dil?> " dil = "dil?> " yön = "yön?> ">
"başlık =" (! DİL:"rel =" ana sayfa ">$ site_adı yazdır; ?>
Veri alma mantığını görüntüleme mantığından ayırmak, web geliştirmenin çok önemli bir parçasıdır.
"Merhaba dünya" seviyesinin biraz üzerine çıkmış herhangi bir programcı, böyle bir ayrıma ihtiyaç duymaya başlar. Ancak herkes doğru sonuçlara ve kararlara varmaz.
Bu nedenle, işte en önemli kurallar:
1. Alma kodu ve veri görüntüleme kodu ayrılmalıdır.
2. Herhangi bir çıktı ancak tüm veriler bunun için hazır olduktan sonra başlamalıdır.
3. Sonuç olarak, herhangi bir komut dosyası yalnızca veri işleme ile ilgilenmelidir. Bundan sonra, bir tür HTTP başlığı gönderebilir veya şablonu çağırarak hazırlanan verileri iletebilir veya her ikisini birlikte yapabilir.
4. Hangi şablon motorunun kullanılacağı onuncu şeydir. En basit ve en erişilebilir olanı PHP'nin kendisidir, bu nedenle üzerinde örnekler verilecektir.
sanrılar
Web programlamada muhtemelen şablonlar kadar anlaşılmaz olduğu kadar açık olan bir konu yoktur. Er ya da geç herkes, şablon kullanmanın gerekli olduğu sonucuna varır. Ama bir nedenden dolayı, bazı çılgın yanılgılar ve fanteziler yoluyla gelir.
En basit ve en bariz yanılgı, yeni başlayanların bir sitenin tüm sayfaları için ortak bir html olan bir "tasarım" dosyasını şablon olarak adlandırmasıdır. Ve bunun üzerine sakinleşirler. Dinamik bilgi, tereddüt eden hiçbir şey yok, eski güzel yankıyı gösteriyor :-)
Aslında, şablon motoru esas olarak site sayfalarının değişen içeriğini görüntülemekle ilgilenir. Ve "tasarım" ın sonucu ikincil bir görevdir.
İki ana fantezi var:
1. "Tasarımcı", PHP'yi anlamak zorunda kalmadan düzenleyebilmesi için şablonlara ihtiyaç duyar.
2. Bu nedenle, şablonlar PHP'yi HTML'den ayırmaya yarar.
İlk ifadeyi düşünmeye çalışalım. tasarımcı nedir? Bu, Photoshop'ta çalışan bir kişidir. Çoğu zaman HTML'yi hiç bilmiyor. Ve ya özel bir düzen tasarımcısı ya da - çoğu zaman ... programcının kendisi - şablon üzerinde çalışır! Komik değil mi?
Şimdi sonuç, PHP'nin HTML'den ayrılması hakkında. İyi. Önümüzde kutsal bir ayrılık hedefi var. Bu nedenle, Smarty ile gelip şunu yazıyoruz:
(foreach anahtarı = cid öğesi = con from = $ kişiler)
($ con.name) - ($ con.nick)
(/ her biri için)
Daha da komik.
Her şeyin başladığı "tasarımcı" mutluluktan bayılır.
teori
Şablonları kullanmaya karar vermemizin nedenlerinin bir kuruş değerinde olmadığı ortaya çıktı. Ve şimdi ne - genel olarak şablonlara ihtiyaç yok mu? Gerekli. Ama önce şu soruyu cevaplamalısın - "neden?" Ne içinşablonlara ihtiyaç var. Ve cevabı pratikle kontrol edin. İnsanlara bu soruyu defalarca sordum. Ama neredeyse hiç kimse buna cevap veremez. Neden şablonlara ihtiyacı var. İnsanların nedenini bilmeden bir şeyler yaptıkları ortaya çıktı.
Bu en komik şey.
Bir web programcısı olarak görev sürem boyunca, kişisel olarak şablonlara neden ihtiyaç duyduğumun üç nedenini formüle ettim. Aslında, iki tane var. Ve nihayetinde bir şeye inelim:
Tek kod - birden çok görünüm.
Genellikle bir bilgi yerine başka bir bilgi göstermeniz gerekir. Örneğin, veritabanıyla çalışma kodu, haber metni yerine bir hata mesajı alır. Bu durumda, bir haber sayfası yerine, tamamen farklı bir sayfa göstermeniz gerekir - bir özür ve daha sonra geri gelme isteği ile. Bunu şablonlarla yapmak çok kolay.
Çoğu zaman aynı bilgilerin birkaç biçimde gösterilmesi gerekir. Örneğin, normal bir sayfa ve bir yazdırma sayfası. Bilgi aynı, alma kodu aynı ve çıktı kodu farklı. Böyle bir durumla karşılaştığınızda, kodunuzu çok hızlı bir şekilde biri çıktıdan sorumlu, ikincisi sorumlu olmayan iki parçaya bölebilirsiniz. Başka bir örnek: Diyelim ki bilgiyi doğrudan HTML'ye değil, bir AJAX isteği aracılığıyla JSON formatında çıktı almak istedik. Bir şablon motoru kullandıysak, kodumuzda tam olarak bir satırı değiştiririz - şablon motorunu json_encode () olarak çağırmak. Ve çıktımız veri alma koduyla karıştırılmışsa, o zaman tüm kodun yeniden yazılması gerekecekti!
Durum biraz benzer: Diyelim ki betiğimiz iki sitede. Artı bizim evde bir kopyası. Ve böylece evde büyük bir böcek bulduk. Kapatın. Şimdi sitelerdeki kodu güncellememiz gerekiyor. Ve işte burada - gerçek an: şablonlar doğru kullanıldıysa, kodu her iki siteye de yükleriz ve her şey sanki hiçbir şey olmamış gibi çalışmaya devam eder! Bu durum, bence, seçilen şablonlama yaklaşımının ideal bir testidir.
Pek çok kişinin gözden kaçırdığı bir diğer önemli nokta (teorik akıl yürütmelerinde, pratikte sürekli karşılaşıyor!) - betiğin yürütme sırası her zaman şablondaki çıktının sırasıyla eşleşmez... Ders kitabı örneği - bir makalenin başlığının bir etikette görüntülenmesi
Ayrıca PHP metnine ek olarak, komut dosyalarının HTTP başlıklarını da gösterdiği unutulmamalıdır. Hangi herhangi bir metinden önce veya genel olarak metin yerine görüntülenmelidir (örneğin, kullanıcıyı başka bir sayfaya yönlendirmek istiyorsak). İlk önce uygulamanın mantığını aynı anda hiçbir şey göstermeden uygularsak, o zaman gerekli HTTP başlığını vermek bizim için herhangi bir sorun teşkil etmeyecektir.
Şablonları kullanmak için kendi nedenleriniz olabilir. Ancak tek bir koşulla - bu nedenler, bazı bilinmeyen insanlar için "daha yüksek düşünceler" ve endişelerden değil, gerçek, hayati zorunluluktan kaynaklanmalıdır.
Uygulama
Şimdi teoriden pratiğe geçelim.
En basit durumda, herhangi bir sayfanın gösteriminde her zaman iki şablonumuz olacaktır: genel site şablonu ve belirli bir sayfa için içerik şablonu.
Diyelim ki arkadaş sitelerine bağlantılar içeren bir sayfa yapmak istiyoruz.
Bu durumda, basitleştirilmiş kod şöyle görünecektir:
Links.php dosyasının kendisi. HİÇBİR ŞEY çıkarır. Yalnızca verileri hazırlar ve ardından şablonu çağırır.
// ayarları etkinleştir.
"settings.php" içerir;
// veritabanından veri al, değişkenleri tanımla
$ pagetitle = "(! LANG: Bağlantılar"
;!}
$ DATA = $ db -> getAll ("bağlantılardan * SEÇİN");
// sayfa şablonunu ayarlayın ve genel site şablonunu çağırın
$ tpl = "tpl_links.php";
"tpl_main.php" içerir;
Genel şablon (tpl_main.php):
include $tpl ?>
Doğru yerde, sayfamızın şablonu (tpl_links.php) buna dahil edilmiştir:
=$pagetitle?>
- "hedef =" _blank ">=$row [ "name" ] ?>
foreach($DATA as $row ): ?>
endforeach ?>
En kolay yol, HTML'de önceden düzenlenmiş statik sayfalara dayalı şablonlar oluşturmaktır. Bir örnek kullanarak bir şablon oluşturmayı ve bağlamayı düşünelim. Aşağıdaki içeriğe sahip bir HTML dosyanız olduğunu varsayalım:
<html> <kafa> <meta adı = "tanım"içerik = /> <meta adı = "anahtar kelimeler"içerik = /> <başlık>başlık> <bağlantı href = "stil.css" rel = "stil sayfası" tür = "metin / css" /> kafa> <vücut>// başlangıç menüsü<tablo kenarlığı = "1" > <tr> <td><a href = "/" > <b> evb>bir>td> tr> <tr> <td><a href = "/ hakkında /"> Benim hakkımdabir>td> tr> <tr> <td><a href = "/ ben ve ben /"> ben ve dünya hakimiyetibir>td> tr> <tr> <td><a href = "/ kişiler /"> Kişilerbir>td> tr> tablo>//menünün sonu<h1> ana sayfah1> <p> p> <p> Benim hakkımda metin: Benim hakkımda metin: Benim hakkımda metin: Benim hakkımda metin:p> <p> Benim hakkımda metin: Benim hakkımda metin: Benim hakkımda metin: Benim hakkımda metin:p> <p> Benim hakkımda metin: Benim hakkımda metin: Benim hakkımda metin: Benim hakkımda metin:p> vücut> html>CMS'ye şablon eklemek için tpls / içerik dizininde örneğin test.tpl bir dosya oluşturmanız ve HTML kodunuzu buraya eklemeniz gerekir. CSS dosyası, css / cms klasörüne yerleştirilmeli ve style.css olarak adlandırılmalıdır. Görüntülerin görüntüler klasörüne yerleştirilmesi arzu edilir. Tüm resimlerin ve CSS dosyalarının yollarını değiştirmeyi unutmayın.
Yorum Yap
Şablon dosya adında Rusça harfler kullanılamaz!
Sistemin yeni şablonu "görmesi" ve sayfaları görüntülemek için kullanmaya başlaması için şablonun sisteme eklenmesi gerekir. Bunu yapmak için, "Yapı" modülünün ayarlarına, "Şablonlar" sekmesine gidin ( http://alaniniz.ru/admin/content/config/ ). Seçilen dil sürümünde bulunan her etki alanında önceden yüklenmiş şablonların bir listesini göreceksiniz.
Yeni bir şablon dosyası bağlamak için, alanların alt boş satırını doldurun “ Şablon adı"(Örneğin, anlamlı bir ad verin" benim test düzenim") Ve" Dosya adı "(bizim durumumuzda, test.tpl) ve" Kaydet "düğmesine tıklayın.
Bu şablonun varsayılan şablon olarak kullanılmasını istiyorsanız, yanındaki "Ana" onay kutusunu işaretleyin. Bu şablon şimdi şablon seçimi açılır menüsünde varsayılan olarak seçilecektir. Ayrıca varsayılan şablonu (Kayıt, Şifre kurtarma, Site Haritası) kullanan sistem sayfalarını görüntülemek için de kullanılacaktır.
Her bir sayfayı düzenlerken şablonlar açılır listede görünecektir:
Böylece bir sitede hem tek bir sayfa hem de bir grup sayfa için uygun şablonu seçerek aynı anda birçok şablonu kullanabilirsiniz.
Yeni bir sayfa oluşturmaya çalışın (Tasarım Şablonu seçeneğinde yeni bir şablonun seçili olduğundan emin olun) ve sitede neler olduğunu görün.
HTML şablonunuz sitede görünmelidir. Ama şimdi statik. Şimdi onu dinamik hale getirmeniz gerekiyor.
İlk olarak, HTML kodunun hangi bölümlerinin değişeceğini belirlemeniz gerekir. Bizim durumumuzda, aşağıdakiler değişecektir:
pencere başlığı
meta etiketler anahtar kelimeler ve açıklama;
metin başlığı
;
gerçek metin;
site menüsü.
Bu, HTML şablonuyla biraz çalışmamız ve değişen bölümler yerine ilgili makroları koymamız gerektiği anlamına gelir.
Örneğin, HTML dosyasının başında meta etiketler ve bir başlık bulunur:
<meta adı = "tanım"içerik = "Vasily Pupkin sitesinin açıklaması" /> <meta adı = "anahtar kelimeler"içerik = "Vasya Vasily Pupkin resmi sitesi" /> <başlık> Vasya Pupkin'in web sitesi: Ana sayfabaşlık>Bunları ilgili makrolarla değiştiriyoruz (makroların listesi ekte verilmiştir):
<meta adı = "tanım"içerik = "% açıklama%" /> <meta adı = "anahtar kelimeler" içerik = "% anahtar kelime%" /> <başlık>% Başlık%başlık>Artık, sayfa oluştururken, sistem her sayfa için ayrı ayrı belirtilen meta etiketleri ve başlığı alacak ve karşılık gelen makrolar yerine bunları değiştirecektir. Makroların isimlerini hatırlamak çok kolaydır.
Aynı şeyi metnin başlığı için de yapalım. Şöyleydi:
<h1> ana sayfah1>Ve öyle olacak. Metin başlığı, % başlık % makrosu tarafından görüntülenir:
<h1>% başlık %h1>Sayfanın ana metni de değişir:
<p> Benim hakkımda metin: Benim hakkımda metin: Benim hakkımda metin: Benim hakkımda metin:p> <p> Benim hakkımda metin: Benim hakkımda metin: Benim hakkımda metin: Benim hakkımda metin:p> <p> Benim hakkımda metin: Benim hakkımda metin: Benim hakkımda metin: Benim hakkımda metin:p> <p> Benim hakkımda metin: Benim hakkımda metin: Benim hakkımda metin: Benim hakkımda metin:p>Sayfanın ana metnini görüntülemek için bir makro var % içerik% :
% içerik%Etiketler arasında dosyanın başına
ve makroyu ekleyin:Bu satır, hızlı düzenleme ve diğer kullanışlı özellikleri sağlar. Onunla basarak yapabilirsiniz Vardiya +D, hızlı bir şekilde sitenin mevcut sayfasını veya herhangi bir parçasını düzenlemeye gidin.
Sonuç olarak, aşağıdakileri almalısınız:
<html> <kafa> <meta adı = "tanım"içerik = "% açıklama%" /> <meta adı = "anahtar kelimeler" içerik = "% anahtar kelime%" /> <başlık>% Başlık%başlık> <bağlantı href = "stil.css" rel = "stil sayfası" tür = "metin / css" /> % sistem includeQuickEditJs ()%kafa> <vücut>// başlangıç menüsü<tablo kenarlığı = "1" > <tr> <td><a href = "/" > <b> evb>bir>td> tr> <tr> <td><a href = "/ hakkında /"> Şirket hakkındabir>td> tr> <tr> <td><a href = "/ projeler /"> Projelerbir>td> tr> <tr> <td><a href = "/ kişiler /"> Kişilerbir>td> tr> tablo>//menünün sonu<h1>% başlık %h1>% içerik%vücut> html>Böylece şablon dosyasını kaydedip sonuca bakıyoruz. Sayfa artık menü dışında neredeyse tamamen dinamik. Site menüsünü "canlandırmak" gerekir. Menünün nasıl düzenlendiğini görelim:
// başlangıç menüsü<tablo kenarlığı = "1" > <tr> <td><a href = "/" > <b> evb>bir>td> tr> <tr> <td><a href = "/ hakkında /"> Benim hakkımdabir>td> tr> <tr> <td><a href = "/ ben ve ben /"> ben ve dünya hakimiyetibir>td> tr> <tr> <td><a href = "/ kişiler /"> Kişilerbir>td> tr> tablo>//menünün sonuMenü öğelerden oluşur. Menünün kendisi bir şekilde dekore edilmiştir ve öğelerin de bir tasarımı vardır. Örneğin, tüm menü bir tür çerçeveye veya arka plana sahip olabilir, geçerli menü öğesi kalın olarak vurgulanabilir, vb. Ayrıca aynı menüde farklı seviyeler olabilir.
Menü çerçevesini seçin:
// başlangıç menüsü<tablo kenarlığı = "1" > tablo>//menünün sonuMenü öğesi şu şekilde tasarlanmıştır:
<tr> <td><a href = "/ kişiler /"> Kişilerbir>td> tr>Geçerli menü öğesinin stili farklı:
<tr> <td><a href = "/" > <b> evb>bir>td> tr>Orijinal menü şablonu /tpls/content/menu/default.tpl dosyasında bulunur ve şöyle görünür:
% Metin%