Link to Mod (http://custom.simplemachines.org/mods/index.php?mod=1350)
Topic Summary Mod 1.3.1 by Nathaniel
OverviewThis mod adds a "Topic Summary" column to the MessageIndex. The page where you view a list of topics for a particular board. It allows your users to get a better idea of what the topic is about before they view the actual topic itself. It basically takes the first x characters from the last or first post of a topic, strips any HTML, whitespace, newlines or BBC, and then displays it.
Settings are found in the Admin panel:For SMF 1.1.x: "Features and Options" -> "Layout and Options".
For SMF 2: "Configuration" -> "Features and Options" -> "Layout".
Setting Explanations:
- Post To Summarize: The 'Topic Summary' column can either summarize the first or the last post of the topic, this setting allows you to choose which.
- Summary Length: This setting allows you to set how many characters will be shown from the post that is being summarized.
- Max Word Length in Summary: This setting allows you to limit the size of the words which will be summarized, so that the summary will not take up too much room on the page. If a word from the summary is too large then it will be broken up. The default is 20 letters.
- Column Width: This setting allows you to specify a width for the 'Topic Summary' Column.
SMF Version SupportThis mod is officially supported for SMF 2.0 and above only. Below is a list of available versions of this mod and the previous versions of SMF that they supported. Use them at your own risk. The mod author will not be supporting or upgrading this mod in any way for versions of SMF below 2.0.
Version 1.02: SMF 1.1.x and SMF 2 RC2 or below.
Version 1.3.1: SMF 2 RC4 and above.
DonateIf this mod has helped you, then feel free to support the developer by
Donating (https://www.paypal.com/cgi-bin/webscr?cmd=_donations&business=VCFQ7MJNVXLLA&lc=AU&item_name=Donation¤cy_code=USD&bn=PP%2dDonationsBF%3abtn_donate_SM%2egif%3aNonHosted). Any amount of money is welcome.
Themes/TemplatesThis mod only edits a single template file - MessageIndex.template.php - which is only used in a few Custom Themes. If your custom theme doesn't contain this file then it should work automatically. Otherwise you can use the 'Manual Install Instructions for SMF' function above to get a list of edits that you will need to make to your custom themes 'MessageIndex.template.php' for your relevant SMF version.
If you need any help with edits for custom themes, then you can ask for it in the support topic for this mod (http://www.simplemachines.org/community/index.php?topic=257942), remember that you will
have to post the 'MessageIndex.template.php' file from your custom theme, otherwise I will not be able to perform the edits.
Version Changesv1.3 - 5 November 2010
Updated for SMF 2 RC4.
v1.02 - 20 November 2009
Updated for SMF 2 RC2.
v1.01 - 15 September 2008
Updated for SMF 1.1.6 and SMF 2 Beta.
v1.0 - 24 August 2008
Original Mod release.
screenie/demo please?
Download page is now updated to include a screenshot.
I will try to add a little tutorial that shows you how to do the template edits for custom themes, sometime today. ;)
Great idea.
yes grat mod thank you just what im looking for
I am glad that you guys like it. :D
Actually it was ccbtimewiz's idea, I just made it. ;)
I have updated the Mod download page so that it includes instructions for manual edits to custom themes. ;)
Version 1.01:
Updated for SMF 1.1.6 and SMF 2 Beta.
Thanks for this beautiful mod.
I want to show only first post's summary, not reply's summary.
Can you do that please?
another question:
Can you make this code with work in index.template.php too
', $topic[!empty($modSettings['TopicSummary_message']) ? $modSettings['TopicSummary_message'] : 'last_post']['summary'], '
Thanks.
Bump This is important.
Please.. :-[
Ah, sorry I didn't notice this *erhan. ;)
1) You should already be able to choose if the last or first post is used for the summary, there is a setting for it. The setting locations are in the first post of this topic.
2) That should be possible, are you referring to the 'Last post' part for each board?
Quote from: LHVWB on October 17, 2008, 09:08:37 AM
Ah, sorry I didn't notice this *erhan. ;)
1) You should already be able to choose if the last or first post is used for the summary, there is a setting for it. The setting locations are in the first post of this topic.
Ohh sorry, I will look.
Quote from: LHVWB on October 17, 2008, 09:08:37 AM
2) That should be possible, are you referring to the 'Last post' part for each board?
nope, first post of the topic, as I said above.
and thanks for your reply.
Quote from: *erhan on October 17, 2008, 09:12:35 AM
Quote from: LHVWB on October 17, 2008, 09:08:37 AM
2) That should be possible, are you referring to the 'Last post' part for each board?
nope, first post of the topic, as I said above.
and thanks for your reply.
So which topics/posts do you want to be summarized? And in which exact areas?
LHVWB
Actually, I was trying something.
Your mod is awesome, but I'm trying to put that topics' descriptions to meta area
I mean this area:
<meta name="description" content="THIS AREA" />
So, Topics descriptions will looks great on google or yahoo search results.
What do you think? :-\
@*erhan,
Hmm, I'm not sure about that. I haven't really worked with meta description tags at all, which page are you referring to? The MessageIndex or Topic Display pages?
Topic Display pages :-\
It should be fairly easy to do, you will have to add a database query to the Display.php file to get the body of the first post, and then you can run it through the 'generate_summary' function which is added by this mod. I have make up some code for that, although I can't really do the database query unless I know which version of SMF you have.
I'm using 1.1.6
This is very cool and important for SMF I think.
If you make this as a mod, I know a lot of people love it.
Quote from: *erhan on October 18, 2008, 05:39:30 AM
I'm using 1.1.6
This is very cool and important for SMF I think.
If you make this as a mod, I know a lot of people love it.
I could make it into a mod (and it would have to be a separate mod), although the mod below sort of already does this by showing a description for the 'Message Display'.
http://custom.simplemachines.org/mods/index.php?mod=1138
You might prefer an option that is more specific to producing good meta data. ;)
I can still create that code if you want, although I probably won't make it into a mod, because the mod above already does this.
Quote from: LHVWB on October 18, 2008, 05:48:22 AM
I can still create that code if you want, although I probably won't make it into a mod, because the mod above already does this.
Wow, that's right :D
But it's Compatible With: 2.0 Beta 3 Public :( :'(
Edit: ohh wait, I think i found
http://www.simplemachines.org/community/index.php?topic=230321.msg1557714#msg1557714
Edit2: Thank you very much dude :D I installed it, and works great. Thank you :)
Disclaimer: I'm new to both SMF and PHP in general. O:)
This seems like exactly what I want to achieve as an SSI as part of SSI.php. Can this mod be used in this manner?
Basically, I've got a static, not part of SMF, index page (site homepage), that uses various SSI calls to display the latest posts, newest member and so on.
What I would like is for the "ssi_recentTopics" and "ssi_topTopicsViews" functions to be able to display a summary of the topic in addition to the title.
If this is possible, could I please get some instructions, suitable for a beginner, on how to implement it?
Thank you very much.
That should be fairly easy. The main thing that you need to do, is to use the 'generate_summary($text)' function that is provided by this mod, to generate a summary of some text when you need to.
The edits below are to your 'SSI.php' file.
For the 'ssi_recentTopics' function. Find the code below:
$row['body'] = strip_tags(strtr(parse_bbc($row['body'], $row['smileysEnabled'], $row['ID_MSG']), array('<br />' => '')));
if ($func['strlen']($row['body']) > 128)
$row['body'] = $func['substr']($row['body'], 0, 128) . '...';
Replace with this code:
$row['body'] = generate_summary($row['body']);
Then at the end of that SSI.php function, there is some html code. You will have to add the '$post['time']' php variable into that code. I can help you with that if you specify exactly where you want it.
Getting the 'ssi_topTopicsViews' to work will be harder, because it uses another SSI.php function and it doesn't load the body of the topic, I can still have a go at that if you want?
Hi LHVWB,
Thanks for your help with this. Sorry for the late reply, my wife just had a baby earlier in the week.
I've replaced the 3 lines, with the new line you said.
With regard to the $post['time'] php variable. It outputs the time the post was made. Do I need to modify something else, or call a different variable, to get the summary?
My HTML output (topic_summary, doesn't appear to output anything):
if ($output_method != 'echo' || empty($posts))
return $posts;
echo '
<ul>';
foreach ($posts as $post)
echo '
<li>
<h3><a href="', $post['href'], '">', $post['subject'], '</a></h3>
<p>', $post['topic_summary'], $post['time'], '</p>
</li>';
echo '
</ul>';
}
Thanks again for your help.
Edit: Oh, and yes, if you have the time, I would love to get ssi_topTopicsViews working as well. Thanks.
Congratulations on the new child. :)
I apologise, I made a mistake when I wrote that post. You need to use the '$post['preview']' variable instead. ;)
For editing the 'ssi_topTopicsReplies' function. That function is based off the 'ssi_topTopics' function, so you will have to perform edits to the 'ssi_topTopics' function and then those changes will happen for the output from the 'ssi_topTopicsReplies' function as well.
Find this code (from that function):
SELECT m.subject, m.id_topic, t.num_views, t.num_replies
Replace with this code:
SELECT m.subject, m.id_topic, m.body, t.num_views, t.num_replies
Find this code:
$topics[] = array(
'id' => $row['id_topic'],
Replace with this code:
$row['body'] = generate_summary($row['body']);
$topics[] = array(
'id' => $row['id_topic'],
'preview' => $row['body'],
Find this code:
<td align="right">', $topic['num_views'], '</td>
<td align="right">', $topic['num_replies'], '</td>
Replace with this code:
<td align="right">', $topic['num_views'], '</td>
<td align="right">', $topic['num_replies'], '</td>
<td align="right">', $topic['preview'], '</td>
As with the 'ssi_recentTopics' function, the last edit may be different depending on how you want the HTML output to look. :)
Perfect. Thanks very much for your help.
Tested Compatibility with SMF 1.1.7, the mod page has been updated accordingly.
Hey great mod, and works for me on 1.1.7 default theme.
I am using this mod "Look But No Read" (http://custom.simplemachines.org/mods/index.php?mod=1332) So guests can see the boards and posts but not read the posts
I was wondering if it would be possible to turn the summery off for guests as it can giv to much of the post away lol?
@cleanfiles,
The edits below (to your 'MessageIndex.template.php' file) assume that the mod has been installed normally.
Find this code:
<td class="windowbg2" valign="middle" ', (!empty($modSettings['TopicSummary_column_width']) ? 'width="'.$modSettings['TopicSummary_column_width'].'"' : ''), '>
', $topic[!empty($modSettings['TopicSummary_message']) ? $modSettings['TopicSummary_message'] : 'last_post']['summary'], '
</td>
<td class="windowbg2" valign="middle" width="14%">
', $topic['first_post']['member']['link'], '
</td>
Replace with this code:
', !empty($context['user']['is_guest']) ? '' : '<td class="windowbg2" valign="middle" ' . (!empty($modSettings['TopicSummary_column_width']) ? 'width="'.$modSettings['TopicSummary_column_width'].'"' : '') . '>
', $topic[!empty($modSettings['TopicSummary_message']) ? $modSettings['TopicSummary_message'] : 'last_post']['summary'], '
</td>', '
<td class="windowbg2" valign="middle" width="14%">
', $topic['first_post']['member']['link'], '
</td>
Find this code:
<td class="catbg3"><a href="', $scripturl, '?board=', $context['current_board'], '.', $context['start'], ';sort=subject', $context['sort_by'] == 'subject' && $context['sort_direction'] == 'up' ? ';desc' : '', '">', $txt[70], $context['sort_by'] == 'subject' ? ' <img src="' . $settings['images_url'] . '/sort_' . $context['sort_direction'] . '.gif" alt="" />' : '', '</a></td>
<td class="catbg3" ', (!empty($modSettings['TopicSummary_column_width']) ? 'width="'.$modSettings['TopicSummary_column_width'].'"' : ''), '>', $txt[468], '</td>
Replace with this code:
<td class="catbg3"><a href="', $scripturl, '?board=', $context['current_board'], '.', $context['start'], ';sort=subject', $context['sort_by'] == 'subject' && $context['sort_direction'] == 'up' ? ';desc' : '', '">', $txt[70], $context['sort_by'] == 'subject' ? ' <img src="' . $settings['images_url'] . '/sort_' . $context['sort_direction'] . '.gif" alt="" />' : '', '</a></td>
', !empty($context['user']['is_guest']) ? '' : '<td class="catbg3" ' . (!empty($modSettings['TopicSummary_column_width']) ? 'width="'.$modSettings['TopicSummary_column_width'].'"' : '') . '>' . $txt[468] . '</td>', '
I will give that a go, thanks :)
This mod is AWESOME!
v1.02 - 20 November 2009
Updated for SMF 2 RC2.
This is pretty spiffy dude. I don't know how I missed this one. Had to do the editing for the MessageIndex.template.php for my theme and one for the modsettings file, but works great
For some reason, I'm having trouble uninstalling this? I personally love it but a few people complained about how it posted spoilers and majority opted for it to be removed lol.
When I view my packages summary, it is not there. When I view my installed packages, it is there but when I click uninstall, it says that it cannot locate the package file.
Any help would be rockin'.
ETA: Internet cut out haha. The 'installed' version, with the missing file, is 1.01.
I understand that it's very rude for me to ask... and ask again... but any help would be greatly appreciated. :)
great mod, thanks ! 8)
v1.3 - 5 November 2010
Updated for SMF 2 RC4.
Portuguese Update
It would be better idea to add a description under the topic name to make them look like child forums.
Can i use this mod in Smf 2.0 RC5?
You can certainly give it a try.
Updated to include the portuguese translation. Thanks Joomlamz, apologies I didn't notice it ages ago, lol. :/
Quote from: danialasghar on June 06, 2011, 08:39:43 PM
Can i use this mod in Smf 2.0 RC5?
I believe so, it certainly works in SMF 2.0 final.
I've had this installed for a while now and I love it! The only things is, I've been unable to adjust the column width. I've tried everything. Is there an exact wording that it's looking for here?
Features & Options/Column Width (Must Be in Pixels 'px' or Percent '%')
For example, if I want to use 20 pixels, how exactly do I write that so that it's understood?
Quote from: Lolafish on October 06, 2011, 08:00:37 PM
I've had this installed for a while now and I love it! The only things is, I've been unable to adjust the column width. I've tried everything. Is there an exact wording that it's looking for here?
Features & Options/Column Width (Must Be in Pixels 'px' or Percent '%')
For example, if I want to use 20 pixels, how exactly do I write that so that it's understood?
I can get the percent to work, just not the pixels.
I realize this is an old thread, however, I am having trouble with a bit of code from this modification in the Subs.php file after upgrading to SMF 2.0.17.
In the error log I keep getting this:
preg_replace_callback(): Requires argument 2, 'preg_replace_callback('/(.{20})/u', '\$1< >', '$1')', to be a valid callback ... Line: 5027
if ($smcFunc['strlen']($message) > $modSettings['TopicSummary_maxwordlength'])
{
// This is done in a roundabout way because $breaker has "long words" :P.
$message = strtr($message, array($breaker => '< >', ' ' => $context['utf8'] ? "\xC2\xA0" : "\xA0"));
$message = preg_replace_callback('~(?<=[>;:!? ' . $non_breaking_space . '\]()]|^)([\w' . ($context['utf8'] ? '\pL' : '') . '\.]{' . ($modSettings['TopicSummary_maxwordlength'] + 1) . ',})~e' . ($context['utf8'] ? 'u' : ''),
'preg_replace_callback(\'/(.{' . ($modSettings['TopicSummary_maxwordlength']) . '})/' . ($context['utf8'] ? 'u' : '') . '\', \'\\$1< >\', \'$1\')', $message);
$message = strtr($message, array('< >' => $breaker, $context['utf8'] ? "\xC2\xA0" : "\xA0" => ' '));
}
The line in question is this one:
'preg_replace_callback(\'/(.{' . ($modSettings['TopicSummary_maxwordlength']) . '})/' . ($context['utf8'] ? 'u' : '') . '\', \'\\$1< >\', \'$1\')', $message);
Any help is appreciated.