SimplePortal

Customization => Custom Coding => Topic started by: infostrides on February 05, 2012, 06:29:32 AM

Title: SSI RecentTopics Modification - How to Remove Board Name and Post Date
Post by: infostrides on February 05, 2012, 06:29:32 AM
Hello, I need help. I am implementing a function in my Simpleportal block with the following:

Code: [Select]
ssi_recentTopics(10, null, array(24),  'echo');
This works fine as can be seen on the homepage (http://www.theinfostrides.com) under jQuery Tabs but I will like to remove board names and post dates from the function.

Thank you.
Title: Re: SSI RecentTopics Modification - How to Remove Board Name and Post Date
Post by: Chen Zhen on February 05, 2012, 03:53:52 PM
That would leave just the topic & poster. Is that all you want to display?
Left aligned instead of centered?

You can edit the actual function located in SSI.php (main directory tree) if you prefer or you have the option of copy & paste just that function into a custom php block (renaming it) where you would edit the display located at the end of the function.
You need to rename the function so you do not get a duplicate function error if you opt the latter.

ie. Custom PHP block code:
Code: [Select]
ssi_recentTopics2(10, null, array(24),  'echo');

/* Recent topic list:   [board] Subject by Poster Date */
function ssi_recentTopics2($num_recent = 8, $exclude_boards = null, $include_boards = null, $output_method = 'echo')
{
global $context, $settings, $scripturl, $txt, $db_prefix, $user_info;
global $modSettings, $smcFunc;

if ($exclude_boards === null && !empty($modSettings['recycle_enable']) && $modSettings['recycle_board'] > 0)
$exclude_boards = array($modSettings['recycle_board']);
else
$exclude_boards = empty($exclude_boards) ? array() : (is_array($exclude_boards) ? $exclude_boards : array($exclude_boards));

// Only some boards?.
if (is_array($include_boards) || (int) $include_boards === $include_boards)
{
$include_boards = is_array($include_boards) ? $include_boards : array($include_boards);
}
elseif ($include_boards != null)
{
$output_method = $include_boards;
$include_boards = array();
}

$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';

// Find all the posts in distinct topics.  Newer ones will have higher IDs.
$request = $smcFunc['db_query']('substring', '
SELECT
m.poster_time, ms.subject, m.id_topic, m.id_member, m.id_msg, b.id_board, b.name AS board_name, t.num_replies, t.num_views,
IFNULL(mem.real_name, m.poster_name) AS poster_name, ' . ($user_info['is_guest'] ? '1 AS is_read, 0 AS new_from' : '
IFNULL(lt.id_msg, IFNULL(lmr.id_msg, 0)) >= m.id_msg_modified AS is_read,
IFNULL(lt.id_msg, IFNULL(lmr.id_msg, -1)) + 1 AS new_from') . ', SUBSTRING(m.body, 1, 384) AS body, m.smileys_enabled, m.icon
FROM {db_prefix}topics AS t
INNER JOIN {db_prefix}messages AS m ON (m.id_msg = t.id_last_msg)
INNER JOIN {db_prefix}boards AS b ON (b.id_board = t.id_board)
INNER JOIN {db_prefix}messages AS ms ON (ms.id_msg = t.id_first_msg)
LEFT JOIN {db_prefix}members AS mem ON (mem.id_member = m.id_member)' . (!$user_info['is_guest'] ? '
LEFT JOIN {db_prefix}log_topics AS lt ON (lt.id_topic = t.id_topic AND lt.id_member = {int:current_member})
LEFT JOIN {db_prefix}log_mark_read AS lmr ON (lmr.id_board = b.id_board AND lmr.id_member = {int:current_member})' : '') . '
WHERE t.id_last_msg >= {int:min_message_id}
' . (empty($exclude_boards) ? '' : '
AND b.id_board NOT IN ({array_int:exclude_boards})') . '
' . (empty($include_boards) ? '' : '
AND b.id_board IN ({array_int:include_boards})') . '
AND {query_wanna_see_board}' . ($modSettings['postmod_active'] ? '
AND t.approved = {int:is_approved}
AND m.approved = {int:is_approved}' : '') . '
ORDER BY t.id_last_msg DESC
LIMIT ' . $num_recent,
array(
'current_member' => $user_info['id'],
'include_boards' => empty($include_boards) ? '' : $include_boards,
'exclude_boards' => empty($exclude_boards) ? '' : $exclude_boards,
'min_message_id' => $modSettings['maxMsgID'] - 35 * min($num_recent, 5),
'is_approved' => 1,
)
);
$posts = array();
while ($row = $smcFunc['db_fetch_assoc']($request))
{
$row['body'] = strip_tags(strtr(parse_bbc($row['body'], $row['smileys_enabled'], $row['id_msg']), array('<br />' => '')));
if ($smcFunc['strlen']($row['body']) > 128)
$row['body'] = $smcFunc['substr']($row['body'], 0, 128) . '...';

// Censor the subject.
censorText($row['subject']);
censorText($row['body']);

if (empty($modSettings['messageIconChecks_disable']) && !isset($icon_sources[$row['icon']]))
$icon_sources[$row['icon']] = file_exists($settings['theme_dir'] . '/images/post/' . $row['icon'] . '.gif') ? 'images_url' : 'default_images_url';

// Build the array.
$posts[] = array(
'board' => array(
'id' => $row['id_board'],
'name' => $row['board_name'],
'href' => $scripturl . '?board=' . $row['id_board'] . '.0',
'link' => '<a href="' . $scripturl . '?board=' . $row['id_board'] . '.0">' . $row['board_name'] . '</a>'
),
'topic' => $row['id_topic'],
'poster' => array(
'id' => $row['id_member'],
'name' => $row['poster_name'],
'href' => empty($row['id_member']) ? '' : $scripturl . '?action=profile;u=' . $row['id_member'],
'link' => empty($row['id_member']) ? $row['poster_name'] : '<a href="' . $scripturl . '?action=profile;u=' . $row['id_member'] . '">' . $row['poster_name'] . '</a>'
),
'subject' => $row['subject'],
'replies' => $row['num_replies'],
'views' => $row['num_views'],
'short_subject' => shorten_subject($row['subject'], 25),
'preview' => $row['body'],
'time' => timeformat($row['poster_time']),
'timestamp' => forum_time(true, $row['poster_time']),
'href' => $scripturl . '?topic=' . $row['id_topic'] . '.msg' . $row['id_msg'] . ';topicseen#new',
'link' => '<a href="' . $scripturl . '?topic=' . $row['id_topic'] . '.msg' . $row['id_msg'] . '#new" rel="nofollow">' . $row['subject'] . '</a>',
// Retained for compatibility - is technically incorrect!
'new' => !empty($row['is_read']),
'is_new' => empty($row['is_read']),
'new_from' => $row['new_from'],
'icon' => '<img src="' . $settings[$icon_sources[$row['icon']]] . '/post/' . $row['icon'] . '.gif" align="middle" alt="' . $row['icon'] . '" />',
);
}
$smcFunc['db_free_result']($request);

// Just return it.
if ($output_method != 'echo' || empty($posts))
return $posts;

echo '
<table border="0" class="ssi_table">';
foreach ($posts as $post)
{
echo '
<tr>';
/* echo '
<td style="text-align:left;vertical-align:top;visibility:hidden;" nowrap="nowrap">
[', $post['board']['link'], ']
</td>'; */
echo '
<td style="vertical-align:top;text-align:left;">
<a href="', $post['href'], '">', $post['subject'], '</a>
', $txt['by'], ' ', $post['poster']['link'], '
', !$post['is_new'] ? '' : '<a href="' . $scripturl . '?topic=' . $post['topic'] . '.msg' . $post['new_from'] . ';topicseen#new" rel="nofollow"><img src="' . $settings['lang_images_url'] . '/new.gif" alt="' . $txt['new'] . '" /></a>', '
</td>';
/* echo '
<td style="text-align:right;" nowrap="nowrap">
', $post['time'], '
</td>'; */
echo '
</tr>';
}
echo '
</table>';
}

.. I commented out the cells you don't want displayed & set it to align the one cell to the left.
Edit it as preferred.

ie. table cells:  <td ..> blah blah </td>

Title: Re: SSI RecentTopics Modification - How to Remove Board Name and Post Date
Post by: infostrides on February 08, 2012, 07:35:05 PM
Thank you for your reply. I later found and use the following:

Code: [Select]
$array = ssi_recentTopics(10, null, array(22), 'array');

foreach ($array as $news)
{
echo '<hr width="100%" />
<img src="ImageURL" alt="" /> <a href="', $news['href'], '">', $news['subject'], '</a> [', $news['board']['link'], ']<br />';
}
Title: Re: SSI RecentTopics Modification - How to Remove Board Name and Post Date
Post by: Chen Zhen on February 08, 2012, 08:39:05 PM

Code: [Select]
// Just return it.
if ($output_method != 'echo' || empty($posts))
return $posts;

ya.. don't use those functions much & should have read the above line which returns it instead of echo.
I usually just make my own queries for stuff is why.

Glad you got it sorted out.
Title: Re: SSI RecentTopics Modification - How to Remove Board Name and Post Date
Post by: caracolo on September 06, 2012, 08:01:32 AM
And if is a list of the topics (sorted by date) at the date when they were opened and not by the date of the aswers of the users? How could it be? I need a list by the dat when they opened the theme (fisrt post) not by the date of the aswers, I mean
SimplePortal 2.3.8 © 2008-2024, SimplePortal