support 447 Опубликовано 7 мая, 2020 Жалоба Share Опубликовано 7 мая, 2020 Иногда есть необходимость прописать всем уже созданным товарам, категориям SEO URL товара. Одним SQL запросов. В данной заметке покажу как это делается. Пропишем массово всем категориям и товарам в VamShop адреса вида: http://магазин.ру/nazvanie-tovara-p-1.html nazvanie-tovara - это название товара, указанное в админке, переведённое в транслит. p-1 - это id номер товара. Категории будет выглядеть так: http://магазин.ру/nazvanie-kategorii-c-1.html nazvanie-kategorii - это название категории, указанное в админке, переведённое в транслит. c-1 - это id номер категории. 1. Заходите в свою базу данных в phpMyAdmin, в закладке SQL выполняем следующий код: DELIMITER $$ DROP FUNCTION IF EXISTS `_fs_transliterate_ru` $$ CREATE DEFINER=`root`@`localhost` FUNCTION `_fs_transliterate_ru`(str TEXT CHARSET utf8) RETURNS text CHARSET utf8 DETERMINISTIC SQL SECURITY INVOKER BEGIN DECLARE strlow TEXT CHARSET utf8; DECLARE sym VARCHAR(3) CHARSET utf8; DECLARE prevsub VARCHAR(3) CHARSET utf8; DECLARE sub VARCHAR(3) CHARSET utf8; DECLARE res TEXT CHARSET utf8; DECLARE len INT(11); DECLARE i INT(11); DECLARE pos INT(11); DECLARE alphabeth VARCHAR(37) CHARSET utf8; SET i = 0; SET res = ''; SET strlow = LOWER(str); SET len = CHAR_LENGTH(str); SET alphabeth = ' _.абвгдеёжзийклмнопрстуфхцчшщъыьэюя'; /* идем циклом по символам строки */ WHILE i < len DO SET i = i + 1; SET sym = SUBSTR(strlow, i, 1); SET pos = INSTR(alphabeth, sym); /*выполняем преобразование припомощи ф-ии ELT */ IF sym >= '0' AND sym <= '9' OR sym >= 'a' AND sym <= 'z' OR sym = '-' THEN SET sub = sym; ELSE SET sub = elt(pos, '-', '-', '-', 'a','b','v','g', 'd', 'e', 'yo','zh', 'z', 'i','j','k','l', 'm', 'n', 'o', 'p', 'r', 's','t','u','f', 'h', 'c','ch','sh','sch', '', 'y', '','e','yu','ya'); END IF; IF sub IS NOT NULL AND NOT(sub = '-' AND prevsub = '-') THEN SET res = CONCAT(res, sub); END IF; SET prevsub = sub; END WHILE; RETURN res; END $$ DELIMITER ; 2. Мы создали функцию для транслитерации кириллицы. Теперь просто прописывает адреса категориям и товарам, в закладке SQL выполняем запрос: UPDATE products,products_description SET products.products_page_url=concat(_fs_transliterate_ru(products_description.products_name),"-p-",products.products_id,".html") WHERE products.products_id=products_description.products_id; Всё, мы прописали адреса на транслите. К примеру, товар - Название товара на русском С помощью данного запроса у товара получится такой SEO URL адрес: nazvanie-tovara-na-russkom-p-10.html Аналогичный запрос для категорий: UPDATE categories,categories_description SET categories.categories_url=concat(_fs_transliterate_ru(categories_description.categories_name),"-c-",categories.categories_id,".html") WHERE categories.categories_id=categories_description.categories_id; Если название категории Смартфоны. То адрес получится такой: smartfony-c-3.html Ссылка на сообщение Поделиться на другие сайты
support 447 Опубликовано 8 мая, 2020 Автор Жалоба Share Опубликовано 8 мая, 2020 Если необходимо задать такие адреса только тем товарам, у которых не был установлен seo url, тогда запрос будет такой. Для товаров: UPDATE products,products_description SET products.products_page_url=concat(_fs_transliterate_ru(products_description.products_name),"-p-",products.products_id,".html") WHERE products.products_id=products_description.products_id and products.products_page_url=''; Для категорий: UPDATE categories,categories_description SET categories.categories_url=concat(_fs_transliterate_ru(categories_description.categories_name),"-c-",categories.categories_id,".html") WHERE categories.categories_id=categories_description.categories_id and categories.categories_url = ''; Ссылка на сообщение Поделиться на другие сайты
support 447 Опубликовано 14 мая, 2020 Автор Жалоба Share Опубликовано 14 мая, 2020 Для статей: UPDATE articles,articles_description SET articles.articles_page_url=concat(_fs_transliterate_ru(articles_description.articles_name),"-a-",articles.articles_id,".html") WHERE articles.articles_id=articles_description.articles_id and articles.articles_page_url=''; Ссылка на сообщение Поделиться на другие сайты
Рекомендуемые сообщения