Голосование

Смотрим содержание первого поста и выдаем результаты

Проблема имеется (оригинальный VM 2 без сторонних расширений)
5 (71.4%)
Проблема имеется (есть сторонние расширения)
2 (28.6%)
Проблемы нет
0 (0%)
Проблема была, но ее решили
0 (0%)

Проголосовало пользователей: 7

0 Пользователей и 1 Гость просматривают эту тему.
  • 41 Ответов
  • 10822 Просмотров
*

pharaoh

  • Захожу иногда
  • 426
  • 53 / 0
В ходе следственных экспериментов была выявлена проблема навигации при включенном кешировании.

Во первых интересует у кого еще встречается такая проблема. Как проверить:
0. Включаем стандартное кеширование
Дальше пару раз по циклу (желательно проверять на малопосещаемом сайте):
1. Очищаем кеш
2. заходим на 1ую страницу категории 1
3. заходим на 1ую страницу категории 2
4. заходим на 2ую стр категории 2
5. заходим на 1ую страницу категории 1
6. пытаемся зайти на 2ую страницу категории 1, но попадаем на 1ую

Просьба отвечать ниже с пометкой: Версия Joomla, версия VirtueMart, какая версия была первой (обновлялись или поставили на чистую Joomla)

Ну и во-вторых, может кто сталкивался и решил вопрос?

== РЕШЕНИЕ ==
для версий 2.0.8 - 2.0.14
« Последнее редактирование: 29.11.2012, 16:39:17 от pharaoh »
*

Scorpionnn

  • Осваиваюсь на форуме
  • 27
  • 1 / 0
Который день уже бьюсь с данной проблемой. Нигде не смог найти решения. Даже если SEF вырубать ничего не помогает. Ставил чистую Joomla 2.5.6 и ВМ 2.0.12b. Миграцию со старой версии (J 1.5 + VM 1.9) делал своими скриптами, которые работали только с базами и никак не касались самой CMS. Точнее это даже не миграция была, а тупо перетягивание товаров и пользователей.

Методом тыка выяснилось что псина зарыта в /cache/com_virtuemart . Начиная удалять файлики по одному и кликая по пагинатору, нашел проблемный файл кэша. У меня он назывался ee701194fe7e3f47f54bad6582f48eb5-cache-com_virtuemart-e87393e5f8d3709ede6b6b1b3fd91356.php

После его удаления пагинация опять начинала работать.

Ниже, на всякий пожарный, привожу содержание этого файла:

Спойлер
[свернуть]

Блин как быть? :(( Хоть в вид категории прописывай проверку на существование этого файла и его удаление при true )))
*

pharaoh

  • Захожу иногда
  • 426
  • 53 / 0
Советуют использовать расширение jotcache. Будем пробовать.

UPD jotcache пробовать не стал.
Есть кое-какие наработки, просьба связаться в личку всех, кто готов потестировать возможное решение.
« Последнее редактирование: 29.11.2012, 00:43:40 от pharaoh »
*

Scorpionnn

  • Осваиваюсь на форуме
  • 27
  • 1 / 0
Давай тестировать. Что за решение? Блин, похоже что мои личные сообщения не отправляются почему-то...
*

jouser

  • Захожу иногда
  • 124
  • 9 / 0
JotCache не спасает - проверял
*

pharaoh

  • Захожу иногда
  • 426
  • 53 / 0
Обозначения:
VirtueMartControllerCategory - контроллер категории /components/com_virtuemart/contoller/category.php
VirtuemartViewCategory - представление категории /components/com_virtuemart/views/category/view.html.php

1. Очищаем кеш
2. заходим на 1ую страницу категории 1 (id = 1)
   на входе LastVisitedCategoryId = 0
   страницы в кеше нет, поэтому VirtueMartControllerCategory::display -> VirtuemartViewCategory::display. Результат выполнения VirtuemartViewCategory::display попадает в кеш.
   в VirtuemartViewCategory::display выполняется функция указания LastVisitedCategoryId.
   на выходе LastVisitedCategoryId = 1
   
3. заходим на 1ую страницу категории 2 (id = 2)
   на входе LastVisitedCategoryId = 1
   страницы в кеше нет, поэтому VirtueMartControllerCategory::display -> VirtuemartViewCategory::display. Результат выполнения VirtuemartViewCategory::display попадает в кеш.
   на выходе LastVisitedCategoryId = 2
   
4. заходим на 2ую стр категории 2
   на входе LastVisitedCategoryId = 2
   страницы в кеше нет, поэтому VirtueMartControllerCategory::display -> VirtuemartViewCategory::display. Результат выполнения VirtuemartViewCategory::display попадает в кеш.
   на выходе LastVisitedCategoryId = 2
   
5. заходим на 1ую страницу категории 1
   на входе LastVisitedCategoryId = 2
   страницы в кеше есть, поэтому VirtueMartControllerCategory::display -> берем из кеша результат VirtuemartViewCategory::display, и не выполняем его. Изменения LastVisitedCategoryId не происходит!
   на выходе LastVisitedCategoryId = 2
   
6. пытаемся зайти на 2ую страницу категории 1, но попадаем на 1ую
   на входе LastVisitedCategoryId = 2
   страницы в кеше нет, поэтому VirtueMartControllerCategory::display -> VirtuemartViewCategory::display. Т.к. LastVisitedCategoryId не соответствует реально открытой категории, то нас кидает на 1ую страницу и результат выполнения с неправильной навигацией VirtuemartViewCategory::display попадает в кеш.
   на выходе LastVisitedCategoryId = 1 (если страница не была закеширована, то на выходе имеем правильный LastVisitedCategoryId, поэтому например 3ья страница уже отрабатывает корректно (недолго))
   
Вариант решения:
Т.к. контроллер не кешируется, то в /components/com_virtuemart/contoller/category.php в конце function display добавить setLastVisitedCategoryId:
Код
public function display($cachable = false, $urlparams = false)  {
if (JRequest::getvar('search')) {
$view = $this->getView('category', 'html');
$view->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');
parent::display(true, $safeurlparams);
}
if($categoryId = JRequest::getInt('virtuemart_category_id',0)){
shopFunctionsF::setLastVisitedCategoryId($categoryId);
}
}
*

Scorpionnn

  • Осваиваюсь на форуме
  • 27
  • 1 / 0
Решение пока работает, спасибо!
*

pharaoh

  • Захожу иногда
  • 426
  • 53 / 0
Связался с разработчиками.
Ответили, что считают расширение корректным и добавят его в будущую версию.
https://forum.virtuemart.net/index.php?topic=110578.0

При этом решение довольно простое и актуальное для тех, кто не готов обновляться. Насколько я знаю параметр LastVisitedCategoryId был введен в 2.0.8.
Соответственно и решение актуально для версий 2.0.8 - 2.0.14.
« Последнее редактирование: 29.11.2012, 16:42:32 от pharaoh »
*

nameone

  • Осваиваюсь на форуме
  • 41
  • 2 / 0
  • Я желаю всем счастья!
Сделал как сказано, в components/com_virtuemart/contoller/category.php в конце function display добавил setLastVisitedCategoryId:
И удалил кэш из корневой папки:cache

Проблема осталась.  Что то не так сделал что ли не пойму...

Помогите пожалуйста! Люди добрые!
« Последнее редактирование: 01.12.2012, 17:03:10 от nameone »
*

pharaoh

  • Захожу иногда
  • 426
  • 53 / 0
Кеш удалять стоит через админку.
Сказать сложно, но ту причину, которую я обнаружил, предложенный вариант решает.
Какая версия VM у вас?
*

nameone

  • Осваиваюсь на форуме
  • 41
  • 2 / 0
  • Я желаю всем счастья!
VM 2.0.14  В админке удалил весь кэш.  Всё по прежнему.

Может где ошибка ?  



Код
public function display($cachable = false, $urlparams = false)  {
if (JRequest::getvar('search')) {
$view = $this->getView('category', 'html');
$view->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');
parent::display(true, $safeurlparams);
}
if($categoryId = JRequest::getInt('virtuemart_category_id',0)){
shopFunctionsF::setLastVisitedCategoryId($categoryId);
}
}
}
// pure php no closing tag
« Последнее редактирование: 01.12.2012, 21:28:55 от nameone »
*

pharaoh

  • Захожу иногда
  • 426
  • 53 / 0
У вас это вообще запускается? Фигурные кавычки неверно расставлены (если доверять отступам и не считать, что последняя закрывает класс)
« Последнее редактирование: 02.12.2012, 11:34:24 от pharaoh »
*

nameone

  • Осваиваюсь на форуме
  • 41
  • 2 / 0
  • Я желаю всем счастья!
Ничего не понял, что не так. Я Скопировал ваш код приведенный выше в свой ...
*

pharaoh

  • Захожу иногда
  • 426
  • 53 / 0
Еще раз
Фигурные кавычки неверно расставлены (если доверять отступам и не считать, что последняя закрывает класс)
Если все верно, то проблема в чем-то еще.
*

nameone

  • Осваиваюсь на форуме
  • 41
  • 2 / 0
  • Я желаю всем счастья!
Сама ссылка почему то Неправильная.   view/category/virtuemart_category_id/40/start/10

вместо:  view/category/virtuemart_category_id/40/Page-2-10.html
*

pharaoh

  • Захожу иногда
  • 426
  • 53 / 0
Отключите весь SEF (родной, VM'вский и сторонние (sh404sef и т.д.). Потом постепенно включайте. Скорее всего у вас в этом проблема, т.к. не узнаю обе из указанных ссылок.
Кстати какая Joomla? Решение тестировалось на 2.5
« Последнее редактирование: 02.12.2012, 13:03:48 от pharaoh »
*

nameone

  • Осваиваюсь на форуме
  • 41
  • 2 / 0
  • Я желаю всем счастья!
Что такое  
Цитировать
Отключите весь SEF (родной, VM'вский и сторонние (sh404se
не понимаю, простите я новичок...  

Joomla 2.5.8  всё чистое, новое, без левых модулей.


при открытии категории такая ссылка: category/virtuemart_category_id/40
Отключил:  Система - SEF  нет изменений.
« Последнее редактирование: 02.12.2012, 14:02:23 от nameone »
*

nameone

  • Осваиваюсь на форуме
  • 41
  • 2 / 0
  • Я желаю всем счастья!
SEF  отключил через панель управления. Всё заработало. 


а до этого пытался через плагины!


Спасибо большое за добрый совет! ! !  
*

pharaoh

  • Захожу иногда
  • 426
  • 53 / 0
У меня работает и о включенным SEF, просто надо понять, в какой момент возникает некорректность.
Изучайте, разбирайтесь. Возможно вы просто не создали пункт меню "virtuemart - главная"
*

jouser

  • Захожу иногда
  • 124
  • 9 / 0
Факт, решение не работает( Пункт точно создан, адрес передается правильный - но не фурычит. SEF отрубать не вариант вообще - сайт проиндексирован
*

pharaoh

  • Захожу иногда
  • 426
  • 53 / 0
Факт. Решение работает. Подтверждено командой VM и добавлено в следующее обновление. Все расписал максимально подробно, поэтому как минимум одна проблема точно решена.
Возможные причины у вас надо изучать, может есть что-то еще. Если у вас не работает после этих изменений, то предоставьте пожалуйста инструкцию, по которой можно проблему воссоздать.
*

jouser

  • Захожу иногда
  • 124
  • 9 / 0
Факт. Решение работает. Подтверждено командой VM и добавлено в следующее обновление. Все расписал максимально подробно, поэтому как минимум одна проблема точно решена.
Возможные причины у вас надо изучать, может есть что-то еще. Если у вас не работает после этих изменений, то предоставьте пожалуйста инструкцию, по которой можно проблему воссоздать.
что бы воссоздать проблему надо знать из-за чего она появляется - логично? я к сожалению не знаю  :(
*

pharaoh

  • Захожу иногда
  • 426
  • 53 / 0
Лично я 2 часа тыкал, что понять, как ее воссоздать, о чем и гласил первый пост. Решение уже было найдено потом.
Обычно есть 2 пути: начинать наращивать сайт с нуля до текущего функционала или отключать/удалять текущий функционал по частям. В базовой комплектации с моим фиксом проблем быть не должно.
*

jouser

  • Захожу иногда
  • 124
  • 9 / 0
pharaoh, Можешь посмотреть на неработающее решение (кэш будет жить 23 часа)
http://kid-mag.ru/detskij-transport/elektromobili/results,28-27
*

jouser

  • Захожу иногда
  • 124
  • 9 / 0
кэш пришлось сбросить - веду работы по сайту. думаю еще смогу показать
*

pharaoh

  • Захожу иногда
  • 426
  • 53 / 0
Напиши пожалуйста в скайпе pharaohpk. Скорее всего попрошу бекап.
*

neGODnic

  • Захожу иногда
  • 140
  • 4 / 0
Установил ваш код. весь сайт упал в белый экран.
Не хватает еще одной ковычки в самом конце - }
*

pharaoh

  • Захожу иногда
  • 426
  • 53 / 0
Уточните какой именно код.
Код, указанный мною самодостаточен по открывающим и закрывающим кавычкам. Может вы выделили и заменили кусок больше положенного?
*

jouser

  • Захожу иногда
  • 124
  • 9 / 0
До сих пор решение не работает
Joomla! 2.5.7
VM 2.0.6 -> VM 2.0.14
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

VirtueMart 3 Отображать только товары в наличии!

Автор GaziroFFka

Ответов: 4
Просмотров: 2060
Последний ответ 06.06.2023, 13:55:13
от Akeksandr
SP VirtueMart Category Search

Автор ve1006

Ответов: 10
Просмотров: 5994
Последний ответ 18.01.2023, 10:39:10
от AzMandius
Как вывести модуль в страницу VirtueMart?

Автор harddrop

Ответов: 11
Просмотров: 2838
Последний ответ 13.11.2022, 13:11:37
от Evgen Kulibin
Как правильно настроить покупку в VirtueMart?

Автор varella

Ответов: 1
Просмотров: 1210
Последний ответ 12.10.2022, 16:14:04
от varella
Не могу сохранить порядок категорий в VirtueMart 3.9.8 и 4

Автор Egoritch

Ответов: 0
Просмотров: 1244
Последний ответ 26.05.2022, 12:30:59
от Egoritch