Да, это возможно.Просто создайте свой XML-файл макета по следующему пути: /design/frontend/default/default/layout/yourlayout.xml (или независимо от того, как называется ваша тема), и добавьте соответствующий оператор в свои модули, etc / config.xml:
<config>
<frontend>
<layout>
<updates>
<yourmoduleshortname>
<file>yourlayout.xml</file>
<yourmoduleshortname>
</updates>
</layout>
</frontend>
</config>
Этот образец для внешнего пользователя, но макеты adminhtml могут быть обновлены аналогичным образом.Если что-то не работает, убедитесь, что ваш макет находится в правильном каталоге темы / пакета.
Редактировать:
Второй подход:
Вы можете использовать свой собственный контроллер, который расширит функциональность ядра (один из контроллеров каталога) - просто переписайте его (или просто действие просмотра продукта).Внутри своего метода действия добавьте что-то вроде этого:
$thiss->getLayout()->createBlock('namespacename/block','layout-block-name',
array('template' => 'relativepathtotemplate.phtml'));
$this->getLayout()->getBlock('content')->append($block);
run-original-parent-code();
Третий подход:
Аналогичен предыдущему, но вы можете использовать некоторый наблюдатель событий и попробовать Mage::getSingleton('core/layout')
, и вставьте туда свой блок.Не во всех случаях макет будет уже доступен (попробуйте семейство post_dispatch).
Я действительно не рекомендую второй и третий подход, потому что, если кто-то еще хочет найти источник этого «магического» блока, он, безусловно, будет выглядеть в каталоге int app / design / (...).Найти его в вашем контроллере или модели может быть очень сложно ...
Если вы не хотите отображать свой счетчик статистики, вы также можете использовать события (например, post_dispatch) для подсчета отправок контроллера.Просто создайте наблюдателя, прикрепленного к нему, и сохраните ваши данные в БД.