• 29-08-2012, 00:31:54
    #1
    Merhaba arkadaşlar.

    Uzun zamandır kafamın çok takıldığı, üzerinde çok yoğunlaştığım ve derin derin düşündüğüm birşeyi sizlerle paylaşmak istiyorum.

    Çok uzun bir zamandır PHP ile ilgilenmekteyim. Ufak tefek kodlar, fonksiyonlar. Veritabanı işlemleri vs. derken, artık düzenli bir script yazmam gerektiğinin, hiç olmazsa kendimi buna alıştırma gereği hissettim. Ancak her defasında bu işe bulaştığımda, tema denilen kısımda tıkanıp kalıyorum. Bir script yazmak belki de dünyanın en kolay işi, ama ortaya kaliteli ve düzenli bir iş çıkarmak pekte kolay değil. Smarty gibi sistemler var ancak ben hiç birini kullanmak istemiyorum. Kendi sistemini yazmak varken, neden kolaya kaçıp bir başkasının sistemini kullanalım ki? Düşünüp duruyorum, bu işin altındaki mantık nedir aceba. HTML ve php kodları bir birinden tamamen kopmalı. Hatta wordpress gibi temalar klasörü olacak ve kullanıcı kolayca kendi temasını hazırlayıp entegre edebilecek. Ama bu işi sistemli ve düzenli nasıl hazırlayabilirim, bu konuda gerçekten tıkanıyorum. Elinde kaynak olan veya bu konuda bilgi verip yardımcı olacak bir arkadaş varsa gerçekten çok sevinirim.

    Yardımlarınızı bekliyorum, şimdiden teşekkür ederim..
  • 29-08-2012, 02:27:14
    #2
    Düz mantık kuralım.

    sayfa.html içeriği

    <title>{$title}</title>
    sayfa.php içeriği

    yakala($title, "Hey you're");
    tema.php içeriği

    function yakala($degisken, $deger){
        //html dosyasını aç, değişken'i bul, değeri yerleştir.
    }
    Mantığı daha detaylı kavramak istiyorsan, smarty ya da rain gibi template motorlarının yapılarını incelemelisin.
  • 29-08-2012, 06:19:24
    #3
    Üyeliği durduruldu
    Amaç daha düzenli kod yazarak, tasarım katmanını ayırmak ise MVC yapısını öğrenmenizi tavsiye ederim. Amaç wordpress tarzında tema motoru yapmak ise bunun kodladığınız script içerisinde değişik yöntemleri olabilir. Hiç incelemedim ama sanırım wordpress şu şekilde yapıyor.

    Her temanın belirli dosyaları olmak zorunda ve o dosyalar belirli içerik türleri için kullanılıyor. Benim tahminim, ilk önce themes klasörü içerisindeki temalara (klasör halindeki) bakıyor. Burada style.css içerisinde tema hakkında yeterli bilgisi olan temaları panelde listeliyor. Tabi bu bilgiler style.css içerisinde yorum satırı olarak ekleniyor (Etiket, tema adı, yapımcısı, sürümü vs.) daha sonra bu tema aktif edildiğinde bu temanın aktif edilme durumu bir yerde saklanıyor (bakmadım ama muhtemelen veritabanındadır ). Sonra gerekli içerik türleri için gerekli sayfalar başka bir sayfada çağırılarak çıktı veriliyor.

    functions.php dosyasınıda mesela tema ile birlikte çağırarak kullanıcıya özel fonksiyonlar tanımlama olasılığı sağlayarak bunları tema içerisinde kullanılmasına olanak sağlıyor.

    bloginfo(); tarzındaki fonksiyonlar zaten yazılımın çekirdeğinde hazırlanmış. Sen de bu şekilde fonksiyonlar oluşturarak bunları temayı çağırdığın yerde çağırarak tema içerisinde kullanılmasına olanak sağlayabilirsin. Bu fonksiyonların ne işlem yapacağı vs. sana kalmış.
  • 29-08-2012, 11:06:57
    #4
    hocam kendi tema mantığımı anlatayım sizlere belki diğer arayanlara da yararı olur

    sitemin ana dizininde tema adında bi klasör oluşturdum

    sql de ayarlar tablosunda site adı adresi teması vs hepsini tuttum

    site ana dizininde index.php dosyasında sitenin tema ismine göre temanın anasayfasını sitenin anasayfasına include ediyorum. nasıl yani derseniz tema klasörü içerisinde deneme isimli klasör mevcut bunu sql de tema sütununda deneme adında kayıt ediyorum index.php dosyasında iste aşağıdaki gbii bir php kod yazarak siteme işletiyorum

    örnek index.php dosyası bu şekilde

    include "ayar.php";
    $sitetemasi = $ayarlar->tema;
    include "tema/".$sitetemasi."/anasayfa.php";
    tema >> deneme klasörünün içinde bulunan anasayfa.php kodları da aşağıdaki gibi olabilir

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
    <head>
    	<meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
    	<title>deneme isimli temanın anasayfası</title>
    </head>
    <body>
    	
    </body>
    </html>

    aynı zamanda bütün php sorguları AYARLAR DOSYASINI TEMAYA DAHİL ETMEDEN yapabilirsiniz.

    geri kalan mantık size kalmış demo isterseniz ulaşın çalışan sitemin tema mantığını anlatayım
  • 29-08-2012, 12:49:29
    #5
    Hepinize teşekkür ederim. Wordpressteki tema mantığını bir nevi anladım aslında. Fonksiyonlarla olayı yönetmek bi başka oluyor. Ama mesela diyelim ki ortada bir while olayı var. Site bir blog diyelim ve temanın anasayfasında, veritabanındaki konular listelenecek. Oradaki while döngüsünü en sade şekilde kullanıcıya nasıl kullandırtabiliriz ki?
  • 29-08-2012, 17:54:32
    #6
    Kimlik doğrulama veya yönetimden onay bekliyor.
    Kendinin yapması varken başkasının yaptığını neden kullaniyim demişsinde, PHP'de başkasının yazdığı bir dil. Neden parayı tekrar icat etme ihtiyacı duyuyorsun?

    PHP ile HTML'i birbirinden tamamen ayıramazsın. Ama düzen için en iyi yolu PHP dosyası üzerinden HTML dosyanı çağırmak olacaktır. Bunun için uyarlanmış en güzel sistem ise MVC 'dir.

    MVC sistemi kendin yazabilecek seviyedeysen yaz. Ama CodeIgniter ve bir çok framework MVC sistemini barındıyor. Onları kullanabilirsin.

    Bilge47 adlı üyeden alıntı: mesajı görüntüle
    Hepinize teşekkür ederim. Wordpressteki tema mantığını bir nevi anladım aslında. Fonksiyonlarla olayı yönetmek bi başka oluyor. Ama mesela diyelim ki ortada bir while olayı var. Site bir blog diyelim ve temanın anasayfasında, veritabanındaki konular listelenecek. Oradaki while döngüsünü en sade şekilde kullanıcıya nasıl kullandırtabiliriz ki?
    İstediğin sadece HTML sayfasındaki sadelik ise verileri bir değişkene atarsın, daha sonra HTML sayfasında <?php echo $degisken; ?> diye yazdırırsın. Ya da bir regex ile onuda kısaltabilirsin.
  • 01-07-2014, 12:34:02
    #7
    Php class ları biraz izncele kardeşim. Kendi classlarını oluştur önce. Sen phpde dediğin gibi birşeyler öğrenmişsin. Daha çok kendini geliştirmek istiyoresun. Ama bunu temaları nasıl yaparımdan önce class mantığı ile kendi kütüphanemi nasıl oluştururum demeye başla. Sonra o mantıkla temalama kendi gelir zaten..

    Ben anladım sen aynı kodları yazmaktan sıkılmışsın. Başkasına bakıyon kod kümeleri çok farklı geliyor. Bir zamanlar bende aynı düşüncedeydim..
  • 01-07-2014, 13:16:33
    #8
    Hocam smarty olarak araştırın
  • 01-07-2014, 13:24:53
    #9
    wordpressin 2.x sürümlerini incelersen çok çok faydasını görebilirsin.

    fakat biraz incelediğinde aslında herşey iç içe olduğu için karmaşık gelebilir
    en öncelikle scrriptin çekirdek dosyalarını include edersin ve temanın fonksiyon dosyasını include edersin ondan sonra gelen verilere görede diğer bölümleri include ederin

    burda dikkat etmen gereken eğer sadelik istiyorsan pek çok işlevi fonksiyonel yapman gerekir

    sonuç olarak baştan aşağı mantıgını sen kuruyorsun.