Ответ 1
Скажем, вы находитесь в файле шаблона корневого блока phtml, и у вас есть упрощенная структура блока, которая выглядит так:
root
left
promo_top
navigation
promo_bottom
center
right
Из файла шаблона корневого блока, чтобы напечатать левый блок, вы должны использовать getChildHtml
.
echo $this->getChildHtml('left');
Однако, если по какой-то причине вы хотели напечатать блок promo_top в корневом шаблоне, вам нужно будет сделать что-то вроде этого
$left = $this->getChildBlock('left')
echo $left->getChildHtml('promo_top')
Метод getChildChildHtml
позволяет вам делать это в одном простом вызове метода. Опять же, из корневого шаблона
echo $this->getChildChildHtml('left','promo_top');
Итак, семантика
- Получить мой дочерний блок с именем X
- Затем получите дочерний блок с помощью Y
- Отобразить HTML
Если вы посмотрите на исходный код, вы увидите, что в конечном итоге этот метод просто завершает вызов getChildHtml
#File: app/code/core/Mage/Core/Block/Abstract.php
public function getChildChildHtml($name, $childName = '', $useCache = true, $sorted = false)
{
if (empty($name)) {
return '';
}
$child = $this->getChild($name);
if (!$child) {
return '';
}
return $child->getChildHtml($childName, $useCache, $sorted);
}