Prestashop ha sempre avuto un difetto: la descrizione delle categorie è editabile in una semplice Textarea. Il TinyMCE è già presente nelle descrizioni dei prodotti o nelle pagine del CMS, però non è presente anche nella pagina di modifica della categoria. E' incredibile che non abbiano provveduto a renderlo disponibile nella release ufficiale.
Tuttavia la modifica è semplice, si tratta di inserire 1 riga di codice, attenzione che questa modifica funziona solo per Prestashop 1.5.4, le versioni precedenti hanno tutto un altro procedimento.
Aprire il file "controllers/admin/AdminCategoriesControllers.php" e cercare il seguente pezzo di codice, attorno alla riga 415, è quello che genera la textarea della descrizione.
array( 'type' => 'textarea', 'label' => $this->l('Description:'), 'name' => 'description', 'lang' => true, 'rows' => 10, 'cols' => 100, 'hint' => $this->l('Invalid characters:').' <>;=#{}' ),
Ora aggiungere il parametro "'autoload_rte' => true" come nel codice che risulta di seguito.
array( 'type' => 'textarea', 'label' => $this->l('Description:'), 'name' => 'description', 'autoload_rte' => true, 'lang' => true, 'rows' => 10, 'cols' => 100, 'hint' => $this->l('Invalid characters:').' <>;=#{}' ),
A questo punto aprire il file "category.tpl" del tema, e cambiare la parte che genera la descrizione. Ho commentato gran parte con Smarty, semplificando il codice in modo che la descrizione resti completa dentro il <div class="cat_desc">. In pratica voglio evitare che il contenuto si "spezzi" in due parti. Questa divisione automatica del contenuto non mi piace, senza contare che se uso tabelle o immagini potrei avere problemi con l'output.
{if $category->description} <div class="cat_desc"> {*if strlen($category->description) > 120} <p id="category_description_short">{$category->description|truncate:120}</p> <p id="category_description_full" style="display:none">{$category->description}</p> <a href="#" onclick="$('#category_description_short').hide(); $('#category_description_full').show(); $(this).hide(); return false;" class="lnk_more">{l s='More'}</a> {else*} {$category->description} {*/if*} </div> {/if}
Allo stesso modo possiamo operare anche sulle pagine dei Produttori. Anche in questo caso non esiste TinyMce. Quindi apriamo il file "controllers/admin/AdminManufacturersController.php" e aggiungiamo sempre la nostra riga negli array "short_description" e "description" per ottenere un risultato come segue.
array( 'type' => 'textarea', 'label' => $this->l('Short description:'), 'name' => 'short_description', 'autoload_rte' => true, 'lang' => true, 'cols' => 60, 'rows' => 10, 'class' => 'rte', 'hint' => $this->l('Invalid characters:').' <>;=#{}' ), array( 'type' => 'textarea', 'label' => $this->l('Description:'), 'name' => 'description', 'autoload_rte' => true, 'lang' => true, 'cols' => 60, 'rows' => 10, 'class' => 'rte', 'hint' => $this->l('Invalid characters:').' <>;=#{}' ),
Anche in questo caso quindi aprire il file "manufacturer.tpl" del tema e modificare la parte della descrizione come segue. Ho eliminato la "short descritpion" e ho tenuto in output solo la "description". Il risultato mi sembra anche migliore dell'originale, perché questa è la pagina del dettaglio, quindi la short description potrebbe essere ripetitiva e/o scomoda.
<div class="description_box"> {*if !empty($manufacturer->short_description)} <p>{$manufacturer->short_description}</p> <p class="hide_desc">{$manufacturer->description}</p> <a href="#" class="lnk_more" onclick="$(this).prev().slideDown('slow'); $(this).hide(); return false;">{l s='More'}</a> {else*} {$manufacturer->description} {*/if*} </div>
Ho provato a fare questa modifica anche per i Fornitori (controllers/admin/AdminSuppliersController.php), ma non sembra essere compatibile, il salvataggio del campo descrizione restituisce un errore.
L'editor è limitato a due righe di strumenti, mancano quelli per l'inserimento e gestione delle tabelle, inserimento di una riga, rimozione della formattazione, apice e pedice, inserimento di caratteri speciali, modifica css, abbreviazione, acronimo, e altri.
Per attivarli bisogna aprire il file "/js/tinymce.inc.js" trovare le righe aggiuntive commentate, potete decidere di abilitare solo la terza riga e non la quarta come nel mio caso, oppure potete abilitarle tutte.
theme_advanced_buttons1 : "newdocument,|,bold,italic,underline,strikethrough,|,justifyleft,justifycenter,justifyright,justifyfull,styleselect,formatselect,fontselect,fontsizeselect", theme_advanced_buttons2 : "cut,copy,paste,pastetext,pasteword,|,search,replace,|,bullist,numlist,|,outdent,indent,blockquote,|,undo,redo,|,link,unlink,anchor,image,cleanup,help,code,,|,forecolor,backcolor, media, fullscreen", theme_advanced_buttons3 : "tablecontrols,|,hr,removeformat,visualaid,|,sub,sup,|,charmap,|,ltr,rtl,|", // theme_advanced_buttons4 : "styleprops,|,cite,abbr,acronym,del,ins,attribs,pagebreak", // theme_advanced_buttons3 : "", theme_advanced_buttons4 : "",
Commento di Alessandro Marengo
Lunedì 13 Gennaio 2014Ciao.
Io vorrei inserire del codice html nella descrizione, ma ovviamente non posso, essendo le parentesi quadre tra gli invalid chars. Come posso aggirare l'ostacolo? Devo embeddare delle pubblicazioni su issuu.
Non basta commentare l'argomento hint?
Grazie, ciao.
Risposta di Marco
Strano che le parentesi quadre siano proibite, forse intendevi le graffe? Queste in effetti sono rese invalide, e credo per un motivo: sono usate dal codice Smarty. Quindi il tuo codice sospetto che non funzionerebbe anche se tu cometassi la riga "hint" (stando attento alla virgola da togliere alla riga precedente), oppure se rimuovessi le due graffe.
In effetti non saprei come risolvere, non ho avuto casi di Issuu in Prestashop finora. Inoltre se devi inserire un pezzetto di javascript forse è proprio TinyMce a romperlo, in quel caso magari era meglio lasciare la Textarea.
Commento di Alessandro Marengo
Martedì 14 Gennaio 2014Ciao Marco.
Non è nemmeno possibile prevedere un blocco html sotto il campo descrizione?
Io devo inserire i cataloghi in qualche modo all'interno della pagina dedicata al produttore...
Tu cosa consiglieresti?
Ciao!
Risposta di Marco
Purtroppo non è una cosa semplice. io proverei due strade: o esiste un modulo che fa esattamente questo, oppure esistono delle istruzioni nella documentazione e/o in qualche blog. Cercando rapidamente non mi è parso di vedere molto a riguardo.
In questa pagina un moderatore spiega a grandi linee cosa si deve fare, ma poi bisogna saperlo fare:
http://www.prestashop.com/forums/topic/276790-add-extra-text-field-to-category-pages/
In questa pagina spiegano come estendere un prodotto, forse le informazioni contenute valgono anche per le categorie:
http://nemops.com/extending-prestashop-objects/
Commento di Alessandro Marengo
Domenica 19 Gennaio 2014Ciao Marco.
Ringrazio per i suggerimenti e i link.
A parte il fatto che mi sembra una grave mancanza o l'ennesima occasione che offre PS per spendere denari su n moduli da implementare, a tal proposito ho trovato questo che potrebbe fare al caso mio:
http://addons.prestashop.com/en/front-office-features-prestashop-modules/5186-html-in-category-description.html
Lo conosci?
Non ha il marchio di modulo certificato, per cui, dopo averne acquistati 3 e abbandonati perchè non funzionanti, mi stavo chiedendo se valesse la pena di spendere 40€ per questo modulo.
Dovrebbe fare al caso mio... no?
Grazie per un eventuale dritta! Ciao.
Risposta di Marco
Mi dispiace se hai speso soldi per moduli non funzionanti, potresti scrivere agli sviluppatori, al 99% ti ascoltano e correggono il problema con più attenzione del solito dato che sono moduli a pagamento. Non vogliono certo che tu faccia cattivo feedback in blog e forum.
Per quanto riguarda il non funzionamento può essere dovuto a bug reali del loro codice, oppure dalla versione di Prestashop, infatti devi stare attento a cosa si compri ed alla versione di Prestashop che usi, ci possono essere incompatibilità.
Poi riguardo Prestashop non sarei così critico, ovviamente ha dei limiti, come ogni software, ad un certo punto devono definire le funzionalità di core, e tutto l'extra resta fuori. E' un software Open Source, quindi se uno vuole può sviluppare a piacimento, ovviamente questo richiede conoscenze, tempo e quindi costo.
Riguardo la tua esigenza infatti, quella versione Prestashop aveva una textarea, ma nelle versioni nuove hanno finalmente messo un editor TinyMCE (vedi demo attuale nel sito ufficiale), quindi il mio upgrade diciamo che è diventato obsoleto, cmq utile per chi ne ha ancora bisogno.
Il modulo che mi indichi non lo conosco, ma a guardarlo sembra che faccia esattamente quel che ottieni con le mie istruzioni. Non ti da quindi un campo aggiuntivo, poi potresti scrivere a chi ha fatto quel modulo prima di acquistare.
A mio avviso l'Open Source resta un passo in avanti notevole, in alternativa, con software totalmente chiusi e proprietari, nulla è dato gratis, nemmeno il core, e prevedono licenze e abbonamenti ben salati.
Cilieglina sulla torta: non c'è davvero distinzione in qualità, trovi software ottimi e pessimi in entrambi i frangenti.
Commento di Roberto Putignano
Giovedì 11 Settembre 2014Grazie a te ho risolto il problema!!!!
Commento di Marco
Lunedì 27 Ottobre 2014qualche idea per la versione 1.4.8.2 ? online c'è un esempio per 1.4.7 che "puntualmente" non funziona su altre...
Risposta di Marco
Non conosco soluzioni precedenti al mio articolo, che è solo per PS 1.5.4.
Prestashop 1.4 comincia ad essere vecchietto e penso si fatichi a trovare materiale, ormai siamo in pieno Prestashop 1.6.
Io proverei a cercare alternative per qualche altra ora, poi proverei una installazione test, aggiornandola alle versioni successive fino ad ottenere il Tinymce in categorie.
Commento di Fabio
Sabato 28 Febbraio 2015Ciao, ho seguito alla lettera i tuoi consigli, ma del tinyMCE nessuna traccia, puoi aiutarmi? Grazie
Risposta di Marco
La mia guida è specifica per Prestashop 1.5.4, controlla che la tua sia uguale.
Se affermativo, il difetto da te riscontrato potrebbe dipedere da varie cause:
1. Problema di cache locale. Controlla il tuo browser, pulisci la cache, aggiorna.
2. Problema di cache server. Controlla le opzioni in amministrazione al menu "prestazioni": forza la rigenerazione file, e disabilita la cache (di norma da fare in ogni fase di sviluppo). Se nemmeno così funziona, pulisci la cache manualmente via FTP.
3 . Problema di override. Nella mia guida spiego di modificare i file di core, per semplicità. Ma considera che potresti usare l'override previsto da Prestashop, anzi sarebbe più indicato (vedi guida ufficiale per capire meglio).Quindi se stai usando un tema, che casualmente sovrascrive proprio quei file, allora le modifiche al core da te apportate non verranno eseguite. Controlla nel tuo tema, in folder "override" se esistono i controller indicati da me.
4. Problema di override da altri moduli che agiscono sul TinyMce. Questo lo sai tu, se hai installato qualche modulo di terzi, che agisce a riguardo degli editor.
Aggiungi un commento