# Aktuelle Seite auf Sub- & Sprachshop Variante prüfen?

**URL:** <https://forum.shopware.com/t/aktuelle-seite-auf-sub-sprachshop-variante-prufen/49711>\
**Category:** Programmierung\
**Created:** [26. November 2017 um 18:27 UTC](https://forum.shopware.com/t/aktuelle-seite-auf-sub-sprachshop-variante-prufen/49711 "2017-11-26T18:27:54Z")\
**Posts on this page:** 6\
**Page:** 1

<div class="post-metadata">

**Author:** ![dbb](https://avatars.discourse-cdn.com/v4/letter/d/e36b37/32.png) [@dbb](https://forum.shopware.com/u/dbb)\
**Post date:** [26. November 2017 um 18:27 UTC](https://forum.shopware.com/t/aktuelle-seite-auf-sub-sprachshop-variante-prufen/49711/1 "2017-11-26T18:27:54Z")

</div>

Hallo zusammen,

existiert eine Methode, die die aktuelle Seite auf existierende Sub- & Sprachshop-Varianten prüft und diesbezüglich auch gleich ein Ergebnis zurück gibt?

Z.B. beim Aufruf von:  
httts://www.example.com/article-name-123

erhält man:

```
array(
  subshopID = '2',
  url = 'https://www.example.de/artikel-name-123'
);

```

Gibt es hierfür etwas Out of the box, oder hat jemand einen Ansatz, wie man das am besten umsetzen könnte?

&nbsp;

Vielen Dank für deine Hilfe und beste Grüße  
Michael

---

<div class="post-metadata">

**Author:** ![arnebecker](https://avatars.discourse-cdn.com/v4/letter/a/3bc359/32.png) [@arnebecker](https://forum.shopware.com/u/arnebecker)\
**Post date:** [27. November 2017 um 16:02 UTC](https://forum.shopware.com/t/aktuelle-seite-auf-sub-sprachshop-variante-prufen/49711/2 "2017-11-27T16:02:58Z")

</div>

Du meinst sowas wie href lang Tags/Verknüpfungen?

---

<div class="post-metadata">

**Author:** ![dbb](https://avatars.discourse-cdn.com/v4/letter/d/e36b37/32.png) [@dbb](https://forum.shopware.com/u/dbb)\
**Post date:** [27. November 2017 um 16:05 UTC](https://forum.shopware.com/t/aktuelle-seite-auf-sub-sprachshop-variante-prufen/49711/3 "2017-11-27T16:05:52Z")

</div>

Hallo arnebecker,

ganz genau 😉

Hast du bereits eine Lösung gefunden oder umgesetzt?

&nbsp;

Beste Grüße  
Michael

---

<div class="post-metadata">

**Author:** ![puhas](https://avatars.discourse-cdn.com/v4/letter/p/b38774/32.png) [@puhas](https://forum.shopware.com/u/puhas)\
**Post date:** [27. November 2017 um 16:35 UTC](https://forum.shopware.com/t/aktuelle-seite-auf-sub-sprachshop-variante-prufen/49711/4 "2017-11-27T16:35:06Z")

</div>

Also wenn es “nur” um die hreflang-Tags geht schau dir mal dieses Plugin an: [http://store.shopware.com/bibu01549/sprachverlinkung.html?number=BIBU01549](http://store.shopware.com/bibu01549/sprachverlinkung.html?number=BIBU01549)

Ich wollte es auch erst selbst machen und hab mir auch zuerst Gedanken über die Artikel gemacht. Aber der Spass geht ja noch weiter: Kategorien, Contenseiten, Blogeinträge usw. Kann das Plugin alles schon und ist auch wie ich finde wirklich günstig.

---

<div class="post-metadata">

**Author:** ![arnebecker](https://avatars.discourse-cdn.com/v4/letter/a/3bc359/32.png) [@arnebecker](https://forum.shopware.com/u/arnebecker)\
**Post date:** [27. November 2017 um 16:45 UTC](https://forum.shopware.com/t/aktuelle-seite-auf-sub-sprachshop-variante-prufen/49711/5 "2017-11-27T16:45:56Z")

</div>

Die beiden Plugins im Store helfen dir nicht?

> **[cusati Hreflang Advanced](https://store.shopware.com/cusat26463954507/cusati-hreflang-advanced.html)**
>
> Mit diesem erstklassigen Plugin erstellen Sie richtige und vollständige hreflang-Tags. Aus SEO-Sicht ist das Plugin für internationale Shops…

> **[Sprachverlinkung](https://store.shopware.com/bibu01549/sprachverlinkung.html)**
>
> ​Stellen Sie eine Verbindung zwischen ihren Sprachshops oder ab Version 1.1.9 optional auch zwischen Subshops her! Mit diesem Plug-in werden die…

Nutzen z.B. diesen sehr unschönen Code für Artikel. Haben das aber auch noch für alle möglichen anderen Seitentypen. Out-of-the Box gibts das bei Shopware nicht.

```
	public function onPostDispatchFrontendDetail(Enlight_Event_EventArgs $args) {
		// prüfe in allen Subshops ob es Verknüpfungen gibt
		$request = $args->getSubject()->Request();
		$response = $args->getSubject()->Response();

		if(!$request->isDispatched() || $response->isException() || $request->getModuleName() != 'frontend') {
			return;
		}

		$controller = $args->getSubject();
		$view = $controller->View();

		// ermittle alle Kategorieverknüpfungen
		$article = $view->sArticle;
		$articleId = $article['articleID'];

		if(!isset($articleId) || empty($articleId)) {
			return;
		}

		$paths = $tags = [];

		$sql = "SELECT c.path
				FROM s_articles_categories AS ac
				INNER JOIN s_categories AS c
				ON ac.categoryID = c.id
				WHERE ac.articleID = ?";
		$results = Shopware()->Db()->fetchAll($sql, array($articleId));

		foreach($results as $r){
			$paths = array_merge($paths, array_filter(explode("|",$r["path"])));
		}
		$paths = array_unique($paths);

		$view->addTemplateDir($this->Path() . 'Views/');
		$view->extendsTemplate('frontend/plugins/pmw_href_lang_tags/index.tpl');

		// Ermittle alle Roots
		$sql = "SELECT l.locale, s.*
				FROM s_core_shops AS s
				INNER JOIN s_core_locales AS l
				ON s.locale_id = l.id
				WHERE s.active = '1'";
		$results = Shopware()->Db()->fetchAll($sql);
		foreach($results as $r){
			if (in_array($r["category_id"],$paths)){
				if (!empty($article["attr2"])){
					$tags[] = [
						"locale" => $r["locale"],
						"url" => sprintf("http%s://%s/%s", ($r["secure"] && $r["always_secure"]) ? "s" : "", ($r["secure"] && !empty($r["secure_host"])) ? $r["secure_host"] : $r["host"], $article["attr2"])
					];
				}
				else {
					$sql = "SELECT path FROM s_core_rewrite_urls WHERE org_path = :org_path AND main = '1' AND subshopID = :shopId";
					$params = [":org_path" => "sViewport=detail&sArticle=".$articleId, ":shopId" => $r["id"] ];
					$query = Shopware()->Db()->executeQuery($sql, $params);
					$row = $query->fetch();
					$tags[] = [
						"locale" => $r["locale"],
						"url" => sprintf("http%s://%s/%s", ($r["secure"] && $r["always_secure"]) ? "s" : "", ($r["secure"] && !empty($r["secure_host"])) ? $r["secure_host"] : $r["host"], $row["path"])
					];
				}
			}
		}

		// x-default
		if (count($tags)){
			$tags[] = [
				"locale" => "x-default",
				"url" => $tags[0]["url"]
			];
		}

		$view->assign('tags', $tags);
	}

```

&nbsp;

---

<div class="post-metadata">

**Author:** ![dbb](https://avatars.discourse-cdn.com/v4/letter/d/e36b37/32.png) [@dbb](https://forum.shopware.com/u/dbb)\
**Post date:** [27. November 2017 um 17:44 UTC](https://forum.shopware.com/t/aktuelle-seite-auf-sub-sprachshop-variante-prufen/49711/6 "2017-11-27T17:44:24Z")

</div>

Hallo arnebecker,

vielen Dank für deine Plugin-Tipps! und deinen Code

Vielleicht hast du Recht und man sollte besser in diesem Fall auf ein günstiges und funktionierendes Plugin zurückgreifen. Ich werde mal das Sprachverlinkungs-Plugin testen und hier Bericht erstatten.

&nbsp;

Beste Grüße  
Michael
