Neler yeni

Foruma hoş geldin 👋, Ziyaretçi

Forum içeriğine ve tüm hizmetlerimize erişim sağlamak için foruma kayıt olmalı ya da giriş yapmalısınız. Foruma üye olmak tamamen ücretsizdir.

  • Forumdan daha fazla yararlanmak için, profilinizi telefon numaranız 📱 ile doğrulayın ve daha ayrıcalıklı olun 😉
    Daha fazla bilgi!

Genel forum filtrelerini tanımlamayı kolaylaştırın!

Ceyda

Banned
Yasaklı
SMS onaylı
Kullanıcı
Katılım
18 Şub 2024
Mesajlar
178
Çözümler
1
Filtreleri döndürmeden önce çağırır.

Forum türüne özgü filtreleriniz varsa bu sorun değildir, ancak herhangi bir nedenle bir filtrenin ayarlanıp ayarlanmadığını kontrol etmek isterseniz, forum türü işleyicileri tarafından da kullanılabilen tüm forum türleri için yeni filtreler oluşturmayı zorlaştırır. Soyut forum türü işleyicisini tüm forum türlerine bir filtre uygulayacak şekilde genişletmek mümkün değildir, bu nedenle bunu yapmanın tek yolu genişletmektir, ancak önce ana işlevi çağırmam gerektiği için zaten çalıştı, ancak henüz tanımlamadığım için özel filtrelerim hakkında hiçbir şey bilmeyecek.

Şu anda yapmam gereken şey, denetleyici yöntemini genişleterek yeni bir filtre eklemek, ancak daha sonra forum türü işleyicilerinde aynı filtreleri tekrar kontrol etmek, çünkü ayarlanıp ayarlanmadığını kontrol etmem gerekiyor, ancak bunu yapmak için sadece ayarlanıp ayarlanmadığını kontrol etmek yerine girişi yeniden filtrelemem gerekiyor. Buna gerek olmamalı.

Yapılması gereken tek şey bundan önce:

XF\Pub\Controller\Forum::getForumFilterInput$filters = $forum->TypeHandler->getForumFilterInput($forum, $this->request, $filters);getForumFilterInput()$forum->TypeHandler->getForumFilterInput()$filters

PHP:
PHP:
$filters = $forum->TypeHandler->getForumFilterInput($forum, $this->request, $filters);

ekle:

PHP:
PHP:
$filters = $this->getAdditionalFilterInput($forum, $this->request, $filters);

ve sonra aynı işlevi yapan bir işleve sahip olun - uzatılmadığı sürece filtreleri döndürür: XF\ForumType\AbstractHandler::getForumFilterInput

PHP:
PHP:
public function getAdditionalFilterInput(Forum $forum, Request $request, array $filters): array
{
return $filters;
}
Daha sonra yeni global filtremi burada tanımlayabilirim ve ayarlanıp ayarlanmadığını kontrol edebilmem için forum türü filtre işlevinde mevcut olacaktır.

Umarım bu 2.3'e kaydırılabilir çünkü yukarıdakiler eklenmesi gereken tek şeydir.

Sadece kullanım durumunu genişletmek için şunu yapmaya çalışıyorum:
  • Genel tarih filtresi ekleme
  • URL'de geçilmemişse, belirli koşullar altında belirli forum türlerinde aynı tarih filtresini uygulayın
Şu anda denetleyicide filtreyi ayarlıyorum, böylece URL'de geçirilirse çalışır, ancak forum türü işleyicisinde henüz mevcut değil, çünkü forum türü işleyici filtre işlevi genişletilmiş denetleyici işlevimden önce çalışıyor, bu yüzden istek URL'sinde olup olmadığını bilmiyorum. Bu, filtreyi bu forum türü için manuel olarak ayarlamak isteyip istemediğimi belirlemek için, bunu başka bir yerde zaten yapıyor olsam bile, forum türü işleyicisinde istek girişini tekrar filtrelemem gerektiği anlamına gelir.

Bu yeni işlevin eklenmesiyle, filtre forum türü işleyicisine ulaştığında zaten ayarlanmış olacak ve istekte tekrar geçilip geçilmediğini kontrol etmem gerekmeyecek, sadece içinde olup olmadığını kontrol edeceğim, bu da kod tekrarını önleyecektir. $filters$filters
 

Foruma hoş geldin 👋, Ziyaretçi

Forum içeriğine ve tüm hizmetlerimize erişim sağlamak için foruma kayıt olmalı ya da giriş yapmalısınız. Foruma üye olmak tamamen ücretsizdir.