Drupal'i kurup kurcalamaya başlamadan önce, Drupal'in çalışma mantığını anlamak faydalı olacaktır. Böylece Drupal'in ihtiyaçlarınıza uyup uymayacağına daha çabuk karar verebilirsiniz.
Her ne kadar drupaldersleri.org'da dahil olmak üzere birçok kaynakta Drupal'den bir içerik yönetim sistemi (İYS, ing: content management system, CMS) olarak bahsediliyor olsa da aslında bu kavram Drupal'i eksik olarak tanımlamakta. Drupal, sunduğu özelleştirebilirlik ve diğer ayarları sayesinde aslında bir içerik yönetim çatısı'dır (İYÇ, ing:content management framework, CMF). Bu iki kavram arasındaki farkı basitçe şöyle açıklayabiliriz. Diyelim ki bir çivi çakmak istiyorsunuz. Bu durumda hazır bir çekiç (iys) kullanabileceğiniz gibi eğer gerekli beceriniz varsa odun ve metali (php ve mysql) kullanarak kendi çekicinizi yapabilirsiniz. Elbetteki kendi yaptığınız çekiç ihtiyaçlarınıza çok daha uygun olacaktır. Fakat herkes bu gerekli beceriye sahip olmayabilir. Drupal, bu iki uç örneğin arasındaki bir noktayı amaçlamaktadır ve size hazır setler (CMF) sunmaktadır. Yani daha önceden hazırlanmış olan parçaları kullanarak istediğiniz o mükemmel çekici kendiniz oluşturabileceğiniz gibi, daha sonradan ihtiyacınız olacak başka bir aleti de yine aynı parçalarla yapmanız mümkün olacak. Kısacası bir içerik yönetim çatısı olarak Drupal, kullanıcılara geniş bir hareket alanı sunarken aynı zamanda programlamacılık bilgisi olmayan kullanıcıların da kaliteli siteler üretebileceği bir yapıya sahip.
Bundan bir süre öncesine dönelim. Fotoğraf makineleriyle sadece fotoğraf çekilen, vidyo çekmek için kamera almanız gereken, telefon dendiğinde ise evdeki kocaman sabit telefonların aklınıza geldiği o dönemlere. O dönemde yaşayan birisi için bunların hepsinin tek bir alette biraraya gelmesi bir hayaldi ancak. Ancak günümüzde tüm bu özellikleri her geçen gün daha da küçülen cep telefonlarımızda bir arada bulabiliyoruz. Benzer şekilde, konu içerik sunmak olduğunda piyasada blog, galeri, resim paylaşımı, oylama, arama, dizin oluşturma gibi farklı işlevleri ayrı ayrı sunan betikler bulmak mümkün. Ancak, Drupal tüm bu özellikleri biraraya getirebileceğiniz bir set sunuyor sizlere.
Elbette Drupal bu konuda yalnız değil. Ancak, çoğu içerik yönetim sistemi, kullanıcılarına kendi şekillendirebilecekleri fonksiyonlar sunmak yerine hazır fakat özelleştirilmesi pek de mümkün olmayan fonksiyonlar sunmayı tercih ediyor. Örneğin içerik sınıflandırılmasını ele alalım. Bazı sistemler bir içeriğin sadece bir kategoriye ait olabileceği varsayımını yapmakta. Halbuki site gereksinimlerine göre kompleks hiyerarşik yapılar kullanılması gerekebiliyor. Bu gibi durumlarda sorunu yeni bir eklenti kullanarak aşmanız mümkün olsa da eğer sistemin altyapısı bu esnekliği planlayarak inşa edilmediyse farklı sorunlar ve uyumsuzluklarla karşılaşmanız olası. Drupal'in esnek yapısı sayesinde bu tür sorunlarla çok daha az karşılaşıyorsunuz. Örneğin Drupal'in içerik sınıflandırma eklentisi olan Taksonomi, alt ve üst kategoriler içeren hiyerarşik yapılara, bir içeriğin birden fazla kategoriye dahil edilebilmesine ve serbest etiketlemeye izin veren oldukça esnek bir yapıya sahip. Benzer esnek uygulamaları, Drupal'in çekirdeğindeki diğer fonksiyonlarda da görebilmek mümkün. Hatta bazen öyle yaratıcı Drupal uygulamalarıyla karşılaşıyorsunuz ki, fonksiyonları yazılış amaçlarının dışında çok daha farklı sonuçlar almak için kullanmış olabiliyorlar. Böyle durumlarda Drupal'in esnekliğine birkez daha hayran oluyorsunuz.
Herşeyin olduğu gibi esnekliğin de bir maliyeti olması kaçınılmaz. Çekiç örneğine dönecek olursak, hazır çekici aldığınızda kullanmasını zaten bildiğinizden zaman kaybetmeden işinize koyulabilirsiniz. Fakat bir çekiç seti aldıysanız parçaları incelemeniz ve belki de kullanım kılavuzuna göz atmanız gerekecektir. Burada şunu vurgulamak gerekiyor: seti kullanmak için odun ve metal işlemeyi (php ve mysql) bilmenize gerek yok, sadece bu parçaları nasıl birleştireceğinizi (genel drupal kavramlarını ve çalışma mantığını) bilmelisiniz. Sonuçta belki zamanınızın bir bölümünü Drupal'in kavramlarını ve çalışma mantığını öğrenmeye ayırmanız gerekecek ama bir kez bu engeli aştığınızda Drupal size ancak özel kod yazmayla elde edilebileceğini düşündüğünüz birçok işlevi kolayca sunacak. Bir de "kodlama konusunda sıkıntım yok" diyorsanız, yapabilecekleriniz ancak yaratıcılığınızla sınırlı.
Drupal, şimdiye kadar sıkça bahsettiğimiz esnekliğini, içerik ve işlevleri soyut bir şekilde ele almasına borçlu. Genelde insanlar web sitelerini blog, haber, makale, galeri gibi ayrı fonksiyonlar içeren hiyerarşik sayfa kolleksiyonları olarak görüyorlar. Drupal'in bu konuya yaklaşımı ise daha farklı. Drupal bu içerik türlerini aynı temel kavramın (ing: node, tr: düğüm) varyasyonları olarak ele alıyor. Bir başka deyişle, statik sayfalar, blog yazıları, haberler, makaleler, forum konuları, yemek tarifleri, facebook tarzı üye toplulukları, fotoğraflar, vidyolar ve hatta bazı radikal eklentiler kullanıldığında yorum ve üyelerin kendileri de dahil olmak üzere tüm içerik türlerini tek bir havuzda topluyor. Bunların kullanıcıya ayrı olarak sunumu ise başka bir katmanda gerçekleştiriliyor. Aslında bu bir bakıma standartlara uyumlu sayfa kodlama uygulamalarındaki xhtml ve css ayrımına benziyor; düğümler içeriğe ait başlık, içerik, yazar, tarih gibi yapısal bilgileri tutarken, menü sistemi bunların ayrıştırılmasını, temalar ve Views, panels gibi eklentiler de düğüm içeriklerinin kullanıcılara sunumunu sağlıyorlar. İşlemlerin bu şekilde katmanlara ayrılması sayesinde saklanan veriler, erişim ve sunum açısından birbirinden farklı özelliklere sahip içerik türleri yaratmak oldukça basit bir hal alıyor.
Az önceki tanımlamalarımızda bir düğüm (ing: node) kavramından bahsettik. Peki bir düğüm tam olarak nedir? Drupal ile yeni tanışanların genellikle kafasını karıştıran bu kavramı şöyle açıklayabiliriz: düğümler temel veri kümeleridir. Örneğin bir haber içeriği oluşturduğunuzda aslında yapmış olduğunuz işlem başlık, içerik, yazar, tarih, kategori gibi bilgilerin bir kolleksiyonunu yani bir veri kümesini kaydetmektir. Drupal'de biz bu kümeye düğüm diyoruz.
Drupal farklı içerik türlerini ayrı ayrı sistemler olarak ele almak yerine düğümleri tek bir havuzda toplayarak aslında hepsinin ortak bir temele sahip olmasını sağlıyor. Bu ortak temel sayesinde tüm düğümler aynı şekilde işlenebiliyor; içerik yönetim, arama, ilişkilendirme fonksiyonları tüm içerik türleri için kullanılabiliyor. Bu durum pratikte şu anlama geliyor: bir oylama eklentisi kurduğunuzda sitenizdeki tüm içerik türlerinizi oylamaya açabilir, aynı arama fonksiyonuyla tüm içeriğinizi aratabilir, her içerik türünüzü yorumlamaya açabilir, Views, CCK, Taksonomi, Pathauto gibi en önemli eklentileri tüm içerik türlerinizle birlikte kullanabilirsiniz.
Bir kişinin içerik girerek yayın yaptığı birden çoka (ing: one to many) tarzı bir uygulamayı birçok İYS sistemi kurulduğu anda sunmaktadır. Fakat çoktan çoka (ing: many to many) bir iletişim modeli içeren bir uygulama söz konusu olduğunda (ör: çok kullanıcılı blog) Drupal bir adım öne çıkmaktadır. Değişik İYS sistemleri bu özelliği sonradan yamayarak ve uğraştırarak elde etmenizi sağlarken, bu konu Drupal'in üzerine inşaa edildiği ana fikirlerden biridir.
Çeşitli sistemlerde bir blog oluşturup üyelerinizin blog yazılarınıza yorum yapabilmesini sağlayabiliyorsunuz. Peki ya her üyenize kendi bloglarını yazma imkanı tanımak isterseniz? Hatta her biri kendi blog temasını belirleyebilse? Üstelik üyelerin özel profil sayfaları olsa? Üstüne bir de forum ve wiki-benzeri bir ortam eklemek isterseniz? Hatta bir de kullanıcıların kendi fotoğraf galerileri olsun istiyorsanız?
Drupal'de çoklu kullanıcı uygulaması en temel seviyeden itibaren ele alınarak uygulandığı için, bu sayılan özellikleri içeren çoktan çoka tarzı bir site oluşturmak, birden çoka tarzı uygulamalardan pek de farklı değildir. Ortak kullanımla içerik oluşturma konusunda Drupal gerçekten çok başarılı bir sistemdir.
Drupal'in sahip olduğu güç ve esnekliği anlatan bu kadar yazıdan sonra, basit bir site için bile fazlaca zaman harcamak zorunda olduğunuzu düşünebilirsiniz. Fakat bu konuda yanıldığınızı söylemek zorundayım. Çünkü FTP ile yapılacak bir yükleme sonrasında web tabanlı bir arayüz sayesinde Drupal sitenizi kurup kullanmaya hemen başlayabilirsiniz.
Çekirdekle birlikte gelen temalardan birini seçin ve içerik eklemeye başlayın. İsteseniz çekirdekte yer alan fakat kurulum sonrasında devre dışı bırakılmış olan forum ve yorum gibi eklentileri etkinleştirerek sitenize yeni işlevler kazandırın. Ortak yazılabilecek bir kitap oluşturun, anketler ekleyin, Taksonomi ile içeriğinizi sınıflandırın, üyelerinize içerikleri istedikleri gibi etiketleme imkanı verin. Tüm bunların hepsi birkaç tıklama ile mümkün!
Hazır gelen temaları beğenmediyseniz, kendi temanızı tasarlayın. Drupal tasarımınızda içeriğin geleceği yer tutucu PHP belirtkeleri (ing: token) kullanmaktadır. Üretilen kod çıktısı temizdir ve xhtml uyumludur. Eski sistem tablolar kullanılmamaktadır.
Drupal'i daha iyi anlayabilmek için sistemdeki akışı bilmek önemlidir. Daha öncede bahsettiğimiz gibi, Drupal farklı görevleri olan katmanlardan oluşur. Sistemde 5 katman yer almaktadır:

Çekirdekten yüzeye doğru olan akış, birçok şeyin Drupal'deki çalışma sistemini etkilemektedir. Örneğin; olması gereken bir işlevi bulamıyor musunuz? Belki de eklentiyi sitenize ftp ile yüklediniz ama etkinleştirmeyi unuttunuz. Bu durum eklenti katmanından sonraki katmanlarda istediğiniz sonucu alamamanız anlamına gelir (grafikteki A serisi). Eklentiyi etkinleştirdiniz fakat hala istediğiniz sonuç görünmüyor mu? Belki de B'deki gibi eklentinin sunduğu bloğu bir tema bölgesine yerleştirmemiş olabilirsiniz. Ya da C'deki gibi kullanıcı izinlerini ayarlamayı unutmuş olabilirsiniz. Eğer tüm aşamaları doğru olarak yaptıysanız artık son katmanda istediğiniz sonucu alabileceksiniz.
Artık elinizde Drupal haritanız da olduğuna göre, bir Drupal kopyasını yükleyip deneyebilirsiniz. Yine de karşılaştığınız sorunlar, kafanızı karıştıran konular olduğunda forumlarımızda çekinmeden dile getirebileceğinizi unutmayınız. Drupal kullanıcıları yardımlaşmayı ve paylaşımı seven kişilerdir; hepimiz elimizden geldiğince yardımcı olmaya çalışağız.
Drupal dünyasına hoş geldiniz!