Jump to content

Cómo redireccionar articulo desactivado a su categoría?


willyadda

Recommended Posts

Hola a todos,

 

Llevo tiempo leyendo por "San Google" y no doy con la solución.

 

Tenemos una tienda en prestashop y cada día vamos variando el stock de los productos. Estos productos a veces pueden no tener stock durante varias semanas e incluso meses. Hasta la fecha estoy desactivando los productos que no tienen stock y volviéndolos a activar cada vez que tienen. Poco a poco iba redireccionando (302) producto por producto a algún producto similar, pero la tienda ha ido creciendo y tenemos miles de artículos, esta labor es muy dura.

La idea es que cuando el posible cliente pinche en el enlace del producto desde los buscadores si el producto esta desactivado llevarle a la pagina que contiene la categoría asociado a ese producto y le muestre los productos que si están activados.

 

Pero como os comento por más que busco no encuentro la solución.

Alguna idea? mil gracias!

 

Saludos

Edited by willyadda (see edit history)
Link to comment
Share on other sites

Es mejor que lo hagas editando el controlador

controllers\front\ProductController.php

Alli en la funcion

public function init()

Tienes esto

switch ($this->product->redirect_type)
					{
						case '301':
							header('HTTP/1.1 301 Moved Permanently');
							header('Location: '.$this->context->link->getProductLink($this->product->id_product_redirected));
							exit;
						break;
						case '302':
							header('HTTP/1.1 302 Moved Temporarily');
							header('Cache-Control: no-cache');
							header('Location: '.$this->context->link->getProductLink($this->product->id_product_redirected));
							exit;
						break;
						case '404':
						default:
							header('HTTP/1.1 404 Not Found');
							header('Status: 404 Not Found');
							$this->errors[] = Tools::displayError('This product is no longer available.');
						break;
					}

Cambialo por esto para que te rediriga a la categoria por defecto del producto

	switch ($this->product->redirect_type)
					{
						case '301':
							header('HTTP/1.1 301 Moved Permanently');
							header("Location: ".$this->context->link->getCategoryLink($this->product->id_category_default));
							exit;
						break;
						case '302':
							header('HTTP/1.1 302 Moved Temporarily');
							header('Cache-Control: no-cache');
							header("Location: ".$this->context->link->getCategoryLink($this->product->id_category_default));
							exit;
						break;
						case '404':
						default:
							header('HTTP/1.1 404 Not Found');
							header('Status: 404 Not Found');
							$this->errors[] = Tools::displayError('This product is no longer available.');
						break;
					}
Link to comment
Share on other sites

Muchísimas gracias Antonio

 

Funciona perfectamente. Es una solución un poco drástica pero tener que ir redireccionanado producto por producto era una labor descomunal.

 

Otra solución hubiera sido no mostrar en el front de las categorías y el home los productos que no tienen stock, pero probando las soluciones que encontré por el foro, a la hora de mostrar los productos se descuadraban y en la vista cuadricula dejaba huecos de productos en blanco. Seguramente es porque la función que le envié el total de productos no coincide con los productos que se muestran pero no conseguí modificar eso.

 

Lo dicho muchas gracias y saludos

 

Saludos

Edited by willyadda (see edit history)
Link to comment
Share on other sites

  • 4 years later...

Hola

Tengo miles de errores 404 en Google Search Console. SI hago este cambio para que las redirecciones 301 se redijan a la categoría padre. . como hago para "convertir" las urls 404 que tengo ahora en 301 y que funciones ese cambio en el código?

Saludos

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