# Link auf Einkaufswelt mit Anker

**URL:** <https://forum.shopware.com/t/link-auf-einkaufswelt-mit-anker/39619>\
**Category:** Allgemein\
**Created:** [7. September 2016 um 08:59 UTC](https://forum.shopware.com/t/link-auf-einkaufswelt-mit-anker/39619 "2016-09-07T08:59:22Z")\
**Posts on this page:** 20\
**Page:** 1

<div class="post-metadata">

**Author:** ![iLuHa](https://dub1.discourse-cdn.com/flex013/user_avatar/forum.shopware.com/iluha/32/8191_2.png) [@iLuHa](https://forum.shopware.com/u/iLuHa)\
**Post date:** [7. September 2016 um 08:59 UTC](https://forum.shopware.com/t/link-auf-einkaufswelt-mit-anker/39619/1 "2016-09-07T08:59:22Z")

</div>

Hallo zusammen,

wir versuchen aktuell innerhalb einer Einkaufswelt einen Link auf eine andere Einkaufswelt zu setzen.  
Zusätzlich soll hier ein Anker verwendet werden, damit die Seite direkt zur entsprechenden Stelle innerhalb der Einkaufswelt springt.

Leider öffnet er die Einkaufswelt aber immer ganz normal (ganz oben).

Die URL sieht wie folgt aus: [www.domain.com/einkaufswelt/#anker](http://www.domain.com/einkaufswelt/#anker)

Wenn ich den Anker innerhalb der Einkaufswelt selbst aufrufe, funktioniert dies problemlos.  
Versuche ich aber den Anker aus einer anderen Einkaufswelt aufzurufen, ruft er mir die Einkaufswelt auf ohne zum Anker zu springen.

Woran könnte das liegen?

---

<div class="post-metadata">

**Author:** ![iLuHa](https://dub1.discourse-cdn.com/flex013/user_avatar/forum.shopware.com/iluha/32/8191_2.png) [@iLuHa](https://forum.shopware.com/u/iLuHa)\
**Post date:** [7. September 2016 um 13:48 UTC](https://forum.shopware.com/t/link-auf-einkaufswelt-mit-anker/39619/2 "2016-09-07T13:48:34Z")

</div>

Ok, muss wohl per JavaScript realisiert werden, da die Einkaufswelten per JS nachgeladen werden und die Anker zum Zeitpunkt der Standard-Funktion noch nicht geladen sind.

Wurde nun mit einem JS-Skript realisiert.

---

<div class="post-metadata">

**Author:** ![echse](https://avatars.discourse-cdn.com/v4/letter/e/c0e974/32.png) [@echse](https://forum.shopware.com/u/echse)\
**Post date:** [14. Oktober 2016 um 10:22 UTC](https://forum.shopware.com/t/link-auf-einkaufswelt-mit-anker/39619/3 "2016-10-14T10:22:09Z")

</div>

Hallo,

ist zwar schon ein wenig her das Thema aber hast du dafür eine Lösung gefunden bzw. hat das mit dem JS funktioniert?  
Falls du deine Lösung nicht teilen möchtest würdest du eventuell trotzdem einmal genauer erklären wie und wo genau dies umgesetzt wurde?

Vielen Dank.  
LG  
Tim  
&nbsp;

---

<div class="post-metadata">

**Author:** ![iLuHa](https://dub1.discourse-cdn.com/flex013/user_avatar/forum.shopware.com/iluha/32/8191_2.png) [@iLuHa](https://forum.shopware.com/u/iLuHa)\
**Post date:** [14. Oktober 2016 um 21:21 UTC](https://forum.shopware.com/t/link-auf-einkaufswelt-mit-anker/39619/4 "2016-10-14T21:21:23Z")

</div>

Ja die Lösung mit JavaScript hat so weit funktioniert.

Wie genau ich das gelöst habe müsste ich am Montag mal nachsehen, gebe anschließend gerne nochmal Rückmeldung.

---

<div class="post-metadata">

**Author:** ![iLuHa](https://dub1.discourse-cdn.com/flex013/user_avatar/forum.shopware.com/iluha/32/8191_2.png) [@iLuHa](https://forum.shopware.com/u/iLuHa)\
**Post date:** [17. Oktober 2016 um 11:51 UTC](https://forum.shopware.com/t/link-auf-einkaufswelt-mit-anker/39619/5 "2016-10-17T11:51:01Z")

</div>

So, nochmal zur Umsetzung mit JavaScript.

Ich bin das Ganze wie folgt angegangen und habe eine JS-Datei erstellt mit folgendem Inhalt:

```
function scrollToAnker() {
    if(location.hash) {
        var anker = $('a[name='+location.hash.substr(1)+']');
        if($(anker).offset()) {
            $("html, body").animate({
                scrollTop: $(anker).offset().top
            }, 100);
        }
    }
}

$(document).ready(function() {
    $.subscribe("plugin/swEmotionLoader/onLoadEmotionFinished", function(me) {
        scrollToAnker();
    });
});

```

Die JavaScript Datei muss dann natürlich noch im Template entsprechend eingebunden wurde.  
Ich hab dies in der index/index.tpl von meinem Theme gemacht.

Ich hoffe ich konnte dir damit helfen 😉

---

<div class="post-metadata">

**Author:** ![echse](https://avatars.discourse-cdn.com/v4/letter/e/c0e974/32.png) [@echse](https://forum.shopware.com/u/echse)\
**Post date:** [17. Oktober 2016 um 13:25 UTC](https://forum.shopware.com/t/link-auf-einkaufswelt-mit-anker/39619/6 "2016-10-17T13:25:31Z")

</div>

vielen vielen Dank, werde es morgen direkt mal ausprobieren! 🙂

Edit: Funktioniert wunderbar, nochmals Danke!

---

<div class="post-metadata">

**Author:** ![shopmax](https://avatars.discourse-cdn.com/v4/letter/s/59ef9b/32.png) [@shopmax](https://forum.shopware.com/u/shopmax)\
**Post date:** [9. März 2018 um 18:51 UTC](https://forum.shopware.com/t/link-auf-einkaufswelt-mit-anker/39619/7 "2018-03-09T18:51:42Z")

</div>

Hallo iLuHa,

vielen Dank für deinen Input. Aber irgendwie funktioniert das bei mir nicht. Nach mehreren Reloads dann manchmal schon (als ob js zunächst nicht geladen wird)&nbsp;und bei Chrome gar nicht (wobei das vermutlich eher an dem bekannten Hashproblem von Chrome liegt, was öfters diskutiert wird). Ist der oben beschriebene Code in der aktuellen Shopwareversion bei dir in allen Browsern noch funktionsfähig?

Vielen Dank schon mal

---

<div class="post-metadata">

**Author:** ![iLuHa](https://dub1.discourse-cdn.com/flex013/user_avatar/forum.shopware.com/iluha/32/8191_2.png) [@iLuHa](https://forum.shopware.com/u/iLuHa)\
**Post date:** [13. März 2018 um 08:28 UTC](https://forum.shopware.com/t/link-auf-einkaufswelt-mit-anker/39619/8 "2018-03-13T08:28:00Z")

</div>

Hallo @shopmax‍,

bei uns funktioniert diese Lösung auch mit Chrome.  
Ich verwende hauptsächlich den Google Chrome Browser und habe es damit eben nochmal bei uns getestet, konnte aber keine Probleme feststellen.

Welche Shopware Version verwendet Ihr?  
Evtl. wird das Problem durch das Async-JS von Shopware \> 5.3 ausgelöst? (Wir verwenden bei uns aktuell Shopware 5.3.4)

Ich habe mein Skript wie folgt für das Async angepasst, vielleicht hilft das weiter.

```
document.asyncReady(function(){

    function scrollToAnker() {
        if(location.hash) {
            var anker = $('a[name='+location.hash.substr(1)+']');
            if($(anker).offset()) {
                $("html, body").animate({
                    scrollTop: $(anker).offset().top
                }, 100);
            }
        }
    }

    $(document).ready(function() {
        $.subscribe("plugin/swEmotionLoader/onLoadEmotionFinished", function(me) {
            scrollToAnker();
        });
    });

});

```

&nbsp;

---

<div class="post-metadata">

**Author:** ![ELL](https://dub1.discourse-cdn.com/flex013/user_avatar/forum.shopware.com/ell/32/15661_2.png) [@ELL](https://forum.shopware.com/u/ELL)\
**Post date:** [15. März 2018 um 15:58 UTC](https://forum.shopware.com/t/link-auf-einkaufswelt-mit-anker/39619/9 "2018-03-15T15:58:30Z")

</div>

Hallo @iLuHa‍

vielen Dank für dein JS. Als ich das heute versucht habe einzubinden, hat meine Shopseite nicht mehr geladen und mich zur Startseite katapultiert. Hast Du eine Idee, woran das liegen kann?

Eingebunden habe ich das JS wie folgt:

**In meinem Theme habe ich eine header.tpl angelegt und ergänzt:**

```
{extends file="parent:frontend/index/header.tpl"}

{block name="frontend_index_header_javascript_jquery"" append}
   
{/block}

```

In meinem Theme Ordner&nbsp;  
_/themes/Frontend/MeinTheme/frontend/\_public/src/js/_

habe ich die JS Datei abgelegt mit dem Inhalt:

```
document.asyncReady(function(){

    function scrollToAnker() {
        if(location.hash) {
            var anker = $('a[name='+location.hash.substr(1)+']');
            if($(anker).offset()) {
                $("html, body").animate({
                    scrollTop: $(anker).offset().top
                }, 100);
            }
        }
    }

    $(document).ready(function() {
        $.subscribe("plugin/swEmotionLoader/onLoadEmotionFinished", function(me) {
            scrollToAnker();
        });
    });

});

```

Anschließend natürlich Cache geleert und Themes kompliiert. Das Ergebnis war eben, dass ich die Einkaufswelt nicht mehr aufrufen konnte und zur Startseite zurückgeworfen wurde. Würde mich über einen Tipp freuen. Vielen Dank!

ELL

---

<div class="post-metadata">

**Author:** ![Moritz\_Naczenski](https://dub1.discourse-cdn.com/flex013/user_avatar/forum.shopware.com/moritz_naczenski/32/7792_2.png) [@Moritz\_Naczenski](https://forum.shopware.com/u/Moritz_Naczenski)\
**Post date:** [15. März 2018 um 17:56 UTC](https://forum.shopware.com/t/link-auf-einkaufswelt-mit-anker/39619/10 "2018-03-15T17:56:37Z")

</div>

Wenn du Javascript in Smarty verwendest, musst du das in einen {literal}{/literal}-Tag passen, sonst machen die geschweiften Klammern Probleme. Kannst ja mal versuchen.

---

<div class="post-metadata">

**Author:** ![shopmax](https://avatars.discourse-cdn.com/v4/letter/s/59ef9b/32.png) [@shopmax](https://forum.shopware.com/u/shopmax)\
**Post date:** [15. März 2018 um 19:36 UTC](https://forum.shopware.com/t/link-auf-einkaufswelt-mit-anker/39619/11 "2018-03-15T19:36:08Z")

</div>

Komisch, komisch,  
leider klappt es nicht.  
Der Shop läuft auch auf 5.3.4.  
Dein JS-Code lliegt 1:1 wie bei dir unter&nbsp;/frontend/\_public/src/js  
und die Einbindung erfolgt über die theme.php mit  
protected $javascript = [  
&nbsp; &nbsp; &nbsp; &nbsp; ‚src/js/anker\_scroll.js‘  
&nbsp; &nbsp; ];&nbsp; &nbsp;

Habe bspw. auf der Startseite einen Link&nbsp;[https://www.domain.de/kontakt/#telefon](https://www.domain.de/kontakt/#telefon) und auf der Seite /kontakt eine

```
telefon

```

(der Anker kommt auch nur 1x vor)aber wenn ich auf den Link klicke lande ich einfach am oberen Ende von /kontakt und nicht beim enstprechenden Anker.

---

<div class="post-metadata">

**Author:** ![malzfons](https://avatars.discourse-cdn.com/v4/letter/m/58956e/32.png) [@malzfons](https://forum.shopware.com/u/malzfons)\
**Post date:** [15. März 2018 um 19:50 UTC](https://forum.shopware.com/t/link-auf-einkaufswelt-mit-anker/39619/12 "2018-03-15T19:50:22Z")

</div>

Bindet ihr den Anker denn auch mit dem ankersymbol des tiny Editor ein?

---

<div class="post-metadata">

**Author:** ![iLuHa](https://dub1.discourse-cdn.com/flex013/user_avatar/forum.shopware.com/iluha/32/8191_2.png) [@iLuHa](https://forum.shopware.com/u/iLuHa)\
**Post date:** [16. März 2018 um 07:48 UTC](https://forum.shopware.com/t/link-auf-einkaufswelt-mit-anker/39619/13 "2018-03-16T07:48:02Z")

</div>

@ELL‍ der Block “frontend\_index\_header\_javascript\_jquery” befindet sich unter index/index.tpl, nicht header.tpl

@shopmax‍ ich habe die JavaScript File über mein Custom Theme eingebunden unter “index/index.tpl” im Block “frontend\_index\_header\_javascript\_jquery” (Sollte über die Theme.php aber auch problemlos funktionieren)  
Das sieht ungefähr so aus:

```
{extends file="parent:frontend/index/index.tpl"}

[...]

{block name="frontend_index_header_javascript_jquery"}
    {$smarty.block.parent}
    
{/block}

```

Wir setzen diese wie folgt:

```
Über uns

```

&nbsp;

---

<div class="post-metadata">

**Author:** ![ELL](https://dub1.discourse-cdn.com/flex013/user_avatar/forum.shopware.com/ell/32/15661_2.png) [@ELL](https://forum.shopware.com/u/ELL)\
**Post date:** [16. März 2018 um 08:47 UTC](https://forum.shopware.com/t/link-auf-einkaufswelt-mit-anker/39619/14 "2018-03-16T08:47:51Z")

</div>

@iLuHa‍ :&nbsp;da&nbsp;war mein Fehler – vielen Dank!  
Jetzt wird das JS geladen (Source liegt im Dev.Tool vor). Leider funktioniert die Positionierung nicht ganz richtig. Wenn ich die Seite aufrufe springt er ein Stück nach unten, jedoch nicht an die korrekte Stelle des Ankers. Hier ein Screenshot:

 ![](https://europe1.discourse-cdn.com/flex013/uploads/shopware/original/2X/3/3eed11e82dc3ef13d78b20a71de7039764386ca4.jpeg)

- Die Seite ist über diesen Link zu erreichen: [https://shop.ellerfoodpackaging.de/get-the-best/burger-packaging](https://shop.ellerfoodpackaging.de/get-the-best/burger-packaging)

- Der Anker ist erstellt als:

- Aufruf des Ankers über:  
[https://shop.ellerfoodpackaging.de/get-the-best/burger-packaging#liefer](https://shop.ellerfoodpackaging.de/get-the-best/burger-packaging#liefer)

Manchmal klappt es, manchmal nicht. :-S Vielen Dank für eure Hilfe!  
ELL

---

<div class="post-metadata">

**Author:** ![iLuHa](https://dub1.discourse-cdn.com/flex013/user_avatar/forum.shopware.com/iluha/32/8191_2.png) [@iLuHa](https://forum.shopware.com/u/iLuHa)\
**Post date:** [16. März 2018 um 09:12 UTC](https://forum.shopware.com/t/link-auf-einkaufswelt-mit-anker/39619/15 "2018-03-16T09:12:46Z")

</div>

@ELL‍ Ich kann das Problem nachstellen bei mir.

Ich vermute mal es liegt daran, dass der “Scroll” Vorgang zu früh greift, und diverse Bilder (nachdem die Seite bereits zur richtigen Stelle gescrollt ist) nachgeladen werden.  
Ab und zu sehe ich (für einen ganz kurzen Augenblick) beim Aufruf der URL, dass er zuerst an der richtigen Stelle steht, dann aber doch an eine andere Stelle springt.

Evtl. versuchen die Funktion etwas verspätet aufrufen zu lassen oder etwas in dieser Richtung

(Wenn die Seite aufgerufen wird aber an der falschen Stelle landet, dann sieht es aus, als würde er zuerst ans Ende der Seite scrollen und dadurch, dass dann die Bilder nachgeladen werden, wieder hoch hüpfen, weil er bereits an die nötige Stelle gescrollt hat, der Inhalt sich aber durch die Bilder verlängert)

---

<div class="post-metadata">

**Author:** ![ELL](https://dub1.discourse-cdn.com/flex013/user_avatar/forum.shopware.com/ell/32/15661_2.png) [@ELL](https://forum.shopware.com/u/ELL)\
**Post date:** [16. März 2018 um 09:57 UTC](https://forum.shopware.com/t/link-auf-einkaufswelt-mit-anker/39619/16 "2018-03-16T09:57:30Z")

</div>

@iLuHa‍

Danke für deine Rückmeldung. Kann ich das JS mit einem onload Event verzögert aufrufen oder lieber mit einem Delay?  
Was wäre denn die technisch schönste/beste Lösung? JavaScript ist nicht gerade mein Steckenpferd&nbsp; ![Sticking-out-tongue](https://forum.shopware.com/plugins/CKEditor/plugins/smiley/images/sticking-out-tongue.png "Sticking-out-tongue")

---

<div class="post-metadata">

**Author:** ![shopmax](https://avatars.discourse-cdn.com/v4/letter/s/59ef9b/32.png) [@shopmax](https://forum.shopware.com/u/shopmax)\
**Post date:** [16. März 2018 um 17:57 UTC](https://forum.shopware.com/t/link-auf-einkaufswelt-mit-anker/39619/17 "2018-03-16T17:57:15Z")

</div>

@malzfons‍

Vielen Dank für eure Unterstützung. Ich habe mich heute etwas in js (war bisher völliger Laie) und den obigen code eingearbeitet und meinen &nbsp;Hauptfehler gefunden. Meine Ankerung läuft über id´s nicht über den a-tag. Entsprechend klappt´s mit folgenden Veränderung:

```
var anker = $("[id='+location.hash.substr(1)+']");

```

Aber, es taucht in der Tat auch das gleiche Problem wie bei ELL auf, dass die Positionierung manchmal falsch ist. Wenn ich dann einen Reload der Seite mache, klappt es. Ist vermutlich wirklich zeitliches Ladeproblem. Deswegen würde ich mich sehr gerne der Frage von ELL anschließen, ob es denn da die Möglichkeit einer wie auch immer gearteten Verzögerung gibt. Herzlichen Dank schon mal.

---

<div class="post-metadata">

**Author:** ![lappies](https://avatars.discourse-cdn.com/v4/letter/l/ac91a4/32.png) [@lappies](https://forum.shopware.com/u/lappies)\
**Post date:** [17. März 2018 um 10:17 UTC](https://forum.shopware.com/t/link-auf-einkaufswelt-mit-anker/39619/18 "2018-03-17T10:17:07Z")

</div>

vielen Dank, funktionieret auch bei mir in die Einkaufswelten.

&nbsp;

&nbsp;

---

<div class="post-metadata">

**Author:** ![lappies](https://avatars.discourse-cdn.com/v4/letter/l/ac91a4/32.png) [@lappies](https://forum.shopware.com/u/lappies)\
**Post date:** [18. März 2018 um 08:48 UTC](https://forum.shopware.com/t/link-auf-einkaufswelt-mit-anker/39619/19 "2018-03-18T08:48:24Z")

</div>

Es geht allerdings nicht auf mein Samsung Handy, geht es denn bei euch im Mobile ansicht?

---

<div class="post-metadata">

**Author:** ![shopmax](https://avatars.discourse-cdn.com/v4/letter/s/59ef9b/32.png) [@shopmax](https://forum.shopware.com/u/shopmax)\
**Post date:** [18. März 2018 um 08:55 UTC](https://forum.shopware.com/t/link-auf-einkaufswelt-mit-anker/39619/20 "2018-03-18T08:55:47Z")

</div>

@lappies‍ Ich habe es gerade auf Samsung A3 mit&nbsp;Chrome&nbsp;getestet. Da geht´s (bis auf das oben beschriebenen Verzögerungsproblem). Werden bei dir vielleicht in Mobile evtl. andere Einkaufswelten geladen bzw. findest du, wenn du auf dem Rechner in den Chrome Developertools den Viewport auf Mobile stellst, die Anker auf der Seite?

[Nächste Seite](https://forum.shopware.com/t/link-auf-einkaufswelt-mit-anker/39619.md?page=2)
