Smf SSI Rehberi

Başlatan snrj, 18 May 2014 23:31

« önceki - sonraki »

0 Üye ve 1 Ziyaretçi konuyu incelemekte.

*

  1. 3,077

  2. 584

  3. 960

SSI Dersleri – Başlangıç Seviyesi

Öncelikle hepiniz SSI Derslerimize hoş geldiniz. 3 seviye olarak düşünülen SSI Derslerimizde; SSI ile neler yapabileceğimize bakacak, SSI hakkında sıkça sorulan sorulara cevap verecek ve bazı püf noktalarını açıklayacağız. Ayrıca mesajın sonuna eklenmiş olan kodlar ile de öğrendiklerinizi uygulamalı bir şekilde görebileceksiniz. Bunun dışında 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.


SSI nedir?

Açılımı Server Side Include olan SSI, forumunuzdaki bilgileri, forum dışındaki sayfalarınızda kullanabilmenizi sağlar.

SSI bana nasıl yardımcı olabilir?

Emin olun siz de SSI kullanmak zorunda kalacağınız bir durumla karşılaşacaksınız. Hemen bir örnek verelim:

Örnek:

Forumunuzun dışındaki bir sayfada bazı özel indirme bağlantıları bulunuyor. Siz, bunların sadece üyeler tarafından görülmesini istiyorsunuz.

Böyle bir şeyi SSI ile birkaç dakika içinde yapabilirsiniz.

İlginç... Peki, nasıl kullanmaya başlayacağım?

Denemek için bir dosya oluşturabilirsiniz. Öncelikle yapmanız gereken kullanacağınız dosyanın uzantısını .php yaparak aşağıdaki kodu dosyanın en üstüne eklemek:

<?php
require("/home/simple/public_html/forum/SSI.php"); 
?>

Yalnız yukarıdaki kodda SSI.php dizininin siteniz için doğru olduğundan emin olmalısınız.

Tamam, dizini doğru olarak girdim, sırada ne var?

Eğer doğru dizini bularak dosyanıza yukarıdaki kodu eklediyseniz ilk adımı tamamladık. Şimdi birkaç deneme yapalım. Aşağıdaki kodu 'require...' ile '?>' kodları arasına ekleyin:

ssi_menubar();

Ardından da tarayıcınızdan bu sayfayı görüntüleyin. Her şey yolunda gittiyse, sitenizin menüsünü görüyor olmanız gerekir. Eğer hiçbir şey çıkmıyor veya hata mesajı alıyorsanız büyük ihtimalle SSI.php dizinini doğru olarak ayarlayamadınız, tekrar kontrol edin.
Çalıştırabildiğinize göre artık burada diğer varsayılan fonksiyonları da kullanarak denemeler yapabilirsiniz. Varsayılan fonksiyonları 'ssi_examples.php' dosyasından görebilirsiniz.

Harika! Başka neler yapabiliriz?

Birçok şey. Mesela verdiğimiz örnekteki gibi kullanıcının üye olup olmadığını kontrol edebilirsiniz.

Örnek:

Sitenizde hem forum, hem de forumdan bağımsız bazı sayfalar var. Özel bağlantıların bulunduğu "Dosyalar" sayfasını sadece üyelerin görebilmesini istiyorsunuz.

Bunu PHP'nin 'if' kontrol yapısı ile kolayca yapabilirsiz:

<?php
require("SSI.php_DİZİNİNİZ"); 

if (
$context['user']['is_guest'])
 {
   echo 
   
'<h5>Erişim Engellendi</h5>
   Bu sayfaya erişim izniniz yoktur. Eğer üyeyseniz lütfen giriş yapın.'
;
 }
else
 {
   echo
   
'<h5>Hoş geldin '$context['user']['name'], '!</h5>
   İşte özel bağlantılar:'
;
 }
?>


Yukarıdaki kodları açıklayalım:
'if' kontrol yapısı doğru ve yanlış üzerine çalışır. Örneğimizdeki $context['user']['is_guest'] eğer doğruysa, birinci kod bloku çalışır. Eğer yanlışsa 'else' kod bloku çalıştırılır.
Yani bu kodlarda eğer giriş yapmamışsanız [Bu durumda ziyaretçisiniz] "Erişim Engellendi" mesajı alacaksınız. Ama eğer giriş yapmışsanız, indirme bağlantılarını göreceksiniz. Kendinize göre düzenleyerek kullanabilirsiniz.

Aynısını kullanıcının yönetici olup olmadığını kontrol etmek için de kullanabilirsiniz.

if ($context['allow_admin'])
  {
   Kod bloku
  }
else
  {
   Kod bloku
  }


Bu mesaja eklenmiş olan kodlar da size yardımcı olacaktır.

membergroup.txt – Üye grubunuzu daha sonra kullanılabilmesi için bir değişkenin içine koyar.
welcome.txt – Eğer ziyaretçiyseniz, giriş formunu; değilseniz de karşılama mesajını gösterir.

Bununla birlikte ilk dersimizin sonuna geldik. Şimdi SSI Dersleri – Orta 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.

Orijinal konu Basic SSI FAQ, Tomer tarafından yazılmıştır.


SSI 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
(55null250'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 />';

      if (!$news['is_last'])
         echo '
         <hr width="100%" />
         <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(55null250'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.

Orijinal konu Advanced SSI FAQ, Tomer tarafından yazılmıştır.


SSI Dersleri – İleri Seviye

SSI Dersleri - İleri Seviye'ye hoş geldiniz. Bu konuda 'SSI.php'nin birkaç bilinmeyen yönünü göstermeye çalışacağız. Takdir edersiniz ki bu konudakiler tamamen sizlerin SSI Dersleri – Orta Seviye'yi 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.


Herhangi bir üyenin, belirlediğim bir gruba dahil olup olmadığını nasıl kontrol edebilirim?

Daha önce bir kullanıcının üye, ziyaretçi veya yönetici olup olmadığını nasıl kontrol edebileceğinizi göstermiştik. Şimdi de herhangi bir grup için bunu nasıl yapabileceğinize bakalım:

Örnek:

Forumdan bağımsız şekilde çalışan sitenizde sadece forumda belirli bir gruba dahil üyelerin görmesini istediğiniz bir sayfa var. Bunu kontrol edecek, eğer üye istediğiniz gruba dahil değilse hata mesajı görüntülenmesini sağlayacaksınız.

Öncelikle grubun IDsini öğrenmemiz gerekmekte. Yönetim Panelinizde "Üye Grupları" bölümünde istediğiniz üye grubunun yanındaki "Değiştir" bağlantısına tıklayın. Yönlendiğiniz sayfanın adresine baktığınızda buna benzer bir şey görüyor olmalısınız: 'action=membergroups;sa=edit;id=#'. # sembolü yerinde gördüğünüz numara üye grubunun IDsi olacaktır.

Üye grubunun IDsini öğrendiğinize göre kullanacağımız kodu yazalım:

Örnek için üye grubu IDsi 9 olarak alınmıştır, sadece bu örnek için geçerlidir.

<?php

if (in_array(9$user_info['groups']))
   {
       echo 
'Evet, ben 9 numaralı gruptayım. :)';
   }
else
   {
       echo 
'Erişim engellendi! Bu sayfayı görmeye yetkiniz bulunmuyor.';
   }

?>


Böylece bu sayfayı sadece özel üye grubunuzun görebilmesini sağladınız. Bundan sonrası sizin hayal gücünüz ve kodlama bilginize kalmış.

SSI hakkında öğrenmediğimiz bir şey kaldı mı?

Sorduğunuz iyi oldu, çünkü son olarak da SSI'ın bazı ileri düzey ayarlarını inceleyeceğiz. Değiştirebileceğiniz ayalar:

$ssi_gzip = 'true/false';
$ssi_ban = 'true/false';
$ssi_theme = 'themeID#';
$ssi_layers = array('main');

Bu kodları 'SSI.php'yi sayfamıza dahil etmeden, yani 'require...' kodundan önce ekliyoruz.

Örnek:

<?php

$ssi_gzip 
false;
$ssi_ban true;
$ssi_theme '2';
$ssi_layers = array('main');

ob_start();

require(
"/SSI.php");

?>


Hemen bu ayarların ne işe yaradığına bakalım:

$ssi_gzip = false; gzip sıkıştırma özelliğinin kapatıp açabilmeyi sağlar
$ssi_ban = true; forumda yasaklanan üyenin bu sayfada erişiminin engellenmesini sağlar
$ssi_theme = '2'; sayfanın IDsini girdiğiniz tema ile gösterilmesini sağlar [gösterilmesi için $ssi_layers ayarlanmalı]
$ssi_layers = array('main'); main_above ve main_below alt temalarının yüklenmesini sağlar
ob_start(); hata almamak için eklenir
require("/SSI.php"); ayarlardan sonra ama sayfanızın içeriğinden önce olması gerekir

Eğer anlamakta zorlanırsanız üzülmeyiniz, neticede bu İleri Düzey bir ders. Birkaç deneme ile daha kolay anlayabilirsiniz.

Bu cümlelerle de hem İleri Düzey dersimizin, hem de SSI Dersleri üçlememizin sonuna geldik. Belki ileride bir sonraki düzeye geçilebilir, şu an için 3 seviye olarak kalacak.

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.

Orijinal konu Expert SSI FAQ, Tomer tarafından yazılmıştır.

alıntıdır yapım = [SiNaN]


MENU ×