Я таки остановился на liteseotools, уж больно мне там идея понравилась. При добавлении каких-то новых модулей не надо править в них код, все само. Да и вообще файлы ShopCMS не трогаются никак. Но если не программер, то оно за деньги
.
---------- Сообщение объединено ----------
Идея, кстати, (программерам на заметку) довольно проста. Вывод результирующего html перехватывается путем ob_start() и ob_get_contents(). В полученной "строке" фунцией str_replace (упрощенно) все реальные ссылки на категории-товары-и-еще-разное заменяются ЧПУ-шными и по echo() оно отдается дальше. Получаем на экране эксплорера страничку с подмененными красивыми ЧПУ-шными ссылками. Обратное преобразование (при нажатии на ЧПУ-шную ссылку) делается путем перехвата ЧПУ-шных ссылок в стиле RewriteRule ^(.*)$ cpu.php?action=/$1, где cpu.php подменяет в GET ссылки обратно на ЧПУ-шные и отдает управление index.php. Все! Где хранить табличку соответствий (файл, sql) и как эту табличку создавать-редактировать - вопрос отдельный. Например, вообще никак, жестко задав обратимые правила преобразования наименования товаров и категорий в ЧПУ-ссылку и обратно, как это сделано в HCU-версии ЧПУ. Или в отдельной SQL-таблице, как это сделано в liteseotools.
Очевидный минус один - нельзя включать потоковое сжатие контента, т.к. невозможно будет сделать в таком контенте str_replace. Да и фиг с ним, жать контент нынче умеет и сам бэкенд, а плюсов куда больше. Второй минус - все работает несколько медленнее. Ровно на время выполнения подмены ссылок
. На слабом домашнем "сервере" в одной из виртуалок это добавляет ~0.05 сек к главной странице и чуть меньше секунды к выводу прайса примерно в тысячу позиций. Сам вывод прайса занимает между пятью и десятью секундами (на глаз, не мерял), т.е. прибавка явно невелика.