Welche Smarty-Blöcke werden von dem CDN-Plugin überschrieben?
Bitte beachten Sie, dass dieser Hilfecenter-Artikel ausschließlich für das Shopware 5 CDN-Plugin gültig ist.
CSS
Das Shopware 5 Plugin überschreibt für die globale CSS-Auslieferung den Smarty-Block:
# /Resources/Views/frontend/index/index.tpl
{block name="frontend_index_header_css_screen"}
{* creoline CDN *}
{/bblock}
JS
Das Shopware 5 Plugin überschreibt für die globale JS-Auslieferung den Smarty-Block:
# /Resources/Views/frontend/index/index.tpl und /Resources/Views/frontend/index/header.tpl
{block name="frontend_index_header_javascript_modernizr_lib"}
{* creoline CDN *}
{/block}
{block name="frontend_index_header_javascript_jquery_lib"}
{* creoline CDN *}
{/block}
Weshalb können zusätzliche Plugins den Block nicht ebenfalls überschreiben?
Damit das CDN einwandfrei funktioniert und alle CSS-Dateien sowie JavaScript-Dateien über CDN ausliefern kann, müssen alle verwendeten CSS- und JS-Dateien korrekt über den Media Manager eingebunden werden.
Häufig werden von Plugin-Entwicklern die Smarty-Blöcke dazu genutzt, um zusätzliche CSS- oder JavaScript-Dateien bereitzustellen, anstelle diese über das Plugin System zu laden. In diesem Fall kann das CDN-Plugin die Dateien nicht ermitteln und deshalb auch keine CDN-Version bereitstellen.
Bitte informieren Sie in diesem Fall den jeweiligen Plugin-Hersteller und bitten Sie diesen, CSS- und JS-Dateien über das Plugin-Event-System von Shopware 5 zu integrieren.
CSS und JS über das Plugin-System bereitstellen
Shopware Events zur Registrierung von Less (CSS) und JavaScript:
Theme_Compiler_Collect_Plugin_Less
Theme_Compiler_Collect_Plugin_Javascript
Beispiel-Implementierung für Shopware 5 Plugin
public static function getSubscribedEvents() {
return [
'Theme_Compiler_Collect_Plugin_Less' => 'addLessFiles',
'Theme_Compiler_Collect_Plugin_Javascript' => 'addJavaScriptFiles',
];
}
<br>
public function addLessFiles()
{
return new LessDefinition(
[],
[
__DIR__ . '/Views/frontend/_public/src/less/example.less'
]
);
}
public function addJavaScriptFiles()
{
return new ArrayCollection([
__DIR__ . '/Views/frontend/_public/src/js/example.js'
]);
}