- Katılım
- 3 Haziran 2010
- Mesajlar
- 1,490
- Reaction score
- 49
vBulletin 3.8.x versiyon için bir makale
Merhaba vBulletin sever arkadaşlar, site sahipleri ve yazarlar. Bugün buradaki dersimiz vBulletin sitemizde istediğimiz bir yerde nasıl üye avatarları çalıştırılır bunu kavrayacağız. Adımları takip eder iseniz, az da işinize yarayacak bilgiler edinebileceksiniz. Eğer imagepath'iniz, yani resim sisteminiz [DB] veritabanı dosya sisteminde ise, o zaman bu biraz kötüdür ve zordur fakat şöyle açıklayarak başlıyorum. Evet imagepath'i veritabanında olan bir vBulletin sitesi için postbit şablonundan bir örnek verelim;Postbit şablonu:
<img class="inlineimg" src="image.php?u=$post[userid]" height="30px" width="30px" border="0" />
Şablonun imagepath php değeri kodu: $post[userid]
Yani eğer ki file system kullanıyorsanız, üstteki değer ile resim/avatar çekildiğini anlamış olacaksınız tabi bu bir örnektir.
2. Örnek adım ise Forumhome_loggedinuser şablonu:
<img class="inlineimg" src="image.php?u=$loggedin[userid]" height="30px" width="30px" border="0" />
Şablonun imagepath php değeri kodu: $loggedin[userid]
Şunu unutmayalım ki; hangi şablonu isterseniz, yani nerede avatar çıkmasını isterseniz o bölümün şablonunu bulup çalışmanız gerekir. Misal üstteki $loggedin[userid] üyenin avatarını çekmesi için değer kodudur.
- İşte bazı örnek şablonlar yani bu şablonların imagepath kodlaması:
- $loggedin[userid]
- userid
- avatarurl [plug-in olacak ise.]
- $thread[postuserid] <--- post user id olmalı (en son konularda)
- userid
- avatarurl [plug-in olacak ise.]
- $userinfo[userid]
- userid
- avatarurl [plug-in olacak ise.]
- $post[userid]
- userid
- avatarurl [plug-in olacak ise.]
- $today[userid]
- userid
- avatarurl [plug-in olacak ise.]
- $user[userid]
- userid
- avatarurl [plug-in olacak ise.]
- $pm[userid]
- userid
- avatarurl [plug-in olacak ise.]
- $örnek[userid] <--- user id'si imagepath için bir değerdir
- userid
- avatarurl [plug-in olacak ise.]
- $loggedin[userid]
Not: Eğer bu üstteki açıklamadakini kullanırsanız, o zaman noavatar.gif(ler) asla çalışmaz. Çünkü plug-in desteği yoktur ve image.php'den gücünü çekmektedir. (Şayet üyenin avatarı varsa.) Eğer siz, noavatar.gif(ler)in gösterilmesini ister iseniz, (yani üyelerinizde avatar olmadığı zaman) o zaman şimdi belirteceğim plug-in kodlamasını kullanmak zorundasınız. Eğer beni anlayamazsanız, lütfen bu linki izleyiniz [iyi bir sebebiyet ile]: http://www.vbulletin.org/forum/showthread.php?t=240445 Online arkadaşlarım pop-up avatarlı eklentim gördünüz mü? Aşağıya dikkat edelim şimdi;
PHP:
require_once('./includes/functions_user.php'); if($buddy[userid])
$buddy[avatarurl] = fetch_avatar_url($buddy[userid]);
if (!$buddy[avatarurl])
{
$buddy[avatarurl] = $stylevar['imgdir_misc'] . '/noavatar.gif';
}
else
{
$buddy[avatarurl] = $vbulletin->options['bburl'] . '/' .
$buddy[avatarurl][0];
}
Evet en üstteki yazımızda incelersek $değer[userid] var idi. Fakat plug-in'de biraz farklı. id yerine avatarurl yazmak zorundayız neden mi?
Çünkü plug-in içersinde şu kodlara dikkat edelim;
if($buddy[userid])
$buddy[avatarurl] = fetch_avatar_url($buddy[userid]);
Gördüğünüz gibi olay budur.
Peki böyle bir plug-in yazdık diyelim nasıl ekleriz?
Admincp ---> Plug-in ve Ürün Yönetimi ---> Yeni plug-in ekle:
Ürün: vBulletin
Hook noktası: misc_buddylist_bit
Tüm kodları ekleyin ve "aktif" kutusunu seçerek kayıt edin ve çıkın.
Tabi eğer bu plug-in olmadan avatar gösterimi isterseniz, en üst kısımda ki gibi belirttiklerimi hatırlayınız;
PHP:
<img class="inlineimg" src="image.php?u=$buddy[userid]" height="30px" width="30px" border="0" />
Şimdi tamamdır herşey. Ama son kez diyorum eğer bunu kullanırsanız noavatar.gif çalışmaz.
avatarpath / imagepath için daha zor bir kodlama örneği yazıyorum şimdi dikkatlice okuyalım. EĞER Kİ FTP-CUSTOM SİSTEMİ KULLANIYORSANIZ YADA BAŞKA BİR YÖNTEM DENEMEK İSTİYORSANIZ, o zaman bu adımları takip edelim:
Evet arkadaşlar aşağıda ki kodlama sistemi, loggedin users yani online üyeler için SQL tablo php değerleridir. Dosyası ise, index.php veya forum.php (hangi şekil kullanıyor iseniz) ve deneyecek olursanız, lütfen YEDEK ALARAK DENEYİNİZ!. index.php Veya forum.php, index.php, board.php (nasıl kullanıyor iseniz,) açın ve bulun:
PHP:
$forumusers = $db->query_read_slave("
SELECT
user.username, (user.options & " . $vbulletin->bf_misc_useroptions['invisible'] . ") AS invisible, user.usergroupid,
session.userid, session.inforum, session.lastactivity, session.badlocation,
IF(displaygroupid=0, user.usergroupid, displaygroupid) AS displaygroupid, infractiongroupid
$hook_query_fields
FROM " . TABLE_PREFIX . "session AS session
LEFT JOIN " . TABLE_PREFIX . "user AS user ON(user.userid = session.userid)
$hook_query_joins
WHERE session.lastactivity > $datecut
$hook_query_where
" . iif($vbulletin->options['displayloggedin'] == 1 OR $vbulletin->options['displayloggedin'] == 3, "ORDER BY username ASC") . "
");
Evet üstteki değerler, çevrim içi üyeler değerleridir. Tabi şimdi bu kodlama ile işimiz yok yani diğer kodları dikkate almıyoruz ve aşağıda değiştirilmiş hali ile karşılaştırarak bakıyoruz:
PHP:
$forumusers = $db->query_read_slave("
SELECT
user.username, (user.options & " . $vbulletin->bf_misc_useroptions['invisible'] . ") AS invisible, user.usergroupid,
session.userid, session.inforum, session.lastactivity, session.badlocation,
NOT ISNULL(customavatar.userid) AS hascustomavatar, customavatar.dateline AS avatardateline, customavatar.width AS avwidth, customavatar.height AS avheight')
IF(displaygroupid=0, user.usergroupid, displaygroupid) AS displaygroupid, infractiongroupid
$hook_query_fields
FROM " . TABLE_PREFIX . "session AS session
LEFT JOIN " . TABLE_PREFIX . "user AS user ON(user.userid = session.userid)
LEFT JOIN " . TABLE_PREFIX . "avatar AS avatar ON (avatar.avatarid = user.avatarid)
LEFT JOIN " . TABLE_PREFIX . "customavatar AS customavatar ON (customavatar.userid = user.userid) ") . "
$hook_query_joins
WHERE session.lastactivity > $datecut
$hook_query_where
" . iif($vbulletin->options['displayloggedin'] == 1 OR $vbulletin->options['displayloggedin'] == 3, "ORDER BY username ASC") . "
");
Gördünüz mü? Farkları ele alalım (avatar kodlaması için) ;
Birinci sorgu:
PHP:
NOT ISNULL(customavatar.userid) AS hascustomavatar, customavatar.dateline AS avatardateline, customavatar.width AS avwidth, customavatar.height AS avheight')
İkinci sorgu:
PHP:
LEFT JOIN " . TABLE_PREFIX . "avatar AS avatar ON (avatar.avatarid = user.avatarid)
LEFT JOIN " . TABLE_PREFIX . "customavatar AS customavatar ON (customavatar.userid = user.userid) ") . "
Evet 1 ve 2 sorguda görmüş olduk. Ve şimdi forumhome_loggedinuser şablonumuzu açalım ve aşağıdaki kodları eski kodlar ile değiştirelim:
PHP:
<if condition="$show['comma_leader']">, </if>$stylevar[dirmark] <if condition="$loggedin[avatarurl]"><img height="30px" width="30px" class="inlineimg" src="$loggedin[avatarurl]" border="0" /></if> <a href="member.php?$session[sessionurl]u=$loggedin[userid]">$loggedin[musername]</a>$loggedin[invisiblemark]$loggedin[buddymark]
imagepath[!] değeri için aşağıdaki kodları hatırlayalım[!] :
<img height="30px" width="30px" class="inlineimg" src="$loggedin[avatarurl]" border="0" />
Pekala, son açıkladığım kodlamayı kullanmanızı önermiyorum ben burada çünkü yoğun ve sıkı bir kodlama örneğidir ve dosya (.php) yedeğinizi almanız önerilir. Eğer ki çözemediyseniz veya anlamadıysanız bir şey, tekrar gözden geçirmenizi öneririm sorunuz olursa eğer yanıtlar, yardım ederim. Şimdilik dersimiz bu kadar daha sonra yazarsam eklemeye devam edeceğim kolay gelsin ve iyi çalışmalar.
Bu makalem, vBulletin.org'da onaylanmıştır aşağıdaki linkten orijinal açıklamasına göz atabilirsiniz tr-ing. çeviriside tümü ile bana aittir buyrun;
http://www.vbulletin.org/forum/showthread.php?t=246994
Saygılar sunarım,
BlackThorn