Právě je 16 srp 2022 07:08

Všechny časy jsou v UTC + 1 hodina [ Letní čas ]




Odeslat nové téma Odpovědět na téma  [ Příspěvků: 11 ]  Přejít na stránku 1, 2  Další
Autor Zpráva
 Předmět příspěvku: PrestaShop 1.7.7 - Chybný odkaz pro generování a stažení virtuálního produktu PDF
PříspěvekNapsal: 13 pro 2021 23:07 
C4 zákazník

Registrován:
04 led 2020 13:50
Příspěvky:
24
Dobrý den,
neuměl by mi prosím někdo poradit s následujícím problémem?

Přes svůj eshop prodávám virtuální produkty ve formě PDF. V override mám upravené rozšíření controlleru GetFileController.php, které oproti defaultnímu GetFileController.php dělá to, že vezme zdrojové PDF, vloží do jeho záhlaví určité údaje, vytažené z databáze, takto upravenou kopii původního souboru uloží na server do pomocného adresáře a následně by mělo dojít ke stažení toho upraveného souboru přes prohlížeč do počítače zákazníka, nebo by se alespoň mělo otevřít okno prohlížeče pro stažení souboru na lokál.

Celá ta funkcionalita vygenerování upraveného souboru a jeho následného stažení na lokál zákazníka se spouští kliknutím na odkaz, který PrestaShop standardně vkládá do emailu, který automaticky generuje a odesílá po potvrzení uhrazení objednávky virtuálního produktu na základě emailové šablony download_product. A to do místa, kde je v šabloně umístěn tag {virtualProducts}

V příloze přikládám to mé rozšíření GetFileController.php jako texťák.

Můj problém, se kterým si nevím rady, je následující a začal se vyskytovat asi před rokem. Do té doby všechno fungovalo správně.
Nyní ale, když udělám objednávku, tak po té, co mi přijde email s odkazem a já na ten odkaz kliknu, tak se sice na serveru správně vytvoří kopie pdf souboru v pomocném adresáři, ale dál se nestane nic. Soubor se ani sám nestáhne do počítače, ani se nezobrazí pop-up okno prohlížeče pro Uložení souboru jako.
Když na ten hyperlink přímo v tom emailu kliknu pravým tlačítkem myši a z kontextového menu zvolím volbu Uložit odkaz jako, otevře se okno pro stažení souboru na lokál a to PDF se v něm nabídne ke stažení. Když potvrdím, že ho chci stáhnout, prohlížeč zahlásí, že soubor nelze stáhnout a zeptá se mě, jestli má soubor zahodit, nebo zachovat. Když dám že zachovat, tak ho v pohodě stáhne na lokál.
Úplně stejně se to chová, když si z toho hyperlinku vykopíruju URL do schránky, vložím ho ručně do mailu, ten si pošlu a po té co mi přijde v něm na to URL kliknu.

Když si ale vykopíruju URL z toho hyperlinku do schránky, vložím ho do adresního řádku prohlížeče a spustím ho přímo z adresního řádku, tak všechno proběhne tak jak má a soubor se ihned automaticky stáhne na lokál, aniž by se mě prohlížeč na něco ptal, nebo mě na něco upozorňoval.

Zdá se tedy, jako by ta část toho upraveného scriptu, která má na starost vygenerování upraveného souboru a jeho uložení do pomocného adresáře na server, fungovala správně (tedy kód až do řádku 500). Ale pak je nějaký problém s tou částí, která má vyvolat stažení souboru ze serveru na lokál. Což je část od řádku 500 dál.
Bohužel netuším, v čem ten problém vězí. :-(
Neuměl by jste mi s tím prosím někdo poradit?


Přílohy:
GetFileController.txt [21 KiB]
27 krát
Nahoru
 Profil  
 
 Předmět příspěvku: Re: PrestaShop 1.7.7 - Chybný odkaz pro generování a stažení virtuálního produktu PDF
PříspěvekNapsal: 13 pro 2021 23:15 
C4 zákazník

Registrován:
04 led 2020 13:50
Příspěvky:
24
Tady ještě přikládám jedeno ukázkové URL k testovacímu virtuálnímu produktu, které vygeneroval PrestaShop do toho emailu pro stažení zakoupeného produktu.
Jak už jsme psal, když si ho někdo pošle emailem a pak na něj klikne přímo v tom emailu(testováno ve webovém klientovi emailu od seznamu a gmailu), soubor se nestáhne, ani se nezobrazí okno s nabídkou pro jeho stažení. Když na něj v tom emailu klikne pravím tlačítkem, nabídne se okno pro stažení souboru a po potvrzení ponechání je soubor možné stáhnout. Když se to URL vykopíruje přímo do adresního řádku prohlížeče a spustí se odtamtud, všechno proběhne tak jak by mělo a soubor se automaticky stáhne do počítače.

http://www.zapokladem.cz/index.php?cont ... 266c1bdd5c


Nahoru
 Profil  
 
 Předmět příspěvku: Re: PrestaShop 1.7.7 - Chybný odkaz pro generování a stažení virtuálního produktu PDF
PříspěvekNapsal: 13 pro 2021 23:23 
C4 zákazník

Registrován:
04 led 2020 13:50
Příspěvky:
24
Teď jsem metodou pokus a omyl zjistil, že když si to URL vykopíruji do emailu a před tím, než si ten email pošlu, mu nastavím místo prefixu http:// prefix https:// tak po přijetí emailu a kliknutí na hyperlink vše zafunguje správně.
Nevíte prosím někdo kde, co a jak mám změnit v nastavení PrestaShopu, aby mi URL v odkazech, které vkládá do generovaných emailů, generoval s prefixem https:// místo http:// ?


Nahoru
 Profil  
 
 Předmět příspěvku: Re: PrestaShop 1.7.7 - Chybný odkaz pro generování a stažení virtuálního produktu PDF
PříspěvekNapsal: 21 pro 2021 17:53 
C4 podpora
C4 podpora

Registrován:
30 čer 2009 09:14
Příspěvky:
8245
Dobrý den,

PrestaShop odkazy generuje automaticky na základě nastavení obchodu, takže pokud obchod běží na https, tak i všechny odkazy by měly začínat https. A ostatní odkazy v e-mailech mají správný tvar s https?

_________________
Radek Plašil
Webhosting C4
https://www.c4.cz/


Nahoru
 Profil  
 
 Předmět příspěvku: Re: PrestaShop 1.7.7 - Chybný odkaz pro generování a stažení virtuálního produktu PDF
PříspěvekNapsal: 21 pro 2021 21:52 
C4 zákazník

Registrován:
04 led 2020 13:50
Příspěvky:
24
Ano, všechny ostatní odkazy v emailu mají URL s prefixem https:// . Pouze odkaz pro stažení souboru virtuálního produktu se do emailu generuje bez prefixu https://
Bude to předpokládám tím, že jako odkaz pro soubor virtuálního produktu se do emailu generuje URL, která je vlastně voláním webové služby s potřebnými parametry. Kliknutím na odkaz se totiž v důsledku volá GetFileController.php, která použije hodnoty atributů z té URL na to, aby dohledala a nabídla ke stažení ten správný soubor virtuálního produktu.
Zatímco všechna ostatní URL, generovaná do emailů, jsou jen "hloupé" hyperlinky, směřující natvrdo na konkrétní CMS stránku ze struktury front-endu PrestaShopu, případně na login page pro přihlášení uživatele.
Možná je to dané nějakým kusem kódu v některém z TPL souborů, které se podílí na generování emailů a kde je někde natvrdo v kódu nastaveno, že se URL pro soubor virtuálního produktu do emailu zapisuje buďto úplně bez prefixu, nebo s prefixem http://
Ale to jen tak odhaduju, protože ten kód pořádně neznám.


Nahoru
 Profil  
 
 Předmět příspěvku: Re: PrestaShop 1.7.7 - Chybný odkaz pro generování a stažení virtuálního produktu PDF
PříspěvekNapsal: 22 pro 2021 13:06 
C4 podpora
C4 podpora

Registrován:
30 čer 2009 09:14
Příspěvky:
8245
Dobrý den,

stažení virtuální produktů ale funguje správně a odkaz se generuje s https, pokud obchod běží na https protokolu (resp. má povoleno SSL). Můžete si to jednoduše ověřit zrušením nestandardní úpravy, příp. na čisté instalaci. Takže problém není v aplikaci, ale nestandardní úprava nerespektuje nastavení obchodu a chybně vkládá jen http variantu. Předpokládám, že v kódu bude natvrdo použita proměnná _PS_BASE_URL_, která obsahuje http adresu obchodu, místo aby se v případě https použila proměnná _PS_BASE_URL_SSL_. Jedná se o častou chybu při vytváření úprav/modulů. A proto musíte v nestandardním kódu nalézt a opravit část s generováním odkazu. Určitě se nejedná o soubor GetFileController.php, protože ten slouží pouze pro stažení produktu na základě již vygenerovaného odkazu.

_________________
Radek Plašil
Webhosting C4
https://www.c4.cz/


Nahoru
 Profil  
 
 Předmět příspěvku: Re: PrestaShop 1.7.7 - Chybný odkaz pro generování a stažení virtuálního produktu PDF
PříspěvekNapsal: 23 pro 2021 00:54 
C4 zákazník

Registrován:
04 led 2020 13:50
Příspěvky:
24
Ano, odkaz dostupný přímo v administraci zákaznického účtu ve front-endu prestashopu se generuje včetně HTTPS. Ale odkaz do emailu se generuje s HTTP, nebo možná úplně bez prefixu.
Hledal jsem, kde se dělá nahrazení parametru {virtualproducts} výčtem hyperlinků pro stažení souborů virtuálních produktů. A dostal jsme se až k souboru download_product_virtual_products.tpl, který je volán z OrderHistory.php
Ten soubor download_product_virtual_products.tpl obsahuje následující kód:
<ul>
{foreach $list as $product}
<li><a href="{$product.url}">{$product.text}</a> {$product.complementary_text}</li>
{/foreach}
</ul>

Ale když jsme to změnil na <a href="https://{$product.url}">... a nechal vygenerovat email k objednávce, nic se nezměnilo. Je ale možné, že jsem před tím, než jsem nechal vygenerovat ten nový email, nepromazal vše, co by se promazat mělo, aby se úprava souboru po svém nahrání na server projevila. Jediné co jsme udělal, bylo vymazání mezipaměti přes tlačítko v adminsitraci PrestaShopu.

Zkusil jsem i to, že jsem do databáze v tabulce PS_CONFIGURATION vložil do PS_SHOP_DOMAIN hodnotu https://www.zapokladem.cz ale ani to nemělo na vygenerovanou URL v emailu žádný vliv.

Používám vlastní šablonu a tak jsem na vaši radu zkusil prohledat její kód. Ale nikde mi to v jejích souborech proměnnou _PS_BASE_URL nenašlo.


Nahoru
 Profil  
 
 Předmět příspěvku: Re: PrestaShop 1.7.7 - Chybný odkaz pro generování a stažení virtuálního produktu PDF
PříspěvekNapsal: 23 pro 2021 13:27 
C4 podpora
C4 podpora

Registrován:
30 čer 2009 09:14
Příspěvky:
8245
Dobrý den,

úprava nebude souviset s tpl souborem, nestandardní šablonou nebo databází, proto je zbytečné v těchto částech něco hledat a měnit. Musíte najít kód, který přepisuje výchozí chování vytváření odkazů. Takže nejspíš se bude jednat o php soubor umístěný ve složce pro přepsání override (příp. ve složce samotného modulu modules/nazev-modulu). Standardně se odkaz generuje v souboru classes/ProductDownload.php, takže jestli nestandardní úprava mění jeho funkce, tak byste měl kód nalézt v souboru override/classes/ProductDownload.php.

_________________
Radek Plašil
Webhosting C4
https://www.c4.cz/


Nahoru
 Profil  
 
 Předmět příspěvku: Re: PrestaShop 1.7.7 - Chybný odkaz pro generování a stažení virtuálního produktu PDF
PříspěvekNapsal: 23 pro 2021 16:12 
C4 zákazník

Registrován:
04 led 2020 13:50
Příspěvky:
24
Heuréka :-)
Měl jste pravdu.
Placený modul pfvirtualcombinations, který umožňuje v PS1.7. vytvářet virtuální produkty s kombinacemi, vkládá do override rozšíření třídy ProductDownload.
Ve verzi 1.0.0 má ten modul v tom rozšíření ve funkci getTextLinkvirtual skutečně předpis ve tvaru
$link = ($admin) ? 'get-file-admin.php?' : _PS_BASE_URL_.__PS_BASE_URI__.'index.php?controller=get-file&';

Takže stačilo to změnit na
$link = ($admin) ? 'get-file-admin.php?' : _PS_BASE_URL_SSL_.__PS_BASE_URI__.'index.php?controller=get-file&';
a do emailu se začaly odkazy na soubor virtuálního produktu generovat s prefixem https://

Moc děkuji za pomoc s řešením.


Nahoru
 Profil  
 
 Předmět příspěvku: Re: PrestaShop 1.7.7 - Chybný odkaz pro generování a stažení virtuálního produktu PDF
PříspěvekNapsal: 23 pro 2021 17:12 
C4 podpora
C4 podpora

Registrován:
30 čer 2009 09:14
Příspěvky:
8245
Dobrý den,

děkuji za informaci. Jsem rád, že se problém podařilo vyřešit.

_________________
Radek Plašil
Webhosting C4
https://www.c4.cz/


Nahoru
 Profil  
 
Zobrazit příspěvky za předchozí:  Seřadit podle  
Odeslat nové téma Odpovědět na téma  [ Příspěvků: 11 ]  Přejít na stránku 1, 2  Další

Všechny časy jsou v UTC + 1 hodina [ Letní čas ]


Kdo je online

Uživatelé procházející toto fórum: Žádní registrovaní uživatelé a 0 návštevníků


Nemůžete zakládat nová témata v tomto fóru
Nemůžete odpovídat v tomto fóru
Nemůžete upravovat své příspěvky v tomto fóru
Nemůžete mazat své příspěvky v tomto fóru
Nemůžete přikládat soubory v tomto fóru

Hledat:
Přejít na:  
FTP Uploader
Staňte se naším zákazníkem!
Hledáme kolegy
PrestaShop partneři

Seznam všech partnerů

PrestaShop Hosting
Návody pro C4

© 2009-2022 ČESKÝ WEBHOSTING s.r.o. Kontaktní e-mail: forum@c4.cz
Diskuzní fórum využívá technologie: phpBB, phpBB-SEO.com, phpBB.cz