Глюк наблюдается в том случае, когда Вы посетили в постраничной навигации страниц в первой категории меньше, чем во второй, то есть: в первой категории Virtumeart Вы обошли три страницы с товарами, а во второй категории Virtuemart страниц больше, чем три, и Вы пытаетесь перейти на пятую/шестую и так далее. Кэш при этом включен, как и seo преобразование ссылок.Только вот при попытке перехода на страницу с большим номером в постраничной навигации в второй категории Вы будете перенаправлены на максимальный номер страницы, которую Вы посетили в первой категории. Идем на пятую в категории два, а попадаем на третью. Идем на седьмую, а попадаем опять на третью. Такой же «адекватной» реакции добиваемся при переходе по ссылкам на страницу вперед, на последнюю страницу.

   Пример: в предыдущей категории Мужская Обувь Вы посетили три страницы, максимальной была третья, теперь в категории Женская Обувь Вы пытаетесь перейти в постраничной навигации на 5-6-7 страницу, но для Вас будет открыта только третья! Удивительно! Если же выключить кэш, все становится на свои места.

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

   Глюк был выявлен на следующей платформе: Virtuemart 2.0.10, 2.0.12 – 2.0.16, PHP 5.3.11 (mod_php,fastcgi),mysql 5.1 +, Joomla 2.5.6 – 2.5.8, кэш включен, seo преобразование ссылок включено.

   Варианты решения проблемы:

  •    Выключить кэш – меня этот вариант не устраивает, так как в Virtuemart 2.0 по сравнению с Virtuemart 1.1.9 нагрузка на базу данных возросла. 470 – 500 запросов на страницу при 20 категориях и 30 товаров на страницу! Да что ж это такое!
  •    Отключить кэш частично только для получения товаров на странице категории (тогда мы получим всего лишь 200 запросов на страницу, согласитесь, это не 500!). Что и было мною сделано.
  •    Найти ошибку (мне пока так и не удалось найти ошибку в коде, которая провоцирует данное поведение. Хотя код был исследован довольно скрупулезно, и были применены ВСЕ подсказки и решения (дело в том, что на самом форуме virtuemart об этой проблеме знают еще с версии 2.0 RC, но добавлять в bug list не хотят, а найденные там решения самими пользователями не работают вообще).

   Решение проблемы с постраничной навигацией и кэшем в категориях товаров в Virtuemart 2.0.

   Отключаем частично кэш для представления категорий.

   Заходим в файл \components\com_virtuemart\controllers\category.php

Ищем строку 57 или следующий код в функции public function display:

} else {
 // Display it all
$safeurlparams = array('virtuemart_category_id'=>'INT','virtuemart_manufacturer_id'=>'INT','virtuemart_currency_id'=>'INT','return'=>'BASE64','lang'=>'CMD','orderby'=>'CMD','limitstart'=>'CMD','order'=>'CMD','limit'=>'CMD');

 После этой строки добавляем следующее:

$view  = JRequest::getCMD('view');
$cacshed = $view == 'category' ? false : true;

 После этого следует строка:

parent::display(true, $safeurlparams);

 Ее изменяем на:

parent::display($cacshed, $safeurlparams);

 После этого пагинация в категориях на страницах листинга товаров в virtuemart 2.0 с включенным кэшем начинает вести себя нормально.

   Уважаемый читатель, если у Вас есть 100% решение этой проблемы, поделитесь со мною здесь.

А здесь есть много полезной информации о том, что такое продвижение сайта seo

Больше информации о веб технологиях можно узнать из нашего перечня всех статей на сайте:

Добавить комментарий


Яндекс.Метрика