Simple Machines Community Forum

Customizing SMF => Tips and Tricks => Topic started by: Tim on July 04, 2004, 12:46:04 PM

Title: Showing "category" images with boardnews ssi
Post by: Tim on July 04, 2004, 12:46:04 PM
Slashdot's news is often accompanied by an image representing the category in which it fits.

It's very easy to use SMF's SSI functions to create the same. Just use a tag like [mysql] in front of the subject and then use this code to display in on your page:

<?php 
$array 
ssi_boardNews(null5null350'array');
foreach (
$array as $news)
{
    
#Check which tag is present in the subject, delete it and use the image
    
if (preg_match("/\[php\]/i",  $news['subject'])) { 
        echo 
"<h5><a href=\""$news['href'], "\">"preg_replace("|\[yabb\]|i"""$news['subject']), "</a></h5>
        <img src=\"img/php.png\" align=\"left\" alt=\"php\" />"
$news['body'], "\n";

    }elseif(
preg_match("/\[mysql\]/i",  $news['subject'])) { 
        echo 
"<h5><a href=\""$news['href'], "\">"preg_replace("|\[smf\]|i"""$news['subject']), "</a></h5>
        <img src=\"img/mysql.png\" align=\"left\" alt=\"mysql\" />"
$news['body'], "\n";

    }elseif(
preg_match("/\[perll\]/i",  $news['subject'])) { 
        echo 
"<h5><a href=\""$news['href'], "\">"preg_replace("|\[.nl\]|i"""$news['subject']), "</a></h5>
        <img src=\"img/perl.png\" align=\"left\" alt=\"perl\" />"
$news['body'], "\n";
    
#if no tag is present, just show the news
    
}else{
        echo 
"<h5><a href=\""$news['href'], "\">"$news['subject'], "</a></h5>
        "
$news['body'], "\n";
    }
}
?>




Hope I did someone a favor :)

I'm not sure if it's the most effecient way, but it's the only way I figured out. Should you know of a better one feel free to share :)
Title: Re: [ssi] Showing slashdot style boardnews
Post by: [Unknown] on July 04, 2004, 05:52:44 PM
<?php 

$array 
ssi_boardNews(null5null350'array');

foreach (
$array as $news)
{
// Check which tag is present in the subject, delete it and use the image.
if (strpos(strtolower($news['subject']), '[php]'))
{
echo '
<h5><a href="'
$news['href'], '">'preg_replace('|\[php\]|i'''$news['subject']), '</a></h5>
<img src="img/php.png" align="left" alt="php" />'
$news['body'], '<br />';
}
elseif (strpos(strtolower($news['subject']), '[mysql]'))
{
echo '
<h5><a href="'
$news['href'], '">'preg_replace('|\[mysql\]|i'''$news['subject']), '</a></h5>
        <img src="img/mysql.png" align="left" alt="mysql" />'
$news['body'], '<br />';
}
elseif (strpos(strtolower($news['subject']), '[perl]'))
{
echo '
<h5><a href="'
$news['href'], '">'preg_replace('|\[perl\]|i'''$news['subject']), '</a></h5>
<img src="img/perl.png" align="left" alt="perl" />'
$news['body'], '<br />';
}
// If no tag is present, just show the news.
}
else
{
echo '
<h5>'
$news['link'], '</h5>
'
$news['body'], '<br />';
}
}

?>


I still think this looks cleaner :P.

-[Unknown]
Title: Re: [ssi] Showing slashdot style boardnews
Post by: Cccddd on July 04, 2004, 06:00:17 PM
I prefer [Unknown]'s code personally. I don't like using double quotes, as you get confused whether you are working with variables sometimes, etc etc. With single quotes it's much easier to work with inline if statements, variables, etc. Now the only thing is needs to go through and change all the . joins to , joins :p

hmm looks like he did already. cant find any . joins anymore  :P
Title: Re: [ssi] Showing slashdot style boardnews
Post by: [Unknown] on July 04, 2004, 06:01:59 PM
Quote from: Cheschire on July 04, 2004, 06:00:17 PM
I prefer [Unknown]'s code personally. I don't like using double quotes, as you get confused whether you are working with variables sometimes, etc etc. With single quotes it's much easier to work with inline if statements, variables, etc. Now the only thing is needs to go through and change all the . joins to , joins :p

They already were commas.

-[Unknown]
Title: Re: [ssi] Showing slashdot style boardnews
Post by: Cccddd on July 04, 2004, 06:03:23 PM
i didnt mean in this, i meant SMF source code :)
Title: Re: [ssi] Showing slashdot style boardnews
Post by: Cccddd on July 04, 2004, 06:05:13 PM
My own little dooah here... got rid of all the extra bracks, and made it variable so that it's more easily expandable, and the code ports easier. also there were a couple bugs.. cant remember the second one but hte first one was that if the variable thing came at the front of the subject, it wouldnt work cuz the strpos was 0, which wouldnt register properly. !== false took care of that.

<?php 

use [Unknown]'s;

?>

Title: Re: [ssi] Showing slashdot style boardnews
Post by: [Unknown] on July 04, 2004, 08:52:26 PM
Oops, I knew I forgot something, meant to add the !== false on.

<?php 

$array 
ssi_boardNews(null5null350'array');
$newsCategories = array('php','mysql','perl');

foreach (
$array as $news)
{
  
$found false;

  
// Check which tag is present in the subject, delete it and use the image.
  
foreach ($newsCategories as $cat)
  {
    if (
strpos(strtolower($news['subject']), '[' $cat ']') !== false)
    {
      echo 
'
            <h5><a href="'
$news['href'], '">'preg_replace('~\[' $cat '\]~i'''$news['subject']), '</a></h5>
            <img src="img/'
$cat'.png" align="left" alt="'$cat'" />'$news['body'], '<br />';
      
$found true;
    }
  }

  
// If no tag is present, just show the news.
  
if (!$found)
      echo 
'
            <h5><a href="'
$news['href'], '">'$news['subject'], '</a></h5>
            '
$news['body'], '<br />';
}

?>


I have this big time pet peeve with using 1/0 when you want true/false.

-[Unknown]
Title: Re: [ssi] Showing slashdot style boardnews
Post by: Cccddd on July 04, 2004, 09:12:52 PM
yeah its something im trying to get in the habit of not doing. its just a bad ol habit from perl days :)
Title: Re: [ssi] Showing slashdot style boardnews
Post by: Tim on July 05, 2004, 09:02:28 AM
isn't open source swell :)