dariusz.staropietka.com ▸ devRSS Feed


Sklep home.pl i przekierowanie

Czasami przerażają mnie zamknięte źródłowo wynalazki najróżniejszych firm. Miałem akurat asystę w projekcie wdrożenia sklepu internetowego dla jednej z firm. Firma ma jeden produkt, uznaliśmy, że wobec tego bez sensu będzie zaprzęgać jakieś potężne machinarium typu Magento, czy RedCart. Ze względu na planowane płatności elektroniczne uznałem również, że nie chce mi się bawić z ich implementacją i niestety... zasugerowałem zbratanie się z Home.pl i ich sklepem.

Nie powiem, większość rzeczy udało się zrobić szybko i intuicyjnie, ale że firma ma wyłącznie jeden produkt w ofercie, który solo na stronie głównej wygląda głupio (jakby coś zeżarło resztę produktów), wymyśliłem, że chciałby przekierować stronę główną sklepu na kartę produktu. W sensie, że jak ktoś wpisze czysty adres sklepu, to system przerzuci go od razu do produktu.

Wydawało mi się, że sprawę załatwi moduł przekierowań dostępny w sklepie, ale za Chiny Ludowe nie udało mi się wprowadzić w nim żadnych zmian. Programiści uparli się, że podawane adresy mają być relatywne, ale - jak się szybko okazało - sama strona główna sklepu takiego realtywnego odpowiednika nie posiada. Konsultantka Home.pl też w tej sprawie nie pomogła. Zazgrzytałem zębami.

Myślałem, myślałem, łaziłem po administracji tego sklepu niemal ze łzami w oczach, jak totalny przegryw, co to nie jest w stanie niczego przeprowadzić zgodnie z planem i... nagle... patrzę... "własny skrypt JS" w menu edycji bieżącego wyglądu sklepu!

W akcie dzikiego podniecenia wklepałem od razu:

$(document).ready(function() { 
  if (window.location.href === "https://domena.pl/") {
  window.location.href = "https://domena/pl/p/nazwa-produktu/nr";
}
});

i... zadziałało! Tyle, że przekierowanie włączało się dopiero po całkowitym załadowaniu strony, w wyniku czego widać było, z której strony następuje przekierowanie. Dość koślawe rozwiązanie. Podrapałem się w głowę, skasowałem poprzedni wpis, zastępując go nowym:

if (document.readyState === "loading") {
    if (window.location.href === "https://domena.pl/") {
  window.location.href = "https://domena.pl/pl/p/nazwa-produktu/nr";
}
}

Efekt osiągnięty! Teraz "redirect" następuje zanim strona zostanie załadowana! To jest ekstra!