Я не маю під рукою Joomshopping.
Теорія така.
В будь-якого компонента є роутер який (зразок /components/com_content/router.php і функції відповідно build і parse):
- - перетворює посилки з non-sef у sef (у тебе на вході є масив виду Limit=24&start=72)
- - перетворює посилки з sef у масив, ніби посилка була виду index.php?option=com_jshopping&Limit=24&start=72&Itemid=455 (номір від балди пишу)
У тебе в посиланні є shop, що є aliasом пункту меню магазина. Джумла дивиться, що лінк починається із shop, шукає підходящий пункт меню, розуміє що йдеться про com_jshopping (чи як він там) і далі предає керування роутеру магазина, який далі парсить лінк у свої змінні (чи є там view, який view і т.д.).
АЛЕ! Очевидно роутер JoomShopping при формуванні лінка не париться ні формуванням красивого лінка для пагінації, ні відповідно розпарсингом його назад.
Щоби не правити код роутера, у джумлі є можливість написати плагін, який буде перехоплювати посилання і або пояснювати джумлі до якої саме сторінки ти звертаєшся (тобто, що Сайт/page1 означає сайт/shop?Limit=24&start=72, а далі вже роутер хай розбиває, він вміє далі сам). І пагінацію ще треба виводити з правильними лінками.
Задача вивести нові/правильні лінки в пагінації може мати пару розв’язків.
Або, якщо вийде, скопіювати і переробити плагін pagenavigation. Якщо він не інтегрується з JoomShopping (не передає данні в нього для цього випадку), тоді на рівні шаблона магазина можна виловити місце формування лінків і їх підмінити.
Далі треба парсінг лінків зробити. Для цього треба написати системний плагін, який на подіях або onAfterRoute, або onAfterDispatch (треба поекспериментувати, котрий з них), візьме реальний лінк виду Сайт/page1, і скаже джумлі, що малось на увазі Limit=24&start=72
Це так в теорії. Досить геморойно. Тому ліпше не парся.
Ще є якісь платні СЕО-інструменти, може вони щось вміють. Я ніколи не користувався.