İçerik Yönetim Sistemi Nelerdir?

PHP ile kodlanmış içerik yönetim sistemleri ya da kısaca PHP CMS’ler, içerik yönetim sistemleri arasında en popüler ve en çok rağbet görenlerdir. Kullanımları kolaydır. Öğrenmek kolaydır, kısa sürede profesyonel bir internet sitesi yapılabilir. PHP içerik yönetim sistemlerinin birçoğu ücretsizdir, hosting masrafları azdır, ve php kodu üzerinde değişiklik yapmak nispeten kolaydır. Hiç programlama ve kodlama bilmeyenler için de tabi ki arayüzler aracılığyıla istenildiği gibi internet sitesi ve blog yapma imkanı tanırlar. Genel anlamda en iyi içerik yönetim sistemi konusundan daha önce bahsetmiştik. Şimdi de PHP ile kodlanmış, birçoğu bilinen, bir kısmı pek de bilinmeyen ama göz atmaya değer CMS’ler, yani içerik yönetim sistemlerini anlatacağız.

İçerik yönetim sistemi, İYS ya da CMS, aracılığıyla hiçbir bilgisayar yazılım ya da kodlama bilgisi olmadan internet sitesi yapabilmek mümkündür, bu kadar popüler ve kullanışlı olma nedenlerinin arka planında bu vardır.
20 Popüler, Açık Kaynak Kodlu, Ücretsiz, PHP ile Yazılmış İçerik Yönetim Sistemi CMS

1. WordPress

WordPress etkili aynı zamanda kullanımı kolay bir içerik yönetim sistemidir. İlk olarak bir bloglama platformu olarak tasarlandı. Ancak, yavaş yavaş popüler oldu ve artık bazı yöntem ve eklentilerle etkili bir CMS’ye uyarlanabilir. WordPress SEO, yani arama motoru optimizasyonu ile ilgili de birçok eklentiye sahiptir. Webmasterlar tarafından en çok tercih edilen blog ve içerik yönetim sistemi platformudur.

2- Drupal

Drupal PHP’de yazılmış ücretsiz ve açık kaynak kodlu modüler framework and İçerik Yönetim Sistemidir(İYS). Küçük kişisel bloglardan büyük kurumsal ve siyasi sitelere kadar birçok çeşit web sitesi içerik yönetim sistemi olarak kullanılır.

3. Joomla

Joomla, web sitesi oluşturma ve güçlü online uygulamalar geliştirmenize olanak sağlayan, eski ve köklü İçerik Yönetim Sistemidir(CMS). Kullanım kolaylığı ve genişletilebilirliği dahil pek çok özelliği Joomla’yı en popüler Web sitesi yazılımı haline getirmiştir. Bunların da ötesinde, Joomla herkesin ücretsiz bir şekilde kullanabileceği açık kaynak kodlu bir çözümdür.

4. Frog CMS

Frog CMS, sunduğu dosya yönetimi için gerekli araçların yanı sıra hoş bir kullanıcı ara yüzü, her sayfa için esnek şablonlama, basit kullanıcı yönetimi ve izinleri ile içerik yönetimini basitleştirir.

5. SilverStripe

SilverStripe, Sapphire framework ile yapılmış bir PHP CMS’dir ve MVC tasarım modelini kullanır. Resmi sitesinden SilverStripe ile hazırlanmış sitelerin örneklerini görebilirsiniz.

6. Mambo

Mambo, basit web sitelerinden karmaşık kurumsal uygulamalara kadar her şeyde kullanılabilen çok özellikli, ödül kazanmış bir içerik yönetim sistemidir. Mambo ile hazırlanmış bazı sitelerin Joomla’ya geçmesine rağmen, Mambo’yu hala büyük bir İYS olarak değerlendirmek gerektir.

7. TYPOlight

TYPOlight bir PHP 5 CMS’dir ve canlı güncelleme, Ajax ve Web 2.0 teknolojilerinin kullanımı gibi çok sayıda özelliğe sahiptir.

8. Concrete5

Concrete5 basit bir yönetici arayüzüne sahip açık kaynak kodlu bir içerik yönetim sistemidir. Yönetici olarak giriş yaptıktan sonra düzenleme araç çubuğunu kullanarak web sayfasını düzenleyebilirsiniz.

9. Textpattern

Textpattern de başka bir popüler içerik yönetim sistemidir. Çalışması için en az PHP 4 gerekir ve çeşitli özelleştirmeler için kullanabileceğiniz birçok eklentiye sahiptir.

10. Symphony

Symphony şablonlama dili olarak XML/XSLT’yi kullanan bir İYS’dir. Symphony web sitelerinin URL yapısından yayımladıklarınızın bulunduğu ortama kadar sevdiğiniz her şeyi kişileştirmenizi sağlar. Programlamacı olmayan biri için bu CMS’yi öğrenmek karmaşık olabilir.

11. MODx

MODx hem PHP uygulama frameworkü hem de içerik yönetim sistemidir. MODx, Web 2.0 Ajax teknolojisini tamamen destekleyen bir API sunan ilk PHP içerik yönetim sistemidir.

12. Habari Project

Habari çok tavsiye edilen açık kaynak kodlu bir bloglama platformudur. Özellikle modern web barındırma çevreleri için yazılmaktadır ve modern nesne odaklı programlama tekniklerini kullanmaktadır.

13. CMS Made Simple

CMS Made Simple oldukça fazla özelleştirilebilir ve indirebileceğiniz çok sayıda Modüller bulunmaktadır. Belgelendirme eksiksiz olup takip etmesi kolaydır. Adı da üstünde olduğu gibi öğrenilmesi ve kullanılması oldukça kolaydır.

14. ImpressCMS

ImpressCMS topluluk tarafından geliştirilmiş bir İçerik Yönetim Sistemidir. Oldukça ölçeklenebilir ve online toplulukları yönetmek için çok faydalıdır.

15. Exponent CMS

Exponent web sitelerinin sayfalarının görüntülendiği şekliyle sayfa üzerinde düzenlenmesini sağlayan sezgisel ve esnek bir içerik düzenleme sistemdir. Resmi sitesinden modüller ve temalar da indirebilirsiniz!

16. MiaCMS

MiaCMS Mambo CMS’nin bir koludur. Güçlü ve genişletilebilir bir üçüncü taraf uzantı sistemi ve esnek site temalaştırma özellikleri bulunmaktadır. MiaCMS, OpenID’yi desteklemekle birlikte, istikrarlı ve yetkin bir İYS olarak düşünülebilir.

17. Jojo CMS

Jojo CMS arama motoru dostudur. Makalenizce SEO dostu URL varsa Jojo www/www olmayan alanlarla sizin yerinize ilgilenecektir. SEO dostu olmasının yanı sıra, Jojo ayrıca ürün veritabanları, bloglar, resim galerileri ya da hoşunuza giden ne varsa ekleyerek işlevselliğini de artırır.

18. TYPO3

TYPO3 Web’de ve dahili ağlarda şirket amaçları için geliştirilmiş Açık Kaynak Kodlu bir içerik yönetim sistemdir. Hazır-yapılmış arayüzler, fonksiyonlar ve modüllerin tamamını bünyesinde barındırırken, tam esneklik ve genişletilebilirlik sağlamaktadır.

19. Elxis CMS

Elxis CMS Arama Motoru Dostu URL, güçlü güvenlik, ayarlanabilir üye listesi ve tam kullanıcı profilleri gibi birçok özelliğe sahiptir. Otomatikleştirilmiş görevleri, modern tasarımı, AJAX teknolojisi ve çok dilli arayüzü daha üretken olmanıza yardımcı olur.

20. Chyrp

Chyrp hafif bir bloglama platformudur ve bloglama motoru olarak Twig’i kullanmaktadır. Tutorialları ve kullanıcı kılavuzları eksiksizdir ve ana sayfasından birçok yararlı modül indirebilirsiniz.

Tasarım Şablonu Nedir?

Yazılım esnasında tekrar eden sorunları çözmek için kullanılan ve tekrar kullanilabilir tipte kod yazılımını destekleyen bir ya da birden fazla sınıftan oluşmuş modül ve program parçalarına Tasarım Şablonu denir. Tasarım şablonları, programcılar tarafından edindikleri tecrübeler doğrultusunda oluşmuş kalıplardır. Bu kalıplar sorunu tanımlıyarak, çözümü için gerekli atılması gereken adımlari ihtiva ederler. Kullanıcı kalıbı, tanımlanmış sorunu çözmek için tekrar tekeri icat etmek zorunda kalmadan kullanabilir.

Tasarım şablonları aşağıda yeralan ortak özelliklere sahiptir:

Edinilen tecrübeler sonunda ortaya çıkmışlardır.
Tekerin tekrar icat edilmesini önlerler.
Tekrar kullanılabilir kalıplardır.
Ortak kullanılarak daha büyük problemlerin çözülmesine katkı sağlarlar.
Devamlı geliştirilerek, genel bir çözüm olmaları için çaba sarfedilir.

Program bakımı ve geliştirilmesi için ilk yazılım sürecinden daha çok enerji sarfedilir. Bu yüzden yazılım esnasında esnek bir yapının ve mimarinin oluşturulmasına dikkat edilmesi gerekmektedir. Esnek mimariler için değişik türde tasarım şablonları kullanılabilir. En basit ve uygulaması kolay bir tasarım şablonunun kullanılması, hiçbir tasarım şablonunun kullanılmamasından daha iyidir. İyi bir yazılım mühendisi olabilmek için tasarım şablonları ve kullanım alanları hakkında ihtisas yapmış olmak gerekmektedir.

Tasarım Şablonu Neden Kullanılır?

Her tasarım şablonunun belirli bir ismi vardır ve bu isim kullanıldığı zaman hangi tasarım şablonundan bahsedildiği hemen anlaşılır. Bu sebepten dolayı yazılım ekibinin kullanacağı ortak bir kelime hazinesi oluşur. Programcılar takım içinde tasarım şablonlarının isimlerini kullanarak, hangi sorunlar üzerinde çalıştıklarını kolaylıkla anlatabilirler. Bu durum ayrıca takım içinde tasarım şablonlarını tanımayan programcılar için duydukları tasarım şablonlarını öğrenmeye yönlendirecek bir motivasyon kaynağı oluşturur. Tasarım şablonlarının kullanılması konseptüel olarak bir üst seviyede çalışılmasını ve düşünülmesini sağlar. Nesneler seviyesinde sorunları çözmek her zaman kolay olmayabilir, lakin tasarım kalıpları seviyesinde düşünüldüğü zaman, problem çözüm işlemi kolaylaşır.

Tasarım Şablonu Kategorileri

Tasarım şablonları değişik kategorilere ayrılır. Bunlar:

Oluşturucu tasarım şablonları (creational patterns)
Yapısal tasarım şablonları (structual patterns)
Davranışsal tasarım şablonlar (behavioral patterns)

Oluşturucu

Yapısal

Davranışsal

– Abstract Factory (soyut fabrika)

– Builder (inşaatçi)

– Factory Method (fabrika)

– Prototype (prototip)

– Singleton (yanlızlık)

– Adapter

– Bridge (köprü)

– Facade (cephe)

– Decorator (dekotatör)

– Composite (kompozit)

– Flyweight (sinek siklet)

– Proxy (vekil)

– Command (komut)

– Memento (hatıra)

– Strategy (strateji)

– Iterator (tekrarlayıcı)

– State (durum)

– Chain Of Responsibility (sorumluluk zinciri)

– Mediator (aracı)

– Observer (gözlemci)

– Template Method (şablon metot)

– Visitor (ziyaretçi)

Bu tasarım şablonları yanısıra J2EE Patterns olarak bilinen tasarım şablonlarını inceliyecegiz.

J2EE

– MVC

– Data Access Object

– Front Controller

– Business Delegate

– Intercepting Filter

– Service Locator

Abstract Factory (Soyut Fabrika)
Aynı sınıf ailesine ait nesnelerin oluşturulmasında kullanılır. Kullanılan altsınıfları gizliyerek, tranparen olarak kullanılmalarını mümkün kılar.

Builder (İnşaatçi)
Kompleks yapıdakı bir nesneyi değişik parçaları bir araya getirerek oluşturmada kullanılır. Birden fazla adım içeren nesne üretim sürecinde, değişik parçalar birleştirilir ve istenilen tipte nesne oluşturulur.

Factory Method (Fabrika)
Yeni nesneler oluşturmak için kullanılır. Nesnenin hangi somut sınıftan olacağına alt sınıf implementasyonu belirler.

Prototype (Prototip)
Sistem içinde kullanılan bazı nesnelerin oluşturulmaları, büyük ve değişik kaynakların kullandıklarından dolayı zaman alıcı olabilir. Bu gibi nesneleri new operatörü ile yeniden oluşturmak yerine, Prototype tasarım şablonu kullanılarak mevcut bir nesneden klonlanabilir. Bu şekilde oluşan nesne bir prototiptir ve set metodları kullanılarak istenilen özelliklere göre yapılandırılabilir.

Singleton (Yanlızlık)
Bazı şartlar altında bir sınıftan sadece bir nesnenin oluşturulması ve oluşturulan bu nesnenin tüm sistemde kullanılmasi gerekebilir. Singleton tasarım şablonu kullanılarak, bir sınıftan sadece bir nesnenin oluşturulması sağlanabilir.

Adapter
Adapter tasarım şablonu yardımı ile, sistemde mevcut bulunan bir sınıfın sunduğu interface (sınıf metotları) başka bir sınıf tarafından kullanılabilir şekilde değiştirilir (adapte edilir). Bu adapter yardımı ile birbiriyle beraber çalışamıyacak durumda olan sınıflar, birlikte çalışabilir hale getirilir.

Bridge (Köprü)
Bridge tasarım şablonu, modelleme esnasında oluşan soyut oluşumlar ve bunların implementasyonunu ayırmak için kullanılır. Bu yöntem sayesinde sınıf hiyerarşileri daha esnek bir hale getirilebilir, çünkü üst sınıflar bünyelerinde barındırdıkaları soyut metodları bir interface sınıfına taşıyarak, alt sınıfların istedikleri bir implementasyonu kullanmalarına izin verirler.

Facade (Cephe)
Bir komponentin sunmuş olduğu hizmetten yararlanabilmek için, komponentin dış dünya için tanımlamış olduğu giriş/çıkış noktaları (input/output interface) kullanılır. Komponent sadece bu giriş/çıkış noktaları üzerinden dış dünya ile iletişim kurar ve iç dünyasını tamamen gizler. Bu komunikasyon noktaları genelde Facade tasarım şablonu kullanılarak programlanır.

Decorator (Dekoratör)
Mevcut bir sınıf hiyerarşisini ya da sınıfın yapısını değiştirmeden, oluşturulan nesnelere yeni özelliklerin eklenmesi işlemini gerçekleştirmek için decorator tasarım şablonu kullanılır.

Composite (Kompozit)
Composite tasarım şablonu, bir sistemin bütünü ve parçaları arasındaki ilişkileri modellemek için kullanılır. Sistemin bütününü oluşturan parçalar, kendi içlerinde alt parçalardan oluşabilir. Composite tasarım şablonu, kullanıcı sınıfın, sistem, sistemin parçaları ve alt parçalar arasında ayrım yapmadan nesneleri kullanmasına izin verir. Bu şekilde sistem yazılımı ve kullanımı daha sadeleştirilmis olur.

Flyweight (Sinek Siklet)
Flyweight tasarım şablonunu kullanılarak, kullanılan nesne adedi aşağıya çekilebilir.

Proxy (Vekil)
Bir nesnenin kullanımını kontrol etmek için Proxy tasarım şablonu ile, korunması gereken nesneye vekilen bir nesne oluşturulur.

Command (Komut)
Bir nesne üzerinde bir işleminin nasıl yapıldığını bilmediğimiz ya da kullanılmak istenen nesneyi tanımadığımız durumlarda, command tasarım şablonu ile yapılmak istenen işlemi bir nesneye dönüştürerek, alıcı nesne tarafından işlemin yerine getirilmesi sağliyabiliriz.

Memento (Hatıra)
Bir nesneyi, daha önce sahip olduğu bir duruma tekrar dönüştürebilmek için Memento tasarım şablonu kullanılır.

Strategy (Strateji)
Bir işlemi yerine getirmek için birden fazla yöntem (algoritma) mevcut olabilir. Yerine göre bir yöntem seçip, uygulamak için Strategy tasarım şablonu kullanılır. Her yöntem (algoritma) bir sınıf içinde implemente edilir.

Iterator (Tekrarlayıcı)
Iterator tasarım şablonu ile bir listede yeralan nesnelere sırayla, listenin yapısını ve çalışma tarzını bilmek zorunluluğu olmadan erişilir ve bu nesneler üzerinde işlem yapalır.

State (Durum)
State tasarım şablonu kullanarak, bir nesnenin davranışı, sahip olduğu değerler değiştiği zaman değiştirilebilir. Bu durumda sanki nesne sahip olduğu sınıfı değiştirmiş gibi olacaktır.

Chain Of Responsibility (Sorumluluk Zinciri)
Chain of responsibility sorumluluk zinciri anlamına gelmektedir. Sisteme gönderilen bir istediğin (komut) hangi nesne tarafından cevaplanması gerektiğini bilmediğimiz durumlarda ya da isteği yapan nesne ve servis sağlayan nesne arasında sıkı bir bağ oluşmasını engellememiz gerektiğinde Chain of Responsibility tasarım şablonu kullanılır. Bu tasarım şablonunda servis sağlayan ilgili tüm nesneler bir kolye üzerindeki boncuklar gibi birbirleriyle ilişkili hale getirilir. Bir nesne zincirdeki kendinden sonraki nesneyi tanır ve isteği kendi cevaplayamadığı durumda, kendinden sonraki nesneye iletir. Bu işlem, zincirde bulunan doğru servis saglayıcı nesneyi bulana kadar devam eder.

Mediator (Aracı)
Mediator tasarım şablonunu nesnelerin yönetimi ve aralarındaki komunikasyonun merkezi bir noktadan koordinasyonu için kullanılır. Bu nesneler arasındaki bağı azaltır ve sadece bir sınıfı komunikasyonu koordine etmekle sorumlu kılar.

Observer (Gözlemci)
Sistem bünyesinde, bir nesnede meydana gelen değişikliklerden haberdar olmak isteyen diğer nesneler olabilir. Bu durumda haberdar olmak isteyen nesneler abone olarak, abone oldukları nesnede meydana gelen değişikliklerden haberdar edilirler. Abone olan nesne aboneliğini iptal ederek, abone olduğu nesne ile arasındakı ilişkiyi sonlandırabilir.

Template Method (Şablon Metot)
Template method ile bir algoritma için gerekli işlemler soyut olarak tanımlanır. Alt sınıflar algoritma için gerekli bir yada birden fazla işlemi kendi bünyelerinde implemente ederek, kullanılan algoritmanın kendi istekleri doğrultusunda çalışmasını sağlıyabilirler.

Visitor (Ziyaretçi)
Visitor tasarım şablonu, bir sınıf hiyerarşisinde yeralan sınıflar üzerinde değişiklik yapmadan, bu sınıflara yeni metodların eklenmesini kolaylaştırır. İstenilen metod bir visitor sınıfında implemente edilir.

MVC
MVC (Model – View – Controller) kullanılarak değişik görevleri olan katmanlar oluşturmak mümkündür. MVC tasarım şablonu özellikle web frameworklerinde (Struts, Spring MVC..) sıkça kullanılan bir tasarım şablonudur.

DAO
Data access objects (DAO) tasarım şablonu ile, kullanılan veritabanına erişim ve veri depolama-edinme işlemi daha soyutlaştırılarak, diğer katmanların veritabanına olan bağımlılıkları azaltılır. DAO ile diğer katmanlar etkilenmeden veritabanı ve bilgibankası değiştirilebilir.

Front Controller
Front Controller tasarım şablonu ile sisteme yöneltilen tüm istekler (request) merkezi bir yerde toplanarak işlem görürler.

Business Delegate
Business Delegate tasarım şablonu ile, kompleks yapıda olabilecek işletme (business) katmanı ile gösterim (presentation) katmanı arasına, gösterim katmanı isteklerini işletme katmanına delege edecek BusinessDelegate isminde bir sınıf yerleştirilir. Bu sınıfın öncelikli görevi, işletme katmanında yeralan EJB komponentlerini lokalizasyonu için gerekli lookup işlemlerini gösterim katmanı için transparan hale getirmektir.

Intercepting Filter
Intercepting Filter tasarım şablonu ile, kullanıcının isteği işleme alınmadan önce filtreler kullanılarak süzgecten geçirilir.

Service Locator
Service Locator, işletme katmanında bulunan komponentlerin lokalizasyonu için kullanılır.