Ok, this was bugging the heck out of me too… There’s quite a bit of runaround on this subject in the forums… here’s what I’ve found:
1. Yes you can create a new block as you outline above, but it entails editing the core code in app/code/core/Mage/Page/Block/HTML, you would add a new php file named whatever you want your new block to be called there and basically just do a simple __construct and setTemplate there that would reference your template in page/html. The downside of this is that it entails editing the core code so it would be wiped on upgrade… generally a no-no. I saw some stuff that said you could put the same file in either the app/code/community or app/code/local directory, but I couldn’t get that to work, plus I really want to try and stay inside my design directory, so…
2. You can create a basic “container” as is done with the “right, left, and content” blocks by just adding something like
to page.xml. From there you can populate it with content blocks via the layout files as normal.
<block type="core/text_list" name="myblock" as="myblock"/>
Basically think of it this way… create as many plain containers as you like in the page.xml file, in your specific page templates (e.g. page/2columns-left.phtml) wrap the getChildHtml like so:
so that you can apply styling to the container, and then create your content blocks via the appropriate layout and make new templates for them there if necessary
<div id="myblock"><?php echo $this->getChildHtml('myblock') ?></div>
So in the above example I referenced the new block in the catalogsearch.xml layout and then added a new content block for searching and created a new template for that content block in the catalogsearch directory. Hope that all makes sense.
<block type="core/template" name="myblock.search" as="myblockSearch" template="catalogsearch/myblock.search.phtml"/>