En mi trabajo las tres tîendas online son todas prestashop y van muy bien la verdad. Tenemos una aplicacion (hecha por una empresa) que se conecta a nuestro programa de contabilidad que cada dia se actualiza con los productos nuevos del proveedor.
Esta aplicacion se encarga de subir a la web esos productos y tambien permite editar las categorias de la web, etc... El problema es que como Prestashop tira de cache (si esta activa..) cuando hacemos un cambio en los menus estos no aparecen hasta que no se limpia la cache. Eso implica intentar desde el backoffice hacer una limpieza de cache (casi nunca funciona) o bien entrar mediante FTP a las carpetas de cache y eliminarlo todo.
Me hice un script para que las borre.
<?php
// PONER EN EL DIRECTORIO RAIZ DE PRESTASHOP, A LA ALTURA DE LA CARPETA CONFIG
// CARGAMOS EL FICHERO DE CONFIGURACION (PARA USAR GLOBAL _PS_VESRION QUE DICE VERSION PRESTASHOP)
require_once("config/settings.inc.php");
$version = explode(".",_PS_VERSION_);
$detected = true;
// ENCONTRAMOS LA VERSION DE PRESTASHOP Y CARGAMOS LOS DIRECTORIOS
if ( $version[1]=="5" || $version[1] == 6) {
echo "Version de Prestashop 1.".$version[1]." detectada, definiendo directorios para PS1.$version[1]<br><br>";
$path = array(
"cache/smarty/cache/",
"cache/smarty/compile/"
);
} else if ($version[1]==4) {
echo "Version de Prestashop 1.".$version[1]." detectada, definiendo directorios para PS1.$version[1]<br><br>";
$path = array(
"tools/smarty/cache/",
"tools/smarty/compile/",
"tools/smarty_v2/cache/",
"tools/smarty_v2/compile/"
);
} else {
echo "<br><br>Version PHP no detectada, abortando la limpieza de la Cache<br><br>";
$detected = false;
}
function delete_dir_content($directory, $delete = false)
{
$contents = glob($directory . '*');
foreach($contents as $item)
{
if (is_dir($item))
delete_dir_content($item . '/', true); // RECURSIVO -> CON TRUE ELIMINARA LA CARPETA PADRE
else
if ($delete == false && $item = "index.php") {
/* ENTONCES ES EL FICHERO INDEX.PHP DE LA CARPETA PADRE */
} else {
unlink($item);
}
}
if ($delete == true)
rmdir($directory);
}
if ($detected) {
foreach ($path as $folder) {
delete_dir_content($folder,false); // ELIMINAMOS LOS CONTENIDOS DE LA CARPETA -> FALSE = NO ELIMINAR LA CARPETA PADRE
echo "Carpeta <strong>$folder</strong> limpiada.<br>";
}
}
Lo he probado con PS1.6 y no hay problemas, esta preparado para PS1.5 y PS1.4