Nerviger Scroll an den Seitenanfang im Contao Isotope Shop uvm.

Wenn eine Webseite bei einer Aktion an die Top-Position (nach oben) springt kann dies sehr stören. Dies kann z.B. auftreten wenn man im Contao Isotope Shop ein Produkt in den Warenkorb legt. Je nach länge der Produktliste muss man dann weit nach unten scrollen um weiter einkaufen zu können. Nicht gerade gut gelöst.

Ein einfaches Javascript kann helfen dieses Problem zu lösen:

<script>
var pathName = document.location.pathname;
var scrollPositionStored = false;
window.onbeforeunload = function () {

        var scrollPosition = Math.max(document.body.scrollTop, window.pageYOffset, document.documentElement.scrollTop, $(document).scrollTop());
        sessionStorage.setItem("scrollPosition_" + pathName, scrollPosition.toString());
        scrollPositionStored = true;

};

var scrollPosRestored = false;

var restoreToScrollPosition  = function()
{
        if (!scrollPosRestored && sessionStorage["scrollPosition_" + pathName]) {
            var historyScrollPos = sessionStorage.getItem("scrollPosition_" + pathName);
            $('html, body').animate({ scrollTop: historyScrollPos }, 200);
            scrollPosRestored = true;
        }

}

window.addEventListener("load", function () {
    restoreToScrollPosition();
}); 
</script>

Verwendung auf eigene Gefahr...

Nachtrag: 2. Lösungsansatz aus dem Contao Forum:

In "vendor/omosde/contao-om-backend/src/Resources/contao/config/config.php" Zeile #L50-L51

$objUser = BackendUser::getInstance();

$objUser->authenticate();

ersetzen mit:

$arrPackages = \System::getContainer()->getParameter('kernel.packages');

    if ($arrPackages['contao/core-bundle'] >= '4.9.0')

    {

        $strUsername = Contao\System::getContainer()->get('contao.security.token_checker')->getBackendUsername();

        if ($strUsername !== null)

        {

            $objUser = \Contao\BackendUser::loadUserByUsername($strUsername);

        }

    }

    else

    {

        $objUser = BackendUser::getInstance();

        $objUser->authenticate();

    }

Nachtrag: 3. Lösungsansatz da am iPhone nicht jede Methode geht:

<script>
$(window).scroll(function () {
    //set scroll position in session storage
    sessionStorage.scrollPos = $(window).scrollTop();
});
var init = function () {
    //get scroll position in session storage
    $(window).scrollTop(sessionStorage.scrollPos || 0)
};
window.onload = init; 
</script>

Zurück

Kein Erfolg mit den hier beschriebenen Contao-Lösungen? Klappt es nicht mit dem gewünschten Contao-Update oder dem Umzug auf einen neuen Hostingserver?

Wenn die Frustration zu groß wird, einfach bei mir melden:
info@liquid-artwork.de - Ansprechpartner: Lars Scheumann

Manchmal ist es besser solche umfangreichen Aufgaben dem Profi zu überlassen, der schneller und sorgfältiger damit umgehen kann. Kostet seinen Preis, aber lohnt sich schnell, bevor man sich tagelang damit herum ärgert. LIQUID-ARTWORK betreut auch Kunden die ihre Webseite selbst erstellt haben, oder durch Dritte. Kurze Anfrage bei mir und nach einer ersten Prüfung kann ich meist einen Preis nennen. Die Anfrage alleine kostet dabei nichts!

Viele weitere, ähnliche und hoffentlich hilfreiche Beiträge findet Ihr im kompletten Contao-Helpdesk das ständig erweitert wird.

Zum Contao-Helpdesk...