Belirli bölümden rastgele konular.

Started by Özgür, October 29, 2008, 01:07:35 AM

Previous topic - Next topic

Özgür

Kodlar elmacik'a ait. İzin almak gerek. Bir mesaj atıp sorayım kabul ederse ben yayınlarım. Tabiki admin panelinden ayarlabilir vesair olacak.
So Long

Ebu_Davud

Quote from: Elmacik on November 05, 2008, 08:34:43 AM
Şöyle bir şeyler karaladım; SSI.php dosyasının en altına ?> işaretinden önce ekle:

function ssi_rastgeleKonu($bolum = null)
{
global $db_prefix, $scripturl;

$bolum = empty($bolum) ? (isset($_GET['bolum']) ? (int) $_GET['bolum'] : 0) : (int) $bolum;
$bolum = max(0, $bolum); // Sifirin altinda bir bolum düsünemiyorum. :)

$request = db_query("
SELECT t.ID_TOPIC, m.subject
FROM {$db_prefix}topics AS t
LEFT JOIN {$db_prefix}messages AS m
ON (m.ID_MSG = t.ID_FIRST_MSG)
WHERE m.ID_BOARD = $bolum
ORDER BY RAND()
LIMIT 1", __FILE__, __LINE__);

if (mysql_num_rows($request) == 0)
die('Hiç haber girilmemiş.');
else list($konu_no, $konu_baslik) = mysql_fetch_row($request);
mysql_free_result($request);

echo 'Sitemizden son haberler: <a href="', $scripturl, '?topic=', $konu_no, '"><i>', $konu_baslik, '</i></a>';
}


Daha sonra da nerede bu "rast gele konu" görünsün istiyorsan oraya şu kodu yaz: ssi_rastgeleKonu(5);
Buradaki "5" sayısı, haberleri göstermek istediğin bölüm numarasını ifade ediyor. Yani 5 numaralı bölümden tamamen rastlantısal bir konu seçip onu şu şekilde ekrana yazdıracak:

QuoteSitemizden son haberler: Belirli bölümden rastgele konular

Nasıl görüneceğini yazdığım koddan kendin düzenleyebilirsin.

Bu arada ℓσяєиz benden erken davranmış, hakkını helal etsin yine de yolluyorum faydalanmak isteyenler için. :) (Yukarıdaki koddan daha sade ve kolay uygulanabilir. Ayrıca daha hızlı da olacaktır.)


Fatal error: Call to undefined function ssi_rastgeleKonu() in /home/mavi/public_html/Sources/Load.php(1741) : eval()'d code on line 231

  Hatasını alıyorum

Yardım edebilirmisiniz.?

Load.php
http://rapidshare.com/files/260978211/Load.php.html [nofollow]
Hatim Yap [nofollow]
İlahi Dinle [nofollow]
Rss [nofollow]
İslami Forum [nofollow]

Gökhan | Brestgerfich

Elmacik, ℓσяєиz ve Yağız... 3ünüze de teşekkür ederim.

Benim bi sorum olacaktı.
Bu ssi çağrısını x id'li bir bölüme ve o bölüme ait y, z, t id'li alt bölümlere aynı anda uygulayabilir miyiz ?

$board = 1, 2, 3; gibi bir sıralamayla çalıştırabilmemiz mümkün mü ?


grafitus

Quote from: Gökhan | Brestgerfich on October 02, 2009, 02:58:50 PM
Elmacik, ℓσяєиz ve Yağız... 3ünüze de teşekkür ederim.

Benim bi sorum olacaktı.
Bu ssi çağrısını x id'li bir bölüme ve o bölüme ait y, z, t id'li alt bölümlere aynı anda uygulayabilir miyiz ?

$board = 1, 2, 3; gibi bir sıralamayla çalıştırabilmemiz mümkün mü ?



Hayır.
$board = array(1, 2, 3);

şeklinde kullanacaksın.

Gökhan | Brestgerfich

Quote from: Yağız... on November 05, 2008, 05:24:17 PM
@ЯocKayseri;
Bunu dener misin?
function ssi_rastgeleKonu($bolum = null)
{
   global $smcFunc, $scripturl;

   $bolum = empty($bolum) ? (isset($_GET['bolum']) ? (int) $_GET['bolum'] : 0) : (int) $bolum;
   $bolum = max(0, $bolum); // Sifirin altinda bir bolum düsünemiyorum.

   $request = $smcFunc['db_query']('', "
      SELECT t.id_topic, m.subject
      FROM {db_prefix}topics AS t
      LEFT JOIN {db_prefix}messages AS m
         ON (m.id_msg = t.id_first_msg)
      WHERE m.ID_BOARD = {string:bolum}
      ORDER BY RAND()
      LIMIT 1",
      array(
         'bolum' => $bolum,
      )
   );

   if ($smcFunc['db_num_rows']($request) == 0)
      die('Hiç haber girilmemis.');
   else list($konu_no, $konu_baslik) = $smcFunc['db_fetch_row']($request);
   $smcFunc['db_free_result']($request);

   echo 'Sitemizden son haberler: <a href="', $scripturl, '?topic=', $konu_no, '"><i>', $konu_baslik, '</i></a>';
}


Bu kodu ekledim SSI.php dosyama. Daha sonra index.template.php dosyama ssi_rastgeleKonu(5); kodunu ekledim. Ancak kodu ekledigim yerden sonrası görünmedi sitemde.

Yani link agacının üzerine eklemiştim ssi_rastgeleKonu(5); kodunu. Link agacı ve onun altındaki bölüm yok oldu.

Özgür

SSI.phpyi index.template'ye dahil ettiniz mi?
So Long

Gökhan | Brestgerfich


Özgür

index.template.php'de bul
<?php
altına ekle
require_once('/ssi_dizini/SSI.php');
/ssi_dizini/ forumla aynı dizindir. Settings.php den bakabilirsin.
So Long

Gökhan | Brestgerfich

<?php
require_once('/home/takxxxok/public_html/SSI.php');


olarak değiştirdim ancak yine de aynı problem cıktı :/

Ebu_Davud

Ben Display.temlate.php ye ekledim sorun olmadı

Forum dizinini adresini tam olarak bilmiyorum diyorsanız...Admin paneline girin-Sunucu ayarlarında-Smf dizini yazan yerin karşısındaki adresi olduğu gibi kopyalayın ve aşağıdaki forumdiziniadresi kısmına yapıştırın bu sayede SSI.php ile bağlantı kurup içindeki fonksiyonu çağırmış olursunuz

Ben Sitemde aşağıdaki koddan sonraya
// Show the previous/next links.
echo '
<td valign="bottom" align="', !$context['right_to_left'] ? 'right' : 'left', '" class="smalltext">
<span class="nav">', $context['previous_next'], '</span>
</td>
</tr>
</table>';



Aşağıdaki Kodun hemen üstüne ekledim

// Is this topic also a poll?
if ($context['is_poll'])
{
echo '


eklediğim kod

require("/home/mavi/public_html/SSI.php");
ssi_rastgeleKonu($context['current_board']);

Ekran Görüntüsü
http://img43.imageshack.us/img43/8395/43219886.jpg [nofollow]
Hatim Yap [nofollow]
İlahi Dinle [nofollow]
Rss [nofollow]
İslami Forum [nofollow]

Advertisement: