Anlatacaklarım
Blue Dream ' den alıntıdır.
Orjinal KonuSSI Dersleri – Orta Seviye
Efendim, hepiniz SSI Dersleri - Orta Seviye’ye hoş geldiniz. Bu konuda SSI.php ile biraz daha ayrıntılı bilgileri işleyeceğiz. Tabii ki bu konudakiler tamamen sizlerin SSI Dersleri – Başlangıç Seviyesi’ni okuduğunuzu varsayarak yazılmıştır. Herhangi bir soru sormak ya da yorum yapmak isterseniz lütfen bu mesajın altından devam edin.
***LÜTFEN ‘SSI.PHP’ DOSYANIZDA DEĞİŞİKLİK YAPMAYINIZ***
Bu derslerde gösterilen her şey ‘SSI.php’ dosyası düzenlenmeden yapılmıştır.
Fonksiyonu ihtiyaçlarıma göre nasıl düzenlerim?
SSI’ın esnek yapısı sayesinde fonksiyonları kolayca size uygun hale getirebilirsiniz. Daha iyi anlaşılabilmesi için hemen bir örnek verelim:
Örnek:
Forumunuza girişten önce kullandığınız bir sayfa var. Siz bu sayfada ‘ssi_boardNews’ fonksiyonunu kullanarak belirli bir bölümdeki konuların ilk mesajını görüntülüyorsunuz. Mesela siz bu fonksiyonunun “Duyurular” bölümünüzden –sayfanın uzun olmaması için- sadece 5 konunun ilk mesajlarının ilk 250 karakterinin göstermesini istiyorsunuz.
Belki birçoğunuz bunun imkansız olduğunu düşünüyor, Elmacık ya da HarzeM’in böyle bir kod yazıp yazmadığını araştırıyorsunuz. Ama buna hiç gerek yok, siz de bunu kolayca yapabilirsiniz. Nasıl mı? Hemen bakalım:
Muhtemelen siz fonksiyonları dosyanıza şu şekilde ekliyorsunuz: ‘fonksiyonAdı();’. Ama eğer isteklerinize uygun olmasını istiyorsanız, fonksiyonu çağırırken bazı parametreler girmeniz gerekir.
Eğer bu fonksiyon için bakarsak, aşağıdaki parametreler girilebilir:
<?php
ssi_boardNews($board, $limit, $start, $length, $output_method);
?>
Yapmanız gereken tek şey buraya size uygun değerleri girmek. Yukarıda veridiğimiz örnek için değeler aşağıdaki gibi olmalı:
‘Duyurular’ bölümü IDsi 5 olarak alınmıştır, sadece örnektir.
<?php
ssi_boardNews(5, 5, null, 250, 'echo');
?>$board = 5 – Mesajların alınmasını istediğiniz bölümün IDsi
$limit = 5 – Kaç tane mesajın gösterileceği [En son gönderilen 5 mesajı alır.]
$start = null – Kaçıncı mesajdan itibaren alınmaya başlanacağı [Fazla önemli değil, anlamak için kafa yormayın, null olarak bırakabilirsiniz.]
$length = 250 – Mesajın kaç karakterinin gösterileceği.
$output_method = ‘echo’ – Gösterim şekli [Bu şekilde bırakabilirsiniz.]
Bu kodu sayfanıza eklediğinizde mesajlar örnekteki gibi gösterilecektir.
‘SSI.php’deki fonksiyonların birçoğu bu şekilde ayarlanabilen parametreler içermektedir, böylece kolaylıkla ihtiyaçlarınıza göre düzenleyebilirsiniz. Üstelik ‘SSI.php’de herhangi bir değişiklik yapmanız gerekmez.
Bir fonksiyonunun yapısı nasıldır?
Lütfen bu kısmı atlamayın. İleride göreceğimiz konular için temel oluşturmaktadır.
‘SSI.php’de fonksiyonların yapısı aşağıdaki gibidir:
Tamamını anlamayamazsanız üzülmeyiniz, bu bir Orta Seviye dersi.
1) Fonksiyon adlandırılır ve açılır
2) Veritabanına bağlanılır
3) Fonksiyon için gerekli olan bilgiler veritabanından alınır
4) Alınan veriler değişkenlerin ve dizilerin içine yerleştirilir
5) Bilgiler görüntülenir
Bir fonksiyonun sadece belirli bir kısmını nasıl kullanabilirim? Fonksiyonunun bilgileri istediğim şekilde göstermesini nasıl sağlarım?
Bu birçok kişinin takıldığı ve çok ilginç, uzun ve işlem hacminden öteye geçmeyen çözümler bulduğu bir soru. Bunu ‘SSI.php’de herhangi bir değişiklik yapmadan kolayca yapabilirsiniz. Yukarıdaki örnekte kullandığımız fonksiyonu tekrar ele alalım:
Örnek:
Giriş sayfanızda ‘Duyurular’ bölümünde açılan son 5 konunun ilk mesajlarını göstermek istiyorsunuz ve bunun için ‘ssi_boardNews’ fonksiyonunu kullanacaksınız. Ancak bu fonksiyonun mesaj ikonu ve mesajın gönderilme tarihi gibi bazı ayrıntıları göstermesini istemiyorsunuz. Sizin ihtiyacınız olan sadece mesajın başlığı ve içeriği.
Fonksiyonun yapısını öğrendiğinize göre, istediğinizi kolayca yapabilirsiniz. Bilgilerin görüntülenmesi aşağıdaki kodlar ile yapılıyor:
foreach ($return as $news)
{
echo '
<table border="0" width="100%" align="center" class="ssi_table">
<tr>
<td>', $news['icon'], ' <b>', $news['subject'], '</b><span class="smaller"><br />', $news['time'], ' ', $txt[525], ' ', $news['poster']['link'], '<br /><br /></span></td>
</tr>
<tr>
<td>', $news['body'], '<br /><br /></td>
</tr>
<tr>
<td>', $news['link'], ' | ', $news['new_comment'], '</td>
</tr>
</table>
<br />';
Kodların ilk kısmındaki ‘foreach ($return as $news)’ kodu, bilgilerin bulunduğu $return dizisindeki her bilgi için parantezlerin arasındaki kodun çalıştırılmasını sağlar.
Bu parantezlerin arasını incelediğimizde bize lazım olan şeylerin (konu başlığı -$news['subject']- ve mesaj içeriği -$news['body']-) dışındakileri sildiğimizde istediğimiz görüntüyü elde edebileceğimizi görüyoruz. Önceki örnekte olduğu gibi 5 mesajı, 5 IDli ‘Duyurular’ bölümünden alacak ve mesajların sadece ilk 250 karakterini görüntüleceğiz. [$output_method = Görüntülenme şekli ‘array’ olarak değişti.]
<?php
$array = ssi_boardNews(5, 5, null, 250, 'array');
foreach ($array as $news)
{
echo '
<table border="0" width="100%" align="center" class="ssi_table">
<tr>
<td><b>', $news['subject'], '</b></td>
</tr>
<tr>
<td>', $news['body'], '<br /><br /></td>
</tr>
</table>
<br />';
if (!$news['is_last'])
echo '
<hr width="100%" />
<br />';
}
?>
Kodlarda öncelikle fonksiyonunun kullandığı bilgileri $array dizisine aktarırız. Ardından da ‘foreach’ döngüsünü kullanarak bilgileri görüntüleriz.
Bu kodlar bize sadece konunun başlığını ve mesajın içeriğini gösterecektir. Ayrıca kodlara ‘<br />’ ekleyerek ya da kodlardan bu kodu silerek aralıkları büyütüp küçültebilirsiniz.
Birçok fonksiyon bu şekilde çalışır.
Böylece SSI Dersleri – Orta Seviye’yi de burada noktaladık. Şimdi de SSI Dersleri – İleri Seviye’ye geçebilirsiniz.
Lütfen anlamakta zorluk çektiğiniz noktaları sormaktan çekinmeyiniz. Bu dersin kapsadığı bütün özellikler hakkında soru ve sorunlarınızı bu konu altına yazabilirsiniz.
Orjinal Konu
Advanced SSI FAQ, Tomer Tarafından yazılmıştır ;)