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

Следить
Главная
22:36
06 фев
#
?
написал:

Случайно обнаружил, что первая страница пагинации имеющая адрес типа "http://имя_сайта/catalog/категория/page_1" и страница "http://имя_сайта/catalog/категория/" дублируются.
Встречается такой дубль везде где есть разбиение на страницы. Ведет туда кнопка "1" в строке пагинации.
Пробовал составить правило редиректа 301 в .htaccess, но что-то у меня ничего не получается. Не силен я в регулярных выражениях :(
Помогите устранить подобные дубли!

PS. Еще наткнулся на дубль в брендах. У меня страница "/brands" отдает копию контента главной страницы.
Добавил строки в файл .htaccess:

    # Убираем дубликат главной страницы в брендах
    RewriteRule  ^brands(/)?$  http://%{HTTP_HOST}/%1  [R=301,L,QSA]

Так же у служебных страниц (contacts, delivery, payment) обнаружились дубли с «/» и без «/», но так как правило редиректа уже есть в .htaccess, то просто добавил имена этих страниц:

    RewriteCond  %{REQUEST_URI}  ^(/.+)?/(catalog|products|items|kits|brands|articles|news|sections|media|stocks|contacts|delivery|payment)(/.+)?/$  [NC]

Посмотрите у себя, возможно это поможет исправить подобные дубли!

09:59
07 фев
#
?
socrat написал:

Помогите устранить подобные дубли!

# Убираем дубликат первой страницы списка
RewriteRule  ^(.*)/page_1/?$  http://%{HTTP_HOST}/%1  [R=301,L,QSA]

Пофигу какой список - категоирии, новости и т.п. Действует для любого.

11:51
07 фев
#
?
socrat написал:

Мысль озарила мой чердак :)

Еще наткнулся на дубль в брендах. У меня страница "/brands" отдает копию контента главной страницы.

Потому что страница /brands не используется движком. А можно было в catalog.tpl вывести список всех брендов.

{if $smarty.server.REQUEST_URI|default:'' == '/brands'}
    <h1>Производители</h1>
    {include file = '../../common_parts/AIMatrix/Constructor/items.htm'
             items = $all_brands|default:false
             opentag = '<div id="brand-cards">'
                 listing_opentag = '<ul>'
                     link_opentag = '<li>'
                     link_closetag = '</li>'
                 listing_closetag = '</ul>'
             closetag = '</div>'}
{else}
    что было до этого в catalog.tpl
{/if}

Как то так. Простым списком ul li.

Или карточки брендов показать. Еще будет круче. Сменим модуль items.htm на listing.htm, в параметре includes запишем имя tpl карточки бренда.

Уточнение от разработчика: Зачем карточки брендов оборачивать в список UL-LI? В вашем коде я пометил цветом параметры, от которых можно вообще отказаться или сделать их пустыми строками.

Еще добавил контрольные модификаторы для упреждения неожиданных ошибок в шаблоне. Может быть код стал читаться хуже, зато безопасный.
{if $smarty.server.REQUEST_URI|default:'' == '/brands'}
    <h1>Производители</h1>
    {include file = '../../common_parts/AIMatrix/Constructor/listing.htm'
             items = $all_brands|default:false
             opentag = '<div id="brand-cards">'
                 listing_opentag = '<ul>'
                     link_opentag = '<li>'
                         includes = ['brand-card.tpl']
                     link_closetag = '</li>'
                 listing_closetag = '</ul>'
             closetag = '</div>'}
{else}
    что было до этого в catalog.tpl
{/if}

Положить в шаблон файл brand-card.tpl.

<div class="brand-card">
    <a href="{$site|default:''}{$item->url_path|default:''}{$item->url|default:''}">
        <img src="{$site|default:''}files/brands/{$item->image|default:'no-photo.png'}">
    </a>
</div>

В папку site.ru/files/brands положить файл no-photo.png.

И стили карточки нарисовать. Вот.

Идея не моя. С чистым сердцем спер у template monster. Смотрел как устроены их шаблоны.

16:26
07 фев
#
?
написал:

socrat, Я тоже сначала пробовал нечто подобное:
RewriteRule ^(.*)/page_1/?$ http://%{HTTP_HOST}/%1 [R=301,L,QSA]
Но в таком случае перенаправление идет на главную!

16:41
07 фев
#
?
написал:

А по странице брендов, спасибо, отличная идея! Дополнительная перелинковка не помешает, если закрыть от роботов (noindex, follow).

17:50
07 фев
#
?
написал:

Проверил бренды, все зд0рово, но в списке попадаются "пустые" бренды, в которых при переходе по ссылке нет товаров.

01:17
08 фев
#
?
socrat написал:

Я тоже сначала пробовал нечто подобное

Вот тут я дал [repeat 3 раза] в натуре маху.

Писал под копирку с вашего примера, не глянул, что %1 надо было на $1 заменить. Вот как правильно.

# Убираем дубликат первой страницы списка
RewriteRule  ^(.*)/page_1/?$  http://%{HTTP_HOST}/$1  [R=301,L,QSA]

Может быть код стал читаться хуже, зато безопасный.

Дело конечно ваше. Тем более функций раскрашивания в редакторе не нашел. Наверно только у админа есть.

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

На любом форуме посмотрите, если кто и предлагает свой код, так примерный код решения, а не так что сразу все защиты от дурака предусмотрены.

но в списке попадаются "пустые" бренды

В карточке бренда проверьте количество товаров и выводите только непустые. Так.

{if $item->products_count > 0}
    <div class="brand-card">
        <a href="{$site}{$item->url_path}{$item->url}">
            <img src="{$site}files/brands/{$item->image|default:'no-photo.png'}">
        </a>
    </div>
{/if}
15:09
19 фев
#
?
maximich написал:

отлично

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

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


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