• Merhaba Ziyaretçi,
    Sitemizden yararlanmak için buradan kayıt olunuz.
  • Değerli üyelerimiz, Bildiğiniz üzere uzunca bir süredir eklenti desteği ile kişisel sebeplerden ötürü ilgilenemiyorum. Üyelerimizi mağdur etmemek açısından burada sergilenen eklentilerimizi Xenforo.gen.tr üzerinde satışa sunma kararı aldık. Mevcut eklentilere ait kritik problem ve geliştirmeler ile ilgili belirli aralıklarla Xenforo.gen.tr üzerinden destek verilecektir.

apocalypse

Yönetici
Yönetim Ekibi
Katılım
9 Haz 2014
Mesajlar
1,018
Reaction score
1,044
Puanları
113
Web sitesi
xenforo.web.tr
PHP Versiyonu
PHP v7.0.x
XenForo Versiyonu
XF 1.5.x
XenForo Eklenti Oluşturma , XenForo'da Eklenti Nasıl Yazılır ?

1. Bölüm
Bu yazı XenForo eklenti çalışması oluşturma sürecinde adım adım sizi götürecektir.Oluşturulan eklenti belirli bir miktardan az mesajı olan üyelere ve belirli bir gruba ait üyelere imzalarını düzenlemesini önlemeyi amaçlamaktadır.Bunu başarmak için Listener(Dinleyici) ve Admin Seçenekler Sayfasına ihtiyacımız var ve PHP dosyaları oluşturmalıyız.

Bu yazı boyunca ekran görüntüsü kullanmamaya karar verdim XenForo'nun Model View Controller (MVC) konseptini ve eklentinizi yazma konusunda zaten bilginiz olduğu hissini vermek istiyorum.Her adım detaylı olarak açıklanacaktır.

Çalışılan eklenti kodculara ve lisanslı üyelere referans için bu yazı sonunda kullanılabilir olacaktır.

Adım adım eklenti yapmayı planlıyorsanız, Geliştirme Modunu (Debug Mode) aktifleştirmelisiniz.Config.php dosyasını düzenlemeden önce yedeğini almanız önerilir.

Geliştirme Modunu açmak için,

Library->config.php

En altına

PHP:
$config['debug'] = true;
Bu esnada şunuda yapabilirsiniz

PHP:
// $config['enableListeners'] = false;
Bu seçeneğin aktif olması Listener yani eklentilerinizi devre dışı bırakacaktır.

True ise bir şey yapmanıza gerek yoktur,bu kod hiç yoksa zaten default olarak true olacaktır.

Config dosyanızı kaydedin.

Eklenti oluşturma
Admin Paneline giriş yapın ve Geliştirme->Eklenti oluştur(Create Add-on) seçeneğine gidin.

Bu eklenti için aşağıdaki alanlar aşağıdaki bilgilerle doldurulmalıdır.

Add-on ID:limitSigs
Title:Yeni üyeler için imza kısıtlaması
Version String:1.0
Version ID:1

Versiyon ID revizyonları içten takip etmek için kullanılır.Her revizyonda bu numarayı artırın.

Geri kalan alanlara bu eklenti için ihtiyacımız yok.

Eklentiyi kaydedin.

Eklentimizin amacı olarak,yeni üyelere imzasını düzenleme(oluşturma) izni vermemek,XenForo da imzasını düzenleyebilecek üyeleri belirlemeliyiz bu yüzden çağrılan sınıfı dinlemeliyiz.Bu Kontrolör(Controller) olarak adlandırılır.Dört Kontroller klasörü vardır:Admin,Helper,Public,Response.İmza düzenleme admin fonksiyonu değildir.Yardımcı(Helper) veya Yanıt(Response) da değildir.Bu bize Genel(Public) ‘i bırakıyor.Dosya yöneticinizden ControllerPublic e gidin.İmza düzenleme Account.php için üye hesap görünümünün bir parçasıdır.Dosyayı açın ve imzayı(signature) arayın.Vurgulanan ilk kelime sadece yukarıdadır:public function actionSignature().

Bu üzerinden geçmek(override) istediğimiz fonksiyondur.

Şimdi bu fonksiyona ait (XenForo_ControllerPublic_Account) olarak çağrılan sınıf için dinlemeliyiz.

XenForo seçebileceğimiz epeyce Listenerlarla birlikte gelir.Geliştirme->Code Event Listeners (Kod çalışma parçaları yada Kod olay dinleyici olarak panelinizde gözükebilir) gezintisini yapın.Yeni olay dinleyici oluştur’a tıklayın.

İlk açılır pencere hangi olayı dinleyeceğinize izin verir.Yüklenen kontrolör den sınıfı dinlemeyi istediğimizden açılır menüden Load_Class_Controller seçin.

load_class_controller dinleyicisi aldatıcıdır fakat güçlüdür ve tüm dinleyicilerin daha fazla esnek olmasını sağlar.Dinleyiciyi seçtiğinizde load_class_controller açıklamasında bu sınıf: class My_Class_Name extends XFCP_My_Class_Name şeklinde tanımlanmalıdır bildirisini alacaksınız.Bu doğrudur,fakat doğrudan yüklenmeyecektir.Bu sınıf doğrudan yüklendiğinde AutoLoaderinizde bu istisnayı oluşturacaktır.XFCP kullanarak sınıf yükleyemezsiniz.İlk doğru yükleyiciyi kullanarak sınıfı yükleyin. (Cannot load class using XFCP. Load the class using the correct loader first.)

Bu hatanın anlamı, oluşturmak istediğiniz bu yeni sınıf çözümlenmeden önce yüklenmiş olmalıdır.Fakat soru şu,nerede yüklenecek ve nasıl? Bu $extend dizi argümanının amacıdır.
 
Son düzenleme:

apocalypse

Yönetici
Yönetim Ekibi
Katılım
9 Haz 2014
Mesajlar
1,018
Reaction score
1,044
Puanları
113
Web sitesi
xenforo.web.tr
PHP Versiyonu
PHP v7.0.x
XenForo Versiyonu
XF 1.5.x
Part 2
Dinleyici sayfasını açık bırakın, ve dosya yöneticinizi kullanarak ./library klasörüne gidin.

Şimdi biz eklentimizin klasör yapısını oluşturacağız.

LimitSig isminde yeni bir klasör oluşturalım. (Limit Signature kısaltmasıdır,kısaltmalara ihtiyacımız var çünkü amacımız burda sadece kod yazmak değil işleri kolaylaştırmak)

Klasör ismindeki L ve S nin büyük harf olduğunun farkına varın.Xenforo nun klasör isimlerindeki gibi aynı standardı korumak için bu biçimi kullanın.

LimitSig içinde Listener isminde Yeni bir klasör oluşturun.Burası Dinleyicimizi depolacayağımız yerdir.Listener içinde LoadClassController.php isminde yeni bir dosya oluşturun.Klasör ve dosya adı yapısı ilerde düzenleyeceğinde dosyaları belirlemeyi kolaylaştırmak için kullanıyoruz,XenForo da aynı biçimi takip eder.

LoadClassController.php dosyasını açın ve ekleyin:

PHP:
<?php


class LimitSig_Listener_LoadClassController

{

  public static function loadClassListener($class, &$extend)

  {


  if ($class == 'XenForo_ControllerPublic_Account')

  {

  $extend[] = 'LimitSig_ControllerPublic_LimitSig';

  }


  }


}
Kaydedin.

Sınıfın klasör yapısını yansıttığının farkına varmışsınızdır.Bu çok önemlidir.Fonksiyonumuz iki argümanı içerir:$class ve $extend.

$class test edeceğimiz sınıfın adını içerir.

$extend[] ise eğer $class XenForo_ControllerPublic_Account sınıfını içerirse ekleyeceğimiz dizidir.Bu diziyi kullanarak parazit olmadan bu listeneri kullanmak için diğer eklentilere izin verir.Şimdi AdminCp->Geliştirme bölümünde oluşturduğumuz dinleyicimizin Yürütme geri çağrımı (Execute Callback) text kutularında kendi sınıf ve metodumuzu ekleyebiliriz.

Sınıf tipinde: LimitSig_Listener_LoadClassController

Metod fonksiyonumuzdur.Yazın: loadClassListener

Geriçağrım Yürütme Sırası (Callback Execution Order) default olarak bırakın. Bu değer yalnızca bu yürütülmeden önce başka bir load_class_controller olayı varsa olmalı değiştirilmesi gerekecektir.

Geriçağırım Yürütmesi (Callback Execution) seçili olduğunu garantileyin.

Açıklamasına ise: XenForo_ControllerPublic_Account sınıfı için dinleyici yazın.

Açılır menüden eklenti için “Yeni üyeler için imza kısıtlama” seçin ve kaydedin.Üstteki yapıyı takip ettiyseniz eklentiniz başarıyla kaydedilecektir.

LoadClassController.php dosyamızdaki sınıf şimdi XenForo_ControllerPublic_Account için dinleyecektir.Bu sınıf yüklendiğinde $extend[],LimitSig_ControllerPublic_LimitSig ismiyle nufüsunu artıracaktır.Şimdi bu dosya ve sınıfı oluşturmamız gerekli.Sınıf adına baktığınızdahangi klasörde olacağını ve oluşturmamız gereken php dosyasının adını söyleyebilirsiniz:

LimitSig -> ControllerPublic -> LimitSig.php

ControllerPublic klasörü ve ardından LimitSig.php oluşturun,LimitSig dosyasına:

PHP:
<?php

class LimitSig_ControllerPublic_LimitSig extends XFCP_LimitSig_ControllerPublic_LimitSig
{

  public function actionSignature()
  {

  }

}
Dinleyici açıklamasında başvurulan XFCP_ önekinin kullanımının farkına varmışsınızdır. Olmayan sınıfı genişletemeceğimizden, $extend[] içine yüklenen sınıfımızı doğrular böylece şimdi genişletilebilir.

actionSignature() fonksiyonu ezmek istediğimiz fonksiyondur.Bu fonksiyonda mesaj sayısını kontrol etmek istediğimizde kodumuz buraya eklenebilecektir.Admin panelde yeni seçenek grubu oluşturana kadar bu fonksiyonu boş bırakın.Eğer her part boyunca takip ediyorsanız kodu ekleyene kadar eklentinizi kapatabilirsiniz.

AdminCP -> Home Yeni Üyeler için İmza kısıtlaması seçeneğini deaktif edin.
 

apocalypse

Yönetici
Yönetim Ekibi
Katılım
9 Haz 2014
Mesajlar
1,018
Reaction score
1,044
Puanları
113
Web sitesi
xenforo.web.tr
PHP Versiyonu
PHP v7.0.x
XenForo Versiyonu
XF 1.5.x
Part 3
Eklentinize seçenekler eklemek için,AdminCP Anasayfa->Seçenekler gezintisini yapın.

Sayfanın üstünde Seçenek Grubu Ekle (+ Add Option Group) tıklayın.

Grup ID(Yöneticilerin atadığı değerleri içeren seçenekler adı):limitsigOptions.

Başlık(Seçenekler listesinde görünen isim):İmza Seçenekleri

Açıklama(Seçenek grubuna tıkladığınızda görünen kısa açıklama):Daha detaylı açıklamaya ihtiyaç duymadığınız sürece boş bırakın.

Görünüm sırası:default

Eklenti: Açılır menüden Yeni Üyeler için İmza Kısıtlamalarını seçin.

Seçenek grubunu kaydedin.

Simdi seçenek grubunuzu oluşturdunuz. Şimdi birkaç tane seçenek ekleme zamanı. İlk seçenek Yöneticilere yeni üyelerin imzası olabilmesi için minimum sayıda gerekli olan mesaj sayısını atamasına izin verecektir. Ve ikincisi ise belirli grup veya gruplara minimum miktarda uygulamaktır. Seçenek grubu eklerken hangi gruplara mesaj sayısı kontrolü uygulanmasına ve hangisinin muaf tutulmasına izin verecektir, örnek olarak: belirlenenden az mesaj sayısına sahip olan Sponsor veya Kontribütör (Bağışcı) üyeler imza oluşturma yetkisi yine olacaktır.

Seçenek Ekle’ye tıklayın.

Seçenek ekleme sayfasında seçenek oluşturduğunuzda kullanabilmeniz için sayısız yazı kutusu, açılır menü ve onay kutusu vardır.İlk seçenek Seçenek ID (Kimliği).Bu seçeneğin kimliğidir LimitSig.php dosyamızda test edebileeğiz.Eklentiyle kolayca ilişkilendirmek için ve ne seçenek içerecekse bir isim verin.Örnek olarak bu eklenti için seçtiğim:sigmessageCount

Büyük küçük harf durumunu not alın.

Eklenti(Açılır menüden seç):Yeni Üyeler için İmza Kısıtlaması

Başlık(seçeneğin adı):Minimum Mesaj Sayısı

Açıklama(seçeneğin kısa açıklaması):Üyelerin imza oluşturabilmesi için minimum mesaj sayısı. 0 ile 50 arasında bir değer girin. 0 seçeneği Minimum mesaj sayısı kontrolünü devre dışı bırakır.

Düzenleme Biçimi. Açlır menüden, seçeneğiniz hangi tip olacaksa seçin: yazı kutusu, spin (artırma - azaltma) kutusu, Aç/Kapa onay kutusu, Radyo Düğmeleri, Açılır menü, Onay kutuları, İsimli şablon, veya PHP Callback. Sınırlamak istediğimiz bir numaraya baktığımızdan, seçilecek olan:Spin Box.

Biçim parametreleri. Seçeneklerin belirli tiplerine davranışları ve kısıtlamaları ayarlayabilirsiniz. Spin kutusu kullandığımızdan bu seçeneğe minimum, maximum ve bir adım değeri verebiliriz. Minimum altındaki herhangi bir değer, minimum değeri olarak atanacaktır, and maximum üstündeki herhangi bir değerde maximum değeri olarak atanacaktır. Her biri kendisinin satırına istediğiniz tanımlamayı yerleştirebilirsiniz. Adım değerleri + veya – ye bastıkça yazı kutusundaki artırma değerini atayacaktır. Adım miktarının 1 olmasını istiyorsanız step=x satırını kaldırın.
Min=0
Max=50
Step=5

Veri tipi: Atamak istediğiniz verinin tipi. Açılır menüden Unsigned Integer(İşaretsiz sayı,pozitif demek değildir) seçin.1 altındaki herhangi sayı default olarak 1 atanacağından pozitif sayı olmasını istemiyoruz, 0 sayısını kullanmak istiyoruz.

Standart Değer. Eklenti içeri aktarıldığında seçeneğe atanacak standart değerdir . 5, x mesajdan az üyeleri kısıtlamak için iyi bir sayıdır, Standart olarak 5 ayarlayacağız.

Dizi alt seçenekleri. Değerlerimizi dizide depolamayacağımızdan, bunu boş bırakıyoruz.

Doğrulama Geriçağrımı (Validation Callback). Boş bırakın. Yöneticilerin seçimini doğrulamak için ihtiyaç duyulduğunda kullanılacaktır. Örnek olarak, bir forumu seçtiğinizde onun aslında kategori veya sayfa olmamasını belirlemeniz içindir.

Gruplarda görüntüle. Bu seçeneğin görünmesini istediğiniz tüm seçenek gruplarının listesidir. Standart olarak eklentiniz seçilmiştir. Öylece bırakın.

Yedeklere bu seçeneği dahil et. Standart seçilidir. Öyle bırakın.

Kaydet butonuna tıklayın.

Tekrardan Seçenek Ekleye tıklayın.

Seçenek ID: siglimitGroups

Eklenti: Yeni üyeler için İmza kısıtlaması
Başlık: Gruplara Uygula

Açıklama: Hangi üye gruplarının imza oluşturabilmek için minimum mesaj sayısını gerektiğini seçin. Seçili grupların birine ait olan Yöneticiler ve Moderatörler bu üyelerden hariç tutulacaktır.
Düzenleme Biçimi: PHP Callback. Administratör tarafından oluşturulanlara dahil olan Grupların listesini üretmek için PHP Callback kullanıyoruz (Administratör, Moderatör ve Kayıt olmayan üyelerin hariç tutulmasıyla birlikte).

Biçim Parametreleri. PHP Callback seçtiğimizden, Sınıf ve metodların kullandığı: LimitSig_Option_Group::renderOption seçeneğe işaret etmemiz gerekli.

Veri tipi: Dizi. Adminlerin birden fazla üye grubunu seçebileceğinden, dizi gereklidir.
Standart Değer: a:1:{i:0;s:1:"2";} Standart Değer kayıtlı üyeler için atanmıştır. Bu seçeneği nasıl değiştireceğinizi bu seçenek beklendiği gibi çalıştığında açıklayacağım.

Dizi Alt-Seçenekleri: * (burda yıldız kullandık, dizinin belirli isimli anahtarlarında bilgi depolamaya ihtiyacımız olmadığından kullanmadık, mesela: width, height, user_id, gibi.)

Doğrulama Geriçağrımı: standart. Administratörlerin hangi üye gruplarını kontrol edebileceğini yönlendirdiğinden, geçerli olacağını biliyoruz.

Gruplarda görüntüle: İmza Seçenekleri.

Yedeklerde bu seçeneği dahil et: Standart (seçili)

Kaydetmeden önce!, Adminlerin seçebileceği üye gruplarını döndürmek için PHP Callback Sınıf ve Metodlarımızı oluşturmalıyız,yoksa hata verecektir.
 

apocalypse

Yönetici
Yönetim Ekibi
Katılım
9 Haz 2014
Mesajlar
1,018
Reaction score
1,044
Puanları
113
Web sitesi
xenforo.web.tr
PHP Versiyonu
PHP v7.0.x
XenForo Versiyonu
XF 1.5.x
Part 4
Geriçağırım (Callback), LimitSig_Option_Group olarak adlandırdığımız seçeneğimiz için onay kutularını işlemek için çağıracaktır.İsme bakarak callback in nerede olduğunu ve dosyaadının ne olduğunu söyleyebilirsiniz.

Dosya yöneticisinden Library/LimitSig içine gidin.

Option isminde klasör oluşturun.

Onun içine de Group.php isminde bir dosya oluşturun.

Sınıf ve fonksiyonu eklemek için dosyayı düzenleyin;

PHP:
<?php


  class LimitSig_Option_Group

  {


  public static function renderOption(XenForo_View $view, $fieldPrefix, array $preparedOption, $canEdit)

  {


  $preparedOption['formatParams'] = XenForo_Model::create('LimitSig_Model_GetUserGroups')->getUserGroupOptions(

  $preparedOption['option_value']

  );


  return XenForo_ViewAdmin_Helper_Option::renderOptionTemplateInternal(

  'option_list_option_checkbox',

  $view, $fieldPrefix, $preparedOption, $canEdit

  );


  }


  }

Kaydedin.

Bu sınıf Admin Yardımcı sınıfı tarafından onay kutularına işlemek için LimitSig_Model_GetUserGroups sınıfımız tarafından oluşturulan üye gruplarının listesini geçer.Tüm kullanılabilir işleme seçeneklerini görmek için, Admin Helper Option dosyasını incelemek için zaman ayırın.

Şimdi LimitSig_Model için yeni bir dosya oluşturmalıyız. Library/LimitSig/ içinde Model klasörü oluşturun.Model klasörüne girin ve GetUserGroups.php dosyasını oluşturun.

Düzenlemek için bu dosyayı açın:

PHP:
<?php

  class LimitSig_Model_GetUserGroups extends XenForo_Model
  {

  // returns a list user groups with the exception of Administrative, Moderating, and Unregistered

  public function getUserGroupOptions($selectedGroupIds)
  {

  $userGroups = array();
  foreach ($this->getAppropriateUserGroups() AS $userGroup)
  {
  $userGroups[] = array(
  'label' => $userGroup['title'],
  'value' => $userGroup['user_group_id'],
  'selected' => in_array($userGroup['user_group_id'], $selectedGroupIds)
  );
   }

  return $userGroups;

  }

  public function getAppropriateUserGroups()
  {

  return $this->_getDb()->fetchAll('
  SELECT user_group_id, title
  FROM xf_user_group
  WHERE user_group_id = 2 OR user_group_id > 4
  ORDER BY user_group_id
  ');

  }

  }
Kaydedin.

Bu dosya onay kutularına işlenecek Üye gruplarının listesini döndürür, kayıtsız, Administrative, and Moderatör hariç.Oluşturduğunuz tüm yeni üye grupları yanı sıra Seçenekler sayfasında listelenecektir.

Oluşturulan onay kutularını görmek için: AdminCP -> Seçenekler -> İmza Seçenekleri ‘ne gidin.

Kayıtlı olanları (seçilmiş olduğunu) ve oluşturmuşsanız herhangi yeni üye gruplarının (seçilmemiş olduğunu) listelenmediği göreceksiniz.

Onay Kutuları için Standart Değer(leri) Ayarlama

Hatırlarsanız, Gruba uygula seçeneği oluşturduğumuzda, standart değerimiz olarak a:1:{i:0;s:1:"2";} yerleştirdik. Çoklu seçenek seçimi oluşturduğunuzda ayarlamak için en kolay yolu varsayılan olarak seçili olanı boş bırakmaktır.Callback oluşturun, ve ardından seçenek için, default olarak seçilmiş olanı seçin ve kaydedin.

phpMyAdmin açın,XenForo veritabanını seçin,xf_option tablosuna tıklayın.Default_value satırını farketmişsinizdir,BLOB olarak depolanır ve üçüncü üzerinde yer alır.

sigLimitGroup için BLOB default_value ‘nin içeriğine bakmak için Export(dışa aktar) yapın.Sağ tarafta bulunan seçeneklerin altında,aşağı inin ve seçimi kaldırın(uncheck).BLOB için hexadecimal(onaltılık tabanda) kullanın. Dosya olarak kaydet altında,Sıkıştırmanın Hayır olarak atandığını garantileyin, ve Git ‘e tıklayın.Birlikte aç seçeneği verildiğinde Notepad kullanın.Eklentimiz için siglimitGroups bakın, ve şunu göreceksiniz:

('siglimitGroups', 'a:1:{i:0;s:1:"5";}', 'a:1:{i:0;s:1:"2";}', 'callback', 'LimitSig_Option_Group::renderOption', 'array', '*', 1, '', '', 'limitSigs');

Hatırlayın default değer üçüncüdedir.Vurgulayın ve kopyalayın:a:1:{i:0;s:1:"2";}

Bu Gruplara uygulanacak seçeneğin Default değerine yapıştırılacak değerdir.
 

apocalypse

Yönetici
Yönetim Ekibi
Katılım
9 Haz 2014
Mesajlar
1,018
Reaction score
1,044
Puanları
113
Web sitesi
xenforo.web.tr
PHP Versiyonu
PHP v7.0.x
XenForo Versiyonu
XF 1.5.x
Part 5
Seçeneklerimiz tamamlandıkça,üyelerin mesaj sayısını kontrol etmek ve imza oluşturacak grupları belirlemek için kod eklememiz gereklidir.

LimitSig/ControllerPublic/LimitSig.php açın:

Vurgulanan

PHP:
public function actionSignature()

  {

  }
Ve değiştirilecek olan:

PHP:
public function actionSignature()

  {


  if (!XenForo_Visitor::getInstance()->canEditSignature())

  {


  return $this->responseNoPermission();

  }


  else

  {

  $visitor = XenForo_Visitor::getInstance();


  $options = XenForo_Application::get('options');


  if ($visitor['message_count'] < $options->sigmessageCount AND

  (!$visitor['is_moderator'] AND !$visitor['is_admin']))

  {


  $applytogroups = $options->siglimitGroups;


  if (empty($applytogroups))

  {

   $applytogroups = array(2);  // default it to Registered group

  }


  $belongstogroups = $visitor['user_group_id'];


  if (!empty($visitor['secondary_group_ids']))

  {

  $belongstogroups .= ','.$visitor['secondary_group_ids'];

  }


  $groupcheck = explode(',',$belongstogroups);


   unset($belongstogroups);


  $sigcheck = true;


  foreach ($groupcheck AS $groupId)

  {


  if (in_array($groupId, $applytogroups))

  {

  $sigcheck = false;

  break;

  }


  }



  if (!$sigcheck)

  {

  return $this->responseNoPermission();

  }


  }


  }


  return $this->_getWrapper(

  'account', 'signature',

   $this->responseView(

  'XenForo_ViewPublic_Account_Signature',

  'account_signature'

  )

  );



  }
İlk IF koşulu ziyaretçinin imzasını düzenlemeye yetkisini görmek için kontrol eder ve yoksa mesaj sayısı veya grubu kontrol etmeye gerek olmadığından hemen çıkacaktır.

Ziyaretçinin izni varsa,şimdi onun mesaj sayısı ve onun ait olabileceği tüm üye gruplarını getirmemiz gerekli.Biz biliyoruz ki eğer imzasını düzenleyebiliyorsa,kayıtlı üye olmalıdır,bu yüzden onun kullanıcı verisini çekebiliriz:

$visitor = XenForo_Visitor::getInstance(); // üyenin kullanıcı verisini yükler

Şimdi bizim imza seçenekleri ayarlarına ihtiyacımız var.

$options = XenForo_Application::get('options'); // XenForo seçeneklerinin örneğini hazırlar.

Üyenin mesaj sayısını şimdi Admin seçeneklerimizdekiyle karşılaştırabiliriz ve eğer üye bir administrator veya moderatör ise görebiliriz.Eğer üye mod veya adminse, veya onun mesaj sayısı sigmessageCount değerinden az ise hangi üye grubuna ait olduğunu belirlemeye gerek yoktur.

Eğer üyenin mesaj sayısı az ise ve üye mod veya admin de değilse administratör karşı kontrol için seçmiş olabileceğinden kontrol etmemiz gerekir.

$applytogroups = $options->siglimitGroups; //Eklentinin grup seçeneklerini yakalayın.

$applytogroups boşsa default olarak Kayıtlı üye grubu için kontrol edeceğiz.Üyeler birincil gruba ve birden fazla ikincil gruba ait olabileceğinden,biz hepsini tek bir dizide birleştireceğiz (Üye eğer ikincil gruba aitse). Foreach her üye grubunu siglimitGroups ile kontrol edecektir.İlk pozitif sonuçta kaçabiliriz ve yetki yok hatası döndürebiliriz.Diğer türlü,İmza editörünü yükleyeceğiz.

Eklentiyi Dışa Aktarma

AdminCP Anasayfa-> Eklentiler

Yeni üyeler için İmza Kısıtlaması için açılır menüden Dışa aktar seçin.Listener ve Seçenek grubumuzu içeren XML dökümanını kaydedecektir.Şablon veya cümleler eklersek onlarda dışa aktarılacaktır.

Bu yüzden,eklenti paketimize dosyalarımızı dahil etmeliyiz.FTP içerisinde ./library gidin ve LimitSig klasörünü tüm dosyalar ve alt klasörlerle birlikte indirin.

XML dosyasını ve LimitSig klasörünü zip dosyasına ekleyin.

Eklentiye ait dosyalar aşağıda eklenmiştir,talimatları kullanarak yükleyin.

Diğer tüm seçenekler için özgür hissedin (örnek vermek gerekirse x ten az tropi puanı varsa resimleri kaldırın,veya X in altında beğenisi varsa Adminlerin seçebileceği bir üye imzası belirleyin)

İlk yazıda belirtildiği gibi,bu eklenti beta 1 içindir,XenForo nun ileriki versiyonlarında güncellenecektir.
 

Ekli dosyalar

DieseL

BıçKıN Admin
Yönetici
Yönetim Ekibi
Katılım
9 Şub 2016
Mesajlar
645
Reaction score
831
Puanları
93
Konum
Tekirdağ
Web sitesi
www.xenforo.web.tr
PHP Versiyonu
PHP v7.1.x
XenForo Versiyonu
XF 1.5.x
Çok güzel bir anlatım olmuş geliştiricilerin ve arayış içersinde olan kullanıcıların işine çok yarayacaktır.
 

apocalypse

Yönetici
Yönetim Ekibi
Katılım
9 Haz 2014
Mesajlar
1,018
Reaction score
1,044
Puanları
113
Web sitesi
xenforo.web.tr
PHP Versiyonu
PHP v7.0.x
XenForo Versiyonu
XF 1.5.x
Düzenlemeler için ayrıca teşekkür ederim @DieseL
 

Renksizgazete

Lisanslı Üye
Katılım
23 Haz 2016
Mesajlar
192
Reaction score
120
Puanları
43
Yaş
49
Konum
istanbul
Web sitesi
www.flatcast.biz
PHP Versiyonu
PHP v5.3.x
XenForo Versiyonu
XF 1.5.x
Hocam Emeklerinize saglık bir cok arkadasın işine yarıyacak cok faydalı bir paylasım olmus tesekkürler
 
Üst