[DEZV] Alternativa Topics Anywhere

Propuneri şi proiecte în curs de desfăşurare de Extensii, traduceri, stiluri, teme, avataruri şi butoane.
Reguli forum
Aveti o problema si vreti sa primiti ajutor? Click aici ! Nu uitati si de regulamentul forumului !
Închis
Avatar utilizator
evi|one
Utilizator înregistrat
Mesaje: 19
Membru din: 27-Feb-2004, 15:31:15
Ext: Nu
Server: Windows
Nivel phpBB: Mediu
Nivel php: Mediu
Localitate: Brasov
Contact:

[DEZV] Alternativa Topics Anywhere

Mesaj de evi|one »

Dorind sa includ ultimele topicuri de pe forumul Ziare.ro pe prima pagina a site-ului, am decis sa folosesc MOD-ul "Topics Anywhere". Am observat insa imediat ca acesta este foarte lent, din cauza ca este bazat pe javascript (browser-ul trebuie sa deschida o a doua conexiune la server, prin care sa primeasca codul javascript generat de Topics Anywhere). Am scris un script "quick 'n dirty" care sa rezolve problema. Dezavantajul: aveti nevoie de PHP pe prima pagina. Scriptul presupune ca sunteti deja conectati la serverul mysql.

Cod: Selectaţi tot

<?php

	$forum_folder = 'forum/';
	$nr_topicuri = 5;
	
	//////////////////////////////////////
	
	include $forum_folder . 'config.php';
	mysql_select_db($dbname);
	
	$query = mysql_query('select ' . $table_prefix . 'posts.post_id, ' . $table_prefix . 'topics.topic_id, ' . $table_prefix . 'topics.topic_title from ' . $table_prefix . 'posts, ' . $table_prefix . 'topics where ' . $table_prefix . 'posts.topic_id = ' . $table_prefix . 'topics.topic_id order by ' . $table_prefix . 'posts.post_time desc');
	$topicuri_gasite = array();
	$n = 0;
	while ($row = mysql_fetch_array($query))
	{
		if ($n == $nr_topicuri) break;
		if (!in_array($row['topic_id'] , $topicuri_gasite))
		{
			$topicuri_gasite[count($topicuri_gasite)] = $row['topic_id'];
			echo '<a href="' . $forum_folder . 'viewtopic.php?t=' . $row['topic_id'] . '">' . $row['topic_title'] . '</a> ';
			echo '<a href="' .$forum_folder. 'viewtopic.php?p=' . $row['post_id'] . '#' . $row['post_id'] . '"><img src="' . $root_folder . 'forum/templates/subSilver/images/icon_latest_reply.gif" border="0" alt="" /></a>';
			echo '<br />';
			$n++;
		}
	}

	// nu uitati sa dati un mysql_select_db() inapoi pe baza de date
	// initiala daca este cazul

?>
Nu am inclus optiuni legate de tipul post-urilor (lipicios, anunt, poll, etc), dar scriptul se poate modifica usor :)
Avatar utilizator
mihaitza
Fost coleg
Mesaje: 1873
Membru din: 13-Ian-2003, 22:22:10
Versiune: 3.0.5
Ext: Nu
Server: Windows
Nivel phpBB: Experimentat
Localitate: Cluj-Napoca, România
Contact:

Mesaj de mihaitza »

Subiect mutat la proiecte.
Avatar utilizator
evi|one
Utilizator înregistrat
Mesaje: 19
Membru din: 27-Feb-2004, 15:31:15
Ext: Nu
Server: Windows
Nivel phpBB: Mediu
Nivel php: Mediu
Localitate: Brasov
Contact:

Mesaj de evi|one »

Err... asta nu este practic un "proiect"... este un mic script facut de mine pentru mine. Ulterior m-am gandit ca ar putea fi util si altora si m-am gandit sa-l postez. Cu atat mai putin este un MOD phpBB. Nu modifica nici un fisier phpBB si nici macar nu adauga fisiere in structura de directoare a acestuia (ca Topics Anywhere). Scriptul a fost scris in cateva minute, si lasa loc pentru multe imbunatatiri (nu am urmarit sa includ toate facilitatile Topics Anywhere -- care are o pagina de setari -- ci numai pe cele care m-au interesat pe mine). Daca aveti o versiune mysql relativ noua puteti simplifica radical scriptul folosind o tabela temporara. Ceva de genul

Cod: Selectaţi tot

create temporary table tmp
select phpbb_posts.post_id, phpbb_topics.topic_id, phpbb_topics.topic_title 
from phpbb_posts, phpbb_topics
where phpbb_posts.topic_id = phpbb_topics.topic_id
order by phpbb_posts.post_time desc;

select * from tmp group by topic_id limit 0, 5;

Good luck :)
Închis

Înapoi la “Proiecte”

Cine este conectat

Utilizatori ce ce navighează pe acest forum: Niciun utilizator înregistrat și 26 vizitatori