Hallo Zusammen!
Ich versuche mich gerade in der Pluginentwicklung zurrecht zufindnen und komme im Moment nicht weiter. Ich möchte ein Plugin entwickeln welches das Detail Template anpassen soll aber ohne ein eigenes Theme bereitzustellen - theoretisch müsste das doch möglich sein?
Mein Plugin ist wie folgt aufgebaut:
Hier ein Ausschnitt der ProSalesRunningMeter.php Datei:
'preparePlugin',
];
}
/**
* Prepare the plugin before activation.
*
*/
public function preparePlugin()
{
$this->subscribeTemplates();
}
/**
* On plugin activation ...
*
* @param ActivateContext $activateContext
* An object that determine an instance of the activation
* context.
*/
public function activate(ActivateContext $activateContext)
{
$activateContext->scheduleClearCache(ActivateContext::CACHE_LIST_ALL);
}
/**
* On plugin deactivation ...
*
* @param DeactivateContext $deactivateContext
* An object that determine an instance of the deactivate
* context.
*/
public function deactivate(DeactivateContext $deactivateContext)
{
$deactivateContext->scheduleClearCache(DeactivateContext::CACHE_LIST_ALL);
}
/**
* On plugin installation ...
*
* @param InstallContext $installContext
* An object that determine an instance of the installation
* context.
*/
public function install(InstallContext $installContext)
{
// ...
}
/**
* On plugin uninstall ...
*
* @param UninstallContext $uninstallContext
* An object that determine an instance of the uninstall
* context.
*/
public function uninstall(UninstallContext $uninstallContext)
{
$this->keepUserDataOnUninstall($uninstallContext);
$uninstallContext->scheduleClearCache(UninstallContext::CACHE_LIST_ALL);
}
/**
* On plugin update ...
*
* @param UpdateContext $updateContext
* An object that determine an instance of the update
* context.
*/
public function update(UpdateContext $updateContext)
{
// ...
}
/**
* Allows to keep the plugins user data on uninstall.
*
* @param UninstallContext $context
* An object that determine an instance of the uninstall
* context.
*/
private function keepUserDataOnUninstall(UninstallContext $context)
{
if ($context->keepUserData()) {
return;
}
}
/**
* Subscribe the template directory within the template manger.
*
*/
private function subscribeTemplates()
{
$this->container->get('Template')->addTemplateDir(
$this->getPath() . '/Resources/views/'
);
}
}
In der subscribeTemplates() Methode werden oder sollten eigentlich die Views registriert werden.
Der Inhalt der Template ist relativ simpel:
{extends file="parent:frontend/detail/content/buy_container.tpl"}
{block name='frontend_detail_index_buy_container'}
Hello World
{/block}
Die Installation erfolgt meistens via CLI wurde aber auch regulär via backend versucht:
php ./bin/console sw:plugin:refresh
php ./bin/console sw:plugin:uninstall ProSalesRunningMeter
php ./bin/console sw:plugin:install --activate ProSalesRunningMeter
php ./bin/console sw:cache:clear
Danach habe ich den Shop Cache geleert sowie den Cache unter Performance:
Was mache ich falsch?
Folgendes könnte auf den Fehler hinweisen:
- Der Event : Ich bin mir nicht sicher ob ich den richtigen Event verwende.
- Caching : Ich verstehe das Caching nicht wirklich und weiss nicht welche Caches erneuert werden müssen.
-
Einstellungen : Ich verwende die Standard Shopkonfiguration in der Deutschen Sprache - es wurden keine Einstellungen betreffend Entwicklung getätigt - sofern so etwas exisitiert?
- Ich habe aber das debugging aktiviert:
config.php
- Ich habe aber das debugging aktiviert:
- Ich verwende Windows - XAMPP hatte zuvor Bitnami One-Installer verwendet.
- Shopware v. 5.5.8
Eine Frage nebenbei:
- Eigentlich kann ich den Event doch auch mithilfe eines Subscriber filtern oder?
Ich hoffe Ihr erkennt mein Vorhaben und könnt mir eine Lösung des Problemes vermitteln. Ich möchte noch einmal kurz erwähnen das ich kein Theme schreiben möchte - aus anderen Plugins weiss ich dass die Frontend-Dateien auch ohne Theme überschrieben werden können.
Mit freundlichem Gruss
Alexander Bösch