Auf installierte Plugins prüfen.

Hallo.

Ich möchte in meiner bootstrap->install() Funktion prüfen ob bestimmte andere Plugins vorhanden sind. Optimal wäre, auch prüfen zu können ob diese nicht nur installiert, sondern auch aktiviert sind.

Gibt es hierfür fertige Funktionen? Wie macht man sowas am besten?

 

Hallo Jürgen,

ja dafür gibt es die Methode: assertRequiredPluginsPresent in der Boostrap.

Alternativ könntest du es also auch über ein SQL-Query oder Doctrine erfahren.

Gruß Heiner

1 „Gefällt mir“

du könntest per Doctrine das Repo, oder über den shopware_plugininstaller nutzen. 

/** @var Manager $pluginManager */
$pluginManager = $this->container->get('shopware_plugininstaller.plugin_manager');
/** name des Plugins */
$pluginName = "PluginName";
/** plugin suchen */
$plugin = $pluginManager->getPluginByName($pluginName);
/** abfragen ob plugin installiert ist */
if ($plugin->getInstalled()) {
    return 1;
}



/** @var ModelManager $em */
$pluginName = "pluginName";
$em = $this->container->get('models');
$repository = $em->getRepository('Shopware\Models\Plugin\Plugin');
$builder = $repository->createQueryBuilder('plugin');
$builder->andWhere('plugin.active = true');
$builder->andWhere('plugin.name :pl)');
$builder->setParameter('pl', $pluginName);
$plugins = $builder->getQuery()->execute();

Achtung nicht getest ,-) 

1 „Gefällt mir“

Danke an @JensBrunken‍ und [@Heiner Lohaus](http://forum.shopware.com/profile/63/Heiner Lohaus “Heiner Lohaus”)‍. Ich denke die assertRequiredPluginsPresent() ist genau was ich gesucht habe.

aha assertRequiredPluginsPresent kannte ich noch nicht… Wieder was dazugelernt ;-) 

So jetzte habe ich doch noch eine Frage.

@JensBrunken‍ Dein Code funktioniert wenn man den PluginManager folgendermaßen lädt:

$pluginManager = Shopware()->Container()->get('shopware_plugininstaller.plugin_manager');

Nun stehe ich vor dem Problem, dass ich wissen möchte unter welchem Pfad das Plugin installiert ist. Ich hab mir die Objekte im Debugger angesehen aber finde da nichts.

Wie kann ich den Pfad herausfinden unter dem ein anderes Plugin installiert ist?

Hi,

es gibt auch eine Methode „\Shopware\Bundle\PluginInstallerBundle\Service\InstallerService::getPluginPath“ im selben Service - die hilft dir vermutlich schon.

Daniel

1 „Gefällt mir“

$plugin->getPluginPath(); sollte eigendlich gehen 

 

hier findest du die Methoden,

shopware/InstallerService.php at 5.1 · shopware/shopware · GitHub 

Hallo @JensBrunken‍. Genau, das hat Daniel Nögel ja auch schon geschrieben.

Hallo,

gibt es eine Möglichkeit für das Frontend mit Hilfe der Funktion assertRequiredPluginsPresent () jeweils nur eine bestimmte Templatedatei einbinden zu lassen? Oder muss ich da zwangsweise $view->extendsTemplate() nutzen (was man ja ansich im Shopware 5 nicht mehr nutzen sollte)?

Es geht darum, das man beim Vorhandensein eines entsprechenden Plugins einen anderen Block nutzen muss, als wenn das Plugin nicht vorhanden ist. Leider ist es auch schon der “oberste” Block, somit kann man es da auch nicht vorher über ein IF-THEN-ELSE und eine entsprechende Parameterübergabe lösen.

Hat jemand eine Idee, vlt. [@Daniel Nögel](http://forum.shopware.com/profile/4010/Daniel Nögel “Daniel Nögel”)‍ ?

Beste Grüße

Sebastian

Evtl. einen zweiten Template Ordner hinzufügen via addTemplateDir

1 „Gefällt mir“

@Shyim schrieb:

Evtl. einen zweiten Template Ordner hinzufügen via addTemplateDir

Hallo,

auf die Idee bin ich noch gar nicht gekommen - verursacht zwar auch zwei Ordner, aber ist aus meiner Sicht wirklich auch die sauberste Lösung. Danke Grin. Also Problem gelöst .

Beste Grüße

Sebastian