Hi -
One of the things I did when I was getting annoyed writing blocks, was write a debug block. It's just about the simplest block you can do, so there's very little to go wrong. I can start by installing it, then I can make sure I have everything right for the simple case. Then I can add code from my real block, until I can see what causes a problem.
Note that while I was just off cleaning this up, it was not showing up for me, even after repeated reloads of the module. I uninstalled the module, and re-installed it, and there it was. So try that, too.
Here are the parts of my block:
from xoops_version.php:
 $modversion['blocks'][1]['file'] = "debugblock.php"; 
$modversion['blocks'][1]['name'] = "Bookstore: Debug Block"; 
$modversion['blocks'][1]['description'] = "Only used for debugging"; 
$modversion['blocks'][1]['show_func'] = "b_bookstore_debug"; 
$modversion['blocks'][1]['template'] = 'bookstore_debug.html';  
Start your block indexes at 1, not zero.!
And this forum keeps changing the code I'm posting below for debugblock.php. It keeps turning my urls in debugblock.php into a hyperlink.
So when copying and pasting the section below, make sure you paste the code below as text, not HTML. the values in the array should just be 
h t t p : // 
http://www.worldware.com, and not
a href h t t p: // 
http://www.worldware.comNote to XOOPS team: things within code blocks should not be altered. That's a bug!
blocks\debugblock.php:
function b_bookstore_debug()
{
 $sites = array
 (
 "xoops.org" => "https://xoops.org",
 "worldware.com" => "http://www.worldware.com"
 );
 $block = array();
 $link = array();
 foreach ($sites as $site => $url)
 {
 $link['site'] = $site;
 $link['url'] = $url;
 $block['links'][] = $link;
 }
 return $block;
}
?>
templates\blocks\bookstore_debug.html:
 <div class="blockContent"> 
    <table border="3"> 
        <{foreach item=link from=$block.links}> 
        <tr> 
            <td><a href="<{$link.url}>"><{$link.site}>a>td> 
        tr> 
        <{/foreach}> 
    table> 
div>