VM 2.x Cherry Picker + FastSeller

Статус
В этой теме нельзя размещать новые ответы.
У меня в Cherry Picker фильтр по цене работает нормально, а вот по типам, созданным при помощи FastSeller фильтровать не хочет. Вручную допиливать ничего не надо? Джумла 2.5 + ВМ 2.0.8
Я типы привязывал через кнопку Assign Filters, выбирал значения параметров для товаров, затем нажимал справа на кнопку Save. Ничего не допиливал. Фильтрует и по типам, и по цене, только работает фильтр исключительно в области шаблона категорий и карточки товара виртумарта. Может быть с этим что-то связано, проверяли?
 
2 alexXXL. Еще в инструкции сказано, что нужно делать хак файла /administrator/components/com_virtuemart/models/product.php, добавлять туда новый код. При этом процесс хака в инструкции для VM 2.0.8 не вполне корректно описан. Например, в 2.0.8 есть логическая проверка if ($app->isSite ()) {, тогда как в листингах в инструкции ее нет. То же здесь можно порыться.
 
При добавлении нового кода сайт полностью вырубается - появляется белый экран. Может потому, что у меня код имеет немного другой вид, чем в инструкции, и я не то комментирую?
В инструкции:
// comment old query
/*
$q = 'SELECT `l`.`virtuemart_product_id`, `l`.`product_name`
FROM `#__virtuemart_products` as `p`
JOIN `#__virtuemart_products_'.VMLANG.'` as `l` using (`virtuemart_product_id`)
JOIN `#__virtuemart_product_categories` as `pc` using (`virtuemart_product_id`)
WHERE `virtuemart_category_id` = '.(int)$product->virtuemart_category_id;
$q .= ' and `slug` '.$op.' "'.$product->slug.'" ' ;
if ($onlyPublished) $q .= ' AND p.`published`= 1';
$q .=' ORDER BY `slug` '.$direction.' LIMIT 0,'.(int)$max;
*/
[/spoil]
У меня в файле:
[spoil]
$q = 'SELECT `l`.`virtuemart_product_id`, `l`.`product_name`
FROM `#__virtuemart_products` as `p`
JOIN `#__virtuemart_products_' . VMLANG . '` as `l` using (`virtuemart_product_id`)
JOIN `#__virtuemart_product_categories` as `pc` using (`virtuemart_product_id`)';
if ($app->isSite ()) {
$q .= ' LEFT JOIN `#__virtuemart_product_shoppergroups` as `psgr` on (`psgr`.`virtuemart_product_id`=`l`.`virtuemart_product_id`)';
}

$q .= ' WHERE `virtuemart_category_id` = ' . (int)$product->virtuemart_category_id;
$q .= ' and `slug` ' . $op . ' "' . $product->slug . '" ';
if ($app->isSite ()) {

if (is_array ($virtuemart_shoppergroup_ids)) {
$sgrgroups = array();
foreach ($virtuemart_shoppergroup_ids as $key => $virtuemart_shoppergroup_id) {
$sgrgroups[] = 'psgr.`virtuemart_shoppergroup_id`= "' . (int)$virtuemart_shoppergroup_id . '" ';
}
$sgrgroups[] = 'psgr.`virtuemart_shoppergroup_id` IS NULL ';
$q .= " AND ( " . implode (' OR ', $sgrgroups). " ) ";
}
}
// $q .= ' AND (`psgr`.`virtuemart_shoppergroup_id` IS NULL OR `psgr`.`virtuemart_shoppergroup_id`= "'..'" ';
if ($onlyPublished) {
$q .= ' AND p.`published`= 1';
}
$q .= ' ORDER BY `slug` ' . $direction . ' LIMIT 0,' . (int)$max;
Подскажите, как исправить, пожалуйста.
 
При добавлении нового кода сайт полностью вырубается - появляется белый экран. Может потому, что у меня код имеет немного другой вид, чем в инструкции, и я не то комментирую?
В инструкции:
// comment old query
/*
$q = 'SELECT `l`.`virtuemart_product_id`, `l`.`product_name`
FROM `#__virtuemart_products` as `p`
JOIN `#__virtuemart_products_'.VMLANG.'` as `l` using (`virtuemart_product_id`)
JOIN `#__virtuemart_product_categories` as `pc` using (`virtuemart_product_id`)
WHERE `virtuemart_category_id` = '.(int)$product->virtuemart_category_id;
$q .= ' and `slug` '.$op.' "'.$product->slug.'" ' ;
if ($onlyPublished) $q .= ' AND p.`published`= 1';
$q .=' ORDER BY `slug` '.$direction.' LIMIT 0,'.(int)$max;
*/
[/spoil]
У меня в файле:
[spoil]
$q = 'SELECT `l`.`virtuemart_product_id`, `l`.`product_name`
FROM `#__virtuemart_products` as `p`
JOIN `#__virtuemart_products_' . VMLANG . '` as `l` using (`virtuemart_product_id`)
JOIN `#__virtuemart_product_categories` as `pc` using (`virtuemart_product_id`)';
if ($app->isSite ()) {
$q .= ' LEFT JOIN `#__virtuemart_product_shoppergroups` as `psgr` on (`psgr`.`virtuemart_product_id`=`l`.`virtuemart_product_id`)';
}

$q .= ' WHERE `virtuemart_category_id` = ' . (int)$product->virtuemart_category_id;
$q .= ' and `slug` ' . $op . ' "' . $product->slug . '" ';
if ($app->isSite ()) {

if (is_array ($virtuemart_shoppergroup_ids)) {
$sgrgroups = array();
foreach ($virtuemart_shoppergroup_ids as $key => $virtuemart_shoppergroup_id) {
$sgrgroups[] = 'psgr.`virtuemart_shoppergroup_id`= "' . (int)$virtuemart_shoppergroup_id . '" ';
}
$sgrgroups[] = 'psgr.`virtuemart_shoppergroup_id` IS NULL ';
$q .= " AND ( " . implode (' OR ', $sgrgroups). " ) ";
}
}
// $q .= ' AND (`psgr`.`virtuemart_shoppergroup_id` IS NULL OR `psgr`.`virtuemart_shoppergroup_id`= "'..'" ';
if ($onlyPublished) {
$q .= ' AND p.`published`= 1';
}
$q .= ' ORDER BY `slug` ' . $direction . ' LIMIT 0,' . (int)$max;
Подскажите, как исправить, пожалуйста.
Я вносил изменения в product.php от VM 2.0.8 частично по инструкции (хотя она и не совсем точная), белых экранов нет, фильтр работает только на странице со списком категорий, а также при просмотре детального описания товара. Может быть поможет (см.прикрепленный файл). Советую сделать резервную копию исходного файла product.php, а потом экспериментировать с переделанным мною. Советую включить отображение ошибок php (раз белый экран, значит есть какие-то ошибки в коде), либо сделать отладку через функцию fprintf (запись содержимого переменных в файл на сервере).
 

Вложения

  • product.zip
    17,1 KB · Просмотры: 63
Заменил свой файл вашим, но ничего не изменилось: по цене фильтрует, по меткам не хочет. Внизу модуля пишет "Всего продуктов: 5", а показывает все продукты магазина.
 
Заменил свой файл вашим, но ничего не изменилось: по цене фильтрует, по меткам не хочет. Внизу модуля пишет "Всего продуктов: 5", а показывает все продукты магазина.
Старый верный способ:
1. Ставим чистую джумлу/виртмарт с оф сайта
2. Заливаем ВРУЧНУЮ штук 5 товаров
3. Вручную (без csv ипрувтов) делаем свойства и расставляем на товар
4. Ставим чери открываем мануал и проходимся по всем параметрам.
5. Получаем результат и делаем вывод: криворукость, невнимательность, или жудкий баг (хотя у всех все работает)
Никаких левых шаблонов или компонентов больше не ставим!!! Тест только на чистом движке!!!!1111111
 
to: Васька Пупенцов. Расшифруй, что значит "только работает фильтр исключительно в области шаблона категорий и карточки товара виртумарта."?
У меня модуль отображается, только если в настройках поставить "Привязка модуля - на всех страницах". Пытался сделать отдельное меню "категория магазина" и привязать модуль только к нему - не отображается. Может быть в этом проблема... Сейчас попробую СЕО-ссылки отключить, авось поможет.

Старый верный способ:
1. Ставим чистую джумлу/виртмарт с оф сайта
2. Заливаем ВРУЧНУЮ штук 5 товаров
3. Вручную (без csv ипрувтов) делаем свойства и расставляем на товар
4. Ставим чери открываем мануал и проходимся по всем параметрам.
5. Получаем результат и делаем вывод: криворукость, невнимательность, или жудкий баг (хотя у всех все работает)
Никаких левых шаблонов или компонентов больше не ставим!!! Тест только на чистом движке!!!!1111111
Ок. завтра попробую
 
to: Васька Пупенцов. Расшифруй, что значит "только работает фильтр исключительно в области шаблона категорий и карточки товара виртумарта."?
У меня модуль отображается, только если в настройках поставить "Привязка модуля - на всех страницах". Пытался сделать отдельное меню "категория магазина" и привязать модуль только к нему - не отображается. Может быть в этом проблема... Сейчас попробую СЕО-ссылки отключить, авось поможет.


Ок. завтра попробую
С этим модулем все гораздо хуже, чем я описал. Работает он только внутри конкретной категории, а не на главной странице компонента virtuemart, на которой отображается список категорий. Т.е. фильтр будет отображаться только если пользователь зашел в конкретную категорию. Включение/отключение ЧПУ не поможет, в коде скрипта mod_vm_cherry_picker.php есть условие проверки текущего представления: if ( (!($view != 'category' && !$displayonflypage) || !empty($url_ptid)) || (!($view == 'productdetails' && !$displayonflypage) && $custom_ptid) ) {... Т.е. модуль отображается только в шаблоне категории и шаблоне детального описания товара.

Заменил свой файл вашим, но ничего не изменилось: по цене фильтрует, по меткам не хочет. Внизу модуля пишет "Всего продуктов: 5", а показывает все продукты магазина.
Списки меток открываются с помощью javascript. Может быть проблема в этом, точнее в последовательности загрузки javascript библиотек jquery и mootools. Если mootools вызвать перед jquery, то потом даже noConflict() с некоторыми скриптами не помогает. Под J1.5 сделал для этих целей системный плагин, который сортирует загрузку внешних библиотек в заданном порядке, буду его адаптировать под J2.5, потому что лично мне mootools не удобен и не нужен, но он используется joomla для каких-то своих фишек.
 
С этим модулем все гораздо хуже, чем я описал. Работает он только внутри конкретной категории, а не на главной странице компонента virtuemart, на которой отображается список категорий. Т.е. фильтр будет отображаться только если пользователь зашел в конкретную категорию. Включение/отключение ЧПУ не поможет, в коде скрипта mod_vm_cherry_picker.php есть условие проверки текущего представления: if ( (!($view != 'category' && !$displayonflypage) || !empty($url_ptid)) || (!($view == 'productdetails' && !$displayonflypage) && $custom_ptid) ) {... Т.е. модуль отображается только в шаблоне категории и шаблоне детального описания товара.
Именно так и сделан модуль, и все правильно.
А если хочешь чтобы фильтр был на всех страницах, то юзай виртмарт юниверсал серч (под вторую версию помоему правда нету, или еще не выложили) , но под 1.1.* он отображается везде и и можно выбрать тип товара и потом раскрываются на аяксе параметры типа.
Чери тоже можно сделать везде чтобы отображался, только в нем нету выбора типа товара
 
Именно так и сделан модуль, и все правильно.
А если хочешь чтобы фильтр был на всех страницах, то юзай виртмарт юниверсал серч (под вторую версию помоему правда нету, или еще не выложили) , но под 1.1.* он отображается везде и и можно выбрать тип товара и потом раскрываются на аяксе параметры типа.
Чери тоже можно сделать везде чтобы отображался, только в нем нету выбора типа товара
ИМХО: Я этот фильтр юниверсал еще в прошлом году купил. Замучился выявлять баги этого кривого кода через nuspher phped. В итоге более менее наладил его работу, но некоторые глюки все еще проявляются на всех переданных в штатную эксплуатацию сайтах - руки уже не доходят ловить эти баги. Черри работает стабильнее. Но я очень хочу попробовать Custom Filter. Он ищет прямо по кастомным свойствам VM2, что намного удобнее. Надеюсь, что в отличие от черри он также фильтрует товары по категориям и производителям (брендам).
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху