Jump to content

[WIKI] Come sistemare la modifica dei nomi dei tipi d'immagine fatta nella 1.5.1.0


maofree

Recommended Posts

Ciao

facendo l'aggiornamento dalla 1.5.0.17 alla 1.5.1.0 uno pensa che vuoi che sia avranno cambiato un pò di files per risolvere dei bugs, quindi filerà tutto liscio. Ecco non è così. Hanno fatto una modifica importante proprio nella prima versione stabile della 1.5 che riguarda il nome di default dei tipi d'immagine come??

in pratica da small adesso il nome è small_default

large è deventato large_default ecc...

son sempre 8 macon nome modificato

Questo cosa comporta? Un sacco di modifiche:

nomi delle immagini presenti nella cartella img/

che termineranno con _default.jpg

es. 7-home.jpg è diventata 7-home_default.jpg

 

con un'installazione 1.5.1.0 non ci son problemi ma se venite da versioni precedenti la cosa è differente perchè la rigenerazione delle immagini già presenti non avviene nella fase d'installazione, quindi che succede?

che alla fine del processo d'installazione, vi troverete nella sezione delle immagini, 16 tipi d'immagine, i files tpl tipo quello del modulo homefeatured e dei vari blocchi aggiornati che si aspettano tipi d'immagine tipo home_default invece nella cartella img/ son presenti solo home. Allora sarete costretti a fare l'aggiornamento delle miniature. Non fatelo perchè le foto raddoppieranno di numero.

Un altra cosa dovrete aggiornare anche i files tpl presenti nel vostro template (se utilizzate come è sempre consigliabile fare, un template con un nome differente da quello di default), non tutti ma solo quelli che utilizzano immagini come product.tpl ; aggiungendo _default es. a large per diventare large_default.

 

SOLUZIONE

 

questa è la soluzione che ho adottato:

 

aggiornate il sito con il metodo che preferite (non entro in merito dato che ci sono varie guide e topic)

 

adesso controllate se nel FO non vengono più visualizzate le immagini dei prodotti, se ciò accade allora seguite questi passi (prima fate un bel backup del sito e del suo database):

 

andate nel BO nella sezione immagini rimuovete i primi 8 elementi (in pratica son quelle passate) poi andate nel vostro database e riordinateli nella tabella image_type

quindi il 9 diventa il primo il 10 diventa il 2 ....

ricordarsi di premere su Operations per cambiare il valore AUTO_INCREMENT a 9 (il numero successivo all'ultimo id di questa tabella)

(questo passaggio della rinumerazione se avete paura di sbagliare potete evitarlo)

 

adesso potete installare il modulo qui allegato. (se avete molte immagini, questa operazione prenderà un pò di tempo) Questa modulo andrà a cancellare tutte le miniature ad eccezione del file principale es 77.jpg (dal quale si creano le varie miniature) presenti nelle cartelle di img/ (c, m, p, scenes, st, su). Dopo questa pulizia potete disinstallarlo e rimuoverlo dal vostro sito.

 

Adesso potete rigenerare le miniature delle immagini (volendo lo potete fare anche prima di aver proceduto con l'operazione del reset del modulo)

Se riscontrate problemi di timeout (dipende come è configurato il server del vostro hosting) allora vi conviene fare tutta questa operazione in locale su sistemi tipo questo http://www.wampserver.com e modificare il timeout del file php.ini

 

Ricordatevi di abilitare il force compile tutte le volte che fate delle modifiche ai file tpl

 

adesso se avete aggiornato i file tpl del vostro tema e quelli dei moduli che utilizzano immagini avrete risolto questo problema.

 

ciaoooooo

maofree_deleteimages(only-for-1.5.x).zip

  • Like 2
Link to comment
Share on other sites

  • 2 weeks later...

Ciao, provato dopo upgrade dalla 149 alla 151.

Ho usato il modulo blockmanufacturer.

 

ho provato con resetta, disintalla, reinstalla etc etc ma le vecchie immagini non sono state cancellate.

Ho guardato anche i permessi cartella provando a settarli anche con 777, ma nulla, non ci sono riuscito.

Ho provato anche a cambiare modulo, usando il modulo negozio, ma niente nemmeno qui.

 

 

il file PHP è stato cosi modificato :

 

 

if (!defined('_PS_VERSION_'))

exit;

 

class BlockManufacturer extends Module

{

public function __construct()

{

$this->name = 'blockmanufacturer';

$this->tab = 'front_office_features';

$this->version = 1.0;

$this->author = 'PrestaShop';

$this->need_instance = 0;

 

parent::__construct();

 

$this->displayName = $this->l('Manufacturers block');

$this->description = $this->l('Displays a block of manufacturers/brands');

}

 

public function install()

{

Configuration::updateValue('MANUFACTURER_DISPLAY_TEXT', true);

Configuration::updateValue('MANUFACTURER_DISPLAY_TEXT_NB', 5);

Configuration::updateValue('MANUFACTURER_DISPLAY_FORM', true);

return parent::install() && $this->registerHook('leftColumn') && $this->registerHook('header') && $this->deleteImages();

}

 

public function hookLeftColumn($params)

{

$this->smarty->assign(array(

'manufacturers' => Manufacturer::getManufacturers(),

'text_list' => Configuration::get('MANUFACTURER_DISPLAY_TEXT'),

'text_list_nb' => Configuration::get('MANUFACTURER_DISPLAY_TEXT_NB'),

'form_list' => Configuration::get('MANUFACTURER_DISPLAY_FORM'),

'display_link_manufacturer' => Configuration::get('PS_DISPLAY_SUPPLIERS'),

));

return $this->display(__FILE__, 'blockmanufacturer.tpl');

}

 

public function hookRightColumn($params)

{

return $this->hookLeftColumn($params);

}

 

public function getContent()

{

$output = '<h2>'.$this->displayName.'</h2>';

if (Tools::isSubmit('submitBlockManufacturers'))

{

$text_list = (int)(Tools::getValue('text_list'));

$text_nb = (int)(Tools::getValue('text_nb'));

$form_list = (int)(Tools::getValue('form_list'));

if ($text_list && !Validate::isUnsignedInt($text_nb))

$errors[] = $this->l('Invalid number of elements');

elseif (!$text_list && !$form_list)

$errors[] = $this->l('Please activate at least one system list');

else

{

Configuration::updateValue('MANUFACTURER_DISPLAY_TEXT', $text_list);

Configuration::updateValue('MANUFACTURER_DISPLAY_TEXT_NB', $text_nb);

Configuration::updateValue('MANUFACTURER_DISPLAY_FORM', $form_list);

}

if (isset($errors) && count($errors))

$output .= $this->displayError(implode('<br />', $errors));

else

$output .= $this->displayConfirmation($this->l('Settings updated'));

}

return $output.$this->displayForm();

}

 

public function displayForm()

{

$output = '

<form action="'.Tools::safeOutput($_SERVER['REQUEST_URI']).'" method="post">

<fieldset><legend><img src="'.$this->_path.'logo.gif" alt="" title="" />'.$this->l('Settings').'</legend>

<label>'.$this->l('Use a plain-text list').'</label>

<div class="margin-form">

<input type="radio" name="text_list" id="text_list_on" value="1" '.(Tools::getValue('text_list', Configuration::get('MANUFACTURER_DISPLAY_TEXT')) ? 'checked="checked" ' : '').'/>

<label class="t" for="text_list_on"> <img src="../img/admin/enabled.gif" alt="'.$this->l('Enabled').'" title="'.$this->l('Enabled').'" /></label>

<input type="radio" name="text_list" id="text_list_off" value="0" '.(!Tools::getValue('text_list', Configuration::get('MANUFACTURER_DISPLAY_TEXT')) ? 'checked="checked" ' : '').'/>

<label class="t" for="text_list_off"> <img src="../img/admin/disabled.gif" alt="'.$this->l('Disabled').'" title="'.$this->l('Disabled').'" /></label>

   '.$this->l('Display').' <input type="text" size="2" name="text_nb" value="'.(int)(Tools::getValue('text_nb', Configuration::get('MANUFACTURER_DISPLAY_TEXT_NB'))).'" /> '.$this->l('elements').'

<p class="clear">'.$this->l('To display manufacturers in a plain-text list').'</p>

</div>

<label>'.$this->l('Use a drop-down list').'</label>

<div class="margin-form">

<input type="radio" name="form_list" id="form_list_on" value="1" '.(Tools::getValue('form_list', Configuration::get('MANUFACTURER_DISPLAY_FORM')) ? 'checked="checked" ' : '').'/>

<label class="t" for="form_list_on"> <img src="../img/admin/enabled.gif" alt="'.$this->l('Enabled').'" title="'.$this->l('Enabled').'" /></label>

<input type="radio" name="form_list" id="form_list_off" value="0" '.(!Tools::getValue('form_list', Configuration::get('MANUFACTURER_DISPLAY_FORM')) ? 'checked="checked" ' : '').'/>

<label class="t" for="form_list_off"> <img src="../img/admin/disabled.gif" alt="'.$this->l('Disabled').'" title="'.$this->l('Disabled').'" /></label>

<p class="clear">'.$this->l('To display manufacturers in a drop-down list').'</p>

</div>

<center><input type="submit" name="submitBlockManufacturers" value="'.$this->l('Save').'" class="button" /></center>

</fieldset>

</form>';

return $output;

}

 

public function hookHeader($params)

{

$this->context->controller->addCSS(($this->_path).'blockmanufacturer.css', 'all');

}

private function deleteImages()

{

$dir_to_scan = array('p');

 

foreach ($dir_to_scan as $dir) {

$directory = _PS_IMG_DIR_.$dir;

$scanned_directory = array_diff(scandir($directory), array('..', '.', 'index.php'));

 

if ($scanned_directory) {

foreach ($scanned_directory as $file) {

if (preg_match("/small.jpg/i", $file))

unlink(_PS_IMG_DIR_.$dir.'/'.$file);

elseif (preg_match("/medium.jpg/i", $file))

unlink(_PS_IMG_DIR_.$dir.'/'.$file);

elseif (preg_match("/large.jpg/i", $file))

unlink(_PS_IMG_DIR_.$dir.'/'.$file);

elseif (preg_match("/thickbox.jpg/i", $file))

unlink(_PS_IMG_DIR_.$dir.'/'.$file);

elseif (preg_match("/home.jpg/i", $file))

unlink(_PS_IMG_DIR_.$dir.'/'.$file);

elseif (preg_match("/category.jpg/i", $file))

unlink(_PS_IMG_DIR_.$dir.'/'.$file);

elseif (preg_match("/large_scene.jpg/i", $file))

unlink(_PS_IMG_DIR_.$dir.'/'.$file);

elseif (preg_match("/thumb_scene.jpg/i", $file))

unlink(_PS_IMG_DIR_.$dir.'/'.$file);

}

}

}

 

return true;

}

}

Link to comment
Share on other sites

ciao Rams

ho modificato lo script, per pulire anche le sottocartelle da eventuali duplicazioni.

Ci ho fatto un mini modulo così sarà più semplice utilizzarlo

l'ho provato su due server senza problemi

è allegato nel primo topic

 

ciaoo

Link to comment
Share on other sites

ciao Rams

ho modificato lo script, per pulire anche le sottocartelle da eventuali duplicazioni.

Ci ho fatto un mini modulo così sarà più semplice utilizzarlo

l'ho provato su due server senza problemi

è allegato nel primo topic

 

ciaoo

 

YES funziona al primo colpo !!

Grazie mille.

Link to comment
Share on other sites

  • 1 month later...

SOLUZIONE

 

questa è la soluzione che ho adottato:

 

aggiornate il sito con il metodo che preferite (non entro in merito dato che ci sono varie guide e topic)

 

adesso controllate se nel FO non vengono più visualizzate le immagini dei prodotti, se ciò accade allora seguite questi passi (prima fate un bel backup del sito e del suo database):

 

andate nel BO nella sezione immagini rimuovete i primi 8 elementi (in pratica son quelle passate) poi andate nel vostro database e riordinateli nella tabella image_type

quindi il 9 diventa il primo il 10 diventa il 2 ....

(questo passaggio della rinumerazione se avete paura di sbagliare potete evitarlo)

 

adesso potete installare il modulo qui allegato. (se avete molte immagini, questa operazione prenderà un pò di tempo) Questa modulo andrà a cancellare tutte le miniature ad eccezione del file principale es 77.jpg (dal quale si creano le varie miniature) presenti nelle cartelle di img/ (c, m, p, scenes, st, su). Dopo questa pulizia potete disinstallarlo e rimuoverlo dal vostro sito.

 

Adesso potete rigenerare le miniature delle immagini (volendo lo potete fare anche prima di aver proceduto con l'operazione del reset del modulo)

Se riscontrate problemi di timeout (dipende come è configurato il server del vostro hosting) allora vi conviene fare tutta questa operazione in locale su sistemi tipo questo http://www.wampserver.com e modificare il timeout del file php.ini

 

Ricordatevi di abilitare il force compile tutte le volte che fate delle modifiche ai file tpl

 

adesso se avete aggiornato i file tpl del vostro tema e quelli dei moduli che utilizzano immagini avrete risolto questo problema.

 

ciaoooooo

 

ciao maofree,

ho provato diverse volte a seguire tutta la procedura ma continuo a non visualizzare le immagini. Il sito è questo: http://www.tcritalia.it/tcrshop/index.php?id_product=8&controller=product

Ho provato a ritornare alla 1.0.17 e le immagini ricompaiono, ma ogni volta che aggiorno si ripresenta lo stesso problema..

qualche idea? premetto che non ho tanta dimestichezza con prestashop, il sito non è ancora attivo ed è ancora in fase di sviluppo, ma credo di aver seguito alla lettera tutte le tue indicazioni, più volte.

Link to comment
Share on other sites

  • 1 month later...

SALVE HO LA VERSIONE 1.5.3.1 E HO AGGIORNATO CON 1-CLICK UPGRADE E HO IL PROBLEMA DELLA IMMAGINI NELLA SCHEDA PRODOTTO CHE NON SI VEDONO. C'E' UNA QUALCHE SOLUZIONE? LE MINIATURE PICCOLE LE VISUALIZZO,NEL BLOCCO NUOVI PRODOTTI O PIU' VENDUTI O IN QUELLI DOVE DICE "30 ALTRI PRODOTTI DELLA STESSA CATEGORIA" MA NIENTE DA FA RE PER LE LARGE_DEFAULT. AIUTATEMI

Link to comment
Share on other sites

  • 3 months later...

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...