Admin felület

Prestashop szállítói követési URL beállítása

Prestashop szállítói követési URL beállítása

A cikk eredeti megjelenése: 2018. január 14. – a PrestaShop azóta sokat változott. Az elvek ma is hasznosak lehetnek, de a lépések a mai (8.x, 9.x) verzióknál eltérhetnek. Kérdezz bátran!

Alapvetően a követési URL egy nagyon szuper dolog a Prestashop-ban. Amennyiben a szállítód csomagkövetése olyan URL-t használ, amiben megtalálható a csomagkövetési kód, akkor dinamikusan ki tudod küldeni az „egykattintásos” követési linket, aminek segítségével az ügyfél azonnal láthatja hol is tart a csomag a kiszállítási folyamatban. Példa a DPD-től:

https://tracking.dpd.de/parcelstatus?query=3242342423

A fenti link a DPD csomagkövető URL-je, ahol a (most kitalált) csomagszám a „3242342423”. Ebben az esetben a szállítónál az alábbi linket kell megadni:

https://tracking.dpd.de/parcelstatus?query=@

prestashop_kovetesi_url

A „@” jel ebben az esetben változóként funkcionál, és amikor megadod a rendelési oldalon az adott csomag követési kódját, az a @ jel helyére helyettesítődik be, így alkotván egy működő egész linket ami azonnal kiküldődik e-mail-ben az ügyfélnek.

A probléma

Manapság a legtöbb csomagkövetési link viszont nem tartalmazza már a csomag azonosító számát, ez a háttérben fut le – így viszont ugrik a fenti linkes-behelyettesítős elmélet. Példa a FámaFutár-tól (de akár a GLS is lehetne):

https://famafutar.hu/tracking/

Ez az alap link, ami nem változik meg a csomagszám lekérése után. Nem tudjuk tehát hova tenni a @ jelet, nem tudjuk behelyettesíteni a csomagszámot.

Akkor hogyan tovább?

Jó ötletnek tartom az alábbit: mivel a szállító nem változik túl gyakran, ezért a fenti FámaFutáros linket tegyük be direkt a csomagkövetős e-mail sablonba (in_transit), a változót pedig használjuk egy kicsit más megfogalmazással. Például:

prestashop_csomagkovetes_email

Mi ezzel a gond?

Az, hogy ebben az esetben a szállítói beállításoknál csak simán a @ jelet kellene csak megadni:

prestashop_szallitoi_kovetesi_url

Viszont ezt nem fogja engedni elmenteni a rendszer, mivel a Prestashop figyeli, hogy a megadott érték megfelel-e egy URL formátumának. Ahhoz, hogy ezt kiiktassuk, keressük meg a

/classes/Carrier.php

fájlt, és a 127. sor körül megtaláljuk a szállítói URL értékének ellenőrzését:

prestashop_szallito_linkje

Láthatjuk; a validációja linkalapú, tehát egy máshol megírt programkód alapján megvizsgálja, hogy a beírt érték megfelel-e egy szabályos URL struktúrának (mondjuk van-e benne pont, vagy http rész, stb.). Ahhoz, hogy az ellenőrzést elkerüljük, töröljük ki a validate részt:

, 'validate' => 'isAbsoluteUrl'

vagy megtehetjük azt is, hogy az ellenőrzést az „isAbsoluteUrl„-ről megváltoztatjuk a 124-es sorban látható „isCarrierName„-re, ez csak a betűk meglétét ellenőrzi (és a @ jel értelemszerűen belefér ebbe 🙂 ).

Ha kész, mentsd el, töltsd vissza és próba. 🙂

Sok sikert!

Puizl Attila

PrestaShop fejlesztő · Hivatalos PrestaShop Nagykövet

17 éve készítek, fejlesztek és tartok karban PrestaShop webáruházakat. Több száz hazai és külföldi webshop viseli a kézjegyem, és 2010 óta segítek a magyar PrestaShop közösségben.

Bemutatkozás és ügyfélvélemények →

Szólj hozzá!

Az e-mail címed nem jelenik meg. A hozzászólások jóváhagyás után válnak láthatóvá. Részletek: Adatkezelési tájékoztató.