Попалась не заурядная задачка, дано сайт с на 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 "Готово";
Как же его применить?
Создайте php файл, поместите в корне с содерджанием в посте, не забудьте изменить данные для подключения к базе и выполните скрипт.
Название файла любое? Закинуть его корень? Как выполнить скрипт?
Название любое например upd.php, заливается в корень, исполняется site.ru/upd.php
подключать так?
<?php
require_once 'site.ru/rexx.php'; // подключаем скрипт
Его не нужно подключать, просто запустить и все.
Если бы опыт, то не задавал таких тупых вопросов. Уже все что нашел в сети перепробовал. Не получается. Вся надежда на вашу подробную инструкцию или менять все руками((
После $link = mysqli_connect(«localhost», «login», «password», «db»);
Добавь: mysqli_set_charset($link, ‘utf8’);
Иначе все ссылки у товаров будут в знаках вопроса и ничего работать не будет.