Hauptshop / Subshop: Artikel in beiden Shops, SEO Kategorie, Suche

Hallo zusammen,

ich hätte zwei kurze Fragen bzgl. Hauptshop / Subshop und Artikeln, die in beiden Shops auftauchen.

Beispiel:

  • Hauptshop Ski
  • Subshop Snowboard

Da es Kunden gibt, die sowohl Skifahrer und Snowboardfahrer sind, wäre die Möglichkeit eines gemeinsamen Warenkorbs natürlich am besten, Das geht aber leider nicht.

Deshalb soll das komplette Angebot vom Snowboard-Shop im Skishop als Kategorie angelegt werden und umgekehrt.
Um Duplicate Content zu vermeiden, müssen alle Snowboard-Artikel im Skishop als SEO-Kategorie, die aus dem Snowboardshop haben und umgekehrt.
Der Cannonical-Tag müßte also auf die jeweilige Kategorie im anderen Shop zeigen, das funktioniert allerdings nicht.
Hatte vielleicht schon mal jemand das Problem und evtl. eine Lösung oder Vorgehensweise?

Ein weiteres Problem ist in dieser Konstellation noch die Suche.
Snowboard-Artikel im Skishop, die evtl. ähnliche Namen haben, wie ein Ski-Artikel, sollten in der Suche erst nach den Skiartikeln angezeigt werden und umgekehrt.
Wenn man z.B. im Skishop nach ‘Mütze’ sucht, sollen nicht die Mützen aus der Kategorie ‘Snowboard’ an erster Stelle kommen.
Gibt es eine Möglichkeit, Artikeln oder besser ganzen Kategorien eine Gewichtung für die Suche zuzuweisen?
Mit Boardmitteln geht das wahrscheinlich nicht oder? Ein Plugin mit der Funktionalität habe ich nicht gefunden, die intelligente Suche kann das auch nicht, soweit ich das sehe.
Auch hier bin ich für jeden Hinweis dankbar.

Viele Grüße und vielen Dank schon mal

Andi

Hallo,

das müsstest du komplett individuell implementieren
Den Canonical bekommt man vllt. noch über ein Artikel-Attribut umgebogen, welches die URL beinhaltet. Alles andere müsstest du dir aufwendig umsetzen.

Grüße
Moritz

Hallo Moritz,

vielen Dank für die Infos.
Ich habe fast schon befürchtet, daß es hier keine ‚schnelle‘ Lösung gibt und ich um eine Eigenprogrammierung nicht herum komme.

Schade, daß die SEO-Kategorien nicht Shopübergreifend funktionieren.
Bin ich der einzige, der innerhalb einer Installation Artikel in mehreren Shops zur Verfügung stellen will und dann das Problem mit Duplicate-Content hat?

Wenn ich Lösungen zu den beiden Problemen habe, schreibe ich sie hier rein.

 

Viele Grüße

Andi

Hallo zusammen,

das Canonical-Problem habe ich über ein kleines Plugin gelöst.

Man kann ja bei den Artikeln SEO-Kategorien anlegen, diese werden in der Datenbank in s_articles_categories_seo gespeichert und zwar in der Reihenfolge, wie sie angelegt werden. Für Artikel, die in mehreren Subshops vorkommen speichere ich immer die SEO-Kategorie als erstes, auf die der Canonical verweisen soll. Das Plugin liest den ersten aus der DB aus und generiert daraus den Canonical.

Das schaut dann ungefähr so aus:

Bootstrap.php

...

private function registerEvents()
	{
    	$this->subscribeEvent(
    		'Enlight_Controller_Action_PostDispatchSecure_Frontend_Detail',
            'onPostDispatchDetail'
		);
	}

	public function onPostDispatchDetail(Enlight_Event_EventArgs $args)
    {
    	$controller = $args->getSubject();
        $view = $controller->View();
        $sArticle = $view->getAssign('sArticle');
        $articleId = $sArticle['articleID'];
        $categoryId = $sArticle['categoryID'];

        $shopId = Shopware()->Shop()->getId();

    	$sql = 'SELECT * FROM s_articles_categories_seo WHERE article_id = ' . $articleId;
    	$result = Shopware()->Db()->fetchAll($sql);

    	if($result)
    	{
    		$resCategoryId = $result[0]['category_id'];
    		$resShopId = $result[0]['shop_id'];

    		if($shopId != $resShopId)
    		{
    			$repository = Shopware()->Container()->get('models')->getRepository('Shopware\Models\Shop\Shop');
				$shop = $repository->getActiveById($resShopId);
				$shop->registerResources();

				$canonicalUrl = Shopware()->Front()->Router()->assemble(array('module' => 'frontend', 'controller' => 'detail', 'action' => 'index', 'sArticle' => $articleId));

				$shop = $repository->getActiveById($shopId);
				$shop->registerResources();

				$view->addTemplateDir($this->Path() . 'Views/');
        		$view->assign('canonicalUrl', $canonicalUrl);
			}
    	}
    }

...

Views/frontend/detail/header.tpl

{extends file='parent:frontend/detail/header.tpl'}

{* Canonical link *}
{if $canonicalUrl)
	{block name='frontend_index_header_canonical'}
    	
	{/block}
{/if}

 

Auf die Schnelle ist mir jetzt nichts besseres eingefallen. Funktioniert aber soweit ich das bisher getestet habe.

Viele Grüße

Andi