Modelleri kullanmak

SPIP 1.9.1 modèle kavramını getirdi.

Model nedir ? Model, başka bir iskelete veya — asıl yenilik burada — bir makalenin metin kısmına eklenebilen basit bir HTML parçasını tanımlayan küçük bir SPIP iskeletidir.

Wikipédia modellerinden esinlenilerek hazırlanan modeller sistemi web sitesi yöneticilerine ve yazarlara yeni kapasiteler sunar.

Modeller klasik kısayolların <img1> ve <doc1> bir uzantısısıdır. Bunlar dist/modeles/img.html ve dist/modeles/doc.html modellerine karşı düşmektedir.

Cümle yapıları geliştirilmiştir ve satır düzenlemeyi ("alignement") belirtmek olasıdır (<img1|left>, <img1|right> veya <img1|center>), daha genel bir sınıf olan ister belli bir iskelet ister bir CSS sınıfı (<img1|classe> gidip — eğer bu dosya mevcutsa — modeles/img_classe.html modelini arar, aksi halde modeles/img.html modelini kullanır ama kullanırken class="classe" parametresini alır).

Ama modeller sadece resimlerle ve belgelerle sınırlı değildir ; sadece modeles/ dizinine bir iskelet ekleyerek <modele1> tipinden yeni kısayollar oluşturmak da olasıdır !

Eğer belirtilen kısayola ait hiç model yoksa (örneğin, <breve1>), SPIP’in model yöneticisi istenen nesneyi tanıyıp tanımadığına ve bu nesnenin (breve)bir url’si olup olmadığına bakar.

<breve1> Bu durumda (burada bunu deniyoruz, çünkü kısa haberler sistem tarafından tanınırlar ve bir URL işlevine sahiptirler), SPIP <breve1> kısayolunu yüzen bir çerçeve ile değiştirir ve kısa habere doğru bir bağ ekler, ayrıca sanki [->breve1] kodu eklenmiş gibi başlığını görüntüler.

Eğer SPIP nesneyi tanımazsa kısayolu aynen olduğu gibi bırakır ve nesnenin bir eklenti veya bir filtre (süzgeç) tarafından işlenmesini bekler veya nmesneyi tamamen görmezden gelir.

Modellere parametre de gönderilebilir (flash belgelerinde «embed» komutuyla yapıldığı gibi <emb1|autostart=true>). Cümle yapısı genelleştirilmiştir ve şu örnekte olduğu gibi HTML’i bile kabûl eder :

<son19|couleur=#ff0000
   |legende=Le grand <i>Count Basie</i>
   |photo=12>

burada modeles/son.html isimli model çağrılmaktadır ve bu model 12 no’lu fotoğrafı verilen parametreleri kullanarak #ff0000 renkli bir çerçeve içinde ve italik yazıyla bir açıklama ekleyerek görüntüler.

Bir çok kullanım

Modellerin tüm uygulama alanlarını açıklamaktan oldukça uzağız. Biz size bir kaç farklı uygulama gösterdik. Siz de başka uygulamalar bulursanız lütfen modellerinizi SPIP Zone/SPIP Contrib alanlarında paylaşmaktan çekinmeyin.

-  Belgelerin kısayollarının görünümünü değiştirmek. Sıkça istenen bu işlevin kullanımı şu ana kadar zordu çünkü SPIP’in çekirdek dosyalarındaki php kodlarını düzenlemek gerekiyordu. Şimdi, iskelet dizininde dist/modeles/img.html kodunu modeles/ isimli bir alt dizine kopyalamak ve değiştirmek yeterli. <doc1> ve <emb1> kısayolları için de (biraz daha zor olsa da) aynı şey geçerli.
Dikkat : çoğunlukla spip_documents_xx stillerini sitenin CSS dosyalarıyla değiştirmek kısayollardaki ufak tefek değişiklikler için modellerin değiştirilmesinden çok daha kolay.

-  Bir flash oynatıcı ile ses dosyası çalmak. modeles/son_player.html isimli bir model <son12|player> isimli bir kısayol üretebilir.

-  Bir makaleye site bağlamak. İskeletlerine modeles/site_box.html isimli yeni bir model ekleyerek anında <site1|box> kısayolu oluşturulabilir. Bu model (klasik dögülerle) kullanılarak sitenin ismi yazdırılabilir, sağda yüzen bir kutuda paylaşılan son 3 makaleye bağ verilebilir ve böylece basit bir bilgi kutucuğu oluşturulabilir. Bir parametre yardımıyla görüntülenecek makale sayısı belirlenebilir veya özetlerin gösterilip gösterilmeyeceği belirtilebilir vb.

-  Pul yapıştırılmış bir resmin görüntülenmesi. Bir resmin posta pulu biçiminde görüntülenmesini sağlayan bir iskeleti yapmayı bir kere öğrendinizmi (bkz Epeyce pul içeren bir site) bu iskelete modeles/timbre.html ismini vererek <timbre12> kısayolunu oluşturabilirsiniz. Ve buna boy, renk, tampon seçimi vs parametrelerini ekleyebilirsiniz. [1].

Tabii ki aynı şekilde resimleri sepia olarak gösteren modeller de düşünülebilir vb. Umarız tüm bunlar eklenti biçiminde hızlıca hazırlanır.

-  Kompozit bir makale oluşturmak. Farzedelim makale 1’in başlığından ve makale 2’nin metninden oluşan bir makaleye ihtiyacımız var. Gayet basit : 2 model oluşturulur, biri istenen makalenin başlığına gönderir diğeri metnine gönderir ve kompozit makalemizde başlık alanına : <article1|chapo> ve metin alanına : <article2|texte> yazılır. İsteğinize bağlı olarak filtre, komut vs eklemek de mümkündür...

-  Bir makaleyi bir çok bölüme yerleştirmek. Modelleri programlayarak <article1|chapo>, <article1|texte> bir makale başka bir makalenin içine 2 kopyaya gereksinim olmaksızın yerleştirilebilir. Bu durumda oluşturulan "hayalet" makale yeni bir bölümün içine yerleştirilebilir. (ayrıca, bu makaleye yeni elemanlar eklenebilir ve başka bir başlık verilebilir).

-  Bir anket yapmak. Forms eklentisi modeller aracılığıyla form oluşturmaya ve bu formları <form1> kodu yardımıyla makale içinde kullanmaya olanak tanır.

-  Rastgele bir "Güzel söz" görüntülemek. Eğer kısa haberlere "Güzel sözler" yerleştirdiyseniz <citation|aleatoire> kodunu kullanarak ({par hasard}{0,1} kriteri ile bir kısa haber döngüsü oluşturarak) etkin paragrafın yanında rastgele birini yüzen bir çerçeve içinde görüntüleyebilirsiniz.

-  Makalenin dilinden başka bir dildeki bir metni eklemek. Modller eklenti biçiminde çalıştıkları için lang=xx parametresi daima kullanılabilir. Eğer belgelerinizden biri iki dildeyse (örneğin tanım bölümünde «bloc multi» kullandıysanız) tanımı <doc1|left|lang=eo> kodu yardımıyla esperanto dilinde veya japonca olarak görüntüleyebilirsiniz. Eğer modelin iskeletinde dil zincirleri varsa yorumlanacak yoksa belirtilen parametredeki dilde görüntülenecektir.

-  Bir grafik görüntülemek. Bir veri tablosu modele yönlendirildiğinde model bu bilgiyi grafiğe dönüştürür ve metnin içine yerleştirir.

-  Resim biçiminde ara başlık. Niye <imagetypo|texte=Mon intertitre> isimli bir kısayol olmasın ki ?

Des paramètres à foison

Model kısayollarının sentaksı şöyledir <modele12>, <modele|parametre1=truc|parametre2=chose> veya <modele12|alignement|parametre1=etc>. Parametreler HTML’den veya SPIP kısayollarından oluşabilir (çağrılan modellerin bu bilgileri işlemesi öngörülmüş olmak şartıyla).

HTML komutlarıyla çakışmayı önlemek için bir model sayı veya sembol içermeyen <modele> gibi bir kısayol ile çağrılmaması gerektiğini belirtelim. |.

Parametreler, okumayı kolaylaştırmak amacıyla aralıklı olarak bir çok satıra yayılabilir :

<modele 10
  |pays=Allemagne
  |population=82000000
  |superficie=357027
  |classement=63
  |hymne=<i>Das Lied der Deutschen</i>
  |url=http://fr.wikipedia.org/wiki/Allemagne
>

İskelet tüm bu parametreleri #ENV komutu içine alır ve böylece #ENV{population} 82000000 eder. Bu komut tüm java eklemelerine karşı güvenli olduğundan eğer bir parametrede HTML kullanılacaksa #ENV*{hymne} biçiminde kullanmak uygundur; eğer bir de SPIP tipografisi eklenmek isteniyorsa [(#ENV*{hymne}|typo)] veya [(#ENV*{hymne}|propre)] kullanılabilir.

Ana parametre (10) 2 biçimde gönderilebilir : #ENV{id}=10 ve #ENV{id_modele}=10. Böylece, <article3|chapo> tarafından çağırılan bir model, 3 no’lu makalenin başlığında : <BOUCLE_a(ARTICLES){id_article}>#CHAPO</BOUCLE_a> kullanılabilir

veya 3 no’lu anahtar sözcüğe bağlı kısa haberlerde ; <BOUCLE_b(BREVES){id_mot=#ENV{id}}>#TITRE</BOUCLE_b> kullanılabilir.

Görüldüğü gibi her model kendi belgelendirmesine sahip olacaktır çünkü kısayol tek başına kısayolla birlikte gönderilen elemanların işlenmesi için hiç bir şey ifade etmez.

İskeletlerde başka bir kullanım biçimi

Modeller makalelerde kullanılan kısayollarla sınırlı değildir. Modeller bir iskeletin içinden de çağrılabilir. Bunun için #MODELE{modele} veya [(#MODELE{modele}{p1=truc,p2=chose}{p3=etc}|filtre...)] komutları kullanılır. Bu fazla yeni bir metod değildir çünkü (statik) bir iskelet ekleme biçimidir (zaten yeni #INCLURE komutuyla yapılabilmektedir).

Varsayılan modeller

SPIP, şu modellerle birlikte teslim edilir :
-  img, doc, emb,
-  article_mots ve article_traductions : bunlar sırasıyla bir makaleye bağlı abahtar sözcükleri çevirilerini gösterirler (kısayollar : <article1|mots> ve <article1|traductions> ama bu modller ayrıca iskelet tarafından dist/article.html kodu ile de çağrılırlar);
-  lesauteurs #LESAUTEURS etiketinin içeriğini tanımlar ama bir kısayol gibi çağrılamaz;
-  ve bir seri sayfalama modelleri (bkz Le système de pagination).

Bi rmodel yazmak için bazı öneriler

İşe, seçilecek sentaks üzerinde düşünerek başlanmalıdır : bu model belirli bir makaleye mi bağlı ? Evetse, <article1|xxx> seçilmelidir.

Bu sentaks belirlendikten sonra modeles/article_xxx.html dosyası yaratılır ve dosyaya şu etiket girilir : #ENV. Sonra bir deneme makalesine kısayol girilir <article1|xxx|param=x...> ; bu anda (biraz şifreli gibi görünse de sıralanmış bir tablo elde edilir) modele gönderilen ortam görüntülenir. Örneğin, burada makalenin tanımlayıcısını (#ENV{id} ve #ENV{id_article} ismi altında) görebiliriz.

Daha sonra, sayfamıza iskeleti girmeye başlayabiliriz : <BOUCLE_x(ARTICLES){id_article}> veya <BOUCLE_x(ARTICLES){id_article=#ENV{id}}>. İşte tamam...

Modelimizin tamam olması için şu sentakslar denenmelidir <article1|xxx|left> ve [<article1|xxx>->www.spip.net].

İlk durumda, align=left parametresi modele gönderilir (ve makalenin istenen tarafa bitiştirilmesi uygundur).

İkinci durumda, bağ bir parametreye lien=http://www.spip.net ve bağın sınıfı da lien_classe=spip_out’a gönderilir. Modelin bir yerinde, istenen url’nin bağa çevrilmesi esnasında url’nin dikkate alınması tavsiye edilir (örneğin, başlığın veya ikonun üzerinde); bu durumda gerekir modelin ilk HTML etiketine bir class="spip_lien_ok" eklenmelidir, böylece bağın dikkate alındığı model yöneticisine belirtilmiş olur. (yönetici program oluşturulan modele <a href=...>...</a> ekleyecektir.)

Parametrelere gelince, #ENV{x} etiketi istenmeyen HTML veya javascript kodlarının enjeksiyonunu engeller. Bir modelde parametrelerin HTML kabul etmesine izin verilmesi istenebilir : bu durumda veriler #ENV*{x} kullanılarak alınır ve |propre ou |typo ile filtrelenir. (Veri tipine bağlı olarak (bir çok paragraf içeren metin veya tek satırlık metin).

Programlamada tüm modellerin php kodu ve dinamik etiket içermeyen döngüler biçiminde tasarlanması uygundur. Php içeren modellerde (iskeletlerde olduğu gibi) hesabın sonucu önbelleğe alınır skriptin kendisi alınmaz..

Notlar

[1Kısayolun <img12|timbre> ismini almasını isterseniz modele modeles/img_timbre.html ismini verebilirsiniz.

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

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