Gönderen Konu: Özelleştirilmiş profil alanları yaratmak  (Okunma sayısı 1330 defa)

Çevrimdışı Abdullah

  • Osc Kurucu
  • 1. SINIF ÜYE
  • ********
  • İleti: 41.478
  • Puan -1500
  • Cinsiyet: Bay
  • qwqwqw
    • Profili Görüntüle
    • Onehost.net
Özelleştirilmiş profil alanları yaratmak
« : 22 Ocak 2008, 23:06:14 »

ÖNEMLİ NOT: Buradaki doküman, [unknown] isimli kullanıcı tarafından yazılmış olup, tarafımdan Türkçe'ye çevrilmiştir. Amacı; üye profillerinde, bilgi girilebilecek yeni alanlar yaratmak.
Dokümanın orijinalini burada bulabilirsiniz: http://www.unknownbrackets.com/tutorials/custom-profile
Tarafımdan bazı yerlere küçük açıklamalar konmuştur, bütünlüğü bozmamak için belirtmedim.


SMF'de profil alanını özelleştirme, yeni profil alanları ekleme

İyi bir forum sahibi olmanın en önemli özelliklerinden biri, özelleştirilebilmesidir. Büyük değişimlerin yapıldığı özelleştirmelerde kullanıcılarınızın kendilerine ait bilgilerin profillerinde saklanmasını sağlayabilir. SMF, size bunu sağlayabilecek şekilde tasarlanmış ve istediğiniz şekilde özelleştirebilme imkanları sunmaktadır.
Burada okuyacağınız bilgiler SMF forumu için hazırlanmıştır ve diğer yazılımlarla çalışmayacaktır.

İstediğiniz tam olarak nedir?

Planlamak, hepinizin bildiği gibi, herşeyin anahtarıdır. Bunun için, öncelikle bazı şeyleri bilmeniz gerekir; ne türde şeyler istiyorsunuz, nasıl görünmesini istiyorsunuz, nerede istiyorsunuz ve nasıl seçeneklere sahip olmasını istiyorsunuz.. Bu rehberde birkaç değişik örnekle kendi isteğinize uygun özellikleri nasıl üretebileceğinizi anlatacağız. (Sade yazı, listeden seçme, seçme kutuları ve büyük yazı alanlrı gibi..) Elbette daha fazlası da mümkün; biz ise başlangıç için sadece örneklendireceğiz.

Şimdi bir sonraki adım, bunlardan hangisini kullanmak istediğinizi belirlemek. Örneğin, kullanıcının bir profil alanına sadece amaca özel (kısıtlı) bilgiler girmesini istiyorsanız, işinizi seçme listesi görecektir. Bununla birlikte, mesela lakabını soracaksanız, küçük bir yazı kutusu kullanırsınız. Ya da örneğin özgeçmiş girilmesini istiyorsanız geniş bir yazı alanına ihtiyacınız olacaktır.
Daha sonra seçiminizin nereden görünmesini istediğinizi belirlemelisiniz. Örneğin yazılan özgeçmişin kullanıcının her mesajında isminin altında görülmesini muhtemelen istemezsiniz; ama profiline bakıldığında görülmesini isteyebilirsiniz. Ya da özgeçmişlerini kayıt sırasında sormak istemeyebilirsiniz, belki sonra doldurulabilecek bir özellik olarak kullanmak istersiniz..

Tema sistemi meselesi

Şimdi özelleştirilmiş profil alanları yaratmak için kullanacağımız yöntem, SMF'in bize sunduğu tema sistemidir. Bu sistem sayesinde, veritabanı üzerinde herhangi bir değişiklik yapmanıza veya girilen bilgilerin nerede saklandığı konusunda endişe duymanıza gerek kalmayacaktır. Her ne kadar böyle özelleştirilmiş alanları bir yönetim panelinden yönetmek mümkün de olsa, burada anlatacağımız metod, kontrolü elinizde tutmanız, neyin nerede ve nasıl görüneceğiniz kendinizin belirleyebilmesi açısından, daha kullanışlıdır. Ek olarak, PHP bilmenize de gerek yok; sadece kopyala/yapıştır yapmayı bilin yeter ;)

Her zaman hatırlamanız gereken önemli bir konu: tema sisteminin doğasından ötürü, kullanacağınız kodlarda veya yazılarda tek tırnak işareti ( ' ) varsa, bunun tek başına değil de, bir ters bölü ( \ ) işaretiyle kullanılması gerekir. Ör:  Ahmet'e gittim yerine; Ahmet\'e gittim.
Yanısıra, HTML ve CSS bilmeniz, işinizi büyük ölçüde kolaylaştırır. Bunları www.w3schools.com adresinden ücretsiz öğrenebilirsiniz. (İngilizce)

Bu özelleştirmeleri yaparken, bunların sadece o an kullanımdaki temada mı yoksa tüm temalarda mı görüneceğini de seçebilmeniz mümkün. Genellikle, özelleştirilmiş profil bilgileri tüm temalarda görünsün istenecektir. Bundan dolayı burada bu yöntem üzerinde duracağız. Bununla birlikte, bazı özellikler için, tüm temalarda kullanmak istediğinizde, varsayılan temayla beraber diğer temaların da dosyalarını düzenlemeniz gerekebilir. Varsayılan temayı değiştirdiğiniz takdirde, forum sürümünüzü yükseltmeye karar verirseniz, aynı değişiklikleri tekrar yapmanız gerekecektir. Mümkünse, varsayılan temanın bir kopyasını alın, bunu düzenleyin ve kullanın, varsayılan temanın kullanılmasını da engelleyin. (Yeni bir tema oluşturmak gibi düşünebilirsiniz)

Bu özelleştirmeleri yapmak için öncelikle kendinize bir adet güçlü bir düzenleme programı bulun. Dilerseniz notepad, wordpad gibi programarı kullanabilirsiniz. Programlama diline uygun renklendirme yapmak istiyorsanız ConTEXT'i tavsiye edebilirim.

Basit bir yazı alanı eklemek

Bu, muhtemelen en basit ve en genel yöntem. Bu özelleştirmenin örneği için, kullanıcının gerçek ismini yazmasını istediğimiz bir yazı alanı oluşturacağız.
1. /Themes/sizin_temanız/Profile.template.php dosyasını açıyoruz. Eğer kullandığınız temada bu dosya yoksa, varsayılan temadan bir kopya alıp buraya koyun.

2. Bu kodu arayın:
Kod: [Seç]
<td><input type="text" name="websiteUrl" size="50" value="', $context['member']['website']['url'], '" /></td>Not: Bu kod sizin dosyanızda başka özelleştirmelerden dolayı biraz farklı olabilir.
Hemen altına şunu ekleyin:
Kod: [Seç]
</tr><tr>
<td><b>Gerçek isim: </b></td>
<td><input type="text" name="default_options[profile_gercek_isim]" size="50" value="', @$context['member']['options']['profile_gercek_isim'], '" /></td>
Not: Burada kullanılan "default_options" ifadesi, yaratacağımız yeni profil alanının tüm temalarda işlemesi içindir. Sadece o an kullanılan temada çalışması için "options" kullanın.

3. Eğer "Gerçek isim" adı altında yarattığımız bu alanın, kullanıcının profiline bakıldığında görüntülenmesini istiyorsak, bulacağız:
Kod: [Seç]
<td><a href="', $context['member']['website']['url'], '" target="_blank">', $context['member']['website']['title'], '</a></td>Hemen altına ekleyeceğiz:
Kod: [Seç]
</tr><tr>
<td><b>Gerçek isim: </b></td>
<td>', @$context['member']['options']['profile_gercek_isim'], '</td>

Boş bırakmışlarsa bu alan görünmesin mi? O zaman onun yerine bunu kullanın:
Kod: [Seç]
', !empty($context['member']['options']['profile_gercek_isim']) ? '</tr><tr>
<td><b>Gerçek isim: </b></td>
<td>' . $context['member']['options']['profile_gercek_isim'] . '</td>' : '', '

4. Eğer bu "Gerçek isim" alanının, kullanıcının yolladığı her mesajda üye adı altında görünmesini istiyorsak, (örneğin yeni üye, mesajlar : 40 gibi..) bu da mümkün. Açıyoruz: /Themes/sizin_temanız/Display.template.php Arıyoruz:
Kod: [Seç]
// Show the member's gender icon?Hemen üstüne, şunu ekliyoruz:
Kod: [Seç]
if (!empty($message['member']['options']['profile_gercek_isim']))
echo 'Gerçek isim: ', $message['member']['options']['profile_gercek_isim'], '<br />';
Bunun gibi aynı şekilde başka alanlar da ekleyebilirsiniz.

İstenilen şeyi listeden seçtirmek

Bu da yukarıdakiyle aynı yöntemdir. Yukarıdaki yönergeleri izleyin, yalnızca Profile.template.php adımında şunu kullanın:
Kod: [Seç]
</tr><tr>
<td><b>Evcil hayvanınız: </b></td>
<td><select name="default_options[profile_ev_hayvani]">
<option', @$context['member']['options']['profile_ev_hayvani'] == 'Kus' ? ' selected="selected"' : '', '>Kus</option>
<option', @$context['member']['options']['profile_ev_hayvani'] == 'At' ? ' selected="selected"' : '', '>At</option>
<option', @$context['member']['options']['profile_ev_hayvani'] == 'Kopek' ? ' selected="selected"' : '', '>Kopek</option>
<option', @$context['member']['options']['profile_ev_hayvani'] == 'Kedi' ? ' selected="selected"' : '', '>Kedi</option>
</select></td>
Kalan diğer basamaklarda, "profile_gercek_isim" ve "Gerçek isim" yerine "profile_ev_hayvani" ve "Ev hayvanınız" ifadelerini kullanacaksınız.

Seçme kutuları eklemek

Yine benzer şekilde, Profile.template.php basamağında, bunu ekleyin:
Kod: [Seç]
</tr><tr>
<td><b>Gerçek isim: </b></td>
<td><input type="checkbox" name="default_options[show_gercek_isim]" value="1"', @$context['member']['options']['show_gercek_isim'] ? ' checked="checked"' : '', ' class="check" /></td>
Şimdi profil alanında gerçek ismin görünüp görünmemesini kullanıcı kendisi seçebilir. Kullanıcının seçimine göre gerçek ismin görünmesini/görünmemesini şu şekilde ayarlayabilirsiniz:

1. Yöntem:
Kod: [Seç]
', !empty($options['show_gercek_isim']) ? 'Merhaba!' : '', '2. Yöntem:
Kod: [Seç]
';

if (!empty($options['show_gercek_isim'])
{
echo 'Merhaba!';
}

echo '
İki yöntemde de eğer kullanıcı gerçek isim alanını doldurmuşsa, "Merhaba!" yazısını görüntüler. Üyenin gerçek ismini çağırmak için de bunu kullanacaksınız: $options['profile_gercek_isim']
Eğer Display (Konuların görüntülendiği) veya InstantMessages (Özel mesajların görüntülendiği) temalarda üyelerin gerçek isimlerini çağırmak isterseniz o zaman da kullanacağınız budur: $message['member']['options']['show_gercek_isim']

Büyük bir yazı alanı eklemek

Örneğin, kullanıcıların özgeçmişlerini yazabilecekleri bir alan oluşturmak istiyorsunuz, Profile.template.php basamağında bunu kullanın:
Kod: [Seç]
</tr><tr>
<td><b>Özgeçmiş: </b></td>
<td><textarea name="default_options[profile_ozgecmis]" rows="4" cols="80" class="editor">', @$context['member']['options']['profile_ozgecmis'], '</textarea></td>

Çevrimdışı Hamza

  • Osc Kurucu
  • 1. SINIF ÜYE
  • ********
  • İleti: 161.428
  • Puan 13008
  • Cinsiyet: Bay
  • Dünyanın En Çok Mesaj Gönderen Üyesi :))
    • Profili Görüntüle
    • Hosting
Özelleştirilmiş profil alanları yaratmak
« Yanıtla #1 : 22 Ocak 2008, 23:10:32 »
eyw saol

Çevrimdışı Dragon Fifacı

  • Osc Çizik Üye

  • 3. SINIF UYE
  • *
  • İleti: 4.324
  • Puan 2001
  • Cinsiyet: Bay
    • Profili Görüntüle
Özelleştirilmiş profil alanları yaratmak
« Yanıtla #2 : 07 Mayıs 2008, 15:42:19 »
  paylaşım için saol

Çevrimdışı black_tower91

  • 4.SINIF UYE
  • **
  • İleti: 2.472
  • Puan 48
  • Cinsiyet: Bay
  • DAvid Villaa
    • MSN Messenger - black_tower91@hotmail.com
    • Profili Görüntüle
Özelleştirilmiş profil alanları yaratmak
« Yanıtla #3 : 07 Mayıs 2008, 22:21:22 »
saoll


Çevrimdışı €scap€

  • 2. SINIF UYE
  • ****
  • İleti: 8.602
  • Puan 1409
  • Cinsiyet: Bay
    • Profili Görüntüle
Özelleştirilmiş profil alanları yaratmak
« Yanıtla #4 : 11 Haziran 2008, 15:59:36 »
sagol paylasim icin

Çevrimdışı Saw

  • 2. SINIF UYE
  • ****
  • İleti: 9.123
  • Puan 1000
  • Cinsiyet: Bay
  • | |......S€N! S€V!Y0RUM......| |
    • Profili Görüntüle
Özelleştirilmiş profil alanları yaratmak
« Yanıtla #5 : 26 Ağustos 2008, 00:21:57 »
TEŞEKKÜRLER