PAYLAŞ
Joomla!'da Jstring Kullanımı - substr örneği

Jstring kullanımı Joomla!’nın utf-8 uyumluluğunu sağlıyor. PHP stringlerden her ne kullanırsanız kullanın önüne (Joomla 1.5 sürümlerden itibaren) JString:: eklemeniz o stringin Joomla için doğru çalışmasını sağlıyor. Örnek vermek gerekirse, sitede kullanmaya başladığım Chrono Comments bileşenine ait son yorumlar modülünde yaptığım düzeltmeyi vermek isterim. Bunu üreticiye de daha evvel bahsettiğim sql tabloları oluşturma yöntemindeki eksiklik ile birlikte evelsi gün bildridim. Şimdi substr kullanımına iki şekilde bakalım ve farkı görelim.

substr ile karakter almada utf8 sorunu

 

Jstring kullanımı Joomla!’nın utf-8 uyumluluğunu sağlıyor. PHP stringlerden her ne kullanırsanız kullanın önüne (Joomla 1.5 sürümlerden itibaren) JString:: eklemeniz o stringin Joomla için doğru çalışmasını sağlıyor. Örnek vermek gerekirse, sitede kullanmaya başladığım Chrono Comments bileşenine ait son yorumlar modülünde yaptığım düzeltmeyi vermek isterim. Bunu üreticiye de daha evvel bahsettiğim sql tabloları oluşturma yöntemindeki eksiklik ile birlikte evelsi gün bildridim. Şimdi substr kullanımına iki şekilde bakalım ve farkı görelim.

Bileşenin hata tesbit ettiğim modülüne bakalım. Ben 10 yorum için ilk 10 karakteri gösterecek şekilde modülü kurdum. Modülü ilk yayınladığımda görünüm hemen sağdaki gibiydi. Tabii ben bu sorunu Allah’tan daha evvel yaşadığımdan çözmekle uğraşmam gerekmedi. Önceki sorunu aştığım şekilde bunu da çözebileceğimi ve olası sorunu tahmin ederek modülün dosyasına baktığımda durumun düşündüğüm gibi olduğunu gördüm.

Burada modülün parametrelerinden biri ile gösterilecek yorum metninin karakter sayısını modül yönetiminden giriyorsunuz ve o miktarda gösterim yapıyor. Yani daha evvel kullandığımız substr yöntemine benzer bir yöntemi, en azından muhakkak substr kullanarak gerçekleştiriyor. Burada dikkatimi celbeden nokta sağdaki resimde gördüğünüz karakter basılamayan yerlerin, tam da substr ile kesilen  yerlere denk gelmesi. Eğer saydırdığınız son karakter Türkçe karakter ise utf8’de bu substr böyle bir hata veriyor. Yapmamız gerekn ise bir hata almamak için kullanılan kodda kısa bir ön ilavede bulunmak.

Mevcut kodumuz (satır çok uzun, sonundan epey bir kestim.)

modules/mod_chronocomments/helper.php dosyasında 113. satır
113
'text' => $params->get( 'limittext', 0 ) ? substr(modChronocommentsHelper::censor .......> 

 

Buradaki substr önüne JString ekleyeceğiz.

modules/mod_chronocomments/helper.php dosyasında 113. satır
113
'text' => $params->get( 'limittext', 0 ) ? JString::substr(modChronocommentsHelper::censor .......> 

 

Bizim sorunumuz düzeldi. Düzelmiş halini site üzerinden görebilirsiniz. Sıra sizinkilerde. Ben diğer stringlerde oluşabilecek olumsuz etkileri bilmiyorum. Malum php kim ben kim ama en azından sizin kulağınızda bulunsun, lazım olur.