Skip to Content

Flag sayısını bildiren blok?

hunanka, Cuma, 20/11/2009 - 20:40 tarihinde.

Burada verilen kodları flag sayısını göstermek için kullanabilir miyiz? Üzerinde ne gibi bir değişiklik yapmak lazımdır?

<?php
$yorumlar = db_result(db_query('SELECT count(*) FROM {comments} WHERE status = 0'));
if($yorumlar) print 'onaylanmayan yorumlar (' .$yorumlar. ')';
?>

onur serkan, Cmt, 21/11/2009 - 16:20 tarihinde.

Flag eklentisinin kendi API'si var. Bu sayede flag sayısını elde etmek için kendi sql sorgunu yazmana gerek kalmıyor; bu işlem için flag API'sinde yer alan hazır fonksiyonları kullanıyorsun.

Örneğin kodu node.tpl.php gibi $node nesnesinin tanımlı olduğu bir yerde kullanıyorsan aşağıdaki kullanım yeterli:

$flag = flag_get_flag('flag_adi') or die('flag_adi flagi bulunamadı');
print "Bu içeriği işaretleyenlerin sayısı:";
print $flag->get_count($node->nid);

Eğer bir blokta kullanacaksan bu durumda url'den node id değerini almak ve kodu aşağıdaki şekilde düzenlenmek gerekir:

if (arg(0) == 'node' && is_numeric(arg(1))) $nodeid = arg(1);
$flag = flag_get_flag('flag_adi') or die('flag_adi flagi bulunamadı');
print "Bu içeriği işaretleyenlerin sayısı:";
print $flag->get_count($nodeid);

hunanka, Cmt, 21/11/2009 - 18:46 tarihinde.

Çok teşekkür ederim. Ancak Flag içeriğinin node ID sini nasıl tespit edebileceğimi daha bulmadım. Herhangi bir içeriğin node ID si nasıl tespit edilebiliyor?

onur serkan, Pzr, 22/11/2009 - 03:27 tarihinde.

Kafam karıştı şimdi; bloğu hangi sayfalarda göstermek istiyorsun? Düğüm sayfalarında değil mi?

hunanka, Pzt, 23/11/2009 - 14:19 tarihinde.

İçeriğe eklenen Flag varsa, Flag bulunan içeriğin altında Hata olduğu bildiriliyor.
Ancak benim istediğim şöyle bir şey Editör Yönetim Sayfası adında sadece adminin görebileceği bir sayfa yaptım. Bu sayfada tek bakışta görmek istediğim veriler çeşitli şekilde bulunuyor. Bunu daha sonra bir ders olarak yazmayı düşünüyorum. Proje tamamlanınca...
Yapmak istediğim ise şudur;
Editör Yönetim Sayfasında bir blok olarak bakar bakmaz, kaç tane flag var onu görmek istiyorum.

X Adet Flag Bulunmaktadır. (içeriklere eklenen flag sayısı)
Tüm Hataların Listesi (link)

Not: Ben Flag meselesini, içerikte bulunan hataların geri bildirimi için kullanıyorum.

onur serkan, Pzt, 23/11/2009 - 15:19 tarihinde.

Şimdi anladım, senin sorduğun bir içeriğin kaç defa işaretlendiği değil, belirli bir flag'in sitedeki tüm içeriklerde toplam kaç kez kullanıldığı. Bir başka deyişle, o flag ile işaretlenen toplam içerik sayısı. Bunu da onaylanmayan yorumların sayısını bulmak için yaptığımız gibi yine sql ile kendi sorgumuzu yazarak yapabiliriz. Tahminen aşağıdaki kod işe yarayacaktır:

<?php
$fid = 1; // buraya ilgili flag'e ait id değeri yazılıyor; veritabanındaki flags tablosundan öğrenebilirsin
$isaretlenenler = db_result(db_query('SELECT count(*) FROM {flag_content} WHERE fid = %d', $fid)
);
if($isaretlenenler) print $isaretlenenler. ' adet flag bulunuyor.';
?>

hunanka, Pzt, 23/11/2009 - 18:24 tarihinde.

Çok teşekkür ederim. Ama cehaletimi mazur gör...
veritabanında flag content tablosundan başka tablo bulamadım. flags adlı tablo veritabanın neresindedir...

Flag Content de
Alan/fid        Tip/int(11)
gibi bir açıklama yer alıyor.

Bu durum da $fid = 11; olarak değer girdim. (sanırım hata ettim)
Çünkü böyle bir hata verdi.
Parse error: syntax error, unexpected ';' in /var/www/vhosts/siteadi.com/httpdocs/includes/common.inc(1352) : eval()'d code on line 3

Dip Not: Blok kayıtı yaparken Php yi seçiyorum.

Bu flag content tablosunun içerisinde flags sayısının id sini nasıl bir yöntemle bulabilirim...

onur serkan, Sal, 24/11/2009 - 00:02 tarihinde.

Kodda fazlalık bir ";" kalmış; onu silerek düzelttim. Tekrar deneyebilirsin; bu sefer çalışmalı.

hunanka, Çrş, 25/11/2009 - 20:09 tarihinde.

Şimdi oldu. Teşekkürler ederim. Bu arada bilmeyenler için fid ID sayısını şöyle bulabilirsiniz.
Veritabanında Flag Content'i sol tarafta tıklatırsanız. Phpmyadmin sayfasında sağda açılan sayfada Tara başlığını tıklayınız. Karşınıza gelen tabloda fid sutunun altında bir rakam bulunmalıdır. O rakam fid ID oluyor.
Önemli Not:
1- Bu rakamı görebilmeniz için en az bir flag bulunmalıdır.
2- Bu rakamı onur serkanın verdiği kodda "1" rakamı yerine yazınız.
Ve blok hazır...

Ziyaretçi (?), Cmt, 06/02/2010 - 00:46 tarihinde.

//editör notu: İlgili mesaj buraya taşınmıştır.

orhan, Per, 13/05/2010 - 22:46 tarihinde.

arkadaşlar yeni başlık açmak istemedim. facebook'ta biliyorsun "like/beğen" sistemi var. bunu drupal'de flag ile yapmak mümkün. beğen-vazgeç gibi. benim yapmak istediğim bir içerik altında o içeriğin kaç kişi ve kimler tarafından beğenildiğini göstermek. bu nasıl yapılır?

orhan, Cuma, 14/05/2010 - 22:14 tarihinde.

arkadaşlar konu çok önemli benim için bir fikir yürüten de mi yok?