<{$article.source}> is a smarty variable that is probably not defined at that point. It's not the content of the database, but a variable that would have to be defined and populated in the corresponding php script.
It seems to me that we're talking about view.category.php here. Now, it's late at night, and I'm tired. But off the top of my hat (or head really), it looks to me like it might make sense to try out the following:
1.) Locate view.category.php line 128
$tags = array("uid", "writer_id", "art_title", "art_summary", "art_image", "art_pages", "art_categories", "art_time_publish", "art_counter", "art_comments", "art_trackbacks");
and insert "art_source" after "writer_id" (that's to fetch the value from the database)
2.) Locate view.category.php around line 164:
$_article = array(
"id" => $id,
"title" => $articles_obj[$id]->getVar("art_title"),
"author" => @$users[$articles_obj[$id]->getVar("uid")],
"writer" => @$writers[$articles_obj[$id]->getVar("writer_id")],
"time" => $articles_obj[$id]->getTime($xoopsModuleConfig["timeformat"]),
"image" => $articles_obj[$id]->getImage(),
"counter" => $articles_obj[$id]->getVar("art_counter"),
"comments" => $articles_obj[$id]->getVar("art_comments"),
"trackbacks"=> $articles_obj[$id]->getVar("art_trackbacks")
);
and insert the following line wherever you like. Make sure that each but the last of the similar lines ends with a comma:
"source" => $articles_obj[$id]->getVar("art_source"),
(that's to assign the value to the variable)
Now try again if you get anything to show if you drop <{$article.source}> into the template as you've done before.
Please remember that you have to update the module everytime you change a template. If you change a php script, you don't have to update the module for the change to be reflected.
This is looking onto the situation through two tired eyes and without any evidence it might work other than a very rough guess. Let me know if it works. If not, I might have a closer look at it one of these days.