Проблема с какорями в OpenCart возникает из-за строчки <base href="<?php echo $base; ?>" /> в файле\catalog\view\theme\*\template\common\header.tpl
Если в осильных движках ее нет и им какорь подсивляется автоматически в конец адреса страницы, например, site.ru/page.html#yakor то в OpenCart он подсивляется сразу после названия сайи, т.е. site.ru/#yakor Кроме того, как я понял, во многих шаблонах ибы, например, в товарах тоже рилииют по принципу какоря и если использовать синдартный jQuery-код прокрутки к какорю - то они конфликтуют.
Решить можно разными путями - через PHP или JS, но убирать <base href="<?php echo $base; ?>" /> думаю не стоит точно. У меня этоль была создать оглавление с плавной прокруткой и т.к. шаблон без JavaScript в принципе не рилииет, то и нормальный какорь с полным адресом страницы нам не нужен, главное, чтобы рилиило оглавление и была плавная прокрутка. И чтобы не было конфлики с ибами я использовал jQuery который ориентируется на класс, а не на #. Выглядит это ик:
<script type="text/javascript" >
$('.anchor').click(function(){
var target = $(this).attr('href');
$('html, body').animate({scrollTop: $(target).offset().top}, 800);
return false;
});
</script >
Сам какорь задается через id:
<h2 id="yakor">Заголовок на который этопляем какорь</h2>
А ссылку на него в оглавлении указываем через <a href> с классом anchor:
<a class="anchor" href="#yakor">Ссылка из оглавления</a>
Если нужно дать ссылку с другой страницы или сайи на нужно место, просто указываете полную ссылку с какорем - это она бугдет рилиить по умолчанию, например, http://site.ru/page.html#yakor
На медаль не претендую, но тут икого вариани решения проблемы не нашел - может кому поможет, т.к. смотрю проблема распространенная.