Hallo,
ich möchte innerhalb eines Plugins einen Block von der Artikeldetailseite anpassen. Leider wird dieser Block vom Shopware Standard Theme Responsive immer überschrieben. Prinzipiell funktioniert es, ich sehe auch im Profiler, dass mein Block zum Überschreiben geladen wird. Aber die Reihenfolge stimmt noch nicht. Das Plugin soll das Responsive Theme überschreiben.
Bisher habe ich folgenden Code (5.2 Plugin):
namespace ExampleMyPlugin;
use Shopware\Components\Plugin;
use Shopware\Components\Plugin\Context\InstallContext;
class ExampleMyPlugin extends Plugin
{
public static function getSubscribedEvents()
{
$ar = parent::getSubscribedEvents();
$ar['Enlight_Controller_Action_PostDispatchSecure_Frontend_Detail'] = 'onPostDispatchDetail';
return $ar;
}
public function install(InstallContext $context)
{
parent::install($context); // TODO: Change the autogenerated stub
}
public function onPostDispatchDetail(\Enlight_Event_EventArgs $arguments)
{
/**
* @var $controller \Shopware_Controllers_Frontend_Index
*/
$controller = $arguments->getSubject();
/**
* @var $request \Zend_Controller_Request_Http
*/
$request = $controller->Request();
/**
* @var $response \Zend_Controller_Response_Http
*/
$response = $controller->Response();
/**
* @var $view \Enlight_View_Default
*/
$view = $controller->View();
//Check if there is a template and if an exception has occured
if (!$request->isDispatched() || $response->isException() || !$view->hasTemplate()) {
return;
}
// the $view->addTemplateDir does not support the position element.
$view->Engine()->addTemplateDir(
$this->getPath() . 'Resources' . DIRECTORY_SEPARATOR . 'Themes' . DIRECTORY_SEPARATOR,
null,
\Enlight_Template_Manager::POSITION_APPEND
);
$view->extendsTemplate('frontend' . DIRECTORY_SEPARATOR . 'detail' . DIRECTORY_SEPARATOR . 'index.tpl');
}
}
Es war nicht direkt möglich, über $view->addTemplateDir die Reihenfolge festzulegen, deswegen der Umweg über $view->Engine(). Der Parameter prepend oder append hat anscheinend auch keine Auswirkung. Bei beidem kommt das selbe Ergebnis raus.
Welcher Block ausgegeben wird, habe ich letzendlich über die Definition eines eigenen Blocks mit jeweils unterschiedlichem Inhalt heraus gefunden. Zur Zeit wird mir der Inhalt vom Responsive Theme angezeigt. Ich möchte aber, dass mir der Inhalt vom Plugin angezeigt wird.
Für Hilfe wäre ich dankbar.
MFG derwunner