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

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!

Ha segített a cikk, meghívhatsz egy kávéra! 🙂


Puizl Attila Programozó

Az íróról: Puizl Attila

Puizl Attila vagyok, több éve készítek sikeres Webáruházakat Prestashop rendszerrel. Célom hogy a tudásom minőséggé, munkám pedig eredményessé váljon.

Weboldal: → Prestashop Készítés és Fejlesztés

Még megtalálsz:

Ennek haszontalanságáról már írtam korábban ITT ("Születésnap és megszólítás" rész). Ha egyetértettél, Prestashop 1.6-ból a téma .tpl-jeiből könnyedén ki tudtad szedni ezt a nyavalyát; 1.7-nél viszont már más a helyzet, .php-be került. Az alábbi útvonalon találod meg: /classes/form/CustomerFormatter.php A 94. sor körül: A kijelölt részeket kommenteljük ki, vagy töröljük (backup/mentés…
2 napon belül több megkeresést is kaptunk azzal, hogy a Prestashop-beli contact-form-on keresztül tömeges SPAM áradat vette kezdetét finom orosz nyelven. Személyes véleményem az, hogy ez ismét olyan globális Prestashop-problémává fogja kinőni magát, mint anno a mailalerts modul sebezhetősége, így aztán kiemelten szeretnék ezzel az üggyel is foglalkozni. Nem lepne…