Jump to content
Oscar

Adım adım resimli widget plugini yapmak

Önerilen İletiler

Oscar    1.540

Plugin ile template hook, widget veya fonksiyon tabanlı mini uygulamalar yapabiliriz.   

 

Template Tabanlı plugin nasıl yapılır burada anlatmıştık.

https://www.ipbaccess.com/topic/10799-adım-adım-resimli-template-hook-yapmak/

 

Developer modu etkinleştirerek iş başlamalıyız.

https://www.ipbaccess.com/topic/9559-ipb4-geliştirme-durumu-developer-mod/

 

Kullandığınız sürüme uygun Developer Tools paketini kurulumun üzerine yerel veya ftp upload etmemiz gerekiyor.

4.1.19.4 sürümü için buradan indirebilirsiniz.

https://invisionpower.com/files/file/7185-developer-tools/

 

Şimdi burada widget tabanlı plugin nasıl yapılır onu görelim. Yapılar çok detaylara inmeden basit olarak görmek ve temel bilgiye sahip olmak için basit tutulmuştur. Adım adım başlayalım. Bazı bilinmesi gereken detaylara kısa açıklamalar ekleyeceğim.  

 

Plugin çatı kısmını oluşturalım.

 

create_hook.thumb.png.584ab4cf22997c8fde491b15e3cac64a.png

 

Plugin detaylarını giriyoruz.

 

plugin_detay.thumb.png.966b222a6c18af5934780467def15bd4.png

 

Plugin çatı kısmını oluştu. Plugin ayarları bölümünden Developer Center seçeneğini tıklayıp plugini geliştirme modunda açıyoruz.

 

developer_plugin.thumb.png.32656de53dd3a88724731482a91fe9c6.png

 

Developer Center'ı tanıyalım.

 

developer_center.thumb.png.234d77e24471ad7eacdedb193fe76799.png

 

Information = Sürüm bilgileri yer alır. Bu bilgilerin plugini oluşturma aşamasında girmiştik. 

Hooks: Bu bölümü template hook veya fonksiyonel hook eklemek için kullanıyoruz.  Widget için şimdilik her ikisine de ihtiyacımız yok ama ekleme alanını görelim.

 

create_hook_section.thumb.png.10277ad1eefa6d0468830e37c65cd70b.png

 

Settings: Bu bölümde widget için bir ayar tanımlanacaksa o ayarı önce bu bölümde tanımlamamız gerekiyor.  Plugin içeriğini girebileceğimiz bir metin alanımız olduğunu varsayarak alanı şimdiden oluşturuyorum.

 

settings.thumb.png.11f63b6d9c8a8e37d4863f57a1e3d931.png

 

Tasks: görevler eklentinizle ilgili zamansal bir görev oluşturacaksanız bu bölümü kullanıyoruz mesela sitemap böyle bir görevle belirtilen zamanlarda çalışır. Şimdilik ihtiyacımız yok. 

Versions: eklenti sürüm numaramızı burada tutuyoruz. Biri kısa biri de developer numarası olmak üzere iki raklamdan oluşur ve eklenti geliştikçe bu numarayı yükseltirsiniz ki güncelleme yapılabilsin.

 

versions.thumb.png.09544d4278ff8dfdb3dfaaa979903b3f.png

 

Widgets: Asıl bizi ilgilendiren bölüme geldik.  Bizim yapmak istediğimiz plugin widget olarak çalışacağı için bu bölüm üzerinde biraz fazlaca durmak gerekiyor. Resim üzerlerine açıklamalarını yazdım ve varsayılan değerlerde bırakarak kaydettim.

 

widget_settings.thumb.png.960d2cfb43dbbb074b53281db0415ba1.png

 

Widgeti kaydettik.

 

saved_plugin.thumb.png.e3a8e97c3e92b248ec05d223e4c472b5.png

 

Şimdi sıra geldi denemeye ama onsan önce ayar dosyamızı ve widget dosyamızı düzenlememiz gerekiyor. unutmadıysanız ayar dosyamıza bir metin girişi ekleyeceğiz ve bu girişe yazdığımız bilgileri widget ile görüntüleyeceğiz. Widget klasörümüzden settings.rename.php dosyasının adını settings.php olarak değiştirip açıyoruz. İçindeki örnek alanı plugin settings içine girdiğimiz isimle düzeltiyoruz ve şimdi resimde görüldüğü şekli alıyor.

 

widget_settings2.thumb.png.2c2804dc1ac12485429ff041e5740b10.png

 

Şimdi plugin ayar bölümümüz oluş muş oluyor kontrol edebiliriz. İstediğimiz kadar ayar ekleyebiliriz ama şimdilik sadece bir metin alanı ekledik. Bu alana ne gireceksek giriyor ve kaydediyoruz. Şimdilik ayar bölümüyle işimiz bitti. 

 

widget_settings3.thumb.png.b9e74fc2ee59a3f4aa23a331d6a57ea3.png

 

Hazır yeri gelmişken metin alanındaki değişkeni nasıl cümle ile değiştirebileceğimizi yani çeviri yapacağımızı da görelim. Bütün çeviri işlemleri bu şekilde yapılacak. Plugin içindeki dev klasöründe lang.php dosyasının içine değişkeni ekleyip karşısında resimde görüldüğü gibi karşılığını yazarak kaydediyoruz.

 

lang.thumb.png.152a85657202f6eaeaaefe29a82a69f9.png

 

Kontrol edelim.

 

lang2.thumb.png.b5adae7976e4eb8804b9b2e6f8173164.png

 

Şimdi template kullanmadan setting bölümünde tanımladığımız veriyi sidebarda göstermek için plugindemo/widgets klasöründeki plugindemo.php widget dosyasını açıp düzenleme yapıyoruz. Şimdilik sadece render() bölümünü düzenleyerek ayar bölümündeki veriyi çekip sidebara basıyoruz.

 

 render.thumb.png.c6544a1d7054dd19ca83600cab6a6202.png

 

Şimdi ana sayfaya dönüp widgeti sidebara yerleştirelim.

 

view1.thumb.png.8d9ce3b9bc1c0d07f71833b1bbf43233.png

 

Şimdi nasıl göründüğüne bakalım.

 

view2.thumb.png.acbfa87fc4b2089ac3a587b40d6db86c.png

 

Buraya kadar detaylara yeterince yanıt bularak dünyaya merhaba dedik. Akşama vakit bulursam widget uygulamamıza şablon eklemeyi ve widgetin diğerleri gibi görünmesini nasıl sağlayacağımıza bakacağız.

.

 

  • Beğen 4

İletiyi paylaş


İletiye bağlantı
Sitelerde Paylaş
Opposite    12

Hocam gerçekten emeğiniz çok. Bu şekilde basit yoldan eklenti geliştirmemize yardımcı oluyorsunuz. Daha zengin kaynaklara sayenizde erişebiliyoruz. Teşekkür ederim.

İletiyi paylaş


İletiye bağlantı
Sitelerde Paylaş
loving    10

Harika paylaşım olmuş @kaankarabey hocam işinizi görecek paylaşımlar gelmeye başlamış :D

İletiyi paylaş


İletiye bağlantı
Sitelerde Paylaş
Nomercy    21

Hocam çok teşekkür ederim herseyi anlatıyorsunuz.

İletiyi paylaş


İletiye bağlantı
Sitelerde Paylaş
Oscar    1.540
kaankarabey, 9 dakika önce yazdı:

@Oscar hocam render daki kodda hata mı var?

 

Bunu diyorsan hata yok böyle olması lazım.

 

	public function render()
	{
        $message = "";
        $message = \IPS\Settings::i()->plugin_demo_text;
        return $this->output($message);
	}

 

İletiyi paylaş


İletiye bağlantı
Sitelerde Paylaş
Nomercy    21
Oscar, 17 dakika önce yazdı:

 

Bunu diyorsan hata yok böyle olması lazım.

 


	public function render()
	{
        $message = "";
        $message = \IPS\Settings::i()->plugin_demo_text;
        return $this->output($message);
	}

 

 

Hocam söz dizimi hatası veriyor 

syntax error, unexpected '('

 

 

Kullandığım kod da bu

public function render()
	{
		return \IPS\Settings::()->plugin_demo_text;
		// Use $this->output( $foo, $bar ); to return a string generated by the template set in init() or manually added via $widget->template( $callback );
		// Note you MUST route output through $this->output() rather than calling \IPS\Theme::i()->getTemplate() because of the way widgets are cached
	}

 

İletiyi paylaş


İletiye bağlantı
Sitelerde Paylaş
Oscar    1.540

Adım adım anlatım olduğu için bir yerde ben hata yapsam örnekler çalışmazdı öyle değil mi? Oradaki kodları öyle ezbere yazmış değilim.  Makine üzerinde yaparak her adımı buraya ekledim. 

  • Beğen 1

İletiyi paylaş


İletiye bağlantı
Sitelerde Paylaş
Nomercy    21

Haklısınız tekrardan en baştan deneyim 

İletiyi paylaş


İletiye bağlantı
Sitelerde Paylaş
Oscar    1.540

Çalışan bu hali bende mevcut ama prensip gereği onu buraya eklemedim çünkü adımları yapa yapa öğrenin. :)

 

İletiyi paylaş


İletiye bağlantı
Sitelerde Paylaş
Nomercy    21

Hocam Sorunu buldum;

 

siz render da i eklemişsiniz..

 

public function render()
	{
		return \IPS\Settings::i()->plugin_demo_text;
	}

burda i ekledim sorun çözüldü

İletiyi paylaş


İletiye bağlantı
Sitelerde Paylaş
Nomercy    21

Hocam şu an çalışıyor herşeyiyle bunun içeriğine html kod eklemek için nasıl bir yol izlemem gerek?

 

591a0d716863e_Adsz.png.83915be31fd7bacb923568824c5acb81.png

İletiyi paylaş


İletiye bağlantı
Sitelerde Paylaş
Oscar    1.540
kaankarabey, 57 dakika önce yazdı:

Hocam Sorunu buldum;

 

siz render da i eklemişsiniz..

 


public function render()
	{
		return \IPS\Settings::i()->plugin_demo_text;
	}

burda i ekledim sorun çözüldü

 

Ama zaten bunu eklemeniz gerekiyordu şablonsuz kodu üstelik yukarıda verdim de.

 

	public function render()
	{
        $message = "";
        $message = \IPS\Settings::i()->plugin_demo_text;
        return $this->output($message);
	}

 

İletiyi paylaş


İletiye bağlantı
Sitelerde Paylaş

Hesap oluşturun veya yorum yazmak için oturum açın

Yorum yapmak için üye olmanız gerekiyor

Hesap oluştur

Hesap oluşturmak ve bize katılmak çok kolay.

Hesap Oluştur

Giriş yap

Zaten bir hesabınız var mı? Buradan giriş yapın.

Giriş Yap

  • Konuyu Görüntüleyenler   0 kullanıcı

    Sayfayı görüntüleyen kayıtlı kullanıcı bulunmuyor.

×

Önemli Bilgilendirme

Forum kurallarımızı okudunuz mu? Forum Kuralları.