İyinet'e Hoşgeldiniz!

Türkiye'nin En Eski Webmaster Forum'una Hemen Kayıt Olun!

Kayıt Ol!

Bir CMS'ye Wordpress tarzı plugin entegre sistemi mantığı nedir?

husmen73

0
İyinet Üyesi
Katılım
1 Mayıs 2010
Mesajlar
34
Reaction score
1
Merhabalar,

Yazdığım bir içerik yönetim sistemi için eklenti sistemi hazırlayacağım. Özet olarak şöyle açıklayabilirim: Wordpresste bulunan eklentiler, wordpress dosyalarında (çoğu) herhangi bir değişiklik yapmadan sisteme ek özellikler katabiliyor. Yazmakta olduğum kendi sistemim için bu tür bir özellik hazırlamak istiyorum. Araştırmalar yapıyorum ancak biraz karmaşık gibi geldi. Bu sistemin mantığını tam olarak anlayabilmiş değilim. Örneğin hadi include ile eklenti dizininden dosyaları aldık; peki ya farklı eklentiler içinde aynı fonksiyon isimleri bulunursa ne olacak? Haliyle redeclare hatası alıyoruz. Bunun gibi sorunları nasıl çözebilirim henüz bilmiyorum.

Sizinde düşüncelerinizi almak ve yol göstermenizi rica ediyorum.
 

umit_agdeniz

0
İyinet Üyesi
Katılım
21 Mayıs 2010
Mesajlar
1,462
Reaction score
24
Konum
Maraşlıyık edem
hocam sen bulabildin mi cevabını,ben 4 gün olacak bulamadım bu yapıdan anlayn bir phpci yıllarını php'ye veren insanlara soruyorum onlar bile bilmiyorlar.
 

husmen73

0
İyinet Üyesi
Katılım
1 Mayıs 2010
Mesajlar
34
Reaction score
1
Benim anladığım kadarıyla, işin ucu dizilere dayanıyor. Fonksiyonlarla dizi oluşturup bir düzene sokmak gerekiyor. Dizide öncelikle menülerin sıralanması var, her şeyin fonksiyonla olmasın gerekiyor başka türlü yazılarda vs.. değiştirmeler yapmak pek mümkün olmuyor.

Mayıs ayında da dediğim gibi çok karmaşık bir sistem geliştirmek gerekiyor. Bu sistemi planlamak zaten zaman alıyor, yoksa yazması kolay :) (bana ulaşmak istersen husmen100[at]hotmail[.]com adresimden ulaşabilirsin)

Konu dışı: Ben 1,5 yıldır sistemim üzerinde çalışıyorum. En uygun hale getirdiğimde yayına sunacağım. Yapılması gereken en önemli konu bu eklenti sistemi kaldı. Bunun haricinde de temalar için geliştirme yapacağım. Bunun dışında pek bir şey kalmadı.
 

umit_agdeniz

0
İyinet Üyesi
Katılım
21 Mayıs 2010
Mesajlar
1,462
Reaction score
24
Konum
Maraşlıyık edem
Evet,hocam bende araştırmalarım sonucunda dizilere ulaştım ondan sonra o dizideki değerleri call_user_function_array fonksiyonu ile kullanmamız gerektiği.
Hocam,siz bir kaynak bulabildiniz mi benim bulduklarım ya hatalı çalışmıyor ya da eksik mesela sisteme dışardan modül yazıp eklenemiyor?
 

husmen73

0
İyinet Üyesi
Katılım
1 Mayıs 2010
Mesajlar
34
Reaction score
1
Bazı kaynaklar buldum fakat şu an üzerinde çalışmak için vaktim yok.

http://code.google.com/p/phphooks/
Burada hazır bir eklenti sistemi var; wordpress ile benzer kodlama.

Yapmamız gereken HOOK sistemini öğrenmek :)
 

umit_agdeniz

0
İyinet Üyesi
Katılım
21 Mayıs 2010
Mesajlar
1,462
Reaction score
24
Konum
Maraşlıyık edem
Bazı kaynaklar buldum fakat şu an üzerinde çalışmak için vaktim yok.

http://code.google.com/p/phphooks/
Burada hazır bir eklenti sistemi var; wordpress ile benzer kodlama.

Yapmamız gereken HOOK sistemini öğrenmek :)

Hocam o sistemi ben denedim hatalar vardı,sonra yazan adamı buldum facebooktan adam çinli.adama mesaj atmıştım hala cevap gelmedi :D Hook sistemine gelince yerli ve yabancı kaynak sıkıntısı var :( Çok önemli bir sistem olduğunu anladım vbulletinden wordpress kadar büyük sistemler hep kullanıyor ancak mantığını anlayamadım
 

umit_agdeniz

0
İyinet Üyesi
Katılım
21 Mayıs 2010
Mesajlar
1,462
Reaction score
24
Konum
Maraşlıyık edem
birde hocam biz bu işi öğrenirsek hayrımıza ortaklaşa birşey yapalım mı döküman veya open source hook projesi.koskoca ülke de birtane anlayan bir php coder bulamadım. iyi.net php bölümüne bakarsanız hep benim bu konuda ki mesajlarım var.google aramalarınız da karşınıza ben çıkacam.kafayı yiyecem ilk defa bu kadar zorlandım bir konuda :)
 

husmen73

0
İyinet Üyesi
Katılım
1 Mayıs 2010
Mesajlar
34
Reaction score
1
Bilen var elbet, sanıyorum ki yazı yazmaya zamanları yok.

O örneğe ve diğerlerine bakarak mantığı tek başımıza anlamamız gerekiyor. Şu an başka bir çare yok maalesef.
 

umit_agdeniz

0
İyinet Üyesi
Katılım
21 Mayıs 2010
Mesajlar
1,462
Reaction score
24
Konum
Maraşlıyık edem
Bilen var elbet, sanıyorum ki yazı yazmaya zamanları yok.

O örneğe ve diğerlerine bakarak mantığı tek başımıza anlamamız gerekiyor. Şu an başka bir çare yok maalesef.

birde bunu bulmuştum hocam,
http://milki.erphesfurt.de/genericplugins/genconfig.html

bilen vardır elbette ancak yıllardır kullanılan bu sistem hakkında en ufak birşey paylaşmamış kimse az kişi biliyor sanırım.bizzat sorduğum ve yıllarca php proje geliştiren insanlar hiç kullanmadım dedi :)
 

husmen73

0
İyinet Üyesi
Katılım
1 Mayıs 2010
Mesajlar
34
Reaction score
1
Bu script daha gelişmiş, güzel fikirler verir sanırım. Mantığı bulmak gerekiyor.
 

umit_agdeniz

0
İyinet Üyesi
Katılım
21 Mayıs 2010
Mesajlar
1,462
Reaction score
24
Konum
Maraşlıyık edem
anladıığım kadarı ile fonksiyon adlarını bir dizi değişkende tutuyorlar sonra da foreach ile çağırıyorlar

Fonksiyon adını diziye atıyor;
PHP:
$app_plugins["content"][] = "yourapp__example_plugin";

Fonksiyonu yazıyor;
PHP:
function yourapp__example_plugin() {
   global $app_settings;

   return '<div class="plugin content">'
        . "<p>This is the output from the 'example' plugin.</p>"
        . "<p>It has set the variable app_settings[example] to \"{$app_settings[example]}\".</p>"
        . ' </div>';

}

Foreach ile çağırıyor
PHP:
<?php

foreach ((array)$app_plugins["content"] as $pname) {
   echo $pname();
}

?>

Ben bu şekilde anlamıştım,doğru mu anladım yanlış mı anladım bilemiyorum.Sizin de görüşlerinizi bekliyorum.Memnun olurum :)
 

husmen73

0
İyinet Üyesi
Katılım
1 Mayıs 2010
Mesajlar
34
Reaction score
1
Evet aynen öyle. Include etmek ile aynı şey. Çağırmada sorun yok.

Peki değişiklik yapmak istediğimiz yer için eklentide ki kodların çalışmasını nasıl sağlayacağız. Bunu düşünmek gerekiyor. Örneğin, title etiketinin sonuna ASD kelimesini eklemek istiyoruz. Title fonksiyonuna ne yazacağız, eklentiye ne yazacağız?

Düzenleme: Aklımda bu konu tam olarak oturmadı, fikirler var tabi.
 

umit_agdeniz

0
İyinet Üyesi
Katılım
21 Mayıs 2010
Mesajlar
1,462
Reaction score
24
Konum
Maraşlıyık edem
title etiketine bir etiket koysak,eklentimiz de o etiketi güncellese;

mesela;
PHP:
<title>$title_icerigi</title>

böyle bir etiket koyup,yazacağımız bir eklenti ile "$title_icerigi" burayı güncellesek?
 

umit_agdeniz

0
İyinet Üyesi
Katılım
21 Mayıs 2010
Mesajlar
1,462
Reaction score
24
Konum
Maraşlıyık edem
fikirlerinizi mahsuru yoksa paylaşırmısınız,bende fikirlerimi paylaşmak istiyorum;mesela şöyle bir fikrim var:
eklenen modüllere otomatik olarak bir modül_id atayıp bu modül_id'yi veritabanına saklamak
 

husmen73

0
İyinet Üyesi
Katılım
1 Mayıs 2010
Mesajlar
34
Reaction score
1
Ben bunları eklenti diye isimlendiriyorum bilgin olsun :)

Her bir eklentiye eklenti id atamana gerek yok bence. Örnekle şöyle açıklayabilirim; Eklentiler isminde bir klasörümüz olsun ve tüm eklentiler buraya yüklensin. Klasörlenmiş olan her eklenti klasörü içerisinde 1 adet eklenti bulunacağı için dizinlerini id olarak kabul edebiliriz.

Eklentilerle ilgili hazır scriptleri inceledin, veritabanında dosya isimlerini (eklentiadi.plugin.php) saklıyorlar sadece. Fakat aynı isimde birden fazla eklenti olabileceği için biz dizin isimlerini (eklentiklasoru/eklentiadi.plugin.php) saklarsak daha mantıklı olur diye düşünüyorum. Veritabanınına eklentiadi ve aktif sütunlarını ekleyip aktif olup olmadıklarını kontrol edebiliriz.

Birde örnek verirken parantez içinde yazdığım dosya isimleri hakkında şunu da söyleyeyim: Eklentinin ana dosyasının isminde bir bölüm statik olursa iyi olacaktır. En azından biz hangi dosyayı okutacağımızı programa kolayca anlatırız. Kısaca eklentinin ana dosya ismi eklentiadi.eklenti.php gibi olabilir. *.eklenti.php statiktir.
 

umit_agdeniz

0
İyinet Üyesi
Katılım
21 Mayıs 2010
Mesajlar
1,462
Reaction score
24
Konum
Maraşlıyık edem
peki bu mantık ile "eklenti" klasörü oluşturduğumuzu farzedelim.içinde de 2 adet eklentimiz var;husmen73.eklenti.php ve umit_agdeniz.eklenti.php buraya kadar sorun yok.isimlerini alabiliriz,güncelleyebiliriz vs bir çok işlemi yapabiliriz.ancak bu konuya girdiğimden bu yana en çok kafamın karışmasına sebep olan noktalardan birisi şu;

PHP:
<div id="eklenti_1">
<?php
eklenti_1 buraya çağırılacak
?>
</div>

<div id="eklenti_2">
<?php
Eklenti 2 buraya çağırılacak
?>
</div>

aslında bütün sorunum bundan ibarette diyebilirim;eklenti_1'in içerisine husmen73'ümü veya umit_agdeniz'imi çağrılacağına karar verme mekanızmasını kuramadım.ha dışardan eklenti eklenmeyecek olsa bir switch koyarım kontrol eder ona göre uygun olan eklentiyi oraya çağırır.ancak kullanıcı dışarıdan eklenti eklediği zaman nasıl kontrol edilecek?
 

husmen73

0
İyinet Üyesi
Katılım
1 Mayıs 2010
Mesajlar
34
Reaction score
1
Örneğin bu iki eklenti son cevaplar ve son konular olsun ve her iki eklenti aktifleştirildi diyelim. Div etiketleri içerisine ki id bölümüne eklenti adı yazılır ve sıralaması ise yönetici panelinden yaptırılır. (Wordpress'te ki blok araçlarını sıralama gibi)

Ne kadar açıklayıcı oldu bilmiyorum.

Düzenleme: İlla ki div içerisine eklenmesi şartta değil. Eklenti içerisinde ki kodlar direkte yazdırılabilir.
 

umit_agdeniz

0
İyinet Üyesi
Katılım
21 Mayıs 2010
Mesajlar
1,462
Reaction score
24
Konum
Maraşlıyık edem
işte hocam el ile yazmamak için bu sisteme ihtiyaç duyuyoruz,sistemi şu şekilde yapmaya çalışıyorum
kullanıcı kendi eklentisini bir form vasıtası ile "eklentiler" klasörünü yollayacak.sonra yönetim panelinden onu aktifleştirip sitede istediği alanda yayınayabilecek.el ile herhangi bir veri girmeyecek herşeyi menüden halledebilecek.algoritması basitçe bu.işte mantığım durdu :D
 

husmen73

0
İyinet Üyesi
Katılım
1 Mayıs 2010
Mesajlar
34
Reaction score
1
Eklentiyi kurmada önemli olan eklentinin nerede çalışacağını belirlemek. Header, footer, sidebar, post'larda vs gibi.

Sen kendi sistemin için örnek yazarsan onun üzerinde konuşabiliriz.
 

umit_agdeniz

0
İyinet Üyesi
Katılım
21 Mayıs 2010
Mesajlar
1,462
Reaction score
24
Konum
Maraşlıyık edem
Eklentiyi kurmada önemli olan eklentinin nerede çalışacağını belirlemek. Header, footer, sidebar, post'larda vs gibi.

Sen kendi sistemin için örnek yazarsan onun üzerinde konuşabiliriz.

işte bende onu diyorum,sidebar felan o alanları tamam el ile gireceğiz.
bizim el girdiğimiz eklenti pozisyonları olacak eklenti isimleri değil.
 

Türkiye’nin ilk webmaster forum sitesi iyinet.com'da forum üyeleri tarafından yapılan tüm paylaşımlardan; Türk Ceza Kanunu’nun 20. Maddesinin, 5651 Sayılı Kanununun 4. maddesinin 2. fıkrasına göre, paylaşım yapan üyeler sorumludur.

Üst