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=@
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:
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:
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:
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!