Попалась не заурядная задачка, дано сайт с на Joomla & VitrueMart с большим количеством товаров, более 3000 штук. 

Надо подготовить сайт к продвижению, сайт новый, все адреса у товаров имеют кириллический вид, с категориями все хорошо.

Надо сменить псевдоним (slug) в товаров с кириллического на латиницу чтобы в дальнейшем нормально продвигать сайт.

Стандартных способов массово изменить в VitrueMart нет, заходить в каждый товар и предохранять его дело не благодарное, слишком большое количество товаров.

Для решения данной задачи был написан простой скрипт, возможно кому то пригодится, публикую ниже:

	header('Content-Type: text/html; charset=utf-8');
	
	// Данные подключения к базе
	$link = mysqli_connect("localhost", "login", "password", "db");
	
	// Выбираем все товары из таблицы rossi_virtuemart_products_ru_ru у вас может быть свой префикс rossi_
	$q = mysqli_query($link, "SELECT virtuemart_product_id, slug FROM rossi_virtuemart_products_ru_ru");
	$data = mysqli_fetch_all($q);
    
    // Функция перевода с кирилицы на танслит
	function ru2lat($str) {
	    $tr = array(
	    "А"=>"a", "Б"=>"b", "В"=>"v", "Г"=>"g", "Д"=>"d",
	    "Е"=>"e", "Ё"=>"yo", "Ж"=>"zh", "З"=>"z", "И"=>"i", 
	    "Й"=>"j", "К"=>"k", "Л"=>"l", "М"=>"m", "Н"=>"n", 
	    "О"=>"o", "П"=>"p", "Р"=>"r", "С"=>"s", "Т"=>"t", 
	    "У"=>"u", "Ф"=>"f", "Х"=>"kh", "Ц"=>"ts", "Ч"=>"ch", 
	    "Ш"=>"sh", "Щ"=>"sch", "Ъ"=>"", "Ы"=>"y", "Ь"=>"", 
	    "Э"=>"e", "Ю"=>"yu", "Я"=>"ya", "а"=>"a", "б"=>"b", 
	    "в"=>"v", "г"=>"g", "д"=>"d", "е"=>"e", "ё"=>"yo", 
	    "ж"=>"zh", "з"=>"z", "и"=>"i", "й"=>"j", "к"=>"k", 
	    "л"=>"l", "м"=>"m", "н"=>"n", "о"=>"o", "п"=>"p", 
	    "р"=>"r", "с"=>"s", "т"=>"t", "у"=>"u", "ф"=>"f", 
	    "х"=>"kh", "ц"=>"ts", "ч"=>"ch", "ш"=>"sh", "щ"=>"sch", 
	    "ъ"=>"", "ы"=>"y", "ь"=>"", "э"=>"e", "ю"=>"yu", 
	    "я"=>"ya", " "=>"-", "."=>"", ","=>"", "/"=>"-",  
	    ":"=>"", ";"=>"","—"=>"", "–"=>"-"
	    );
		return strtr($str,$tr);
	}
	
	
	// Обновляем записи в таблице
	foreach ($data as $value) {
		$u = "UPDATE rossi_virtuemart_products_ru_ru SET slug = '".ru2lat($value['1'])."' WHERE virtuemart_product_id = ".$value['0']."";
		$f = mysqli_query($link, $u);
	}
    
    echo "Готово";

8 КОММЕНТАРИИ

    • Создайте php файл, поместите в корне с содерджанием в посте, не забудьте изменить данные для подключения к базе и выполните скрипт.

      • Если бы опыт, то не задавал таких тупых вопросов. Уже все что нашел в сети перепробовал. Не получается. Вся надежда на вашу подробную инструкцию или менять все руками((

  1. После $link = mysqli_connect(«localhost», «login», «password», «db»);
    Добавь: mysqli_set_charset($link, ‘utf8’);
    Иначе все ссылки у товаров будут в знаках вопроса и ничего работать не будет.

ОСТАВЬТЕ ОТВЕТ

Пожалуйста, введите ваш комментарий!
пожалуйста, введите ваше имя здесь