PAYLAŞ
Joomla Ön Sayfada Karakter Sınırlama

Önceki konumuzda substr ile içeriğimizin gösterdiğimiz karakterinden itibaren dilediğimiz kadar karakteri saydırarak yazdırmayı, böylece belirlediğimiz sayıda karakteri gösterme işlemini metni kesmeden yapmıştık. Ancak resim ve biçimlendirme etiketleriyle başlayan metinlerde bu etiketler kimi zaman gösterilen sınır sayı ve hatta fazlası kadar karakter içerebiliyor. Bu durumda içerik metninden gösterecek bir ksım kalmadığı gibi uzun açıklamalar içeren başlangıç resmi dahi gözükmemekte, dolayısıyla introtext alanı boş çıkmaktadır. O zaman bu etiketleri ayırmak ve sonra saydırıp tekrar ilave etmemiz gerekiyor. strip_tags tek başına yeterli gelmiyor. Bunun da çözümünü kendi yerel çalışmam üzerinde deneyerek buldum. Bir bakalım nasıl oluyor.

Önceki konumuzda substr ile içeriğimizin gösterdiğimiz karakterinden itibaren dilediğimiz kadar karakteri saydırarak yazdırmayı, böylece belirlediğimiz sayıda karakteri gösterme işlemini metni kesmeden yapmıştık. Ancak resim ve biçimlendirme etiketleriyle başlayan metinlerde bu etiketler kimi zaman gösterilen sınır sayı ve hatta fazlası kadar karakter içerebiliyor. Bu durumda içerik metninden gösterecek bir ksım kalmadığı gibi uzun açıklamalar içeren başlangıç resmi dahi gözükmemekte, dolayısıyla introtext alanı boş çıkmaktadır. O zaman bu etiketleri ayırmak ve sonra saydırıp tekrar ilave etmemiz gerekiyor. strip_tags tek başına yeterli gelmiyor. Bunun da çözümünü kendi yerel çalışmam üzerinde deneyerek buldum. Bir bakalım nasıl oluyor.

Bu çözümü bulurken Ercan ÖZKAYA‘nın forumda gördüğüm bir cevabından, php.net‘ten ve joomla.org’dan faydalandım. Öncelikle yapacağımız şey yine

componentes/com_content/views/frontpage/tmpl/default_item.php satır 119’da ya da aktif temamızın aynı dosyası olan

templates/aktif_temamiz/html/com_content/frontpage/default_item.php dosyasındaki şu kodu bulalım:

componentes/com_content/views/frontpage/tmpl/default_item.php satır 119’da

ya da aktif temamızda template override özelliği bu dosya için kullanılmışsa

templates/aktif_temamiz/html/com_content/frontpage/default_item.php dosyasındaki şu kodu bulun

119
<?php echo $this->item->text; ?>

 

Bu sefer şununla değiştireceğiz:

Eğer dosyayı temanızdan düzenliyorsanız satır numarasının değişebileceğini unutmayın. Satır numarasına takılmadan kodu bulup işlemi yapabilirsiniz.
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
<?php
$gosterilecek =100;
$girismetni =$this->item->text;
$girismetni = preg_replace('/<!--.+?-->/s', '', $girismetni);
$girismetni = preg_replace('/\s+/s', ' ', $girismetni);
$temizle = strip_tags($girismetni);
$ayirdet = Jstring::strpos($girismetni, substr($temizle, 100, 100));
 
if (strlen($this->item->text) > $gosterilecek) {
echo (Jstring::substr($girismetni, 0, $ayirdet)) . " ... ";
}
else {
echo $this->item->text;
}
?>

 

Burada yaptığımız şey kısaca şöyle oldu. Önce ilk fonksiyonumuzu sabit tuttuk. 100 karakter sınırlaması yapacağımızı belirttik. Sonra metindeki html yorum alanlarını ve ardından 2’den fazla boşlukları teke indirmek için ayrı ayrı preg_replace işlevini kullandık. Daha sonra tüm etiketleri kaldıran iyi bir temizliği strip_tags ile yaptık. İşimizi doğrudan strip_tags içinde allow değeri belirleyerek bitiremiyoruz. Zira o zaman yine 100 karakter için bu izin verdiğimiz etiketi sayıyor. Biz ise sayımda etiketleri tesbit edip ayrı tutuyoruz ve saydıktan snra aynı yerine iade ediyoruz. Böylelikler etiketler hariç sayım yapabiliyoruz.

Bu fonksiyon çok kararlı değil. Çünkü değeri sınamak gerekiyor ama beni biraz aşıyor. Ben çözebildiğim ve test ettiğim kadarıyla doğru olanı bu haliyle verebilirim.

Güle güle kullanın.

BİR CEVAP BIRAK

Yorumunuzu ekleyin
Buraya adınızı yazın