Özelleştirilmiş profil alanları yaratmak
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:
Code:
<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:
Code:
</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:
Code:
<td><a href="', $context['member']['website']['url'], '" target="_blank">', $context['member']['website']['title'], '</a></td>
Hemen altına ekleyeceğiz:
Code:
</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:
Code:
', !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:
Code:
// Show the member's gender icon?
Hemen üstüne, şunu ekliyoruz:
Code:
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:
Code:
</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:
Code:
</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:
Code:
', !empty($options['show_gercek_isim']) ? 'Merhaba!' : '', '
2. Yöntem:
Code:
';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:
Code:
</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>
Ben burada SMF’ye link veren bir tuÅŸ yapacağım.