Допустим, вы находитесь в файле шаблона 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);
}