SSI Rehberi

Merhaba, tekrar hoş geldiniz!

Bilgi sahibi olanlarla ihtiyaç duyanları buluşturmak, farklı bakış açılarına sahip insanları bir araya getirerek birbirlerini daha iyi anlamalarını sağlamak ve herkesin bilgisini paylaşmasını sağlamak istiyoruz.

orhan

Moderator
Katılım
5 Ara 2018
Mesajlar
466
Tepkime puanı
89
Puanları
28
Merhaba arkadaşlar sanırım bu yazı SMF için yazılmış ilk Türkçe rehber olacak. Bu rehberde SSI'nın ne olduğunu, ne işe yaradığını ve hepsinden önemlisi SSI'yı ihtiyaçlarınızı karşılayabilecek şekilde nasıl kullanabileceğinizi örnekli bir anlatımla öğrenebileceksiniz. Eğer rehberde bir hata fark eder, anlamadığınız bir yer olur veya herhangi başka bir sorun veya sorununuz olursa bu konuya cevap yazmaktan çekinmeyin.

Bölüm 1: Bilgi


SSI Nedir?

SSI'ın açılımı Server Side Includes'dur. Gerçek SSI'ın kendine ait bir programlama dili vardır ve sunucuda çalıştırılan kullanıcı tarafından kendi sayfalarına çağırılabilen dinamik bilgilere denir. Bizim kullancağımız SSI ise başka bir PHP dosyasında tanımlı fonksiyonlar bütünüdür. Bu fonksiyonları forum'dan değişik bilgileri istediğimiz herhangi bir forum-dışı sayfaya çağırmak için kullanacağız.

Ne İşe Yarar?

SSI'yı kullanarak istediğimiz herhangi bir sayfaya SMF kullanıcı girişi, Forum'dan Son konular/mesajlar, Forum'da en çok mesaj atan kişiler, Forum'da Kimler Online ve daha birçok değişik bilgiyi görüntüleyebileceğiz.

Ne Gerekir?

SSI'yı kullanmak üzere ekstra hiçbir şey'e ihtiyaç yoktur, SMF'nin çalıştığı her ortamda SSI'da çalışabilir.

Kullanırken Çok Zorlanacak mıyım?

Kesinlikle hayır burada uygulayacağımız örnekli anlatım sayesinde copy&paste yapmayı bilen, basit HTML bilgisine sahip herkes SSI kullanrak kolayca sitelerine profosyonel bir görünüm kazandırabilirler.

Bölüm 2: Kullanım

SSI kullanmak için öncelikle ihtiyacımız olan şey, SSI'yı kullanacağımız sayfanın uzantısının PHP olması. Eğer böyle değilse, lütfen ilk olarak uzantıyı PHP yapın. İkinci olaraksa SSI.php'nin sayfada önceden tanımlanması. Bunun için ilk olarak http://forumunuzunadresi/ssi_examples.php (forumunuzunadresi örnektir burayı forum'unuzun yüklü olduğu tam konum ile değiştirin) adresine gidin ve aşağıda kırmızı ile işaretlenmiş satırı kopyalayın:

Ve SSI verilerinin gözükmesini istediğiniz sayfanın 1'nci satırına, <html> tag'inden önce gelecek şekilde yapıştırın, örn:

Kod:
Kod:
<?php require("/home/forsaken/public_html/forum/SSI.php"); ?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-9" />
<title>Örnek Sayfa</title>
</head>
<body>
İçerik
</body>
</html>

Tamam artık bu sayfada gözükmesini istediğimiz herhangi bir yerde SSI verilerini gösterebiliriz, bir deneme yapalım mesela, <body></body> tag'lerinin arasına SSI verisinin gözükmesini istediğiniz yere saşğıdaki kodu girin:

Kod:
Kod:
<?php ssi_topPoster(); ?>

Bu kod forum'unuzda en çok mesaj atmış kişiyi gösterecektir. Bir dahaki bölümde örnekli anlatımlarıyla tek tek her SSI fonksiyonun ne işe yaradığını ve kullanımını öğreneceksiniz

Bölüm 3: Örnekler

Son Konular - ssi_recentTopics(); ve Son Mesajlar - ssi_recentPosts();

(Son Konular için geçerli kodların hepsi Son Mesajlar içinde geçerlidir, yapmanız gereken sadece ssi_recentTopics()'i, ssi_recentPosts(); ile değiştirmektir)

İsmindende anlaşılacağı gibi bu fonksiyon forumunuzdaki son konuları, bulundukları kategori, yazarları ve açılış zamanları ile birlikte, sayfanızın istediğiniz bir yerinde gösterir. Bu SSI fonksiyonunu direk ssi_recentTopics(); olarak girdiğinizde karşınıza ssi_examples.php'dede görebileceğiniz varsayılan özellikleriyle çıkar. Haydi bu fonksiyonu biraz özelleştirelim:

Kod:
Kod:
<?php
ssi_recentTopics($num_recent = 8, $exclude_boards = null, $output_method = 'echo');
?>

Bu girdi yine default özellikleriyle gösterecektir, burada $num_recent'i değiştirirerek gösterilmesini istediğiniz son konu sayısını ayarlayabilir $exclude_boards = null'ı $exclude_boards = array() yaparak, parantezler içine yazacağınız Board Id'lerle o bölümlerden son konuların gösterilmesini engelleyebilirsiniz, örneğin benim forum'umda 1 duyurular ve 4 test bölümü (bunlardan gelen son konuları göstermek istemiyorum), ve ayrıca son 5 mesajı göstermek istiyorum, bunun için yazmam gereken kod:

Kod:
Kod:
<?php
ssi_recentTopics($num_recent = 5, $exclude_boards = array(1,4), $output_method = 'echo');
?>
Bu kadar basit, artık şık bir son konular bölümüne sahibim

Anket - ssi_showPoll();

ssi_showPoll(); fonksiyonu forum'dan seçeceğimiz bir anketi php tabanlı herhangi bir sayfada görüntülememize olanak sağlamaktadır. Kullanımı aşağıdaki şekildedir:

Kod:
Kod:
<?php
    ssi_showPoll($topic = null, $output_method = 'echo')
?>

Burada null adlı yere göstermek istediğimiz anketin konu id'sini girdiğimizde, istenilen anket devamlı olarak görüntülenecektir. Konu id'si, bulunduğunuz konunun URL'sine bakılarak öğrenilebilir, örneğin bu konunun id'si:

http://www.simplemachines.org/community/index.php?topic=47018.0

47018 dir. Eğer bu konu ile bir anket ilişkilendirilmiş olsaydı, bu anketi görüntülemek için kullanmamız gereken kod aşağıdaki gibi olurdu:

Kod:
Kod:
<?php
    ssi_showPoll($topic = 47018, $output_method = 'echo')
?>

Son Anket - ssi_recentPoll(); ve En Popüler Anket - ssi_topPoll();

Bu fonksiyonlarımızın ortak özelliği forumdan herhangi bir PHP sayfaya anket çağırabilmemize olanak sağlamalarıdır. ssi_recentPoll(); adlı fonksiyon, forum'a gönderilmiş en son anketi görüntülerken; ssi_topPoll(); fonksiyonu şimdiye kadar tüm kullanıcılar tarafından en çok oy atılmış anketi görüntülememize olanak sağlamaktadır.

Son Anket - ssi_recentPoll(); un örnek kullanımı:

Kod:
Kod:
<?php ssi_recentPoll(); ?>

En Popüler Anket - ssi_topPoll(); un örnek kullanımı:

Kod:
Kod:
<?php ssi_topPoll(); ?>
 
eline sağlık hocam. çok net ve detaylı bir anlatım olmuş.
 
Umarım mesajı görürsünüz hocam.
<?php ssi_recentPosts($num_recent = 10); ?> parametresiyle son konuları çekiyorum
fakar kategori ismi,gönderen ve tarihte geliyor. bunları çıkarmanın yolu nedir acaba?
 
Ornek

Kod:
<?php

	$posts = ssi_recentPosts(8, null, 'array');

	echo '
		<table border="0" class="ssi_table">';
	foreach ($posts as $post)
		echo '
			<tr>
				<td valign="top">
					<a href="', $post['href'], '">', $post['subject'], '</a>
					', $txt[525], ' ', $post['poster']['link'], '
					', $post['new'] ? '' : '<a href="' . $scripturl . '?topic=' . $post['topic'] . '.msg' . $post['new_from'] . ';topicseen#new"><img src="' . $settings['images_url'] . '/' . $context['user']['language'] . '/new.gif" alt="' . $txt[302] . '" border="0" /></a>', '
				</td>
				<td align="right" nowrap="nowrap">
					', $post['time'], '
				</td>
			</tr>';
	echo '
		</table>';

?>
 
Hocam bu kodu nereye yapıştıracağız. Benim aradığım konu bu ama ssi_recentPosts kısmını nasıl özelleştirilecek onu anlamadım :(
 
memurhocam' Alıntı:
Hocam bu kodu nereye yapıştıracağız. Benim aradığım konu bu ama ssi_recentPosts kısmını nasıl özelleştirilecek onu anlamadım :(

bu size kalmış isterportaliniza php blok açıp ekleyin isterseniz <head> taglari arasında bir yerde kulanın </head>
 
<?php $posts = ssi_recentPosts(8, null, 'array'); echo ' <table border="0" class="ssi_table">'; foreach ($posts as $post) echo ' <tr> <td valign="top"> <a href="', $post['href'], '">', $post['subject'], '</a> ', $txt[525], ' ', $post['poster']['link'], ' ', $post['new'] ? '' : '<a href="' . $scripturl . '?topic=' . $post['topic'] . '.msg' . $post['new_from'] . ';topicseen#new"><img src="' . $settings['images_url'] . '/' . $context['user']['language'] . '/new.gif" alt="' . $txt[302] . '" border="0" /></a>', ' </td> <td align="right" nowrap="nowrap"> ', $post['time'], ' </td> </tr>'; echo ' </table>'; ?>


hocam en üstte ki recent topicler yaptım oldu fakat verdiğiniz foreach döngüsünde database hatası verdi --

Bir Hata Meydana Geldi!​

Database error, given array of integer values is empty. (include_boards)
 
merhaba bunu yazdığımda sistem eskiydi muhtemeldir ki ssi include_boards döngüsü değişmiş olmalı bu hatayı verdiğine göre size tavsiyem smf destek sitelerine sorun onların bilgileri tazedir daha faydalı olur sizin için.
 
Geri
Üst Alt