我正在编写一个模块,如果它可用,我想在其中包含另一个块,但如果未安装包含该块的模块,则包含另一个块。像这样的东西:
if(block_exists($blockname)$this->getLayout()->createBlock($blockname);
else $this->getLayout()->createBlock($otherblock);
那么,如何检测是否安装了特定的块或模块?
答案在 mage/core/model/layout.php 中找到,其中 _getBlockInstance 检测块是否存在并且可以使用。对你来说,你的 block_exists 函数是这样的:
function block_exists($block){
if(
class_exists($block, false) || mageFindClassFile($block) ||
($block = Mage::getConfig()->getBlockClassName($block) &&
(class_exists($block, false) || mageFindClassFile($block))
)
) return true;
return false;
}