TP-Docs
HTML5 Icon HTML5 Icon HTML5 Icon
TP on Social Media

Recent

Welcome to TinyPortal. Please login or sign up.

May 17, 2024, 09:30:15 AM

Login with username, password and session length
Members
  • Total Members: 3,886
  • Latest: Grendor
Stats
  • Total Posts: 195,189
  • Total Topics: 21,220
  • Online today: 59
  • Online ever: 3,540 (September 03, 2022, 01:38:54 AM)
Users Online
  • Users: 0
  • Guests: 29
  • Total: 29

"recent topics" in SMF style

Started by Lesmond, August 17, 2005, 12:01:38 PM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

hartiberlin

#310
Quote from: J.A.Cortina on July 30, 2007, 03:10:29 PM
The odd character problem has come up before (earlier in this huge thread).

See http://www.tinyportal.net/index.php?topic=596.msg115824#msg115824



Thanks,
somehow when I looked at my code,
there were these strange  characters already infront of the << characters there,
so it has been some kind of copy and paste problem.
I just deleted them now and it works.


Quote


About inserting something after every X number of entries, you'd find the lines:
foreach ($topics as $topic)
{


And do something like:
ad_ctr = 0;
foreach ($topics as $topic)
{
ad_ctr += 1;
if (ad_ctr > 50)
{
ad_ctr = 1;
echo '<tr><td colspan="7">';

[*[*[ CODE TO ECHO/OUTPUT WHAT YOU WANT INSERTED ]*]*]

echo '</td></tr>';
}



Where do you define the

"after every X number of entries"

here in the above code ?
I donÃ,´t see that.
Many thanks

jacortina

It's the '50' in:
if (ad_ctr > 50)

(you DID mention "between each 50 listings" in your last post).

hartiberlin

Ahh, I see, yes, 50 entries.
Thanks.

P.S: When I compare the output of your code with the RSS feed or the
200 recent postings below the forum ,
I see, that some postings are missing in your listing.

Why is that ?
Many thanks.

jacortina

I don't know what your RSS feed is configured for, but unless you've modified it, the list below the forum is 'Recent Posts". This block is NOT Recent Posts, it's "Recent Topics".

That is, it's the most recently posted to topics and a topic will only appear in the list once.

hartiberlin

Quote from: J.A.Cortina on July 30, 2007, 11:34:21 PM
I don't know what your RSS feed is configured for, but unless you've modified it, the list below the forum is 'Recent Posts". This block is NOT Recent Posts, it's "Recent Topics".

That is, it's the most recently posted to topics and a topic will only appear in the list once.
Quote from: J.A.Cortina on July 30, 2007, 11:34:21 PM
I don't know what your RSS feed is configured for, but unless you've modified it, the list below the forum is 'Recent Posts". This block is NOT Recent Posts, it's "Recent Topics".

That is, it's the most recently posted to topics and a topic will only appear in the list once.
Quote from: J.A.Cortina on July 30, 2007, 11:34:21 PM
I don't know what your RSS feed is configured for, but unless you've modified it, the list below the forum is 'Recent Posts". This block is NOT Recent Posts, it's "Recent Topics".

That is, it's the most recently posted to topics and a topic will only appear in the list once.


Okay, yes, then that is a bit different, but okay, that is also good and I leave it this way
and also leave the 200 recent postings directly below the forum page.


Now when I tried to insert my Adsense code like this:

global $context, $settings, $scripturl, $txt, $db_prefix, $ID_MEMBER, $user_info, $modSettings, $user_profile;

//////////////////////////////////////////// ---------- Unconditional Exclude
//
       $exclude_boards = array();      // KEEP (to preserve variable declaration)
//      $exclude_boards = array(5);     //  Exclude single board
//      $exclude_boards = array(5, 8);  //  Exclude multiple boards
       $ex_board_clause = !empty($exclude_boards) ? ' AND b.ID_BOARD NOT IN (' . implode(', ', $exclude_boards) . ')' : '';
//
//


       $do_query = 1;

//////////////////////////////////////////// ---------- Boardindex Most Recent Topics Arguments
//
//      Comment out the Info Center's Most Recent Posts Code and Insert this
//      to show Most Recent Topics in full detail style instead
//
      $list_count = 200;
      $heading = 'Most Recently Posted To Topics';
      $where_clause = 't.ID_LAST_MSG >= ' . ($modSettings['maxMsgID'] - 90 * max($list_count, 5));
      $limit_clause = 'LIMIT ' . $list_count;
      $order_clause = 't.ID_LAST_MSG DESC';
////////////////////////////////////////////


       $stable_icons = array('xx', 'thumbup', 'thumbdown', 'exclamation', 'question', 'lamp', 'smiley', 'angry', 'cheesy', 'grin', 'sad', 'wink', 'moved', 'recycled', 'wireless');
       $icon_sources = array();
       foreach ($stable_icons as $icon)
               $icon_sources[$icon] = 'images_url';

       $groupcolors = array();
       $request = db_query("SELECT ID_GROUP, onlineColor FROM {$db_prefix}membergroups", __FILE__, __LINE__);
       while ($row = mysql_fetch_assoc($request))
               $groupcolors[$row['ID_GROUP']] = $row['onlineColor'];
       mysql_free_result($request);

       $topics = array();

       if ($do_query == 1)
       {
       $request = db_query("
               SELECT
                               ms.subject AS firstSubject, ms.posterTime AS firstPosterTime, ms.ID_TOPIC, t.ID_BOARD, b.name AS bname,
                               t.numReplies, t.numViews, ms.ID_MEMBER AS ID_FIRST_MEMBER, ml.ID_MEMBER AS ID_LAST_MEMBER,
                               ml.posterTime AS lastPosterTime, IFNULL(mems.realName, ms.posterName) AS firstPosterName,
                               IFNULL(meml.realName, ml.posterName) AS lastPosterName,
                               mems.ID_GROUP as mems_group, meml.ID_GROUP as meml_group,
                               ml.subject AS lastSubject, b.memberGroups,
                               ml.icon AS lastIcon, ms.icon AS firstIcon, t.ID_POLL, t.isSticky, t.locked, ml.modifiedTime AS lastModifiedTime,
                               LEFT(ml.body, 384) AS lastBody, LEFT(ms.body, 384) AS firstBody,
                               ml.smileysEnabled AS lastSmileys, ms.smileysEnabled AS firstSmileys, t.ID_FIRST_MSG, t.ID_LAST_MSG,"
                               . ($user_info['is_guest'] ? '1 AS isRead, 0 AS new_from' : '
                               IFNULL(lt.ID_MSG, IFNULL(lmr.ID_MSG, 0)) >= ml.ID_MSG_MODIFIED AS isRead,
                               IFNULL(lt.ID_MSG, IFNULL(lmr.ID_MSG, -1)) + 1 AS new_from') . "
                       FROM ({$db_prefix}messages AS ms, {$db_prefix}messages AS ml, {$db_prefix}topics AS t, {$db_prefix}boards AS b)
                               LEFT JOIN {$db_prefix}members AS mems ON (mems.ID_MEMBER = ms.ID_MEMBER)
                               LEFT JOIN {$db_prefix}members AS meml ON (meml.ID_MEMBER = ml.ID_MEMBER)
                               LEFT JOIN {$db_prefix}log_topics AS lt ON (lt.ID_TOPIC = t.ID_TOPIC AND lt.ID_MEMBER = $ID_MEMBER)
                               LEFT JOIN {$db_prefix}log_mark_read AS lmr ON (lmr.ID_BOARD = t.ID_BOARD AND lmr.ID_MEMBER = $ID_MEMBER)
                       WHERE " . $where_clause . $ex_board_clause . "
                               AND t.ID_TOPIC = ms.ID_TOPIC
                               AND b.ID_BOARD = t.ID_BOARD" . (!empty($modSettings['recycle_enable']) && $modSettings['recycle_board'] > 0 ? " AND b.ID_BOARD != $modSettings[recycle_board]" : '') . "
                               AND ms.ID_MSG = t.ID_FIRST_MSG
                               AND ml.ID_MSG = t.ID_LAST_MSG
                               AND " . $user_info['query_see_board'] . "
                       ORDER BY " . $order_clause . " " . $limit_clause, __FILE__, __LINE__);


       $topic_ids = array();
       while ($row = mysql_fetch_assoc($request))
       {
               if ($row['ID_POLL'] > 0 && $modSettings['pollMode'] == '0')
                       continue;

               $topic_ids[] = $row['ID_TOPIC'];

               // Clip the strings first because censoring is slow :/. (for some reason?)
               $row['firstBody'] = strip_tags(strtr(parse_bbc($row['firstBody'], $row['firstSmileys'], $row['ID_FIRST_MSG']), array('<br />' => '
')));
               if (strlen($row['firstBody']) > 128)
                       $row['firstBody'] = substr($row['firstBody'], 0, 128) . '...';
               $row['lastBody'] = strip_tags(strtr(parse_bbc($row['lastBody'], $row['lastSmileys'], $row['ID_LAST_MSG']), array('<br />' => '
')));
               if (strlen($row['lastBody']) > 128)
                       $row['lastBody'] = substr($row['lastBody'], 0, 128) . '...';

                       $row['lastSubject'] = $row['firstSubject'];
                       $row['lastBody'] = $row['firstBody'];

               // Decide how many pages the topic should have.
               $topic_length = $row['numReplies'] + 1;
               if ($topic_length > $modSettings['defaultMaxMessages'])
               {
                       $tmppages = array();
                       $tmpa = 1;
                       for ($tmpb = 0; $tmpb < $topic_length; $tmpb += $modSettings['defaultMaxMessages'])
                       {
                               $tmppages[] = '<a href="' . $scripturl . '?topic=' . $row['ID_TOPIC'] . '.' . $tmpb . ';topicseen">' . $tmpa . '</a>';
                               $tmpa++;
                       }
                       // Show links to all the pages?
                       if (count($tmppages) <= 5)
                               $pages = 'Ã,« ' . implode(' ', $tmppages);
                       // Or skip a few?
                       else
                               $pages = 'Ã,« ' . $tmppages[0] . ' ' . $tmppages[1] . ' ... ' . $tmppages[count($tmppages) - 2] . ' ' . $tmppages[count($tmppages) - 1];

                       if (!empty($modSettings['enableAllMessages']) && $topic_length < $modSettings['enableAllMessages'])
                               $pages .= '  <a href="' . $scripturl . '?topic=' . $row['ID_TOPIC'] . '.0;all">' . $txt[190] . '</a>';
                       $pages .= ' Ã,»';
               }
               else
                       $pages = '';

               // We need to check the topic icons exist... you can never be too sure!
               if (empty($modSettings['messageIconChecks_disable']))
               {
                       // First icon first... as you'd expect.
                       if (!isset($icon_sources[$row['firstIcon']]))
                               $icon_sources[$row['firstIcon']] = file_exists($settings['theme_dir'] . '/images/post/' . $row['firstIcon'] . '.gif') ? 'images_url' : 'default_images_url';
                       // Last icon... last... duh.
                       if (!isset($icon_sources[$row['lastIcon']]))
                               $icon_sources[$row['lastIcon']] = file_exists($settings['theme_dir'] . '/images/post/' . $row['lastIcon'] . '.gif') ? 'images_url' : 'default_images_url';
               }

               $color_start = !empty($groupcolors[$row['mems_group']]) ? $groupcolors[$row['mems_group']] : '';
               $color_last = !empty($groupcolors[$row['meml_group']]) ? $groupcolors[$row['meml_group']] : '';

               // And build the array.
               $topics[$row['ID_TOPIC']] = array(
                       'id' => $row['ID_TOPIC'],
                       'first_post' => array(
                               'id' => $row['ID_FIRST_MSG'],
                               'member' => array(
                                       'name' => $row['firstPosterName'],
                                       'id' => $row['ID_FIRST_MEMBER'],
                                       'href' => $scripturl . '?action=profile;u=' . $row['ID_FIRST_MEMBER'],
                                       'link' => !empty($row['ID_FIRST_MEMBER']) ? '<a href="' . $scripturl . '?action=profile;u=' . $row['ID_FIRST_MEMBER'] . '" title="' . $txt[92] . ' ' . $row['firstPosterName'] . '">' . '<font color="' . $color_start . '">' . $row['firstPosterName'] . '</font>' . '</a>' : $row['firstPosterName']
                               ),
                               'time' => timeformat($row['firstPosterTime']),
                               'timestamp' => forum_time(true, $row['firstPosterTime']),
                               'subject' => $row['firstSubject'],
                               'preview' => $row['firstBody'],
                               'icon' => $row['firstIcon'],
                               'icon_url' => $settings[$icon_sources[$row['firstIcon']]] . '/post/' . $row['firstIcon'] . '.gif',
                               'href' => $scripturl . '?topic=' . $row['ID_TOPIC'] . '.0;topicseen',
                               'link' => '<a href="' . $scripturl . '?topic=' . $row['ID_TOPIC'] . '.0;topicseen">' . $row['firstSubject'] . '</a>'
                       ),
                       'last_post' => array(
                               'id' => $row['ID_LAST_MSG'],
                               'member' => array(
                                       'name' => $row['lastPosterName'],
                                       'id' => $row['ID_LAST_MEMBER'],
                                       'href' => $scripturl . '?action=profile;u=' . $row['ID_LAST_MEMBER'],
                                       'link' => !empty($row['ID_LAST_MEMBER']) ? '<a href="' . $scripturl . '?action=profile;u=' . $row['ID_LAST_MEMBER'] . '">' . '<font color="' . $color_last . '">' . $row['lastPosterName'] . '</font>' . '</a>' : $row['lastPosterName']
                               ),
                               'time' => timeformat($row['lastPosterTime']),
                               'timestamp' => forum_time(true, $row['lastPosterTime']),
                               'subject' => $row['lastSubject'],
                               'preview' => $row['lastBody'],
                               'icon' => $row['lastIcon'],
                               'icon_url' => $settings[$icon_sources[$row['lastIcon']]] . '/post/' . $row['lastIcon'] . '.gif',
                               'href' => $scripturl . '?topic=' . $row['ID_TOPIC'] . ($row['numReplies'] == 0 ? '.0' : '.msg' . $row['ID_LAST_MSG']) . ';topicseen#msg' . $row['ID_LAST_MSG'],
                               'link' => '<a href="' . $scripturl . '?topic=' . $row['ID_TOPIC'] . ($row['numReplies'] == 0 ? '.0' : '.msg' . $row['ID_LAST_MSG']) . ';topicseen#msg' . $row['ID_LAST_MSG'] . '">' . $row['lastSubject'] . '</a>'
                       ),
                       'new' => $row['isRead'],
                       'new_from' => $row['new_from'],
                       'new_href' => $scripturl . '?topic=' . $row['ID_TOPIC'] . '.msg' . $row['new_from'] . ';topicseen#new',
                       'href' => $scripturl . '?topic=' . $row['ID_TOPIC'] . ($row['numReplies'] == 0 ? '.0' : '.msg' . $row['new_from']) . ';topicseen' . ($row['numReplies'] == 0 ? '' : 'new'),
                       'link' => '<a href="' . $scripturl . '?topic=' . $row['ID_TOPIC'] . ($row['numReplies'] == 0 ? '.0' : '.msg' . $row['new_from']) . ';topicseen#msg' . $row['new_from'] . '">' . $row['firstSubject'] . '</a>',
                       'is_sticky' => !empty($modSettings['enableStickyTopics']) && !empty($row['isSticky']),
                       'is_locked' => !empty($row['locked']),
                       'is_poll' => $modSettings['pollMode'] == '1' && $row['ID_POLL'] > 0,
                       'is_hot' => $row['numReplies'] >= $modSettings['hotTopicPosts'],
                       'is_very_hot' => $row['numReplies'] >= $modSettings['hotTopicVeryPosts'],
                       'is_posted_in' => false,
                       'icon' => $row['firstIcon'],
                       'icon_url' => $settings[$icon_sources[$row['firstIcon']]] . '/post/' . $row['firstIcon'] . '.gif',
                       'subject' => $row['firstSubject'],
                       'pages' => $pages,
                       'replies' => $row['numReplies'],
                       'views' => $row['numViews'],
                       'board' => array(
                               'id' => $row['ID_BOARD'],
                               'name' => $row['bname'],
                               'href' => $scripturl . '?board=' . $row['ID_BOARD'] . '.0',
                               'link' => '<a href="' . $scripturl . '?board=' . $row['ID_BOARD'] . '.0">' . $row['bname'] . '</a>'
                       )
               );

               determineTopicClass($topics[$row['ID_TOPIC']]);
       }
       mysql_free_result($request);

       if (!empty($modSettings['enableParticipation']) && !empty($topic_ids))
       {
               $result = db_query("
                       SELECT ID_TOPIC
                       FROM {$db_prefix}messages
                       WHERE ID_TOPIC IN (" . implode(', ', $topic_ids) . ")
                               AND ID_MEMBER = $ID_MEMBER", __FILE__, __LINE__);
               while ($row = mysql_fetch_assoc($result))
               {
                       if (empty($topics[$row['ID_TOPIC']]['is_posted_in']))
                       {
                               $topics[$row['ID_TOPIC']]['is_posted_in'] = true;
                               $topics[$row['ID_TOPIC']]['class'] = 'my_' . $topics[$row['ID_TOPIC']]['class'];
                       }
               }
               mysql_free_result($result);
       }

       }

if (!empty($topics))
   {
   echo '
       <div class="tborder" ', $context['browser']['needs_size_fix'] && !$context['browser']['is_ie6'] ? 'style="width: 100%;margin:0px;"' : 'style="margin:0px;"', '>
           <table border="0" width="100%" cellspacing="1" cellpadding="1" class="bordercolor">
               <tr>';

   echo '
                   <td class="titlebg" colspan="7">', $heading, '</td>';
   echo '
               </tr>';

   echo '
                               <tr class="titlebg">
                                       <td width="10%" colspan="2"> </td>
                                       <td>', $txt[70], '
                                       </td><td width="14%">', $txt[109], '
                                       </td><td width="4%" align="center">', $txt[110], '
                                       </td><td width="4%" align="center">', $txt[301], '
                                       </td><td width="24%">', $txt[111], '
                                       </td>
                               </tr>';

       foreach ($topics as $topic)
       {



ad_ctr = 0;
foreach ($topics as $topic)
{
ad_ctr += 1;
if (ad_ctr > 50)
{
ad_ctr = 1;
echo '<tr><td colspan="7">';

<script type="text/javascript"><!--
google_ad_client = "pub-2734280293205008";
google_ad_width = 728;
google_ad_height = 90;
google_ad_format = "728x90_as";
google_ad_type = "text_image";
//2006-11-24: banner
google_ad_channel = "8428626223";
google_color_border = "CCCCCC";
google_color_bg = "CCCCCC";
google_color_link = "11593C";
google_color_text = "000000";
google_color_url = "063E3F";
//--></script>
<script type="text/javascript"
  src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>

echo '</td></tr>';
}




               // Do we want to seperate the sticky and lock status out?
               if (!empty($settings['seperate_sticky_lock']) && strpos($topic['class'], 'sticky') !== false)
                       $topic['class'] = substr($topic['class'], 0, strrpos($topic['class'], '_sticky'));
               if (!empty($settings['seperate_sticky_lock']) && strpos($topic['class'], 'locked') !== false)
                       $topic['class'] = substr($topic['class'], 0, strrpos($topic['class'], '_locked'));

               echo '
                               <tr>
                                       <td class="windowbg2" valign="middle" align="center" width="6%">
                                               <img src="' . $settings['images_url'] . '/topic/' . $topic['class'] . '.gif" alt="" />
                                       </td><td class="windowbg2" valign="middle" align="center" width="4%">
                                               <img src="' . $topic['first_post']['icon_url'] . '" alt="" align="middle" />
                                       </td><td class="windowbg' , $topic['is_sticky'] && !empty($settings['seperate_sticky_lock']) ? '3' : '' , '" width="48%" valign="middle">' , $topic['is_locked'] && !empty($settings['seperate_sticky_lock']) ? '
                                               <img src="' . $settings['images_url'] . '/icons/quick_lock.gif" align="right" alt="" style="margin: 0;" />' : '' , $topic['is_sticky'] && !empty($settings['seperate_sticky_lock']) ? '
                                               <img src="' . $settings['images_url'] . '/icons/show_sticky.gif" align="right" alt="" style="margin: 0;" />' : '', $topic['first_post']['link'];
                                       if ($topic['new'] == 0)
                                               {
                                               echo '<a href="', $topic['new_href'], '"> <img src="', $settings['images_url'], '/', $context['user']['language'], '/new.gif" alt="', $txt[302], '" /></a>';
                                               }
                                       echo '
                                       <span class="smalltext">', $topic['pages'], '<br>', $txt['smf88'], ' ', $topic['board']['link'], '</span></td>
                                       <td class="windowbg2" valign="middle" width="14%">
                                               ', $topic['first_post']['member']['link'], '</td>
                                       <td class="windowbg" valign="middle" width="4%" align="center">
                                               ', $topic['replies'], '</td>
                                       <td class="windowbg" valign="middle" width="4%" align="center">
                                               ', $topic['views'], '</td>
                                       <td class="windowbg2" valign="middle" width="22%">
                                               <a href="', $topic['last_post']['href'], '"><img src="', $settings['images_url'], '/icons/last_post.gif" alt="', $txt[111], '" title="', $txt[111], '" style="float: right;" /></a>
                                               <span class="smalltext">
                                                       ', $topic['last_post']['time'], '<br />
                                                       ', $txt[525], ' ', $topic['last_post']['member']['link'], '
                                               </span>
                                       </td>
                               </tr>';
       }

   echo '</table></div>';

   }
       else
           echo '<b><u>'.$heading.'<br><br>No Topics Match Search Criteria</u></b>';


I get the error message:

Parse error: parse error, unexpected '=' in /mounted-storage/home4/sub002/sc11940-GNVW/overunity/Sources/Load.php(1736) : eval()'d code(35) : eval()'d code on line 245

Did I insert it wrongly ?
Many thanks.

jacortina

You need to 'echo' that out so that script text itself ends up in the generated page.

Try changing:
<script type="text/javascript"><!--
to:
echo '<script type="text/javascript"><!--

And change:
</script>
to:
</script>';

hartiberlin

I only got it to work,
when I used:
$ad_ctr
instead of
ad_ctr

So is it not a variable, which have to be declared ??

( P.S: I am a newbie,when it comes to PHP...)

jacortina

Yes. My mistake. Variables need the '$', so it should have been $ad_ctr all along.

jpark

I'm wondering if this can be done easily...I would like to use this recent topics list and incorporate a drop-down menu where you can select which board you want to see the recent topics from.  Could anyone offer some suggestions?

jacortina

I guess that depends on what you mean by 'easily done'. ;)

It also depends on what you mean by 'this recent topics list'. There's a couple of different code sets here.

Generally, though, it could be done by 'scavenging' the code in Display.template.php which generates the 'Jump To:' box and tweak it to self-reference the article page with an argument indicating the chosen board (but don't use "board=##").