Jump to content

Prodotti creati con SQL non vengono mostrati in frontend


Sgarbo

Recommended Posts

Ho questo problema, cercherò di essere riassuntivo:

Ho scritto un script in php per analizzare un file csv prodotto da un gestionale.

Questo script se, trova corrispondenza tra il csv e un prodotto su prestashop ne aggiorna prezzo e giacenza.

Se non trova il prodotto lo crea e mi invia un report via email.

Il problema è questo: funziona tutto bene, i prodotti vengono aggiornati/creati e in backend tutto viene visualizzato correttamente.

 

Però in frontend i prodotti non si vedono. Se dal backend li apro, seleziono la categoria (che in realtà è già correttamente impostata dallo script, ma ci clicco comunque sopra) allora si vede anche nella vetrina. 

Le tabelle sono praticamente sicuro di usare tutte quelle che vanno toccate con lo script, ovvero:

  • ps_product
  • ps_product_lang
  • ps_product_shop
  • ps_stock_available
  • ps_category_product 
  • ps_image (solo se voglio inserire la foto da script)
  • ps_product_download (solo se il prodotto offre il download)

Prestashop 1.7.4.3

Cache pulita, sia da pannello "Prestazioni" che cancellando il contenuto della cartella .../var/cache/ direttamente da ftp.

Qualcuno sa a cosa può essere dovuto? Sto dimenticando qualcosa? 
Grazie

Link to comment
Share on other sites

Ciao Haumea!

Si... tutti attivi. Infatti se apro un prodotto dal backend, e semplicemente clicco sulla categoria a cui l'ho già assegnato tramite script (e risulta assegnato perché è già selezionato con tanto di spunta categoria principale) e salvo, miracolosamente diventa visibile nel frontend.... 

Schermata 2019-02-15 alle 17.44.06.png

Link to comment
Share on other sites

Grazie per i link, me li vado a leggere subito. 

 

Per la tua domanda, fa dei cicli foreach/if/else in base alle circostanze. 

Però si, per ogni prodotto lui esegue una query in base alla situazione. 

 

Della classe Product.php molto sinceramente non saprei, non so a cosa ti riferisci. Se hai qualche link anche per questo mi informo volentieri. 

Grazie. 

Link to comment
Share on other sites

Ciao hardware-store! Ti ringrazio per la risposta.

On 2/16/2019 at 12:55 AM, hardware-store said:

Se e attive la cache aggiuntiva tramite librerie aggiuntive tipo php-apc potrebbe essere una delle cause, disattivala e prova.

Se sei su server dedicato e puoi fare altre prove fai le query e riavvia semplicemente apache e vedi se compaiono

Grazie anche per il suggerimento. Questa mattina farò delle prove in merito e ti farò sapere.

 

On 2/16/2019 at 12:55 AM, hardware-store said:

Le tabelle sul quale stai operando sono corrette ma sicuramente stati attivando i prodotti su una tabella e sull'altrea no e questo potrebbe essere il primo problema

Per quanto riguarda le tabelle, ho ricontrollato anche ieri, e li attivo su tutte quelle in cui la key "active" è presente. Tant'è che nel backend risultano presenti e attivi. Ho anche ricontrollato tramite la mappa delle tabelle ufficiale di prestashop ed è tutto ok...

 

Vediamo se può essere questa cache...
Grazie

Link to comment
Share on other sites

21 minutes ago, hardware-store said:

figurati....facci sapere

Niente... ho verificato anche con il gestore del server ma nulla. Non c'è alcuna cache aggiuntiva. Aggiungo anche un'altra cosa strana:

Ho provato ad eliminare la categoria che dava questo problema. Nel farlo ho selezionato la scelta "sposta tutti i prodotti nella categoria superiore e disattivali".

Fatto questo ho notato che alcuni (mi sembra 2) prodotti di quelli con cui avevo seguito questo procedimento 👇

On 2/15/2019 at 5:45 PM, Sgarbo said:

apro un prodotto dal backend, e semplicemente clicco sulla categoria a cui l'ho già assegnato tramite script (e risulta assegnato perché è già selezionato con tanto di spunta categoria principale) e salvo

sono rimasti assegnati a questa categoria... che però secondo il backend non esisteva più.

 

Sono andato a verificare nel server: la categoria non era stata eliminata.... 

 

Allora ho fatto questo:

  1. Ho eliminato manualmente dalla tabella ps_category del database la categoria;
  2. Ne ho creata una nuova tramite il backend;
  3. Sempre dal backend ho riattivato i prodotti che avevo disattivato;
  4. Con una query sul database spostato tutti i prodotti che avevo assegnato alla categoria "Shop" (ovvero quella "superiore" in cui spostare i prodotti dopo eliminazione precedente categoria) in quella nuova.
  5. Ora i prodotti si vedono.... 

Ma non capisco perché tutti questi problemi. Ok, sono contento che ora si vedano i prodotti, ma non sono tanto felice di questi due particolari alquanto strani...

Link to comment
Share on other sites

On 2/18/2019 at 9:59 AM, hardware-store said:

e chiaro che qualcosa non va nella applicazione....fai un piccolo applicativo con query dirette senza usare le classi di ps. Giusto un prodotto base e vedi se lo attiva....

Ho provato e da lo stesso problema...

In poche parole accade la stessa cosa: il prodotto viene correttamente creatoaggiunto in ogni tabella da chiamare in causa attivato. La voce "active" è solo in due tabelle: ps_product e ps_product_shop ed in entrambi il prodotto è attivo.

 

Nel backend il prodotto viene visualizzato correttamente e risulta attivo. Eppure solo se io apro la scheda prodotto e clicco sulla sua categoria (che risulta già correttamente assegnata) allora il prodotto appare anche nel frontend...

 

E ho notato anche un'altra cosa strana:  alcune volte, quando vado a modificare dal pannello amministratore i prodotti o le categorie, non sempre il prestashop e il database attuano la modifica. 
Per esempio, cancello una categoria... ma questa non viene davvero cancellata dal database anche se nel backend non risulta più. Nella tabella ps_category invece c'è ancora.

Oppure prendo un prodotto, che magari ha più di una categoria assegnata. Se tolgo la spunta ad una delle due, "scompare" anche l'altra pur restando selezionata (vedi foto)....

 

Schermata 2019-02-21 alle 08.22.17.png

Link to comment
Share on other sites

Aggiungo anche un'altro dettaglio: prestashop è impostato come multistore (i prodotti vengono correttamente aggiunti su entrambi cosi come le giacenze).

Però... c'è un però.

Sul primo negozio (il primo creato) ora, da prima dell'utilizzo di questo script, la ricerca del prodotto non trova alcun risultato (già rigenerato l'indice e controllato nel database, ha oltre 12 mila parole).

Mentre sul secondo, che credo utilizzi un modulo di ricerca Ajax fornito con il template, la ricerca funziona correttamente..

Misteri...

Edited by Sgarbo (see edit history)
Link to comment
Share on other sites

21 hours ago, hardware-store said:

ai decisamente un problema di cache.

perché ho realizzato spesso applicazioni esterne per ps e per manipolare direttamente i db e se non svuoti la cache prima non risolvi.  

Riprovo a chiedere al gestore del servizio hosting... Vediamo.

Vi aggiornerò...
Nel frattempo continuo anche a verificare la mia applicazione. Non si sa mai...

Grazie ancora per il tempo dedicatomi 

Link to comment
Share on other sites

On 2/22/2019 at 10:50 AM, hardware-store said:

scusa fai dei test con una vm non online...poi ti adegui all'hosting.

 

Si oggi proverò così. Ieri comunque lo script ha aggiunto nuovi prodotti e questa volta il problema non si è presentato... 🤗

 

P.s. Avete invece suggerimenti sul perché (ripeto che è un multistore) la ricerca non funzioni solo su uno dei due siti? 

Tenete conto che il secondo sito ha un template con un proprio modulo di ricerca Ajax. Però è quello ufficiale di ricerca a non funzionare...

Link to comment
Share on other sites

38 minutes ago, hardware-store said:

guarda io sviluppo app da una vita bisogna vedere come hai sviluppato l'applicazione.

io ne ho fatto diverse mai avuto questo problema.

diversamente potresti adeguarti e usare il web service ma e macchinoso io non lo sopporto faccio prima a costruirci sopra applicazioni esterne salvo funzioni particolari allora sono costretto a lavorare con mvc e framework e mi piace poco.

Pero in questo caso non c'entra l'app. Mi sta dando questo problema da ben prima che usassi l'app. Anche i prodotti aggiunti manualmente dal backend non li mostra in ricerca..

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...