The theme is under construction, please let us know any bugs you see in the meantime.
The theme is under construction, please let us know any bugs you see in the meantime.

SSI Rehberi

orhan

Moderator
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(); ?>
 
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.
 

Notice

According to Article 8 of Law No. 5651 and Article 125 of the Turkish Republic Law, all our members are responsible for their posts. Content that you think is against the law and legislation FROM HERE You can report. I will try to get back to you as soon as possible.
Geri
Üst