Форум пользователей Impera CMS
Impera CMS - отличный движок для лёгкого создания интернет магазина.
Обладает невероятным количеством функций, необходимых в онлайн торговле.

Следить
Главная
14:24
22 мая
#
написал:

Суть косяка состоит в том, что движком давно поддерживаются слеше-подобные адреса страниц товаров, например http://ваш.сайт/products/telefony/siemens-s35i-silver. А в правилах ретрансляции страничных адресов, что записаны в корневом файле .htaccess, эта особенность оказалась неучтенной в той цепочке правил, которые относятся к странице сравнения.

Косяк незаметен до тех пор, пока принудительно не откорректируем url товара на слеше-подобный или не начнем импортировать на сайт новый товар. В последнем случае система импорта сделает слеше-подобные адреса за нас, копируя с транслитом полный каталоговый путь товара в его адрес страницы, то есть воображаемую строку вида категория/подкатегория/название-товара, если в импортируемой таблице мы не дали свою колонку url.

Когда клиент магазина попробует добавить такой товар в сравнение, то увидит всплывшую и не исчезающую более плашку "Передача данных в сравнение...". Ведь ретранслятор адресов, согласно устаревшим правилам, не реагирует на такой слеше-подобный адрес, как следствие плашка висит на экране бесконечно.

Чтобы исправить проблему, нужно в корневом файле .htaccess найти следующие строки (серым помечены фрагменты, которых нет, если во время установки движка вместо упомянутого файла вы приказали использовать содержимое файла .htaccess2):

# Сравнение товаров

RewriteRule  ^compare(?:\.class\.php)?/?$                 index.php?module=Compare                                [NC,L,QSA]
RewriteRule  ^compare(?:\.class\.php)?/quick/?$           index.php?module=Compare&quickcontent=1                 [NC,L,QSA]
RewriteRule  ^compare(?:\.class\.php)?/remove/([^/]+)/?$  index.php?module=Compare&remove_product_url=$1          [NC,L,QSA]
RewriteRule  ^compare(?:\.class\.php)?/([^/]+)/?$         index.php?module=Compare&product_url=$1                 [NC,L,QSA]
RewriteRule  ^compare(?:\.class\.php)?/quick/([^/]+)/?$   index.php?module=Compare&product_url=$1&quickcontent=1  [NC,L,QSA]

и заменить их на:

# Сравнение товаров

RewriteRule  ^compare(?:\.class\.php)?/?$                          index.php?module=Compare                                [NC,L,QSA]
RewriteRule  ^compare(?:\.class\.php)?/quick/?$                    index.php?module=Compare&quickcontent=1                 [NC,L,QSA]
RewriteRule  ^compare(?:\.class\.php)?/remove/([^/]+(/[^/]+)*)/?$  index.php?module=Compare&remove_product_url=$1          [NC,L,QSA]
RewriteRule  ^compare(?:\.class\.php)?/quick/([^/]+(/[^/]+)*)/?$   index.php?module=Compare&product_url=$1&quickcontent=1  [NC,L,QSA]
RewriteRule  ^compare(?:\.class\.php)?/([^/]+(/[^/]+)*)/?$         index.php?module=Compare&product_url=$1                 [NC,L,QSA]

Во-первых, здесь соблюден верный приоритет обработки правил ретрансляции адресов, и во-вторых, что в адресах страниц товаров, добавляемых в сравнение, могут присутствовать символы слеша согласно возможностям движка.

В новых версиях Impera CMS эти правки делать не придется, там исправление уже учтено.

15:37
22 мая
#
?
написал:

Ураа! Заработало! Спасибо!

Написание ответа

Перед публикацией рекомендуется использовать Предпросмотр, чтобы увидеть конечный вид сообщения.


Обратите внимание! Для противодействия спаму новые посты форума проявляются с задержкой от нескольких минут, пока не пройдут модерацию.