Wenn Ihr mal ein Feature im Bezug auf SEO für Multishops umsetzen müsst, kommt Ihr um dieses Feature eigentlich nicht herum. Aktuell können nur Sprachshops mit einem hreflang Tag versehen werden. Habt Ihr nun aus verschiedenen Gründen einen Subshop laufen müsst Ihr euch selbst was bauen.
Url genieren
Ich nutzen in meinem Basis Plugin dafür eine Methode generateUrl() welche 2 Parameter enthält: shopId, query
Per DI habe ich mir den Router in den Subscriber geladen, diesen nutze ich dann wie folgt:
$shopContext = Context::createFromShop($temporaryShop, $this->config);
$url = $this->router->assemble($query, $shopContext);
Der Beitrag ist eigentlich auch nur entstanden, da ich als erstes „listing“ als controller stehen hatte. Auch wenn der Kategorie Controller „listing“ heißt, wird dieser im RewriteGenerator (getOrgQueryArray) mit „cat“ in einem switch case abgefragt. Also nicht wundern wenn Ihr mit „listing“ keine SEO Url erhaltet (http://local.test.de/listing/index/sCategory/13045)
$query = [
'controller' => 'cat',
'module' => 'frontend',
'action' => 'index',
'sCategory' => $catId,
];
Für die Detailseite würde das ganze dann so aussehen:
$query = [
'controller' => 'detail',
'module' => 'frontend',
'action' => 'index',
'sArticle' => $articleID,
];
Sinn und Zweck?
Wie bereits erwähnt bietet Shopware von Haus aus nur die Verknüpfung zum Sprachshop. Wir möchten aber alleine schon wegen der URL die Shops trennen (Sprachshops können keine unterschiedlichen TLDs).
Kommt nun der neue Subshop mit den Produkten/Listings ins Interwebs, würde der Inhalt als Duplicate Content getaggt werden und in der Suche nicht ordentlich indexiert werden.