Aramayan Bulamaz
×
Kendi yazmış olduğunuz blog veya forum olabilir veya herhangi bir scripte eklenti yapmak isteyebilirsiniz. Bu etiket sistemi içeriklerimizin arama motorlarında daha çabuk bulunmasını sağlar. Bunun için iki tane fonksiyon hazırlıyoruz, birincisi konu başlığını kelime kelime bölerek meta keywordse eklemek için , konuyu kaydederken aralarında virgül kullanarak kaydettiğimiz etiketleri de meta keywordse ekliyoruz, diğer fonksiyon ise keywordse eklediğimiz kelimeler + ayrıca etiketler bölümüne eklediğimiz kelimeleri link şeklinde konunun altında belirten fonksiyon.

Etiket Sistemi

İlk fonksiyonumuz:
function etiket($yazi) {
   $yazi = trim($yazi);
   $bul = array(' ','.');
   $yap = array(', ','');
   $yeni = str_replace($bul,$yap,$yazi);
   return $yeni;
 }

Bu fonksiyon ile veritabanından gelen konu başlığındaki boşlukları virgül ile değiştirerek meta keywords bölümüne ekleriz.
Diğer fonksiyonda işler biraz daha karışık, ayrıca eklenen konu etiketlerinde her kelime virgülle ayrılmayabilir,

Etiket Sistemi

her virgül bloğundan sonra ikiden fazla kelime gelebilir, bunları virgülden itibaren parçalayacak bir fonksiyon yazmalıyız, ping atmak, php ile ping atmak şeklindeki etiketleri kelime kelime ayırırsak olmaz. Bunu resimdeki gibi ayıracak fonksiyonumuz:
function blog_tags($yazi){
  $yeni='';
  $yazi = str_replace("'","",str_replace('"','',trim($yazi)));
  $tags = explode(',', $yazi);
foreach($tags as $n_tag){ if(strlen($n_tag)>2){ $yeni .= '<div class="taglink"><a href="sonuc?a='.trim($n_tag).'" title="'.trim($n_tag).'">'.trim($n_tag).'</a></div>'; } } return $yeni; }
Bu fonksiyonları etiket($konubaşlığı); ve blog_tags($konuetiket); şeklinde kullanılır.



Komutların anlamlarını anlatmak gerekirse:



trim() : Cümle veya kelime öbeklerinin başındaki ve sonundaki boşlukları kaldırır.

str_replace() : Bir metindeki veya kelimedeki değiştirmek istediğimiz yerleri yeniden düzenlememizi sağlar. (A harflerini B harfi ile değiştir gibi)

explode() :
Belirlediğimiz karakterden başlayarak cümleleri veya kelime öbeklerini dizi değişkeni haline getirir. Bu fonksiyonda virgülden itibaren kelimeleri ayırıp $tags isimli değişkene dizi değişkeni olarak aktardık.

foreach : Bir çeşit döngüdür. $tags isimli dizi değişkenindeki her değeri döngü ile $n_tag isimli değişkene aktardık ve ekrana yazdırırken div içinde a etiketi ile bastırdık.

return : Fonksiyonlarda dışarıya değer döndürmek için kullanılır.

Bunları da okumak isteyebilirsiniz

4 Yorum

image

kamil şakrak

04 March 2014 10:35

Abi peki aynı kelimeler varsa onu silsin diğerlerini eklesin onu nasıl yaparız ?

image

Cryptograph

04 March 2014 23:29

$tags = explode(',', $yazi); bu komut gelen değerleri array tipine çeviriyor, array_unique() fonksiyonu ile tekrarlayan kelimeleri engelleyebilirsiniz
$tags = explode(',', $yazi); bu komutun altına
$tags = array_unique($tags); yazarsanız aynı kelimeden iki tane varsa onu bir daha eklemez.

image

niho

02 January 2017 04:14

Merhaba arkadaşım, bu kodlar ile etiketleri alıyorum ancak $yeni .= '

'; kodu ile arama yapamıyorum.



mümkünse kullandığın sonuc.php yi bana verebilir misin. Çünkü arama yapabilmesi için sanırım bu sonuc.php sayfasındaki kodlara ihtiyaç var. teşekkürler.

image

Cryptograph

05 January 2017 05:14

Merhaba, gelen etiketlere göre de veritabanında arama yaptırabilmeniz için içeriklerin bulunduğu tablodan etiketlerde de arama yaptırmanız gerekmekte, örnek olarak benim sitemde çalışan sorgu şu şekilde

$sorgu="select * from blog where baslik like '%".$_GET["a"]."%' or taglar like '%".$_GET["a"]."%'"
yani arama işlemini hem başlıkta hem etiketler arasında yaptırınca ve arama şartı olarak "ya da" anlamına gelen "or" sorgusuyla yaptığınızda istediğinizi yapmış olursunuz.

Sen de bir yorum bırak