İlginç bir yazı dizisinin ilk bölümünü okumaktasınız. Yazının başlığı sanırım konuyu yeterince özetliyor. “Eğer kendi günlük sistemimi/betiğimi (script) yazmak isteseydim nereden başlar, hangi aşamaları takip ederdim?” gibi soruları cevaplamaya çalışacağım. Böyle bir makale ile programcı arkadaşlara ticari veya kişisel bir içerik yönetim sistemi (İYS) yazılırken nasıl bir yol izlenmesi gerektiği konusunda fikir vermeyi planlıyorum. Umarım faydası dokunur.
Öncelikle günlüğümüze bir isim seçmeliyiz. Böylece klasör isminden tutun da veritabanı tablolarını oluşturmaya kadar bu isim çerçevesinde hareket edebiliriz. Burada oluşturduğumuzu varsaydığımız günlüğe YGünlük ismini verdim.
Bir projeye başlamadan önce projenin kapsamı mutlaka belirlenmelidir. Böylece gelişim aşamasında yoldan şaşmalar olmaz ve hep amaca yönelik çalışırsınız. Aksi takdirde bir anda kendinizi gereksiz detaylara boğulmuş bir şekilde bulabilirsiniz. YGünlük’ü ilk aşamada oldukça basit yeteneklerle sınırlayalım. Ne de olsa amacımız gidilecek yolu belirlemek. Önce ana yapıyı tamamlarsak ardından dilediğimiz gibi geliştirebilir, yeni özellikler katabiliriz.
Bu söylediklerim kapsamında düşünürsek YGünlük belirli bir tasarıma sahip olsun ve tema desteği bulunmasın diyorum. Hatta bununla birlikte eklenti olayını da düşünmeyelim (şimdilik). Bir de en önemli kısıtlamalardan birisi olarak üyelik sistemi bulundurmayalım. Sadece bir yönetici olsun ve herkes yorum yapabilsin. Oldukça basite indirgediğimiz YGünlük’ün özelliklerini bir liste haline getirisek;
İlk bakışta size oldukça sade ve gereksiz gibi gelebilir ama konuya sıfırdan başlamak lazım. Temelini anlarsanız dilediğiniz gibi bir içerik yönetim sistemi yazabilirsiniz.
Önce günlüğümüzün dizin yapısını oluşturacak ve ardından içini dosyalarımızla doldurmaya başlayacağız. Dizini şu şekilde düşünelim;
Ana klasör
ygunluk : Bütün sistemimizi içeren klasör.
Alt klasörler
panel: Yönetim panelimizin bulunacağı klasör.
bilesenler: Günlüğümüzü oluştururken kullanacağımız betik kütüphane ve fonksiyon dosyalarının bulunacağı klasör.
ekdosyalar: Yazılarımız içinde okuyucularımızla paylaşmak istediğimiz dosyaları yükleyeceğimiz klasör.
ekresimler: Yazılarımız içinde okuyucularımızla paylaşmak istediğimiz resimleri yükleyeceğimiz klasör.
resimler: Sistemin tasarımı için gerekli resimlerin yükleneceği klasör.

Sistemimizi oluştururken bazı temel fonksiyon dosyalarımız olacaktır. Bununla birlikte programcılar tarafından kabul görmüş, işlerimizi hızlandıracak, sistemimizi güçlendirecek bir takım hazır kütüphanelerden/betiklerden faydalanacağız. İşte bu tür dosyaları bilesenler klasöründe tutacağız. Bu klasör sürekli güncellenecektir çünkü proje sırasında yeni fonksiyonlar yazdığımızda yine bilesenler klasörüne koyacağız. Bilesenler klasörü için ilk aklıma gelenler dosyalar şöyle;
Bileşenlerimizi toparladığımızda bilesenler klasörümüzün şu şekli aldığını görebiliriz.

Not: Sizin de eklemek istediğiniz ve tavsiye edebileceğiniz bileşenler varsa lütfen yorumunuzda belirtiniz. Önermiş olduğunuz fonksiyonların isimlerini makaleye ve dosyaları en sonda paylaşmış olduğum dosyalar ekleyeceğim. Yukarıdaki resmi malesef hemen değiştirmeyeceğim çünkü malum zahmetli bir olay.
Sizi uzun yazılarla sıkmak istemiyorum. Bu nedenle Kendi Günlüğünü Kendin Yaz yazı serisinin ilk bölümünü burada sonlandıralım ve şuana kadar yaptıklarımızı özetleyelim.
Her programcının kendine göre bir ilerleme yöntemi vardır. Benimki yukardaki şablonu oturttuktan sonra yönetim panelinden devam etmektir. Bu nedenle bir sonraki yazıda yönetim panelini oluşturmayı anlatacağım.
Yazıda oluşturmuş olduğum ygunluk dizinini buradan indirebilirsiniz.
Gelecek yazıda görüşmek üzere…
Not: Bu yazıma vereceğiniz yorumlar çok önemli. Gözümden kaçan hususlar olabilir. Ayrıca yeni fikirlerle YGünlük‘ü daha sağlam hale getirebiliriz. Eğer bir güncelleme yaparsam yazının en üstünde bunu duyururum.
Not 2: Sistemi yazmak için gerekli programları konusunda buradaki yazıma bakabilirsiniz.
Genç yaşlarda programlama ile tanıştı ve Delphi ile başladığı programlama macerasına şuanda PHP, SQL, Javascript, AJAX, CSS, XHTML teknolojileri ile devam etmektedir. Elektrik - Elektronik bölümü mezunu olan "yakuter" 2006 yılından itibaren yakuter.com'un yazarlığını yapmaya başlamıştır.
Web Öğrencisi
08 Temmuz 2008
Çok güzel bir yazı dizisi olucak gibi gözüküyor. Takip etmem de fayda var birşeyler öğrenmek istiyorum. :)
fikirbozan
08 Temmuz 2008
Öncelikle çalışmaların ve verdiğin emekler için Türk Blogküresi adına canı gönülden teşekkür ediyorum. Dediklerini harfiyen yaptım bir sonraki yazıyı dört gözle bekliyorum. Sağlıcakla kal :)
basitblog
08 Temmuz 2008
Ben de yaklaşık 1 ay önce basitblog diye adlandırdığım bir blog sistemi yazmayı düşünmüştüm. Basit adını vermiştim çünkü bu blogda sadece metin olacaktı. Yani logo dahi olsa görünürde bir resim olmayacaktı.
Resimler için ilginç bir yol düşünmüştüm. Belli kelimeleri marker ile renklendirip bu kelime üstüne gelince hover image çıkacaktı.
Tema işi de çok kapsamlı olacağı için onu da atlamıştım. Tema yerine bütün yazıları div olarak etiketlere bölüp daha sonra kullanıcının yönetici panelinden bu divlerin sadece renklerini değiştirebileceği ve böylece bir tür görsel estetik yakalayabileceği bir sistem tasarladım.
Bir de sitemap olayını eklenti olarak değil de sistem içine entegre etmeyi düşündüm. Ayrıca sitemap’ı oluşturduktan sonra belli başlı arama motorlarını da ping edecekti.
Ayrıca bir de feed scripti yazmak gerekiyor.
Bunun dışında SEO açısından uyumlu olması için de her sayfanın meta etiketlerini düzgün olarak otomatik kuracak bir betikte oluşturulmalı.
Yorumlarda spam mesajları önlemek için captcha yerine bir tür metin tabanlı algoritma geliştirip güvenlik kodu olarak kullanıcıya bunu yazdırmayı düşünmüştüm…
Herneyse bu projeyi tamamlayamadım çünkü önceliklerim değişmek zorunda kaldı. Ama madem burada böyle bir yazı dizisi başlattın yakuter ben de deneyimlerimi yazayım, katkım bulunsun dedim…
Sayfa tasarım örneğini de aşağıda bulabilirsiniz:
http://www.vladtepes.info/sayfa_acilim.htm
PHP span’ı üstüne gelince resim çıkıyor…
Muhittin
09 Temmuz 2008
Belki kendi günlüğümü kendim yazmayacağım ama bu yazı dizisinden proje geliştirirken uygulanacak birçok şeyi öğreneceğim kesin..
Sıradaki yazıları merakla bekliyorum..
SNaRe
09 Temmuz 2008
Hayırlı olsun ustadım. Uzun zamandır buna benzer bir düşüncen vardı zaten. Son zamanlarda bu tarz sistemler yazdığımdan karşılaştığım şeyleri yazayım.
Öncelikle güvenlik fonksiyon sayfası oluşturulmalı. Çok önemli çünkü. Yapılan o kadar emek boşa gitmemesi için.
Diğer bir olay wordpress gibi otomatik olarak seoya uygun bir sistem olması için(mod rewrite) sqle başlığı yazdıran sistem gerekir. Bu dediğim biraz diger fonksiyonlar bölümüne girsede sen biyerlere not al.
Tema içinde smarty vb. bir sistem kullanırsan hem düzenlemesi rahat, hemde güzel bir örnek olur gibi geliyor ?
son olarakta
tinmyce yerine wysiwyg dahamı iyi olurdu sanki?
Çok konuştum :D Sen kafana göre takıl :D
yakuter
09 Temmuz 2008
@basitblog, çok teşekkür ederim değerli yorumların için. Buradaki yazı dizisinde yazdığım her kodu anlatmayacağım. Sadece bunu da yaptım deyip dosyaları paylaşıma sunacağım. Yoksa makale hiç çekilmez :)
Resimler konusunda gerçekten farklı bir yaklaşımın olmuş. Güzel de olmuş ama ben tasarım dahil sitenin resimli olmasından yanayım.
Tema konusunda şöyle yapacağım. Hazır fonksiyonlar olacak. Mesela kategoriler();, linkler(); gibi ve tasarımda bu fonksiyonları yazmak yeterli olacak. Dediğin gibi öyle gelişmiş bir tema sistemi düşünmüyorum.
SEO, feed, sitemap’i not düştüm. Bunlar başlı başına bir makale konusu zaten.
Yorumlarda spam konusuna değinmen iyi olmuş. Bu anlatmayı düşünmemiştim. Yorum kısmında buna da değineyim.
@Muhittin, teşekkür ederim yorumun için. Dediğin gibi benim amacım da aslında içerik yönetim sistemi yazmayı öğretmek. Yorumun bir çok arkadaşa fikir verecek türden
@SNaRe, saol kardeşim yorumun için. Smarty basit ama ben zaten tasarım üstünde çok durmayacağım için anlatmayı düşünmüyorum. Bu yorumun üst tarafında fonksiyonlardan bahsettim. O fonksiyonları yazayım da isteyen istediği tasarıma oturtsun değil mi? ;)
Güvenlik fonksiyonları dediğin gibi çok önemli ve makaleye ekledim.
Buradaki amacım günlüğü yazmaktan çok nasıl yazıldığını göstermek olduğu için hangi yazı editörü çelişkisine girmeden TinyMCE ile devam edeceğim ama sağol yinede önerin için.
SEO konusunu not ettim.
o-d
09 Temmuz 2008
özellikle programlamaya yeni başlayan arkadaşların proje geliştirme basamaklarını görmesi açısından iyi bir proje olacak kanımca. Gelecek yazıları dört gözle bekliyorum.
ATiB3RK
09 Temmuz 2008
Öncelikle bu düşüncen için seni kutlarım Yakuter…Eminim birçok yeni başlayan arkadaşımız merakla diğer yazıları bekliyeceklerdir… =)
NeTHaLiL
09 Temmuz 2008
Ben daha ne diyeyim ya! Nedense ne zaman aklıma birşey gelse acaba Erhan bey yazmışmıdır diye baksam yazıyor.Kalbimi okuyor ne? Sizden çok şey öğrendik bu siteyle çok şeye başladım yine devam ediyorum ve edecem de.Yazının devamını da bekliyorum,henüz uygulama fırsatım olmadı yarın sabah bakıcam artık.Teşekkürler tekrar..
eburhan
09 Temmuz 2008
Merhaba Erhan.
Güvenlik adına bir önerim olacak. Kullanıcı girdilerini kontrol etmek için ve XSS gibi açıklara kolayca yakalanmamak için HTML Purifier kullanabilirsin.
Bir de spam yorumları azaltmak için PHP5 Akismet tercih edebilirsin ;)
Kolay gelsin.
zlm
09 Temmuz 2008
hadi yakuter aslansın. kır şu wordpress zulmünü. :)
Enes
11 Temmuz 2008
Devamını Merakla beklediğim Yazı dizisi…
Lütfen bir an önce devam edelim :)
Ellerinize Sağlık & Kolay Gelsin
Enes…
Erdem Çorapçıoğlu
14 Temmuz 2008
Sanırım en kısa sürede yarım bıraktığım İYS’mi bitirmek için çalışmalara başlamam gerekiyor …
Bu tip bir yazı serisi ile de çalışmalarını paylaşıyor olacağım.
Güzel çalışma eline sağlık :)
Berat
14 Temmuz 2008
eline sağlık yakuter güzel bi anlatım olmuş. Bundan sonraki yazının konusu veri tabanı ilişkileri üzerine olacakdır büyük ihtimal :)
hazır scriptleri bizim yazıp, desteklememiz gerektiğini düşünüyorum.. hazır scriptler kimi zaman bizi tembelleştiriyor..
Ali Rıza Babaoğlan
14 Temmuz 2008
Eline sağlık. Hep birlikte bir girişim topluluğu oluşturup toplu bir geliştirme yapılabilir Sourceforge üzerinde :)
Sırrı
28 Temmuz 2008
Yakuter bu güzel yazının devamını bekliyorum.
Bende kendi günlük sistemimi yazıyorum keşke önceden görseydim ama geç kaldım.Diğer serilerini de merakla okuyacağım.
Furkan
09 Ağustos 2008
Ben kendi günlüğünü kendin yaz uygulamasına karşıyım. Yani wordpress gibi kaliteli bir günlükleme sistemi var iken neden bir daha uğraşayım. Hem sorun çıkaracak. WordPress kadar iyi bir yönetim paneli olmayacak. Yok güvenlik sorunlarıydı. Hiç uğraşılmaz. WordPress bir tanedir..
yakuter
09 Ağustos 2008
@Furkan, merhaba. Düşüncende kesinlikle haklısın yani yazmış olduğumuz günlüğün mutlaka açıkları olacaktır tıpkı WordPress’in ilk yazıldığı zamanlarda olduğu gibi. Bununla birlikte gelişim süreci hiçbir zaman bitmez tıpkı WordPress’i hala geliştirdikleri gibi.
Demek istediğim bir yerden başlamak lazım. Ben temellerini öğretmeye çalışıyorum. Bakarsın bir arkadaşımız çıkar ve çok güzel bir iskelet inşâ eder ve tüm Türk programcılar bu günlük sistemini geliştirmeye başlar. Sonunda yerli bir günlük sistemimiz olur. Açıkları ortaya çıkar, kapatır ve yeni sürüm olarak yayınlarız. Hepimizin çok beğendiği WordPress de farklı aşamalardan geçmedi…
Söylediklerinin arasında tek bir yere katılmıyorum, o da şu cümlen; “Hiç uğraşılmaz.” Aksine uğraşmaya değer buluyorum. Bu nedenle de bu işi öğrenmek isteyenlere bildiklerimi anlatmaya devam edeceğim. Bir kişi bile faydalansa yeter bana.
M.Can Kaymaz » Planlı Dosyalama - 1
04 Ekim 2008
[...] konuyla ilgili Erhan Yakut‘un Kendi Günlüğünü Kendin Yaz – 1 yazısını okumanızı [...]
Orkun
09 Mart 2009
sanırım bu konuu yazan arkadaş yakuter ellerine kollarına sağlık bu hazır içerik yönetimlerini çözemiyoru mkendim yapıcam sayende inş. sabırsızlıkla 2. dersinizi bekliyorum kolay gelsin kolyulduğunda hbar verirseniz sevnirm
Kadir DABAN
03 Ağustos 2010
Merhaba Oldukça zaman geçmiş ancak oldukça başarılı bi atılım olmuş canı gönülden tebrik ederim…..
Bu şekilde yazı dizisi bulmak gerçekten çok zor gibi birşey , yeni başlayan arkadaşların Algoritma geliştirmesinde oldukça etkili olacağına inanıyorum..
Sizin gibi alanında oldukça profesyonel birinin yazılarını takip etmek anlamaya çalışmak ayrı bir zewk :)
Başarılarınızın devamını diler, Makalelerinizin hiç son bulmamasını temenni ederim….
Kadir DABAN
03 Ağustos 2010
Merhaba Oldukça zaman geçmiş ancak oldukça başarılı bi atılım olmuş canı gönülden tebrik ederim…..
Yazılan yazılardan ilk siz haberdar olun, yeni yazılar e-postanıza gönderilsin.
menchek
02 Eylül 2010
yakuter.com © 2006-2010 Erhan Yakut. Site tasarım Cenk Akyıldız - (Tema Bilgisi). Hosting sponsoru WebGrup.
Site içerisindeki içerikler izinsiz kopyalanamaz, alıntı yapılamaz.