نمايش آخرين عناوين(پست ها) در Invision Board

Persia!

Member
سلام.
مي خواهيم آخرين پستهاي نشوته شده در فوروم رو در صفحه اول سايت نشون بديم.
چجوري ميشه؟
 

amiri27

Member
بببين شما يه فايل داري تو شاخه اصلي فارومت به اسمه SSI.php كه براي اين كار مي توني از اين استفاده كني ! يه دور توضيحات توش رو بخون اگه چيزي نفهميدي بگو يه توضيح مفصل مي نويسم‌!!

ممنون
اميري
 

Persia!

Member
فايل و توضيحاتش رو ديده بودم:
Simply call this script via PHP includes, or SSI .shtml tags to generate content
on the fly, streamed into your own webpage.

To show the last 10 topics and posts in the news forums...

include("http://domain.com/forums/ssi.php?a=news&show=10");

You can adjust the "show" attribute to display a different amount of topics.

To show the board statistics

include("http://domain.com/forums/ssi.php?a=stats");

To show the active users stats (x Members, X Guests, etc)

include("http://domain.com/forums/ssi.php?a=active");

Syndication..

RSS:

http://domain.com/forums/ssi.php?a=out&f=1,2,3,4,5&show=10&type=rss
http://domain.com/forums/ssi.php?a=out&f=1,2,3,4,5&show=10&type=xml

Will show last 10 topics in reverse chronological last post date order from
all the forums in the comma separated list

همونطور كه ميبينيم، اين فايل سه جور اطلاعات ميده:
1- آخرين 10 پست در فوروم News (نه تمام فرومها. ضمنا وقتي اين آيتم رو انتخاب مي کنيم پيغام ميده که نميتونم به ديتابيس وصل بشم)
2- اطلاعات آماري فوروم
3- اطلاعات يوزرها
(موارد 2 و 3 رو با فرمت مشخصي نمايش ميده و نميشه فرمتش رو تغيير داد)

بعلاوه خروجي هاي xml و rss هم داره.
خروجي هاي rss و xml اطلاعات مورد نظر ما رو داره. اما مشکل اينجاست که بايد با يه برنامه اي خروجي ها رو بخونيم و در صفحه مورد نظر وارد کنيم.

اينجا:
http://forums.openones.org/index.php?s=a2a8e92db2facac788c57ed5cbb15f80&showtopic=10&st=0&
هم يه برنامه هست که همه جور اطلاعات رو در اختيار ميذاره. اما اون هم خروجي xml ميده. با دستور include هم نتونستم اجراش کنم.
 

amiri27

Member
خيلي ببخشيد كه دير جواب ميدم !
در مورد اولي بايد بگم امكان پذيره و نمونش رو هم مي توني تو اين سايت ببيني : http://www.jokeiran.com
كه براي اين كار بايد يه متغير رو بر حسب اوون چيري كه مي خواي تعريف كني ! حالا چطور؟
دور و بر خط 358 يك متغير داري به اين صورت
کد:
if ( (! $ibforums->vars['news_forum_id']) or ($ibforums->vars['news_forum_id'] == "" ) )
news_forum_id رو مي توني به يه متغير ديگه مثلا topic_esmeforum عوض كني ! همچنين تو خط 385 هم اين وجود داره كه اونم بايد عوض كني
کد:
 WHERE t.forum_id={$ibforums->vars[[color=red]'news_forum_id'[/color]]} AND t.approved=1 ORDER BY t.tid DESC LIMIT 0, $perpage");

خوب حالا اين فايل SSI جديد رو به يه اسم ديگه سيو كن ! كه كار داره تموم ميشه !
حالا topic_esmeforum رو بايد تو فايل conf_global.php معرفي كني كه اول اين فايل رو از سرورت بگير جون توي اوون بعد از نصب تغييراتي ايجاد ميشه ! يعني روي فايلي كه از سرور گرفتي اين تغييراتي كه ميگم انجام بده!
کد:
$INFO['topic_esmeforum']			=	'ايدي فاروم';
رو تو خط يكي مونده به آخر يعني قبل از جايي كه دستور PHP بسته بشه اضافه كن !
منظور از آي.دي فاروم همون شماره تالار هست كه بايد اوونو در بياري كه اميدوارم بتوني در بياري...اگه نتونستي بگو اوونم برات در ميارم !

در مورد قسمت هاي بعد هم كه پزسيده بودي همش امكان پذيره ! يعني تغيير قالب و ....
اينو انجام بده هرقت تموم شد قسمت هاي بعد هم ميگم !

ممنون
اميري
 

Persia!

Member
ممنون آقاي اميري. تا اينجا انجام دادم. شماره فوروم همونيه كه آخر لينك فرومه(وقتي موس رو روش نگه ميداريم پايين صفحه نشون ميده) درسته؟

سوالات:
1- اگه بخواهيم 10 پست آخر كه تو تالارهاي مثلا 1و2و3و5و. . .10 نوشته شده رو نشون بده، جلوي سطر : $INFO['topic_esmeforum'] چي بنويسيم؟
2- در مورد تغيير شكل ظاهري، مي‌خوام خروجي هيچ فرمتي نداشته باشه و تابع فرمتي كه در فايل PHP صفحه اول (که 10 پست آخر در اون نمايش داده ميشه) خودمون براش تعيين مي کنيم باشه.

بازم ممنون.
 

amiri27

Member
در كورد سوال اولت بايد بگم براي اوون كار اوضاع فرق ميكنه چرا كه ممكنه تو اوون روش اول توي يه فاروم آخرين موضوع مال 10 سال پيش باشه و اگه بخواي 10 پست آخر رو خروجي بگيري اوضاع يكم متفاوت ميشه !
به زودي يه Script براي اين كار مي نويسم كه بتوني 10 پست آخر در كل تالارها رو نشون بدي !

ممنون
اميري
 

Persia!

Member
اين راه رو تست كردم. جواب ميده.
قابليتها: ميشه فرومهاي خاصي رو مشخص كرد كه آخرين عناوين اونها در ليست نشون داده نشه.
تعداد آخرين عناوين رو ميشه مشخص كرد.
كار منو كه راه انداخت و همون چيزي بود كه مي‌خواستم.
توضيحش اينه:
کد:
#---------------------------------------------------------------------------
#This is an add-on to ssi.php that will show the last posts on your board.
#Copyright (C) 2003  Jon Roكbach (Flexo)
#main parts of the code (C) 2003  Scott Barr (scoz)
#E-Mail: [email][email protected][/email]
#
#Features :
#	shows topic-title,the forumname,author and date of post
#	direct links to : the thread, the forum and userprofile
#
#---------------------------------------------------------------------------

# Step 1:									
# Create a new file called lastposts.html in your ssi_templates directory.
# Fill it with this code :

<table style='border:1px dotted gray;width:100%;font-family:Verdana;font-size:10px'>
<tr>
<td>
<a href={thread_url} target="_blank">{thread_title}</a><br>
posted in : <a href={forum_url} target="_blank">{forum_name}</a><br>
written on {date}<br>
by <a href={profile_link} target="_blank">{author}</a>
</td>
</tr>
</table>
<br>

# Step 2:
# Open ssi.php
# Find the following code around line 139 :

	case 'stats':
		do_stats();
		break;

# Add this code below:


	case 'lastposts':
		do_lastposts();
		break;	

# Step 3:
 Around line 299 you should see:

	echo $to_echo;

	exit();

}


#After that add this :


//-------------------------------------------------
//  Last Posts
//-------------------------------------------------
function do_lastposts() {
	global $DB, $ibforums, $root_path, $templates_dir, $std, $INFO;
	

	$admin_forums = '(0)'; // IDs of the Forums you want to hide;
    	$limit        = "5"; // Number of posts to show
	$prefix 	  =  $INFO['sql_tbl_prefix'];

	
	$template = load_template("lastposts.html");

    	$to_echo = "";

	$DB->query( "SELECT p.pid, p.author_name, p.post_date, p.forum_id, p.topic_id, p.author_id, t.title ,f.name FROM ".$prefix."posts p ,   ".$prefix."topics t, ".$prefix."forums f WHERE t.tid=p.topic_id AND t.forum_id=f.id AND p.forum_id NOT IN ".$admin_forums."  ORDER BY pid DESC LIMIT 0,".$limit." " );
	if ( ! $DB->get_num_rows() )
	{
		fatal_error("Could not get the information from the database");
	}

	while( $out = $DB->fetch_row($query) ) {		
		$thread_title = $out['title'];
		$forum_name =$out['name'];
		$author	            = $out['author_name'];			
		$out['post_date']	= $std->get_date( $out['post_date'], 'LONG' );
		$date               = $out['post_date'];
		$to_echo  .= parse_template( $template,array (
				 
		'thread_url' => $ibforums->base_url."?act=ST&f=".$out['forum_id']."&t=".$out['topic_id']."&hl=&#entry".$out['pid'],
		'thread_title' => $thread_title,
		'forum_url' => $ibforums->base_url."?act=SF&f=".$out['forum_id'],
		'forum_name' => $forum_name,
		'date'       => $date,
		'author'     => $author,
		'profile_link'   => $ibforums->base_url."?act=Profile&CODE=03&MID=".$out['author_id'],	) );
	}

// Parse template

echo "<table cellpadding='4' cellspacing='1' border='0' width='40%' bgcolor='#000000'style='font-family:Verdana;font-size:11px'>";
echo "<tr>";
echo "<td align='left' bgcolor='#CCCCCC'><b>Last Posts</b></td>";
echo "</tr>";
echo "<tr>";
echo "<td align='left'bgcolor='#FEFEFE'>";
	echo $to_echo;
echo "</td>";
echo "</tr>";
echo "</table>";
echo "<br>";

	}



# OPTIONAL (Step 4) :

#If you want to show all forums, just edit the following in the code:

	$admin_forums = '(0)'; // IDs of the forums you want to hide;

#If you want to hide ONE forum, just edit the following in the code:

	$admin_forums = '(23)'; // IDs of the forums you want to hide;

=> where "23" is the ID of the forum you want to hide

#If you want to hide MORE than one forum, just edit the following in the code:

	$admin_forums = '(23,34,2,4)'; // IDs of the Forums you want to hide;

=> separate the forum IDs with a comma !

#If you want to change the number of last posts , just edit the following:

$limit        = "5"; // Number of posts to show



#To use the mod on your web-site use:

<?php
include("http://domain.com/forums/ssi.php?a=lastposts");
?>
 

meisam62

New Member
ميشه يكي توضيح بده كه چطور بايد از اين كد بالا استفاده كرد؟؟
 

Persia!

Member
نگنه پيچيده اي نداره. توضيحات(به انگليسي) و كدهاي لازم همونجا نوشته شده. مثلا:
کد:
# Step 1:                            
# Create a new file called lastposts.html in your ssi_templates directory. 
# Fill it with this code :
يعني:
مرحله 1: يك فايل با نام lastposts.html در فولدر ssi_templates ايجاد كنيد و آنرا با اين كد پر كنيد:
کد:
<table style='border:1px dotted gray;width:100%;font-family:Verdana;font-size:10px'> 
<tr> 
<td> 
<a href={thread_url} target="_blank">{thread_title}</a><br> 
posted in : <a href={forum_url} target="_blank">{forum_name}</a><br> 
written on {date}<br> 
by <a href={profile_link} target="_blank">{author}</a> 
</td> 
</tr> 
</table> 
<br>

خيلي ساده گفته. مرحله به مرحله انجام بده حتما به نتيجه ميرسي.
اگه مشكلي بود بپرس.
 

meisam62

New Member
خب تا اينجاش مشكلي نيست متوجه شدم
فقط يه سوال
اگه بخواييم نوشته ها اسكرولي نشون داده بشه بايد چيكارش كرد؟
 

Persia!

Member
از اين كدها استفاده كن:
کد:
 <marquee direction="up" <MARQUEE onmouseover=this.stop() onmouseout=this.start() scrollamount="1" scrolldelay="1" height="267">



</marquee>
نتيجه چيزي شبيه منوي سمت چپ سايت من "گفتگو(آخرين عناوين)" ميشه. http://www.sarmaye.com
 
من رو اين كار كردم در اصل ميخام يه چيزي بشه مثل پي اچ پي بي بي كه در اول سايت مشخص شده درست كنم كه!

آمار تالا داشته باشه و كار بر جديد
بعد در يه باكس اون پايين ققط عنوان 10 تاپيك جديد يا با پست جديد نمايش بده دارم روش كار ميكنم
 

جدیدترین ارسال ها

بالا