SimplePortal
Customization => Blocks and Modifications => Block Requests => Topic started by: yugo23 on June 28, 2011, 11:38:04 AM
-
Can this be done with SimplePortal:
(http://img718.imageshack.us/img718/5918/unled1jw.jpg)
Recent posts block would be much more useful with preview of first x characters of shown posts.
-
Ok, let's start helping :)
Here, try this. What do you think?
Code bellow
-
This gives me 5 oldest posts on my board, and also without avatars. Just some fine tuning needed, I guess.
-
Sorry sorry xD Forgot something, here:
Code Bellow
-
Now it's much better. Still no avatars though.
Two suggestions to make it even better:
- Instead of posted by ______ in __________ it would be better to have Posted by _______ on ...time...
- Click on topic title should take to previewed post, and not to first unread post in that topic.
Thanks for your help.
-
Here, let me know if the avatars are working ;)
Thanks for your suggestions. The link now takes you to previewed post and it shows the Time. If you hover over the subject it will tell you in which category is.
Code Bellow
-
Everything works fine now! Missing avatars were because of animated gif which I use for avatar. Normal jpg avatars are showing just fine.
Great mod, thanks!
-
That's weird. GIF images should show too. Oh well...
Glad you like it :)
-
There was a bug that when you weren't logged in you couldn't see the avatars. I've managed to correct the bug in the code bellow:
<?php
/*
Block: Recent posts with post preview
Author: Blue @ Simple Portal.net
*/
/* [SETUP WHAT YOU WANT HERE] */
// How many recent posts do you want to output?
$limit = 5;
// How many characters do you want to output?
$number = 70;
// Do you want to translate it to your own language? :P
$text['sportal_false'] = 'Simple Portal not found';
$text['board'] = 'in';
$text['who'] = 'by';
/* [STOP!] - THIS IS THE END OF SETUP */
//Only code from now on ;)
global $smcFunc, $scripturl, $sourcedir, $modSettings;
// Lets see if you are using Simple Portal. If not...well...go get them :D
if (!file_exists($sourcedir . '/PortalBlocks.php'))
{
echo $text['sportal_false'];
return;
}
// Let's grab some database results
$posts_result = $smcFunc['db_query']('', '
SELECT m.poster_name, m.poster_time, m.id_msg, m.id_member, m.subject, m.body, m.id_topic, b.name, u.avatar
FROM {db_prefix}messages AS m
LEFT JOIN {db_prefix}boards AS b ON (m.id_board = b.id_board)
LEFT JOIN {db_prefix}members AS u ON (m.id_member = u.id_member)
WHERE m.approved=1
ORDER BY m.id_msg DESC
LIMIT ' . $limit);
$posts = array();
while ($row_posts = $smcFunc['db_fetch_assoc']($posts_result))
{
global $memberContext;
loadMemberData($row_posts['id_member']);
loadMemberContext($row_posts['id_member']);
$posts[] = array(
'id' => $row_posts['id_member'],
'username' => '<a href="' . $scripturl . '?action=profile;u=' . $row_posts['id_member'] . '">' . $row_posts['poster_name'] . '</a>',
'subject' => '<a style="font-weight: bold;" title="' . $text['board'] . ' ' . $row_posts['name'] .'" href="' . $scripturl . '?topic=' . $row_posts['id_topic'] . '.msg' . $row_posts['id_msg'] . ';topicseen#new">' . $row_posts['subject'] . '</a>',
'body' => $row_posts['body'],
'avatar' => $row_posts['avatar'] == '' ? $memberContext[$row_posts['id_member']]['avatar']['href'] : (stristr($row_posts['avatar'], 'http://') ? $row_posts['avatar'] : $modSettings['avatar_url'] . '/' . $row_posts['avatar']),
'board' => $row_posts['name'],
'time' => timeformat($row_posts['poster_time'])
);
}
$smcFunc['db_free_result']($posts_result);
//Finally the Output
foreach ($posts as $post)
echo'<table>
<tr>
<td style="width: 40px;">
<img src="' . $post['avatar'] .'" alt="" width="40px" height="40px" />
</td>
<td>
' . $post['subject'] .'<br />
<small>' . $text['who'] . ' ' . $post['username'] . ' | ' . $post['time'] .'</small>
</td>
</tr>
</table>
' . substr ($post['body'],0,$number) .'...
<hr />';
?>
-
There was a bug that when you weren't logged in you couldn't see the avatars. I've managed to correct the bug in the code bellow:
<?php
/*
Block: Recent posts with post preview
Author: Blue @ Simple Portal.net
*/
/* [SETUP WHAT YOU WANT HERE] */
// How many recent posts do you want to output?
$limit = 5;
// How many characters do you want to output?
$number = 70;
// Do you want to translate it to your own language? :P
$text['sportal_false'] = 'Simple Portal not found';
$text['board'] = 'in';
$text['who'] = 'by';
/* [STOP!] - THIS IS THE END OF SETUP */
//Only code from now on ;)
global $smcFunc, $scripturl, $sourcedir, $modSettings;
// Lets see if you are using Simple Portal. If not...well...go get them :D
if (!file_exists($sourcedir . '/PortalBlocks.php'))
{
echo $text['sportal_false'];
return;
}
// Let's grab some database results
$posts_result = $smcFunc['db_query']('', '
SELECT m.poster_name, m.poster_time, m.id_msg, m.id_member, m.subject, m.body, m.id_topic, b.name, u.avatar
FROM {db_prefix}messages AS m
LEFT JOIN {db_prefix}boards AS b ON (m.id_board = b.id_board)
LEFT JOIN {db_prefix}members AS u ON (m.id_member = u.id_member)
WHERE m.approved=1
ORDER BY m.id_msg DESC
LIMIT ' . $limit);
$posts = array();
while ($row_posts = $smcFunc['db_fetch_assoc']($posts_result))
{
global $memberContext;
require_once($sourcedir . '/Load.php');
loadMemberData($row_posts['id_member']);
loadMemberContext($row_posts['id_member']);
$posts[] = array(
'id' => $row_posts['id_member'],
'username' => '<a href="' . $scripturl . '?action=profile;u=' . $row_posts['id_member'] . '">' . $row_posts['poster_name'] . '</a>',
'subject' => '<a style="font-weight: bold;" title="' . $text['board'] . ' ' . $row_posts['name'] .'" href="' . $scripturl . '?topic=' . $row_posts['id_topic'] . '.msg' . $row_posts['id_msg'] . ';topicseen#new">' . $row_posts['subject'] . '</a>',
'body' => $row_posts['body'],
'avatar' => $row_posts['avatar'] == '' ? $memberContext[$row_posts['id_member']]['avatar']['href'] : (stristr($row_posts['avatar'], 'http://') ? $row_posts['avatar'] : $modSettings['avatar_url'] . '/' . $row_posts['avatar']),
'board' => $row_posts['name'],
'time' => timeformat($row_posts['poster_time'])
);
}
$smcFunc['db_free_result']($posts_result);
//Finally the Output
foreach ($posts as $post)
echo'<table>
<tr>
<td style="width: 40px;">
<img src="' . $post['avatar'] .'" alt="" width="40px" height="40px" />
</td>
<td>
' . $post['subject'] .'<br />
<small>' . $text['who'] . ' ' . $post['username'] . ' | ' . $post['time'] .'</small>
</td>
</tr>
</table>
' . substr ($post['body'],0,$number) .'...
<hr />';
?>
I like this verry much.
Can i make it scrol ?
-
I like this verry much.
Can i make it scrol ?
try with jquery.
-
O sorry i don`t now how to
-
added auto scroll, but save js files to your server, find and change path with yours.
<script type="text/javascript" src="http://www.logooff.net/Site/js/jquery-1.6.2.min.js"></script>
<script type="text/javascript" src="http://www.logooff.net/Site/js/jscroller-0.4.js"></script>
<?php
echo'
<head>
<script type="text/javascript" src="http://www.logooff.net/Site/js/jquery-1.6.2.min.js"></script>
<script type="text/javascript" src="http://www.logooff.net/Site/js/jscroller-0.4.js"></script>
<script type="text/javascript">
$(document).ready(function(){
// Add Scroller Object
$jScroller.add("#scroller_container","#scroller","up",1);
// Start Autoscroller
$jScroller.start();
});
</script>
</head>
<body>';
/*
Block: Recent posts with post preview
Author: Blue @ Simple Portal.net
*/
/* [SETUP WHAT YOU WANT HERE] */
// How many recent posts do you want to output?
$limit = 20;
// How many characters do you want to output?
$number = 70;
// Do you want to translate it to your own language? :P
$text['sportal_false'] = 'Simple Portal not found';
$text['board'] = 'in';
$text['who'] = 'by';
/* [STOP!] - THIS IS THE END OF SETUP */
//Only code from now on ;)
global $smcFunc, $scripturl, $sourcedir, $modSettings;
// Lets see if you are using Simple Portal. If not...well...go get them :D
if (!file_exists($sourcedir . '/PortalBlocks.php'))
{
echo $text['sportal_false'];
return;
}
// Let's grab some database results
$posts_result = $smcFunc['db_query']('', '
SELECT m.poster_name, m.poster_time, m.id_msg, m.id_member, m.subject, m.body, m.id_topic, b.name, u.avatar
FROM {db_prefix}messages AS m
LEFT JOIN {db_prefix}boards AS b ON (m.id_board = b.id_board)
LEFT JOIN {db_prefix}members AS u ON (m.id_member = u.id_member)
WHERE m.approved=1
ORDER BY m.id_msg DESC
LIMIT ' . $limit);
$posts = array();
while ($row_posts = $smcFunc['db_fetch_assoc']($posts_result))
{
global $memberContext;
require_once($sourcedir . '/Load.php');
loadMemberData($row_posts['id_member']);
loadMemberContext($row_posts['id_member']);
$posts[] = array(
'id' => $row_posts['id_member'],
'username' => '<a href="' . $scripturl . '?action=profile;u=' . $row_posts['id_member'] . '">' . $row_posts['poster_name'] . '</a>',
'subject' => '<a style="font-weight: bold;" title="' . $text['board'] . ' ' . $row_posts['name'] .'" href="' . $scripturl . '?topic=' . $row_posts['id_topic'] . '.msg' . $row_posts['id_msg'] . ';topicseen#new">' . $row_posts['subject'] . '</a>',
'body' => $row_posts['body'],
'avatar' => $row_posts['avatar'] == '' ? $memberContext[$row_posts['id_member']]['avatar']['href'] : (stristr($row_posts['avatar'], 'http://') ? $row_posts['avatar'] : $modSettings['avatar_url'] . '/' . $row_posts['avatar']),
'board' => $row_posts['name'],
'time' => timeformat($row_posts['poster_time'])
);
}
$smcFunc['db_free_result']($posts_result);
echo'
<div id="scroller_container">
<div id="scroller">';
//Finally the Output
foreach ($posts as $post)
echo'<table>
<tr>
<td style="width: 40px;">
<img src="' . $post['avatar'] .'" alt="" width="40px" height="40px" />
</td>
<td>
' . $post['subject'] .'<br />
<small>' . $text['who'] . ' ' . $post['username'] . ' | ' . $post['time'] .'</small>
</td>
</tr>
</table>
' . substr ($post['body'],0,$number) .'...
<hr />';
echo'
</div>
</div>
<style>
#scroller_container {
position: relative;
width: 100%;
height: 300px;
overflow: hidden;
}
#scroller p {
padding: 0;
}
</style>';
?>
-
added auto scroll, but save js files to your server, find and change path with yours.
<script type="text/javascript" src="http://www.logooff.net/Site/js/jquery-1.6.2.min.js"></script>
<script type="text/javascript" src="http://www.logooff.net/Site/js/jscroller-0.4.js"></script>
<?php
echo'
<head>
<script type="text/javascript" src="http://www.logooff.net/Site/js/jquery-1.6.2.min.js"></script>
<script type="text/javascript" src="http://www.logooff.net/Site/js/jscroller-0.4.js"></script>
<script type="text/javascript">
$(document).ready(function(){
// Add Scroller Object
$jScroller.add("#scroller_container","#scroller","up",1);
// Start Autoscroller
$jScroller.start();
});
</script>
</head>
<body>';
/*
Block: Recent posts with post preview
Author: Blue @ Simple Portal.net
*/
/* [SETUP WHAT YOU WANT HERE] */
// How many recent posts do you want to output?
$limit = 20;
// How many characters do you want to output?
$number = 70;
// Do you want to translate it to your own language? :P
$text['sportal_false'] = 'Simple Portal not found';
$text['board'] = 'in';
$text['who'] = 'by';
/* [STOP!] - THIS IS THE END OF SETUP */
//Only code from now on ;)
global $smcFunc, $scripturl, $sourcedir, $modSettings;
// Lets see if you are using Simple Portal. If not...well...go get them :D
if (!file_exists($sourcedir . '/PortalBlocks.php'))
{
echo $text['sportal_false'];
return;
}
// Let's grab some database results
$posts_result = $smcFunc['db_query']('', '
SELECT m.poster_name, m.poster_time, m.id_msg, m.id_member, m.subject, m.body, m.id_topic, b.name, u.avatar
FROM {db_prefix}messages AS m
LEFT JOIN {db_prefix}boards AS b ON (m.id_board = b.id_board)
LEFT JOIN {db_prefix}members AS u ON (m.id_member = u.id_member)
WHERE m.approved=1
ORDER BY m.id_msg DESC
LIMIT ' . $limit);
$posts = array();
while ($row_posts = $smcFunc['db_fetch_assoc']($posts_result))
{
global $memberContext;
require_once($sourcedir . '/Load.php');
loadMemberData($row_posts['id_member']);
loadMemberContext($row_posts['id_member']);
$posts[] = array(
'id' => $row_posts['id_member'],
'username' => '<a href="' . $scripturl . '?action=profile;u=' . $row_posts['id_member'] . '">' . $row_posts['poster_name'] . '</a>',
'subject' => '<a style="font-weight: bold;" title="' . $text['board'] . ' ' . $row_posts['name'] .'" href="' . $scripturl . '?topic=' . $row_posts['id_topic'] . '.msg' . $row_posts['id_msg'] . ';topicseen#new">' . $row_posts['subject'] . '</a>',
'body' => $row_posts['body'],
'avatar' => $row_posts['avatar'] == '' ? $memberContext[$row_posts['id_member']]['avatar']['href'] : (stristr($row_posts['avatar'], 'http://') ? $row_posts['avatar'] : $modSettings['avatar_url'] . '/' . $row_posts['avatar']),
'board' => $row_posts['name'],
'time' => timeformat($row_posts['poster_time'])
);
}
$smcFunc['db_free_result']($posts_result);
echo'
<div id="scroller_container">
<div id="scroller">';
//Finally the Output
foreach ($posts as $post)
echo'<table>
<tr>
<td style="width: 40px;">
<img src="' . $post['avatar'] .'" alt="" width="40px" height="40px" />
</td>
<td>
' . $post['subject'] .'<br />
<small>' . $text['who'] . ' ' . $post['username'] . ' | ' . $post['time'] .'</small>
</td>
</tr>
</table>
' . substr ($post['body'],0,$number) .'...
<hr />';
echo'
</div>
</div>
<style>
#scroller_container {
position: relative;
width: 100%;
height: 300px;
overflow: hidden;
}
#scroller p {
padding: 0;
}
</style>';
?>
I don`t understand what ik must do excacly, sorry fot mi bad english.
I am a dutchman
-
js files are hosted on my server now! I don't know for how long it will be there.
this two lines in code:
<script type="text/javascript" src="http://www.logooff.net/Site/js/jquery-1.6.2.min.js"></script>
<script type="text/javascript" src="http://www.logooff.net/Site/js/jscroller-0.4.js"></script>
download files from here and save it to your host with FTP. and then change adress in that two lines to something like:
<script type="text/javascript" src="http://www.Yousite.net/jquery-1.6.2.min.js"></script>
<script type="text/javascript" src="http://www.Yousite.net/jscroller-0.4.js"></script>
orginal files also you can download from:
jscroller-0.4.js - http://jscroller.markusbordihn.de/download/
jquery - http://jquery.com/
-
blue, can you change php database query to get latest topic from this?
-
I like this verry much.
Can i make it scrol ?
No need for jquery. You can use <marquee> tag and set the height you want ;)
See here. If you need any help say so:
http://www.quackit.com/html/codes/html_marquee_code.cfm (http://www.quackit.com/html/codes/html_marquee_code.cfm)
blue, can you change php database query to get latest topic from this?
Latest topics with the new messages shown or the first message?
-
I like this verry much.
Can i make it scrol ?
No need for jquery. You can use <marquee> tag and set the height you want ;)
See here. If you need any help say so:
http://www.quackit.com/html/codes/html_marquee_code.cfm (http://www.quackit.com/html/codes/html_marquee_code.cfm)
blue, can you change php database query to get latest topic from this?
Latest topics with the new messages shown or the first message?
Yes i would like that but i can`t get it to work here.
Sorry
-
Yes i would like that but i can`t get it to work here.
Sorry
Here, try this.
There are 2 parameters that you can change in the beginning of the code -> HEIGHT and SPEED. For default HEIGHT = 150px and SPEED = 3.
<?php
/*
Block: Recent posts with post preview
Author: Blue @ Simple Portal.net
*/
/* [SETUP WHAT YOU WANT HERE] */
// How many recent posts do you want to output?
$limit = 5;
// How many characters do you want to output?
$number = 70;
// Scroll Height and Speed?
$height = "150px";
$speed = 3; // SLOW - 1 | MEDIUM - 10 | FAST - 20
// Do you want to translate it to your own language? :P
$text['sportal_false'] = 'Simple Portal not found';
$text['board'] = 'in';
$text['who'] = 'by';
/* [STOP!] - THIS IS THE END OF SETUP */
//Only code from now on ;)
global $smcFunc, $scripturl, $sourcedir, $modSettings;
// Lets see if you are using Simple Portal. If not...well...go get them :D
if (!file_exists($sourcedir . '/PortalBlocks.php'))
{
echo $text['sportal_false'];
return;
}
// Let's grab some database results
$posts_result = $smcFunc['db_query']('', '
SELECT m.poster_name, m.poster_time, m.id_msg, m.id_member, m.subject, m.body, m.id_topic, b.name, u.avatar
FROM {db_prefix}messages AS m
LEFT JOIN {db_prefix}boards AS b ON (m.id_board = b.id_board)
LEFT JOIN {db_prefix}members AS u ON (m.id_member = u.id_member)
WHERE m.approved=1
ORDER BY m.id_msg DESC
LIMIT ' . $limit);
$posts = array();
while ($row_posts = $smcFunc['db_fetch_assoc']($posts_result))
{
global $memberContext;
loadMemberData($row_posts['id_member']);
loadMemberContext($row_posts['id_member']);
$posts[] = array(
'id' => $row_posts['id_member'],
'username' => '<a href="' . $scripturl . '?action=profile;u=' . $row_posts['id_member'] . '">' . $row_posts['poster_name'] . '</a>',
'subject' => '<a style="font-weight: bold;" title="' . $text['board'] . ' ' . $row_posts['name'] .'" href="' . $scripturl . '?topic=' . $row_posts['id_topic'] . '.msg' . $row_posts['id_msg'] . ';topicseen#new">' . $row_posts['subject'] . '</a>',
'body' => $row_posts['body'],
'avatar' => $row_posts['avatar'] == '' ? $memberContext[$row_posts['id_member']]['avatar']['href'] : (stristr($row_posts['avatar'], 'http://') ? $row_posts['avatar'] : $modSettings['avatar_url'] . '/' . $row_posts['avatar']),
'board' => $row_posts['name'],
'time' => timeformat($row_posts['poster_time'])
);
}
$smcFunc['db_free_result']($posts_result);
//Finally the Output
//Scrolling xD
echo '<marquee height=' . $height . ' behavior="scroll" direction="up" scrollamount="' . $speed . '" onmouseover="this.stop()" onmouseout="this.start()">';
foreach ($posts as $post) {
echo'<table>
<tr>
<td style="width: 40px;">
<img src="' . $post['avatar'] .'" alt="" width="40px" height="40px" />
</td>
<td>
' . $post['subject'] .'<br />
<small>' . $text['who'] . ' ' . $post['username'] . ' | ' . $post['time'] .'</small>
</td>
</tr>
</table>
' . substr ($post['body'],0,$number) .'...
<hr />';
}
echo '</marquee>';
?>
-
great, i did not know for direction attribute, nice!! :)
maybe you can add this inside marquee tag:
onmouseover="this.stop()" onmouseout="this.start()"
-
Now it's better. Thanks rocknroller ;)
Have you seen that I've manage to include avatars in your pop-up block?
-
Yes i would like that but i can`t get it to work here.
Sorry
Here, try this.
There are 2 parameters that you can change in the beginning of the code -> HEIGHT and SPEED. For default HEIGHT = 150px and SPEED = 3.
<?php
/*
Block: Recent posts with post preview
Author: Blue @ Simple Portal.net
*/
/* [SETUP WHAT YOU WANT HERE] */
// How many recent posts do you want to output?
$limit = 5;
// How many characters do you want to output?
$number = 70;
// Scroll Height and Speed?
$height = "150px";
$speed = 3; // SLOW - 1 | MEDIUM - 10 | FAST - 20
// Do you want to translate it to your own language? :P
$text['sportal_false'] = 'Simple Portal not found';
$text['board'] = 'in';
$text['who'] = 'by';
/* [STOP!] - THIS IS THE END OF SETUP */
//Only code from now on ;)
global $smcFunc, $scripturl, $sourcedir, $modSettings;
// Lets see if you are using Simple Portal. If not...well...go get them :D
if (!file_exists($sourcedir . '/PortalBlocks.php'))
{
echo $text['sportal_false'];
return;
}
// Let's grab some database results
$posts_result = $smcFunc['db_query']('', '
SELECT m.poster_name, m.poster_time, m.id_msg, m.id_member, m.subject, m.body, m.id_topic, b.name, u.avatar
FROM {db_prefix}messages AS m
LEFT JOIN {db_prefix}boards AS b ON (m.id_board = b.id_board)
LEFT JOIN {db_prefix}members AS u ON (m.id_member = u.id_member)
WHERE m.approved=1
ORDER BY m.id_msg DESC
LIMIT ' . $limit);
$posts = array();
while ($row_posts = $smcFunc['db_fetch_assoc']($posts_result))
{
global $memberContext;
loadMemberData($row_posts['id_member']);
loadMemberContext($row_posts['id_member']);
$posts[] = array(
'id' => $row_posts['id_member'],
'username' => '<a href="' . $scripturl . '?action=profile;u=' . $row_posts['id_member'] . '">' . $row_posts['poster_name'] . '</a>',
'subject' => '<a style="font-weight: bold;" title="' . $text['board'] . ' ' . $row_posts['name'] .'" href="' . $scripturl . '?topic=' . $row_posts['id_topic'] . '.msg' . $row_posts['id_msg'] . ';topicseen#new">' . $row_posts['subject'] . '</a>',
'body' => $row_posts['body'],
'avatar' => $row_posts['avatar'] == '' ? $memberContext[$row_posts['id_member']]['avatar']['href'] : (stristr($row_posts['avatar'], 'http://') ? $row_posts['avatar'] : $modSettings['avatar_url'] . '/' . $row_posts['avatar']),
'board' => $row_posts['name'],
'time' => timeformat($row_posts['poster_time'])
);
}
$smcFunc['db_free_result']($posts_result);
//Finally the Output
//Scrolling xD
echo '<marquee height=' . $height . ' behavior="scroll" direction="up" scrollamount="' . $speed . '" onmouseover="this.stop()" onmouseout="this.start()">';
foreach ($posts as $post) {
echo'<table>
<tr>
<td style="width: 40px;">
<img src="' . $post['avatar'] .'" alt="" width="40px" height="40px" />
</td>
<td>
' . $post['subject'] .'<br />
<small>' . $text['who'] . ' ' . $post['username'] . ' | ' . $post['time'] .'</small>
</td>
</tr>
</table>
' . substr ($post['body'],0,$number) .'...
<hr />';
}
echo '</marquee>';
?>
Thnx Blue that was what it. :D
-
Glad I could help ;)
rocknroller, do you want latest topics with the new messages shown or the first message?
-
Glad I could help ;)
rocknroller, do you want latest topics with the new messages shown or the first message?
Latest topic with new messages. thank you for help me with avatar in this http://simpleportal.net/index.php?topic=9096.msg48266#new .
-
rocknroller,
I've made what you want. Check it out here:
http://simpleportal.net/index.php?topic=9138.0 (http://simpleportal.net/index.php?topic=9138.0)
-
rocknroller,
I've made what you want. Check it out here:
http://simpleportal.net/index.php?topic=9138.0 (http://simpleportal.net/index.php?topic=9138.0)
great, thank you!
-
Glad I could help :)