Magento child html - получить родительский звонок - PullRequest
3 голосов
/ 05 августа 2011

Я в файле шаблона price.phtml. Я хотел бы иметь некоторую строку кода, которая смотрит на родительский объект, который вызывает блок, и выполняет некоторое поведение на основе этого. По сути, если родителем является страница списка каталога, я хочу добавить к цене тег from:. Если родителем является configurable.phtml, я хочу просто отобразить цену как обычно.

У меня уже есть код для добавления from: к цене, но мне нужен оператор if, чтобы сказать, кто является родительским вызывающим абонентом.

Я видел что-то вроде ::parent раньше, когда просматривал файлы Магов, но я не знаю, применимо ли это здесь ...

Спасибо!

Ответы [ 2 ]

14 голосов
/ 05 августа 2011

Вы можете получить ссылку на родительский блок блока из phtml, позвонив

$parent = $this->getParentBlock();

Звонки на parent::someMethod не имеют ничего общего ни с блоками, ни с Magento. Это PHP-конструкции, используемые для указания того, что вы хотите вызвать метод родительского класса.

7 голосов
/ 08 августа 2011

Вот несколько методов, которые помогут вам понять, какую страницу вы визуализируете в Magento:

  • Текущая страница CMS: Mage::getSingleton('cms/page')->getIdentifier();
  • Текущий маршрут: Mage::app()->getFrontController()->getRequest()->getRouteName();
  • Текущий контроллер: Mage::app()->getFrontController()->getRequest()->getControllerName();
  • Текущее действие: Mage::app()->getFrontController()->getRequest()->getActionName();

Так, например, если вы хотите понять, что вы находитесь в страница списка каталогов вы можете использовать последние три , чтобы проверить, является ли маршрут каталог , контроллер категория и действие view .

Другой метод заключается в проверке наличия catalog_category_view layout handle в массиве текущих дескрипторов макета, которые вы можетеизвлечь из блока или шаблона следующим образом: $this->getLayout()->getUpdate()->getHandles()

Надеюсь, это поможет.

С уважением, Алессандро

...