You are correct that the type defines the block class that is used to render the display of your associated template file.
The reason why using 'page/html_header' is working, is because it is a child class of the base magento template block Mage_Core_Block_Template
class Mage_Page_Block_Html_Header extends Mage_Core_Block_Template
Since your template file is not calling methods not in the class Mage_Page_Block_Html_Header (or parents thereof), it will render fine, as ultimately you are dealing with the base core/template class which has all the needed base methods to allow a template to load, and render (for example protected function _toHtml())
You could just as well (and should have) used 'core/template' as your type, since you template required no special functionality to render.
Let say, for exmaple your template file had a call to a method to determine the answer to life, the universe, and everything :
<?php echo $this->whatIsTheAnswer() ?>
then your rendering of the template would have failed.
$this is the type defined in the block definition, thus
Mage_Page_Block_Html_Header
in your case/example.
Thus type = the class that contains your methods, as called from your template file. ($this in the template)
If you have no custom calls/methods in your template file, then core/template will suffice.
If you need custom methods, then you need to create that block, in your custom module, and use it as the type, but your custom block must ultimately lead to 'Mage_Core_Block_Template' via inheritance.
I hope that helps you understand it a bit more, if not, ask away and I will try and explain more.
I find the whole XML thing difficult so I am sympathetic to your cause here.
It looks to me like there is a discrepancy with your class name and your block XML
ie
class Crusader_CLHomePage_Block_Qwerty extends Mage_Core_Block_Template
and
<block type="core/template" name="homepage" template="crusader/home.phtml">
<block type="crusaderhome/qwerty" name="homeads" as="homeads" template="crusader/homeads.phtml" />
</block>
Let's start with the block type and work backward. I think here I would expect to see something like
<block type="crusader_home/qwerty" ...
and that type would refer Magento to the class
Crusader_Home_Block_Qwerty extends Mage_Core_Block_Template
Continuing to work backward on this tack, the file app\code\local\Crusader\CLHomePage\etc\config.xml would need to be modified to something like
<global>
<blocks>
<crusader_home>
<class>Crusader_Home_Block</class>
</crusader_home>
</blocks>
</global>
It points Magento to all classes starting 'Crusader_Home_Block_*'. And now I think you need to rename your module Crusader_Home instead of Crusader_CLHomePage and change the folder names accordingly...
AND / BUT I strongly recommend you change your module name. Only ever use one capital letter at the start of the module name not three and don't put capital letters in the middle of the name either.
You may want to look into some of the tools available for generating modules. I find them very useful for avoiding typing errors. I use this one by the very clever people at MGT Commerce (it has simplicity on its side) and this one is all-encompassing and an astonishing piece of coding by Silk Software.
***EDIT following comments below
Additionally based on the error log I think the problem is that Magento can't find your class file. So double-check the caches are refreshed or off, particularly XML cache, and that the compiler is off or re-enabled.
Best Answer
Auto render child blocks for Mage_Core_Block_Text_List
As per as magento,a block is automatically rendered when it
parent block
class isMage_Core_Block_Text_List
.On first xml code ,you have put
<block type="core/template" after="-" name="my.block" template="my_dir/myblock.phtml" />
as child block of block content.see at page.xml
As
content
block type iscore/text_list
that means it block classMage_Core_Block_Text_List
.Somy.block
automatically rendered.Render child block by $this->getChildHtml()
But in second xml code,block name is
product.info
,which isblock type
iscatalog/product_view
which block class is notcore/text_list
.This block class Mage_Catalog_Block_View.So,if you want to rendered it child block automatically then it not possible without call
all child Blocks
by using<?php echo $this->getChildHtml()?>
Or ,specific child block using
<?php echo $this->getChildHtml(cHilblockname)?>
.As on
view.phtml
it all child blocks are not by rendere<?php echo $this->getChildHtml()?>
and each child block render individual call<?php echo $this->getChildHtml('childblockname')?>
then you need add