Jump to content

subbisci

Members
  • Posts

    11
  • Joined

  • Last visited

Profile Information

  • Activity
    Agency

Recent Profile Visitors

381 profile views

subbisci's Achievements

Newbie

Newbie (1/14)

2

Reputation

  1. Salve ragazzi, avrei bisogno di sapere se tramite api è possibile inviare un solo xml con tutti i dati dei prodotti da modificare in base ad una chiave. Mi spiego meglio: attualmente il server si prende facendo una chiamata in GET la lista di tutti i prodotti e poi vengono aggiornati uno ad uno. Per il fatto che i prodotti sono tanti (circa 4000) e che ogni chiamata in WS prende almeno un secondo la procedura diventa molto lunga. Si parla di un'ora e mezzo. Quello che serve a me è che data una lista (file xml) dei campi che gli servono, che posso richiamare così: nomedominioecommerce/api/products/?display=[id,reference,ws_status,id_category_default,wholesale_price] e che produce una cosa del genere <prestashop xmlns:xlink="http://www.w3.org/1999/xlink"> <products> <product> <id> <![CDATA[ 11 ]]> </id> <id_category_default> <![CDATA[ 0 ]]> </id_category_default> <reference> <![CDATA[ 00035219 ]]> </reference> <wholesale_price> <![CDATA[ 912.500000 ]]> </wholesale_price> <ws_status> <![CDATA[ 0 ]]> </ws_status> </product> <product> .... tutti gli altri prodotti.... (ed infine chiusura dei tags products e prestashop nell'XML) </products> </prestashop> Dicevo a me interessa sapere se c'è un modo per passargli in PUT una lista di quegli stessi elementi (e dunque stesso numero di prodotti) con i valori aggiornati. In pratica mi chiedevo se il prestashop fosse in grado di capire che essendo una PUT deve utilizzare la chiave primaria (cioè "id" che è l'id_product) per aggiornare i campi dei prodotti presenti nel file XML.
  2. Ormai credo di aver risolto. Faccio una piccola descrizione di come ho proceduto in modo da poter essere di aiuto a qualcuno in futuro: Come detto ho fatto un passo indietro, sono passato dal creare un modulo al creare un controller admin, questo perchè mi ha riportato a qualcosa più facile da trovare nelle guide. Ho seguito la guida standard (linkata qua sopra da codencode) ed ho creato il modulo con funzionalità standard quali: caricamento/salvataggio dei dati dal DB, tabella dei dati nella pagina principale della tab, form di edit di modifica di un elemento. Nelle prime righe del controller ho aggiunto la riga "$this->bootstrap = true;" che non fa altro che caricare un css standard, senza quella il tutto apparirà senza stile. Sarebbe stato molto comodo se nella guida di PS l'avessero messo. A questo punto ho provato a seguire la guida per caricare delle view standard, dunque ho iniziato a provare a fare un override di form.tpl. La guida dice semplicemente che basta creare una cartella che ha lo stesso nome del valore della variabile "$this->tpl_folder" e dentro questa cartella basta metterci dentro il form.tpl, così ho fatto. Dunque, dato che la mia cartella si chiama "prova" e si trova ovviamente dentro /themes/default/template/controllers/ , ho messo form.tpl là dentro. Nessuno risultato. Ho guardato un po' come è la struttura nelle cartelle degli altri controller e così ho creato una gerarchie di cartelle dentro la mia cartella prova, esattamente come ho fatto negli altri. Alla fine avevo qualcosa del genere: /themes/default/template/controllers/prova/helpers/form/form.tpl il file aveva nel suo interno soltanto due righe: {extends file="helpers/form/form.tpl"} test Niente, veniva caricato sempre il form standard! Dopo mille controlli di nomi di cartell, nomi di file e valore di variabili varie ho deciso di utilizzare un metodo scientifico standar per gli informatici. Sono andato a tentativi. Ho deciso di mettere nella $this->variable tpl_folder il nome di una cartella già esistente: "attributes". Magicamente la chiamata ha iniziato a funzionare. La conclusione era che ci fosse qualcosa di sbagliato dentro la cartella prova, dunque mi sono messo a controllare di nuovo tutti i nomi e tutte le stringhe. Nessun miglioramento. A quel punto ho preso il contenuto della cartella attributes e l'ho messo dentro la mia cartella e rimettendo il valore $this->tpl_folder = 'prova'; . La chiamata continuava a funzionare. Convinto di aver risolto il problema ho cancellato il contenuto del nuovo form.tpl appena copiato e l'ho pulito lasciandoci soltanto, di nuovo, le due righe di qua sopra: {extends file="helpers/form/form.tpl"} test Il file non veniva più caricato, ergo c'è qualcosa che deve essere contenuto per forza nel file per far sì che venga considerato buono. Tagliando una parte alla volta alla fine ho scoperto che la view del form deve contenere PER FORZA un determinato blocco, altrimenti viene brutalmente scartata come se non esistesse ed al suo posto viene caricata la view default. Questo blocco è: {block name="input_row"} {/block} La mia view alla fine appariva così: {extends file="helpers/form/form.tpl"} {block name="input_row"} test {/block} E come potete immaginare viene visualizzato il form wrapper ed al suo interno soltanto la scritta test. Questo blocco può anche non contenere niente, ma ci deve essere, altrimenti il sistema, per lo meno la versione che ho io (1.6.0.9), non prende proprio in considerazione quella dannata view! A quel punto sono andato avanti perchè, una volta scoperto come funziona dovevo fare in modo che cliccando nella tab creata da me nel menù admin si visualizzasse non una tabella ma una view personalizzata. Ho scoperto di avere bisogno di valorizzare un funzione initContent, ovvero la prima funzione che viene caricata (diversamente viene ereditata dalla classe AdminController): public function initContent() { if ($this->display == 'add') { $this->display = 'list'; } else{ $this->content = $this->initMain(); } return parent::initContent(); } public function initMain() { $this->tpl_view_vars = array( ****** array di variaibli da passare alla view ***** ); $this->toolbar_scroll = false; $this->base_tpl_view = 'main.tpl'; // nome della view $this->content .= parent::renderView(); return $this->content; } Dentro prova e dentro la cartella helpers (che avevo già) ho creato la cartella view e ci ho messo dentro un file index.php e main.tpl con dentro queste righe {extends file="helpers/view/view.tpl"} {block name="override_tpl"} ciao sono la view custom {/block} Refresh della pagina e come per magia mi è stata stampata una pagina bianca con dentro "ciao sono la view custom". Ma che fatica!!!
  3. Devi scusarmi, ho questo vizio di scrivere modulo anche se su Prestashop i moduli sono altri. Nel post precedente ho scritto che stavo creando un modulo con view personalizzata, in realtà ho deciso di fare un passo indietro e sto provando a creare un controller admin con view personalizzata, in modo da poter semplicemente seguire una guida. Ora se rileggi il post cambia il senso. Comunque mi sono letto l'ultima guida che hai linkato e mi ha chiarito alcune cosette. A questo punto ti faccio sapere. Grazie di nuovo per la disponibilità! : D
  4. Scusami codencode se ti importuno ma credo di aver trovato dove sta il bug nel mio cervello. Sto provando a creare un modulo (errata-corrige: non è un modulo, ma un controller admin) con grafica personalizzata e continuo ad aver problemi con la chiamata della view personalizzata. Per me tutta questa parte non ha senso: First, you need to create a folder in the admin/themes/default/template/controllers/ folder. Let's call it /test. This folder name is the name of the controller without the "Admin", "Controller" and "Core" sections. For example: AdminTestControllerCore -> admin/themes/default/template/controllers/test/ AdminTestPrestashopControllerCore -> admin/themes/default/template/controllers/test-prestashop/ You can change the name of the folder if you put this code in the constructor: $this->tpl_folder = 'test_controller'; ...or you could define a new architecture with subfolders by putting this code in the constructor: $this->tpl_folder = 'test_controller/content'; In pratica (ai miei occhi) la guida mi dice: ipotizziamo che il tuo modulo (errata-corrige: non modulo ma controller) si chiami, come nel secondo esempio, AdminTestPrestashopControllerCore allora la folder nella quale dovrà trovarsi la view sarà "admin/themes/default/template/controllers/test-prestashop/" e scrive in bold il nome della folder. E già questa cosa per me è poco sensata, come ti ho già scritto, perchè non è vero che la folder si chiama come il modulo senza alcune stringhe ( per la percisione senza admin, controller e core). Poi fortunatamente aggiunge che posso definire una variabile con tpl_folder con il valore test_controller in modo da non essere legato al nome del controller quando devo dare il nome della folder. Bene, anzi Ottimo! Ora io quella variabile l'ho valorizzata esattamente con test_controller (per farlo contento) e la cartella in quel path l'ho chiamata, appunto, test_controller (e si posiziona sotto la cartella "tax_rules_group") ed il file form.tpl. A questo punto cliccando su ADD o su Edit dovrei vedere la mia view, però questo cavolo di coso non ne vuole sapere di leggere la mia view!
  5. Purtroppo è quello che sto provando a fare, ma ho difficoltà a passare da controller admin a modulo, non ho idea del perché. C'è qualcosa che mi sfugge. Ora lo creo come controller e lo faccio funzionare, poi mi studio come prendere un controller e trasformarlo in modulo. Ti ringrazio! : )
  6. Come hai detto tu con "modulo admin" intendevo un controller admin, un altro framework li chiamava tutti moduli e ormai sono abituato a chiamarli così. : D Attualmente ho già avuto modo di creare un controller lato admin che non richiedeva una view custom e non ho avuto problemi, ho seguito quella stessa guida che mi hai linkato tu. Non mi ero ancora imbattuto in chiamate a view custom e quando ho guardato le guide mi sono sembrate poco precise. Ti faccio un esempio stupido, nella guida linkata qua sopra dice: First, you need to create a folder in the admin/themes/default/template/controllers/ folder. Let's call it /test. This folder name is the name of the controller without the "Admin", "Controller" and "Core" sections. For example: AdminTestControllerCore -> admin/themes/default/template/controllers/test/ AdminTestPrestashopControllerCore -> admin/themes/default/template/controllers/test-prestashop/ Dice che il nome della folder delle views (a meno di darglielo a mano) deve essere lo stesso del controller tagliando via le parole Admin, Controller e Core. Intanto non dice che deve essere tutto minuscolo, ma nel secondo caso non è vera questa affermazione a questo punto devo dedurre che dopo la prima maiuscola che viene semplicemente convertita in minuscola le altre vengono convertite in minuscole con un meno davanti? Niente mi da la sicurezza che sia così e questo è soltanto un esempio,ma ne ho trovati altri.
  7. Non ho avuto problemi a creare un modulo admin, però mi perdo qualcosa quando devo trasformarlo in un modulo. Non riesco a capire dove sbaglio. Sommare due guide non mi risulta una cosa molto semplice. Comunque ti ringrazio per la disponibilità.
  8. Versione Prestashop 1.6 Ragazzi devo creare un modulo di prestashop che al momento dell'installazione crei una nuova voce di menù nel pannello admin (possibilmente sotto statistiche) e che poi utilizzi una view custom. Attualmente sono riuscito a creare: -file xml e db; -classe che va a prendersi i dati dal db; -controller con install/uninstall e costruttore che inizializza un oggetto della classe; -creare una voce nel menù che richiamo il modulo creato da me. Tutto questo va, ma quando entro nella pagina vedo una tabella che visualizza i dati presenti nel DB. Fa tutto prestashop in automatico, ma non è quello che mi serve e non riesco a trovare un modo per passare un oggetto di tipo "miooggetto" alla view per poi visualizzarlo o gestirlo come pare a me. Mi farebbe comodo avere tra le mani un piccolo modulo (anche solo di esempio) con il controller che chiama un file TPL custom come view che a sua volta visualizza alcuni parametri passati dal controller. Qualcuno è in grado di fare questa cosa o sa dove lo posso trovare? Le guide a me appaiono sempre troppo poco chiare in alcune cose (quella ufficiale più di tutte). Mi sembrano sempre troppo poco efficaci, dispersive e tralasciano sempre qualche informazione. Per esempio ho notato che il controller nelle guide estende (inteso come extends) una classe differente a seconda della guida o della versione di prestashop e nessuno spiega perchè è stata scelta quella classe piuttosto che un'altra. Non riesco a fare chiarezza!
  9. Io ho creato una piccola modifica del pannello per un cliente. In pratica oltre al peso vengono richieste anche le dimensioni ed in tempo reale calcola quale tra il peso "effettivo" ed il peso volumetrico risulta maggiore ed in base a questo inserisce nel database il valore massimo come peso di riferimento del prodotto. Allo stesso modo nelle combinazioni utilizza il valore salvato per il prodotto e attraverso uno specchietto che vedete qua sotto vengono richieste le dimensioni della combinazione e calcola la variazione di peso (utilizzando sempre il maggiore tra il peso reale e quello volumetrico) tra il prodotto e la sua combinazione. In questo modo è possibile utilizzare il sistema base di prestashop. Se vi interessa contattatemi in privato.
  10. Credo di aver appena trovato la soluzione nella guida ad una delle due parti: Module. In some cases, the administration controller for which you want to create a page comes from a module. In that case, you must also indicate the identifier for the module (in most cases, its folder name) and copy it in the "Module" field, in lowercase. This way, PrestaShop will know that it should not look for the controller in the /controllers/admin folder, but rather in the /modules/NAME-OF-THE-MODULE/ folder. Anche se la guida non è troppo chiara.
  11. Prestashop versione: 1.6.0.9 Ciao a tutti vi espongo il mio problema. In pratica devo creare un modulo "autoinstallante" (senza FTP) al quale si può accedere attraverso una voce del menù di admin. Vediamo cosa posso fare. Il mio problema è che quando creo un una voce nel menù mi chiede il modulo e gli inserisco, questa voce mettendo il nome del modulo precedentemente installato (nessun problema con l'installazione). Ma quando provo ad accedere nella pagina mi dice "Controller non trovato". Volevo sapere se è possibile fare due cose: 1)creare una nuova voce nel menù durante l'installazione in modo che l'amministratore del negozio trovi già tutto pronto. 2)associare quella pagina ad un controller del modulo (o che viene installato con il modulo). Vi ringrazio anticipatamente
×
×
  • Create New...