Jump to content

Solucionado - Capitalizar primera letra en la Base de datos de los nombres de productos y categorías


gusman126

Recommended Posts

En ocasiones si usamos un importador o usamos un conector para añadir los productos que tenemos en nuestra tienda online, de esta manera nos añade mas rapidamente los productos, pero podemos tener algun problema, como el que ocurre normalmente que nos añade los nombres en mayusculas o en minusculas

Para google y posicionamiento SEO, el uso de mayusculas no es una buena opción por lo que siempre es mejor usar textos capitalizando la primera letra del nombre del producto o categoria, por ejemplo

NOMBRE DEL PRODUCTO > Nombre del producto

JUGUETES > Juguetes

Este cambio se debe realizar directamente en la base de datos con unas ordenes SQL o mucho mejor usando un fichero .php que hemos copiado en nuestro servidor.

Lo primero que debemos hacer es una COPIA DE SEGURIDAD DE LA BASE DE DATOS.

Una vez la tengamos, abrimos un editor de texto y pegamos este codigo

<?php 
require_once(dirname(__FILE__).'/config/config.inc.php');
require_once(dirname(__FILE__).'/init.php');
$sql = "UPDATE "._DB_PREFIX_."product_lang SET name = CONCAT(UCASE(LEFT(name, 1)), LCASE(SUBSTRING(name, 2)))";

if(Db::getInstance()->execute($sql)){
  echo 'Capitalizado nombres de producto';
}

$sql = "UPDATE "._DB_PREFIX_."category_lang SET name = CONCAT(UCASE(LEFT(name, 1)), LCASE(SUBSTRING(name, 2)))";

if(Db::getInstance()->execute($sql)){
  echo 'Capitalizado nombres de categorias';
}

Una vez añadido lo debemos guardar con un nombre por ejemplo capitalizar.php

Este fichero debemos copiarlo por medio de FTP o usando el explorador de ficheros de nuestro hospedaje, a la carpeta principal donde esta nuestra tienda, que podemos saber cual es , ya que tiene un fichero init.php

Una vez hemos copiado / subido este fichero a nuestro servidor, lo que debemos hace es ejecutar o abrir la url de este archivo de la siguiente manera

midominio.com/capitalizar.php 

De esta manera , ejecutaremos las ordenes SQL y se cambiaran los textos de los nombres de los productos y categorias a la primera letra en mayusculas

  • Like 1
Link to comment
Share on other sites

  • 1 year later...

Buenas he seguido todos los pasos tal y como está explicado pero cuando ejecuto el script abriendo la URL no hace absolutamente nada.

También he ejecutado la consulta directamente desde la BD y la consulta se ejecuta correctamente pero afecta a 0 filas.

¿Me podéis ayudar? Gracias de antemano

Captura de pantalla 2020-05-08 a las 10.08.31.png

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

 

hace 3 horas, sija dijo:

Buenas he seguido todos los pasos tal y como está explicado pero cuando ejecuto el script abriendo la URL no hace absolutamente nada.

También he ejecutado la consulta directamente desde la BD y la consulta se ejecuta correctamente pero afecta a 0 filas.

¿Me podéis ayudar? Gracias de antemano

Captura de pantalla 2020-05-08 a las 10.08.31.png

Pues es extraño, cuando hice las pruebas funciono correctamente

hace 1 minuto, ventura dijo:

Da miedo ver un archivo así con updates en el directorio principal de la instalación y sin excepciones ni nada

 

Si tienes razon, aunque se supone que es para añadirlo y eliminarlo inmediatamente, no lo debes dejar ahi para la eternidad. Si continuas añadiendo los productos en minuscula, o mayusculas pues lo vuelves a subir o que se quite la costumbre

Link to comment
Share on other sites

 

Just now, gusman126 said:

 

Pues es extraño, cuando hice las pruebas funciono correctamente

 

Si tienes razon, aunque se supone que es para añadirlo y eliminarlo inmediatamente, no lo debes dejar ahi para la eternidad. Si continuas añadiendo los productos en minuscula, o mayusculas pues lo vuelves a subir o que se quite la costumbre

Necesito esto para arreglar los meta títulos no sé si existe alguna alternativa, pero me gustaría capitalizar todos los metatitulos de los productos si fuera posible.

Si podeis ayudar lo agradecería, un cordial saludo y gracias de antemano

Link to comment
Share on other sites

SOLUCIONADO

Para capitalizar la primera letra de todas las palabras de la BD de una columna he creado primero esta función:

DELIMITER // 
DROP FUNCTION IF EXISTS initcap; // 
CREATE FUNCTION initcap(cadena VARCHAR(100)) RETURNS VARCHAR(100) 
BEGIN 
DECLARE pos INT DEFAULT 0; 
DECLARE tmp VARCHAR(100) DEFAULT ''; 
DECLARE result VARCHAR(100) DEFAULT ''; 
REPEAT SET pos = LOCATE(' ', cadena); 
 IF pos = 0 THEN SET pos = CHAR_LENGTH(cadena); 
 END IF; 
 SET tmp = LEFT(cadena,pos); 
 SET result = CONCAT(result, UPPER(LEFT(tmp,1)),SUBSTR(tmp,2)); 
 SET cadena = RIGHT(cadena,CHAR_LENGTH(cadena)-pos); 
UNTIL CHAR_LENGTH(cadena) = 0 END REPEAT; 
RETURN result; 
END; //

Después de esto he ejecutado un UPDATE en la columna que me interesaba y ha funcionado:

UPDATE ps_product_lang SET name = initcap(name)

Espero que os sirva, 'gracias por la ayuda'

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