Başka iskeletler <EKLEMEK>

Birçok dosyada ortak olarak kullanılan metinler ve döngüler olduğunda bu elemanları sayfalardan ayrı bir dosyada tutmak ve diğer iskeletlerin içinden çağırmak düşünülebilir. Bu biçimde, ortak kodlar tek bir dosyada toplanmış olur ve birçok iskeleti tek hamlede değiştirmek mümkündür.

Bu türden ayrık dosyalara, farklı iskeletlerden çağrılmak üzere şu elemanlar yerleştirilebilir:
— HTML sayfa başlıklarının tanıtılması (javascript çağrıları, stil sayfası çağrıları...),
— sayfaların çoğunda ortak olan gezinti elemanları (sayfa üstünde, sol sütunda...),
— üst menü bandı (logo, site hazırlayıcıları, iletişim sayfası...),
— dipnot...

Ekleme sentaksı

PHP’ye alışkın olanlar, prensibi burada anlatılanla aynı olan include fonksiyonunu bilirler.

SPIP 1.4 ’ten itibaren bir iskelet başka bir iskeletin içinden <INCLURE> komutu ile çağrılabilir (Aynı işi yapan <INCLUDE> da kullanılabilir). genel sentaksı şöyledir :

<INCLURE(dosya.php3){parametre}...>

«dosya.php3» sayfaya eklenmek istene dosyanın ismidir. Örneğin, sitenin her sayfasının aynı dipnotu görüntülediğini varsayalım. Bu durumda, bu «dipnotun» SPIP ve HTML kodlarını «dipnot.html» iskelet dosyasında toplarız ve «dipnot.php3» dosyası tarafından çağrılmasını sağlarız (daima iskelet çağırmak üzere hazırlanan ikili dosya prensibine bağlı kalarak). Aşağıdaki satırı, dipnotun gösterileceği iskeletlerde istenen yere eklemek yeterli olacaktır :

<INCLURE(pied.php3)>

SPIP 1.8.22den itibaren dağıtım page.php3 dosyasını içerir ve «fond»’u parametre olarak kullanan her iskeleti çağırmaya olanak tanır. Böylece dipnot.php3 dosyasından kurtulup yerine şu çağrı kullanılabilir:

<INCLURE(sayfa.php3){fond=dipnot}>

Bu cümle yapısı SPIP 1.9’dan itibaren daha da basitleştirilmiştir çünkü artık sadece eklenecek iskeletin ismi belirtilmektedir :

<INCLURE{fond=dipnot}>

Bağlama dayalı eklemeler

Bazı eklemeler bağlama dayalı olabilir. Örneğin, «hierarchie» iskeletini düşünelim, bu iskelet sitenin kökünden bir bölüme yönlendiren bir yolu görüntülesin; bu sayfa şu biçimden bir URL ile çağrılacaktır: «spip.php?page=hierarchie&id_rubrique=xxx».

Mevcut bölümden başlayarak hiyerarşiyi görüntülemek isteyen iskeletlerde ilgili parametrenin {id_rubrique} olduğunu belirtmek gerekir; eğer gerekliyse ilgili bölümün numarasını alacak bir döngü oluşturulur ve aşağıdaki kod bu döngünün içine gömülür :

<INCLURE{fond=hierarchie}{id_rubrique}>

Not : bu durumda hierarchie.html iskeleti kesinlikle {id_rubrique}...

kriterini içeren bir "rubriques" döngüsüyle başlamalıdır.

Bazı iskeletlerde hiyerarşinin «değişken» bölümü ile değil numarası önceden bilinen bir bölümle görüntülenmesi düşünülebilir. Bunun için parametrenin değeri şöyle belirlenebilir :

<INCLURE{fond=hierarchie}{id_rubrique=5}>

Dikkat <INCLURE> komutunda bir çok parametre belirtilebilir; ama bu durum oldukça nadirdir. Önbelleğin etkisini azaltacak ve sitenizi yavaşlatacak gereksiz parametreler eklemekten kaçının.

Dikkat Katıştırılan dosyanın kendisi de bir iskelet olduğundan kendi $delais değerine sahiptir. [1]. Bu yöntem sitenin çok seyrek hesaplanacak yüklü elemanlarını ayırmak için kullanışlı olabilir ve bazı daha sık hesaplama gerektiren dinamik elemanlara yer açar (örneğin site paylaşımı).

Çok dilli bir bağlamda

Eğer SPIP’in çok dilliliği etkinleştirildiyse SPIP 1.7, 1.7.2’den itibaren, {lang} parametresini kullanarak katıştırılan bir iskeletin ortam dili belirtilebilir.

-  Kullanılan dilin parametresi belirtilmemişse yani <INCLURE{fond=pied}> biçiminde verilmemişse katıştırılan iskelet sitenin varsayılan dilinde çağrılır;

-  <INCLURE{fond=pied}{lang=es}> iskeleti ispanyolca olarak çağırır. Tabii «es» argümanını istediğiniz dilin ISO koduyla değiştirebilirsiniz: ingilizce için en, fransızca için fr, türkçe için tr, vietnamca için vi vb. (bkz: «Internationaliser les squelettes»);

-  <INCLURE{fond=pied}{lang}> iskeleti o anki dilde çağırır.

Burada, katıştırılan iskeletlerde dil dosyalarının kodlarının kullanımına olanak tanındığını (bkz: «Internationaliser les squelettes») belirtmemiz gerekir.

Katıştırılan iskeletler de «ilk seviye» iskeletleri gibi dile bağlı aynı seçme mekanizmaları desteklerler. Başka bir deyişle, katıştırılan iskeletler de diğer iskeletler gibi (burada pied.html) belirli bir dile göre tanımlanabilirler (örneğin pied.es.html). Daha fazla bilgi için fbkz «Internationaliser les squelettes».

Statik #INCLURE

SPIP 1.9.1 sürümü başka bir katıştırma yöntemi getirdi : #INCLURE.

<INCLURE{fond=..}> tümcesi bir internot’un her ziyaretinde sayfa katıştırılmasını sağlar.

Bu yeni [(#INCLURE{fond=...})] komutuyla katıştırma işlemi iskeltin hesaplanması esnasında gerçekleştirilir ve sonucu çağrıyı yapan sayfanın önbelleğine kaydedilir. Bu sistemle, katıştırılan bir iskelet için artık kısa bir yaşam süresi idare edilemez ($delais veya #CACHE{}); ama bunun karşılığında katıştırılan iskelete şu filtreler uygulanabilir : [(#INCLURE{fond=lettre}|version_texte)].

<INCLURE{fond=..}> ve [(#INCLURE{fond=..})] farklı işlevlere sahiptir :
— <INCLURE{fond=..}> ile katıştırılan her iskelet farklı bir önbelleğe sahiptir;
— [(#INCLURE{fond=..})] ile çağrıyı yapan ana sayfa önbelleğinde üretilen kodun tamamını içerir ve katıştırılan dosyalar ayrı önbelleklere sahip değildir.

<INCLURE> ve {doublons}

Bir döngü kriteri {doublons} mevcuttur. Bir iskelette <INCLURE> kullanırsak belleğe alınan doublons’lar katıştırılan iskelete gönderilmez.

SPIP 2.0’dan itibaren bu sorunu atlatmak mümkündür. Katıştırılacak iskelet çağrılırken {doublons}> parametresini eklemek yeterlidir. Örneğin, <INCLURE{fond=sayfam}{doublons}>.

Unutmayın ki, katıştırılan iskelette seçilen doublons’lar bu iskeleti çağıran iskelete kadar "çıkmazlar".

<INCLURE> ve ajax

SPIP 2.0 ajax teknolojisini kolayca kullanma olanağı getirmiştir. Böylece bir bağlantıya tıklamak ve sayfanın sadece istenen bölümünü tazelemek mümkündür. Daha fazla bilgi için bkz. detaylı makale.

Notlar

[1Burada $delais değişkeninin önbelleğin güncellenme periyodunu belirttiğini hatırlatalım. Bkz «Principe général» içinde «.php3 dosyası bölümü».

Yazar : mega Publié le : Mis à jour : 21/03/23

Traductions : عربي, català, English, Español, français, italiano, Nederlands, Türkçe