{if $page_name == 'product' && isset($product->id)}
<link rel="canonical" href="{$link->getProductLink($product->id)}" />
Так вот этот код и определит один url страницы товара по правилам чпу.
Загрузите этот код и посмотрите как он работает когда карточка отрабатывается одновременно по разным категориям
Загрузил, только на страницу товара. Везде один canonical. Зачем его добавлять на страницы категории? Робот переходит на страницы товара и определяет группу страниц и один предпочитаемый адрес.
толи я Вас не понимаю, то ли Вы меня:)
а кто говорил о том, что бы добавлять его на страницы категорий?!
1) добавлять же надо код этот в header.tpl?
2) код на сколько понял работает следующим образом - если это страница карточки товара, то загружается тег каноникал для этой станицы.
3) да все верно с роботом и определяет предпочитаемый адрес. Но товар может попасть в индекс и два раза - посредством прямой ссылки и через категорию.
А с этим кодом у меня канонический адрес получается разный. Может я что-то делаю не так. Не понимаю почему у Вас везде один канонический.
У меня вот что - см. файл вложения