Shopware

Alle Shopware Profis mögen mir diesen Titel verzeihen. Aber bei joomla heißt eine ähnliche Technik Overrides und damit möchte ich es vergleichen.

Möchte man bei Joomla z.B. eine Joomla Komponente anpassen, kopiert man in den html Ordner seines Templates, mit leichten Pfadanpassungen die View-Dateien der Komponente mit kompletten Inhalt und passt diesen nach seinen Bedürfnissen an. Joomla sucht zuerst im Template in dem html Ordner nach möglischen Anpasssungen und verwendet diese. Wenn dort keine Dateien gefunden werden, werden die Originaldateien verwendet.

Bei Shopware5 ist es ähnlich.

Um in Shopware bei Bildern für Artikel, Slider usw. Unschärfe zu vermeiden sollte man für jedes Element der Einkaufswelten ein eigenes Album bzw. Unteralbum anlegen. 

So funktioniert es:

Legt man in Smarty einen Link zu z.B. zu einen Blogbeitrag an, kann man dies so realisieren:

 <a href="/{url controller=blog action=detail blogArticle=$blog_id sCategory=$cat_id}"

Da geht auch im Plugin oder im eigenen Controller:

$router = Shopware()->Container()->get('router');
      $url = $router->assemble([
                  'controller' => 'blog',
                  'sAction' => 'detail',
                  'blogArticle' => $blog_id,
                  'sCategory' => $cat_id
      ]);

 Oder bei Artikel:

<a href="/{url controller=detail sArticle=$sArticle.articleID number=$sArticle.ordernumber}"

 usw.

Sucht man in den Template Dateien nach dem User Login findet man häufig die Abfrage:

{if !$sUserLoggedIn}...

 Leider wird die Varaible von einem Sesseion Wert befüllt. So wird der Logoutstatus erst nach einem weiteren Refresh richtig angezeigt.

Wenn man in einem Plugin die Smartyvariable in z.B. der Methode onPostDispatchSecure so überschreibt:

$view->sUserLoggedIn = Shopware()->Modules()->Admin()->sCheckUser();

wird der Login Status sofort richtig angezeigt.