Vikikitap'ı Kullanma/Gelişmiş teknikler

Vikikitap, özgür kütüphane

Şablonlar[değiştir]

Daha önceki bölümlerimizde bazı şablonların kullanımından, hangi durumlarda sayfaya hangi şablonların yerleştirilmesi gerektiğinden kısaca bahsetmiştik. Ancak şablonlar aslında çok geniş kapsamlı bir konudur. Özellikle şablonların hazırlanması son derece kompleks bir konudur ve bilgi birikimi gerektirir. Ancak şunu belirtmek gerekir ki şablonlar tek başına kitap olabilecek bir konudur. O yüzden bu bölümde şablonlar hakkında her şeyi öğrenmeyi beklemeyin. Vikimetni Düzenleme kitabı -tam kapsamlı olmamasına rağmen- şablonlar hakkında bu kitaptan daha fazla bilgi vermektedir. Şablonları öğrenmenin en iyi yolu şablonları kullanırken incelemek veya karşılaştığınız bir sorunda aktif editörlere danışmak ve editörlerin getirdiği çözümlere kafa yormaktır.

Şablonların çeşitli faydaları vardır. İlk olarak şablonlar uzun, karmaşık kodları sayfada gizler. Bu sayede yeni kullanıcılar bir sayfaya katkıda bulunurken karmaşık ve korkutucu kodlarla muhatap olmazlar. İkinci olarak şablonlar, aynı veya benzer uzun kodların birden fazla sayfaya ve/veya bir sayfada birden fazla yere kopyala-yapıştıra gerek kalmadan kolayca eklenebilmesini sağlar. Son olarak ise, şablonlar parametre kullanımı sayesinde elle yapılması gereken birçok yorucu işin otomatikleştirilmesine yardımcı olurlar.

Şablonlar "sayfa yansıtma"nın özel bir halidir. Sayfa yansıtma demek bir sayfanın içeriğini çok az kod yazarak başka bir sayfada göstermek demektir. Yani bir nevi sayfa kopyalamadır. Sayfa kopyalamadan tek farkı orijinal sayfadaki değişikliklerin yansıyan sayfayı da etkilemesidir. Bir sayfayı geçerli sayfada göstermek için (sayfa yansıtmak için) {{alan adı:sayfa adı}} söz dizimi kullanılır. Eğer yansıtılacak sayfa ana alan adındaysa alan adı kısmı boş bırakılıp sadece {{:sayfa adı}} kısmı yazılır. Varsayılan alan adı Şablon:dur. Yani {{sayfa adı}} gibi bir kullanımda Şablon:sayfa adı sayfasının içeriği yansıtılmaya çalışılacaktır. Varsayılan türün şablon olması yansıtılmak için en kullanışlı türün şablon olmasını sağlar.

Şimdi aşağıdaki kodu deneme tahtasına yazarak ana sayfayı deneme tahtasında göstermeyi deneyin

{{:Ana Sayfa}}

Kitapların yazdırılabilir sürümleri sayfa yansıtma kullanılarak oluşturulur. Kitabın her sayfası sırayla yazdırılabilir sürüme yansıtılır. Yansıtılacak sayfadaki yansıtılmak istenmeyen kodlar <noinclude> ve </noinclude> arasına alınır. Bu sayede yazdırılabilir sürüm oluşturulurken orijinal sayfalardaki dolaşım kısımlarının (önceki sayfaya, sonraki sayfaya, içindekiler sayfasına gitme düğmeleri) ve diğer yazdırılabilir sürümde işlevsiz duracak kodların yazdırılabilir sürüme geçirilmemesini sağlayabiliriz. Ayrıca bir de <noinclude>'ün yaptığının tam tersini yapmaya yarayan <includeonly> tagi vardır. Sadece yansıtılacak sayfada görünmesini istediğimiz, orijinal sayfada görünmesini istemediğimiz kodları <includeonly> ve </includeonly> arasına koyarız. Örneğin orijinal kitabın ilk sayfasına <includeonly>Bu bir yazdırılabilir sürümdür. Kitabın orijinali...</includeonly> yazarak bu yazının sadece yazdırılabilir sürümde gözükmesini sağlayabiliriz.

Şablonlar da aynı yöntemi farklı amaçlarla ve bazı ekstra özelliklerle kullanırlar. Bir şablonu bir sayfaya yapıştırmak için, daha doğrusu yansıtmak için sayfaya {{şablon adı}} kodunu ekleriz. Örnek bir şablon kullanımı:

{{taslak}}

Bu kodun sonucunda sayfaya aşağıdaki eklenir:


Bu kullanım vakit kazanmak içindir. Ayrıca bu yöntem taslak halindeki kitap ve sayfaları listelemek için de biçilmiş kaftandır. Şablon:Taslak sayfasına gider ve sol paneldeki "Sayfaya bağlantılar"ı tıklarsanız ilgili şablonun kullanıldığı, dolayısıyla taslak halindeki sayfa ve kitapları görebilirsiniz. Bir editör taslak halindeki sayfaları/kitapları görmek için bu yöntemi kullanabilir.

Sayfaya {{taslak}} yazdığınızda ilgili şablonun içindeki her şeyi sayfaya yazmış olursunuz.

Tıpkı sayfa yansıtmada olduğu gibi <includeonly> ... </includeonly> kodunu sadece şablonun kullanıldığı yerde gözükmesini istediğimiz kodları belirtmek için; <noinclude> ... </noinclude> kodunu ise sadece şablonun kendi sayfasında gözükmesini istediğimiz kodları belirtmek için kullanırız. Bu iki tagin şablonlardaki en yaygın kullanımı şablonun kendisini ayrı bir kategoriye koyup şablonun kullanıldığı sayfaları ayrı bir kategoriye koyma amaçlıdır. <includeonly> taginin başka bir kullanımı ise şablonun kullanımı hakkında bilgi veren şablon dokümantasyonunun sadece şablonun kendi sayfasında gözükmesini sağlamaktır. Şimdi isterseniz bir şablon yapmayı deneyelim. Şimdi Şablon:Deneme sayfasına gidip, şablonun içeriğini aşağıdakiler ile değiştirin:

<includeonly>
'''Bu sayfaya deneme şablonu yapıştırılmıştır.'''
[[Kategori:Deneme şablonu yapıştırılan sayfalar]]
</includeonly>
<noinclude>
'''Kullanım:'''
:Bu şablonu deneme amaçlı kullanabilirsiniz.
[[Kategori:Deneme şablonları]]
</noinclude>

Şimdi bu deneme şablonunu {{deneme}} yazarak deneme tahtasına yapıştırın. Deneme tahtasına sadece Bu sayfaya deneme şablonu yapıştırılmıştır. metni geçirilecek, şablonun kendi sayfasında ise sadece kullanımla ilgili bilgi gözükecektir. Ayrıca deneme tahtası Kategori:Deneme şablonu yapıştırılan sayfalar kategorisine, şablonun kendi sayfası da Kategori:Deneme şablonları kategorisine eklenecektir.

Şablon parametreleri[değiştir]

{{Mkutusu}} şablonu biraz daha karmaşıktır, çünkü parametre kullanır. Parametreler, bir şablonu kullanırken şablona verdiğimiz ekstra bilgilerdir. Şablona verdiğimiz parametreler değiştikçe şablonun çıktısı değişebilir. Elbette ki bu değişim sadece şablonun yansıtıldığı sayfada geçerli olacaktır. Yoksa parametrelerin şablonun kendi sayfası için bir etkisi yoktur. Mkutusu şablonunun parametre alan bir şablon olduğunu söylemiştik, ama gıcıklık olsun parametre kullanmayalım:

{{Mkutusu}}

kodunun çıktısı

olacaktır. Mkutusu şablonu ekrana son derece şık duran bir kutu içinde yazı yazdırmaya yarayan bir şablondur. Ayrıca başka parametrelerle kutunun içindeki resmi, kutunun rengini vs. değiştirebilirsiniz. Bu şablona kutunun içinde olacak yazıyı parametre olarak veririz. Hiç parametre vermeyince ekrana Metni girin yazdı. Eğer şablonu şöyle kullanırsak:

{{Mkutusu|tür=fikir|metin=Aklıma bir fikir geldi!}}

kodunun çıktısı

olacaktır. Gördüğünüz gibi şablona "tür" parametresi ekleyerek ve bu parametreye "fikir" değeri vererek kutunun rengini ve resmini değiştirdik. "metin" parametresine de kutunun içine yazmak istediğimiz metni girdik. Bu şablonun kullanımı hakkında daha fazla bilgi almak için Şablon:Mkutusu sayfasına bakabilirsiniz.

Şablonları kullanırken boşluklara ve ilk harfin büyük-küçük olduğuna kafayı takmanıza gerek yok. Ancak elbette diğer sayfa isimlerinde olduğu gibi ilk harf dışında kalan harflerin büyük-küçük olma durumu önemlidir. Örneğin:

{{MKutusu|tür=fikir|metin=Aklıma bir fikir geldi!}}

kodunun çıktısı

Şablon:MKutusu

olacaktır. Çünkü şablonun gerçek ismi "Mkutusu"dur.

Şimdi başka bir şablonu inceleyelim. İnceleyeceğimiz şablon aşama şablonu. Bu şablonun içeriği (kaynak kodu) aşağıdaki gibidir:

[[Dosya:{{{1}}}von10.png|Gelişim aşaması: {{{1}}}0% ({{{2}}})]]
<noinclude>
{{Belgeleme}}
</noinclude>

Evet biraz karmaşık değil mi? Aslında o kadar da karmaşık değil. Üçer süslü parantezle çevrilmiş sayılar şablona parametreyle verilen değerleri temsil ediyor. Kaynak koda bakarak bu şablonun 2 parametre aldığını söyleyebiliriz. İlk parametre şablonda iki yerde, ikinci parametre ise bir yerde kullanılmış. Parametrelere isim verilmemiş. O halde biz de şablonu kullanırken parametrelere isim vermeyeceğiz. Şablon, hangi parametrenin hangisi olduğunu parametrelerin sırasından anlayacak. Şablonun belgelemesi, şablonun "Belgeleme" alt sayfasından yansıtılarak oluşturulmuş. Şimdi isterseniz bu şablonu kullanalım:

{{aşama}}

Bu kodun çıktısı Gelişim: %10 şeklinde olur. Şablona hiç parametre vermediğimiz için yerinde parametre olması gereken kısımlar olduğu gibi çıkar. Şimdi başka bir örnek:

{{aşama|2}}

Bu kodun çıktısı Gelişim: %20 şeklinde olur. Aşama şablonu kitap ve sayfaların tamamlanma durumunu belirtmek için kullanılır. İlk parametre 0'dan 10'a kadar değer alır ve resimde kaç tane çiziğin işaretleneceğini belirtir. Şablonun kaynak koduna bakarak Commons deposunda 1von10.png, 2von10.png, 3von10.png, ... isminde resim dosyaları olduğu yorumunu yapabiliriz. Ayrıca yine kaynak koda bakarak bu yazdığımız parametrenin fare işaretçisi resmin üzerine geldiğinde görünecek yazıyı da etkilediği sonucuna varabiliriz. Ayrıca henüz ikinci parametreyi belirtmedik, bu yüzden ikinci parametrenin olması gereken yerde {{{2}}} var. Şimdi ikinci parametreyi de belirtelim. Aşama şablonunun ikinci parametresi hangi tarih itibarıyla belirtilen tamamlanma durumunun geçerli olduğunu belirtmek için kullanılır.

{{aşama|5|8 Ağustos 2010}}

Çıktısı: Gelişim: %50 (8 Ağustos 2010 itibariyle) Fare işaretçisini bu çıktının üzerine getirdiğinizde "Gelişim aşaması: 50% (8 Ağustos 2010)" yazısını göreceksiniz. Şimdi deneme şablonunun içeriğini şu kodlarla değiştirin:

[[Dosya:{{{1|Wiki.png}}}}]]

Burada eğer şablona parametre verilmezse ilgili parametre Wiki.png sayılacak. Yani süslü parantezler arasındaki sayının sağına | işareti koyup ilgili parametrenin varsayılan değerini belirtebiliriz. Başka bir örnek:

[[Dosya:{{{resim|Wiki.png}}}]]

Burada ise parametremize isim verdik. Artık şablonu {{deneme|resim=dosya.jpg}} olarak kullanacağız.

NOT: Eğer varsayılan değeri olmayan bir parametreye değer vermezsek şablonun parametre değeri olması gereken yerde üçer süslü parantez arasında parametrenin ismi veya -parametreye isim vermemişsek- 1, 2, 3,... gibi sayılar olur.

NOT: Şablonda parametrelere isim verilmişse şablonu kullanırken parametreleri hangi sırada yazdığımız önemli değildir. Ancak eğer isim verilmemişse parametreleri belirtilen sırada yazmalıyız.

Mükemmel şablonlar hazırlamak için hayal gücüne, HTML ve CSS bilgisine (şablonları daha güzel yapmak için) ve MediaWiki yazılımına özgü değişken ve ayrıştırıcıları bilmeye ihtiyacınız var. MediaWiki yazılımı performansı düşünerek şablon kullanımında bazı sınırlamalar getirmiştir. Örneğin A, B, C ve D isminde dört sayfamız olsun. C sayfası D sayfasından, B sayfası C sayfasından ve son olarak A sayfası da B sayfasından yansıtılarak oluşturulmaya çalışılırsa MediaWiki hata verir. Ancak sizi temin ederiz ki böyle bir şey yapmaya ihtiyaç duymayacaksınız. Eğer MediaWiki yazılımı bu gerekçeyle sayfa yansıtmayı kestiğinde üzerine yansıtma yapılacak sayfaya yansıtılması gereken sayfanın linkini koyar ve sayfanın HTML kaynak koduna da yorum olarak ilgili hatayı yazar.

Gelişmiş düzenleme[değiştir]

Editörlerin daha güzel sayfa ve şablon oluşturmalarını sağlayan çeşitli gelişmiş araçlar vardır. Bu özelliklerin çoğu MediaWiki yazılımına çeşitli eklentiler eklenmesiyle elde edilir. Vikikitap'a zaman zaman yeni eklentiler eklenmektedir. Eğer Vikikitap'ta bulunmayan bir özelliğin Vikikitap'a eklenmesini istiyorsanız öncelikle Mediawiki.org'daki mevcut eklentilere bakın. Vikikitap'a herhangi bir şey kurulmadan önce köy çeşmesinde oylama açarak topluluğun onayını almalısınız.

Yapamayacağımız eklentiler[değiştir]

Daha önce vikiyazarların istediği ancak Wikimedia yazılım geliştiricilerinin yapamadığı eklentiler vardır. Genelde olası performans kaybından ötürü eklentiler reddedilir. Çünkü bazı eklentiler server kaynaklarını çok fazla tüketir. Bazen de eklentinin reddedilme sebebi güvenliktir. Aşağıda daha önce istenmiş ve yapımı çeşitli sebeplerle reddedilmiş eklentiler listelenmiştir:

DPL
DPL'nin eski bir versiyonu MediaWiki'de mevcuttur, ancak yeni versiyonu birçok ekstra seçenek ve çok daha fazla güç sunuyor. Ancak maalesef bu yeni seçenekler ve güç viki sunucularına ekstra yük getiriyor. DPL'nin hafif bir versiyonu hazırlanmadığı müddetçe MediaWiki'ye DPL'nin yeni sürümünü yüklemeyeceğiz.
GNU LilyPond
Lilypond; grafik, müzik, ve benzeri birçok şeyin LaTeX dili kullanarak sayfaya gömülmesini sağlayan bir eklentidir. Ancak maalesef bu eklentinin birçok bileşeni güvenlik testini geçememiştir.
StringFunctions
Ayrıştırıcı fonksiyonlar gibi bunlar da string verileriyle uğraşmaya yarayan ayrıştırıcı çengellerdir. Bu çengeller arasında bölme, oynama yapma vb. bulunur. Bu eklenti de çok fazla sunucu kaynağı tükettiği için Vikikitap'ta kullanılamaz.

HTML ve CSS[değiştir]

Vikimetin MediaWiki yazılımı tarafından HTML'e dönüştürülür. Vikimetni HTML'e tercih ederiz, çünkü vikimetnin okunması ve değiştirilmesi daha kolaydır. Ancak birçok kez çeşitli görevleri gerçekleştirmek için HTML ve CSS'e ihtiyaç duyarız.

CSS sınıfları[değiştir]

Burada Vikikitap'ta kullanılabilecek en yaygın CSS sınıfları listelenmiştir. Kendi CSS kodlarınızı kodlamaktansa bu sınıfları kullanmanız her şeyin standardize olması ve vakit kazanmanız açısından çok önemlidir.

PrettyTextBox
PrettyTextBox sınıfı gri arka planlı ve gri çerçeveli bir kutu oluşturmaya yarar. {{SideBox}} ve {{TextBox}} şablonları bu sınıf kullanılarak hazırlanmıştır. Bu sınıfın en yaygın uygulaması <div class="PrettyTextBox">...</div> şeklindedir.
wikitable ve prettytable
Bu sınıflar az önceki PrettyTextBox sınıfının renklerine benzer renklerde tablolar oluşturmak içindir. Normal tablo hücreleri gri, başlık hücreleri koyu gri ve bütün çerçeveler gridir. Bu sınıflar köy çeşmesi gibi birçok yerde kullanılır.
metadata, noprint
Bu sınıflar ilgili içeriğin sayfa yazdırıldığında yok sayılmasını sağlar. Bu sınıflar, okurlardan çok yazarlar için bir anlam ifade eden içerikleri belirtmek için kullanılabilir.
printonly
Yukarıdakinin tam tersi. Bu sınıfla işaretlenen içerik sadece sayfa yazdırıldığında gözükecek, normalde gözükmeyecektir.
plainlinks
Vikikitap'ta bir sayfaya bir dış bağlantı eklediğinizde ilgili bağlantının bir dış bağlantı olduğunu belirtmek için MediaWiki bağlantının yanına küçük bir ok koyar. İşte bu sınıf o oku yok etmeye yarar.

Ayrıştırıcı fonksiyonlar[değiştir]

Ayrıştırıcı fonksiyonlar güçlü ama karmaşıktır. En çok şablonlarda kullanılırlar, bu sayede kitap ve sayfalarda değişiklik yapan sıradan kullanıcılardan gizlenirler. Çünkü bu fonksiyonların kitaplarda kullanılması kodu karmaşık ve ürkütücü hale getirir, ki bu da ilgili sayfada değişiklik yapmak isteyem yeni kullanıcılar için iyi bir şey değildir. Vikikitap'ta kullanılabilecek ayrıştırıcı fonksiyonlar http://www.mediawiki.org/wiki/Help:Extension:ParserFunctions adresinde listelenmiştir. Vikikitap'taki ayrıştırıcı fonksiyonlar bu sayfadakilerle sınırlıdır. Ayrıştırıcı fonksiyonların "genişletilmiş sürümü", "StringFunctions" eklentisi vb. yoktur.

Matematik formülleri[değiştir]

Matematik kitabını ziyaret ederseniz orada çeşitli matematik formüllerini göreceksiniz. Bu formüller, matematik formülleri için özel olarak tasarlanmış bir LaTeX türeviyle yazılmaktadır. Vikikitap'ta matematik formülleri kullanma hakkında ayrıntılı bilgiyi meta:Help:Displaying a formula sayfasında bulabilirsiniz. Bu sayfanın daha kapsamlısı Meta ve Vikipedi'de bulunabilir.

Dinamik sayfa listeleri[değiştir]

Dynamic sayfa listeleri (İngilizcesi Dynamic Page Listing, DPL) Vikikitap'taki sayfaları kategori ve alan adına göre otomatik olarak başka bir sayfada listelemeye yarayan bir eklentidir. DPL'in Vikikitap'ta kullanılan versiyonunun dokümantasyonu (son versiyon değil, yukarıya bakın) http://www.mediawiki.org/wiki/Extension:DynamicPageList/old adresinde bulunur.

DPL özelliği daha çok organizasyonel sayfalarda kullanılır. Örneğin Vikikitap:Kitaplıklar sayfasında "Kitaplık" isim alanındaki tüm sayfalar listelenir. DPL özelliği genelde kitaplarda kullanılmaz, ancak bu kesinlikle kullanılmayacağı anlamına da gelmez.

DPL listelerini düzleştirme[değiştir]

DPL listeleri varsayılan olarak dikey ve madde işaretli olarak listelenir. Ancak istenirse DPLFlat CSS sınıfı kullanılarak listenin yatay olmasını sağlayabiliriz. Örnek:

<div class="DPLFlat"><dynamicpagelist>...</dynamicpagelist></div>

Bu kullanım {{yeni}} şablonunda uygulanmıştır.