PHP Etiket Sistemi (Blog veya Forum için)

Cryptograph 05.11.201211:58 PHP & MySQL 7370    
Facebookta Paylaş

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.

Okuyucu Yorumları (4 Yorum)

kamil şakrak

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

kamil şakrak | 06:35 - 04.03.2014

Cryptograph

$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.

Cryptograph | 19:29 - 04.03.2014

niho

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.

niho | 22:14 - 01.01.2017

Cryptograph

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.

Cryptograph | 23:14 - 04.01.2017

Söz Sırası Sizde

Benzer Konular

Benzer KonularPaylaşmanın asaletini hiçbir zaman bencilliğin çirkinliğine bırakmayın!

​​​​​​​​​​​​​​​​​​​​​​​​​

MERAK EDİLENLER

İLETİŞİM

  • alpay[at]cryptograph.gen.tr
  • İstanbul ikametgah