Если они имеют разные ID и коды, то проблем быть не должно (или я ошибаюсь?).
Ошибаетесь. Проблема будет не в логике работы CMS.
ID у продуктов и категорий уникален принципиально, таково свойство этого поля, оно инкрементное.
Но представьте, что Вы нажимаете на кнопочку "Прайс". Что увидите? Одноименные товары по разной цене?
PS. Если Вы уникализируете код товара и заведомо уверены в этом, то Вам сам бог велел использовать ЧПУ не по названию товара, а по коду (простейшие изменения в исходнике), либо по "код_название". ЧПУ по коду вместо ЧПУ по названию, конечно, будет уже нифига не Человечески-Понятным УРЛом, но, как мне кажется, это давно уже и не важно, т.к. ЧПУ делаются не для "человеко-понятности", а для поднятия веса у поисковиков.
PPS. Пожалуй, наиболее правильной (как следствие - простой, т.е. быстро работающей) реализацией жалаемого будет дописывать к транслиту названия товара/категории еще и его ProductID/CategoryID.
---------- Сообщение объединено ----------
Пожалуй, и к остальным всем ЧПУ дописывать ID их исходников - к статьям, новостям, статическим страницам. А хорошая ведь мысль родилась
.
Можно ее усложнить и приписывать только тогда, когда есть дубляж. Но мне это не нравится. Усложнит и замедлит.
---------- Сообщение объединено ----------
Пожалуй, наиболее правильной (как следствие - простой в реализации, т.е. быстро работающей) реализацией жалаемого будет дописывать к транслиту названия товара/категории еще и его ProductID/CategoryID.
Сделано.
Товар выглядит как cpu.badisoft.ru/195/Digma_a700
Категория как cpu.badisoft.ru/1/glavnaya_kategoriya
Статическая страница "О Магазине" как cpu.badisoft.ru/1/o_magazine
Новости аналогично. Таким образом повторяемость исключена в принципе.
Измененные строки (просто для понимания, что менять, если захочется реализовать уникальность как-то по другому):
В index.php:
$to="/".$matches['category']."/".translit($row['name']);
$to="/".$matches['product']."/".translit($row['name']);
$to="/".$matches['page']."/".translit($row['aux_page_name']);
$to="/".$matches['news']."/".translit($row['title']);
В sitemap.php:
$to = "/".$row['categoryID']."/".translit($row['name']);
$to = "/".$row['productID']."/".translit($row['name']);
$to = "/".$row['NID']."/".translit($row['title']);
$to = "/".$row['aux_page_ID']."/".translit($row['aux_page_name']);
Скачать новую версию можно где и всегда (см. шапку).
После заливки новых файлов index.php и sitemap.php надо удалить таблицу xxxx_cpu_table и заново запустить yousite/sitemap.php, чтобы создалась таблица с новыми ЧПУ и новый файл sitemap.xml.