Jump to content

Enlazar artículos desactivados al home de mi tienda


adriangb91

Recommended Posts

Hola, 

 

Resulta que cuando desactivo un producto sin stock en mi tienda, cuando escribo la URL en mi navegador me aparece un mensaje que dice "Producto no disponible", y en vez de ese mensaje de error me gustaría que me redireccionara a otra web como por ejemplo el home de mi tienda. Me gustaría destacar que necesitaría hacerlo de forma masiva ya que al ser artículos que me proporciona un dropshipper me sucede constantemente. 

 

Muchas gracias de ante mano.

Link to comment
Share on other sites

Buenas, para eso debes cambiar el campo de redirección en la ficha de producto.

Masivamente en el sql: 

update ps_product set ps_product.redyrect_type=301;

Si tienes contenido en ps_product_shop, también:

update ps_product_shop set ps_product_shop.redyrect_type=301;

No olvides hacer un backup de la Base de Datos!!

Saludos!

  • Like 1
Link to comment
Share on other sites

Hola,

 

Gracias por contestar, he estado realizando las consultas SQL en la base de datos pero aunque han cambiado los valores no me realiza la redirección ¿Debería de indicar en una tabla de la base de datos que contenga la información de los errores a donde quiero que se redirija cuando dispone de un error 301? o quizás ¿debería de tocar algún que otro parámetro?

Link to comment
Share on other sites

Buenas,

 

Al final pude solucionarlo con un script que desarrollé el cual me proporciona los artículos que tengo desactivados en mi tienda y que no están en stock para luego poder añadir esta información al fichero .htaccess para que me redireccione esos enlaces a la página de error 404.

 

Esta es la consulta que me obtiene la información de los artículos desactivados:

-- Script utilizado para proporcionar la url de los productos deshabilitados de nuestra tienda.
SELECT URL.DOMAIN AS DOMINIO,
	   URL.PHYSICAL_URI AS FISICA,
	   IDI.ISO_CODE AS IDIOMA,
       LANG.LINK_REWRITE AS CATEGORIA ,
       PRO.ID_PRODUCT AS ID ,
	   PRLANG.LINK_REWRITE AS ARTICULO,
	   PRESTASHOP.PS_SHOP_URL AS NUM_TIENDA
FROM 
	 PRESTASHOP.PS_PRODUCT PRO LEFT JOIN PRESTASHOP.PS_CATEGORY_LANG LANG ON PRO.ID_CATEGORY_DEFAULT = LANG.ID_CATEGORY 
     LEFT JOIN PRESTASHOP.PS_LANG AS IDI ON LANG.ID_LANG = IDI.ID_LANG 
     LEFT JOIN PRESTASHOP.PS_PRODUCT_LANG AS PRLANG ON PRO.ID_PRODUCT = PRLANG.ID_PRODUCT,
	 PRESTASHOP.PS_SHOP_URL URL
WHERE 
	PRO.ACTIVE = 0
    AND URL.ID_SHOP_URL = 1
    AND (IDI.ISO_CODE = 'es' OR IDI.ID_LANG = 1);
    

Y este es el fichero php que me informa de los artículos:

<?php

    $bd ="base_de_datos";
    $password = "xxx";
    $user =  "usuario";
    $server = "servidor";

    $mysqli = new mysqli($server,$user,$password,$bd);
    if ($mysqli->connect_errno) {
    
        echo "Fallo al conectar a MySQL: (" . $mysqli->connect_errno . ") " . $mysqli->connect_error;
    }
     
    
    
    
    
    $consulta = "SELECT URL.DOMAIN AS DOMINIO,
                        URL.PHYSICAL_URI AS FISICA,
                        IDI.ISO_CODE AS IDIOMA,
                        LANG.LINK_REWRITE AS CATEGORIA ,
                        PRO.ID_PRODUCT AS ID ,
                        PRLANG.LINK_REWRITE AS ARTICULO,
                        URL.ID_SHOP_URL AS NUM_TIENDA
                FROM 
                        $bd.ps_product PRO LEFT JOIN $bd.ps_category_lang LANG ON PRO.ID_CATEGORY_DEFAULT = LANG.ID_CATEGORY 
                        LEFT JOIN $bd.ps_lang AS IDI ON LANG.ID_LANG = IDI.ID_LANG 
                        LEFT JOIN $bd.ps_product_lang AS PRLANG ON PRO.ID_PRODUCT = PRLANG.ID_PRODUCT,
                        $bd.ps_shop_url URL
                WHERE 
                        PRO.ACTIVE = 0
                        AND URL.ID_SHOP_URL = 10
                        AND (IDI.ISO_CODE = 'es' OR IDI.ID_LANG = 1);";

    if ($resultado = $mysqli->query($consulta)) {
        echo "Total de articulos afectados : ".$resultado->num_rows;
        echo "<br/><br/>";
        while ($fila = mysqli_fetch_row($resultado)) {
                printf("RedirectMatch 301 %s%s%s/%s-%s.html /%s/index.php?controller=404 \n", $fila[0], $fila[1],$fila[2],
                    $fila[4],$fila[5], $fila[0]);
                echo "<br>";
            }
        
    /* liberar el conjunto de resultados */
    $resultado->close();
}

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