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

arturk

  • Захожу иногда
  • 105
  • 11 / 2
спасибо neogeek все работает!
Joomla 3.4.4 VM 3.0.10
*

Eholov

  • Захожу иногда
  • 170
  • 14 / 0
Спасибо  neogeek! Работает.
только я не этот
Код
if ($virtuemart_category_id > 0) {
$joinCategory = TRUE;
$where[] = ' `pc`.`virtuemart_category_id` = ' . $virtuemart_category_id;
} else if ($isSite) {



а такой
Код
if ($virtuemart_category_id > 0) {
$joinCategory = TRUE;
if(true){
$where[] = ' `pc`.`virtuemart_category_id` = ' . $virtuemart_category_id;
} else {
/*GJC add subcat products*/
$catmodel = VmModel::getModel ('category');
$childcats = $catmodel->getChildCategoryList(1, $virtuemart_category_id,null, null, true);
$cats = $virtuemart_category_id;
foreach($childcats as $childcat){
$cats .= ','.$childcat->virtuemart_category_id;
}
$joinCategory = TRUE;
$where[] = ' `pc`.`virtuemart_category_id` IN ('.$cats.') ';
}
} else if ($isSite) {

код менял на указанный.
*

alanbus

  • Захожу иногда
  • 214
  • 0 / 0
А кто знает, как быть с тем, как формируется выдача на странице при выводе товаров из подкатегорий?

У меня такая структура страницы выходит..

Сперва идет заголовок h1 Товары
Потом список товаров
Потом снова этот же h1
Под ним список подкатегорий

Получается не очень хорошо -  два дублирующих заголовка h1 на 1 странице (с одним текстом)..

Использовал код, который выложил art-apple
« Последнее редактирование: 08.04.2016, 18:56:08 от alanbus »
*

SolopoV

  • Давно я тут
  • 552
  • 15 / 0
  • зеленею...
Этот хак у меня не заработал...
« Последнее редактирование: 22.04.2016, 08:05:14 от SolopoV »
*

crashwork

  • Новичок
  • 1
  • 0 / 0
Спасибо  neogeek! Работает.
только я не этот
Код
if ($virtuemart_category_id > 0) {
$joinCategory = TRUE;
$where[] = ' `pc`.`virtuemart_category_id` = ' . $virtuemart_category_id;
} else if ($isSite) {



а такой
Код
if ($virtuemart_category_id > 0) {
$joinCategory = TRUE;
if(true){
$where[] = ' `pc`.`virtuemart_category_id` = ' . $virtuemart_category_id;
} else {
/*GJC add subcat products*/
$catmodel = VmModel::getModel ('category');
$childcats = $catmodel->getChildCategoryList(1, $virtuemart_category_id,null, null, true);
$cats = $virtuemart_category_id;
foreach($childcats as $childcat){
$cats .= ','.$childcat->virtuemart_category_id;
}
$joinCategory = TRUE;
$where[] = ' `pc`.`virtuemart_category_id` IN ('.$cats.') ';
}
} else if ($isSite) {

код менял на указанный.

В этом случае походу вообще не нужны такие хаки. Самому вот понадобилось вывести товары из подкатегорий в VirtueMart 3.0.16.
Достаточно просто в этом месте:

Код
if ($virtuemart_category_id > 0) {
$joinCategory = TRUE;
if(true){
$where[] = ' `pc`.`virtuemart_category_id` = ' . $virtuemart_category_id;
} else {
/*GJC add subcat products*/
$catmodel = VmModel::getModel ('category');
$childcats = $catmodel->getChildCategoryList(1, $virtuemart_category_id,null, null, true);
$cats = $virtuemart_category_id;
foreach($childcats as $childcat){
$cats .= ','.$childcat->virtuemart_category_id;
}
$joinCategory = TRUE;
$where[] = ' `pc`.`virtuemart_category_id` IN ('.$cats.') ';
}

в операторе "if(true)" true заменить на false или !true, чтобы условие пошло по другой ветке. Там же комментарий самого разработчика присутствует: "/*GJC add subcat products*/"
*

nataliP

  • Осваиваюсь на форуме
  • 10
  • 0 / 0
А как сделать, чтобы товары из подкатегории выводились не общим списком с товарами в категории, а например, ниже в отдельном блоке?
*

hels

  • Захожу иногда
  • 200
  • 0 / 0
в операторе "if(true)" true заменить на false или !true, чтобы условие пошло по другой ветке. Там же комментарий самого разработчика присутствует: "/*GJC add subcat products*/"
самый лучший вариант, а то я вначале начал сам колупать, потом искать хаки, коммент разработчика увидел и тоже подумал что возможно эта фишка уже сделана, но в админке чекбокса не нашел, а оказывается всетаки в коде надо добавить "!" :D
*

prezident

  • Осваиваюсь на форуме
  • 25
  • 0 / 0
Способ crashwork работает только если один уровень вложенности категорий.

Способ neogeek "вытягивает" товары из подкатегорий всех уровней вложенности.
*

hels

  • Захожу иногда
  • 200
  • 0 / 0
сделал как в моем предыдущем посту, только сейчас обнаружил что не работает фильтр по производителю, кто-то сталкивался? (только в конечной подкатегории он работает, а дальше нет.. просто выводится фраза "фильтр по производителю" глянул черед FireBug скрытого списка производителей там нет..)
*

hels

  • Захожу иногда
  • 200
  • 0 / 0
В этом случае походу вообще не нужны такие хаки. Самому вот понадобилось вывести товары из подкатегорий в VirtueMart 3.0.16.
Достаточно просто в этом месте:

Код
if ($virtuemart_category_id > 0) {
$joinCategory = TRUE;
if(true){
$where[] = ' `pc`.`virtuemart_category_id` = ' . $virtuemart_category_id;
} else {
/*GJC add subcat products*/
$catmodel = VmModel::getModel ('category');
$childcats = $catmodel->getChildCategoryList(1, $virtuemart_category_id,null, null, true);
$cats = $virtuemart_category_id;
foreach($childcats as $childcat){
$cats .= ','.$childcat->virtuemart_category_id;
}
$joinCategory = TRUE;
$where[] = ' `pc`.`virtuemart_category_id` IN ('.$cats.') ';
}

в операторе "if(true)" true заменить на false или !true, чтобы условие пошло по другой ветке. Там же комментарий самого разработчика присутствует: "/*GJC add subcat products*/"

если так сделать товары из подкатегорий выводятся в категориях, но не работает фильтр по производителю кто-то сталкивался?
*

6307007

  • Новичок
  • 2
  • 0 / 0
Ребят, а как можно модифицировать данный вывод и вывести по такому принципу

Название подкатегории
     Товар
     Товар
     Товар
     Товар

То есть например выводится

Спойлер
[свернуть]
Добрый день! Может кто нашел решение этой задачи. Мне также очень нужно, уже 2 месяца пытаюсь найти способ.
Только необходимо сделать вывод подкатегорий третьего уровня во второй, например:
Крепеж
- Анкерный крепеж
И при переходе в анкерный крепеж на странице отображалось :
 Анкер с кольцом
товар
товар
товар
 Анкер с гайкой
товар
товар
товар   и так далее
VirtueMart 2, Joomla 2.5
*

altayr

  • Новичок
  • 5
  • 1 / 0
начал читать сначала топика , изучил коды, нашел файлы, строки в коде и...
увидел что там передается условие в зависимости от некоего параметра, стал искать в настройках Virtuemart-a и оказалось все очень просто, не надо ничего программировать:
  • идем в меню и меняем галочку:

    VirtueMart -> Конфигурация -> Закладка "Внешний вид"
  • ищем поля
    "Show products of subcategories"
    "Показывает родительские товары без категорий в результате поиска и модулях"
  • ставим на них галочки.
  • Наслаждаемся.

« Последнее редактирование: 30.03.2018, 09:18:33 от altayr »
*

andrey222

  • Захожу иногда
  • 64
  • 0 / 1
altayr, вы упростили жизнь лишь тем, кто хочет видеть весь список товаров дочерних категорий в одном столбце.

А если нужно сделать, как хочет 6307007 и kira - этот метод не подходит. Как и все вышеуказанные хаки.

Мне тоже нужно, чтобы для каждой подкатегории товары выводились отдельными блоками, чтобы было сначало название данной подкатегории, а потом его товары. И всё на странице родительской категории.

Но ещё более важно, чтобы всё это быстро загружалось. А то даже вывод всех товаров дочерних категорий в одну колонку выдаёт очень долгую загрузку.
*

bren

  • Осваиваюсь на форуме
  • 11
  • 0 / 0
Решение для Joomla 3.4.1 + VirtueMart 3.0.6.4 аналогичное, даже короче немного.
Достаточно:
открыть -  /administrator/components/com_virtuemart/models/product.php
найти
Код
class VirtueMartModelProduct extends VmModel {
после этой строки добавить

Спасибо Большое. Решение работает от 2 до 3 версии Virtruemart.
*

bren

  • Осваиваюсь на форуме
  • 11
  • 0 / 0
altayr, вы упростили жизнь лишь тем, кто хочет видеть весь список товаров дочерних категорий в одном столбце.

А если нужно сделать, как хочет 6307007 и kira - этот метод не подходит. Как и все вышеуказанные хаки.

Мне тоже нужно, чтобы для каждой подкатегории товары выводились отдельными блоками, чтобы было сначало название данной подкатегории, а потом его товары. И всё на странице родительской категории.

Но ещё более важно, чтобы всё это быстро загружалось. А то даже вывод всех товаров дочерних категорий в одну колонку выдаёт очень долгую загрузку.
Тема создана было по другому, Вывести товары из подкатегории в категорию. Это и сделали, а то что вам нужно в другой теме, решение вопроса тоже есть.
*

Akeksandr

  • Захожу иногда
  • 283
  • 8 / 0
если так сделать товары из подкатегорий выводятся в категориях, но не работает фильтр по производителю кто-то сталкивался?
Решили вопрос по сортировке по Производителю? Тоже актуально. Работает только непосредственно в подкатегории с товаром.
*

andrey222

  • Захожу иногда
  • 64
  • 0 / 1
Тема создана было по другому, Вывести товары из подкатегории в категорию. Это и сделали, а то что вам нужно в другой теме, решение вопроса тоже есть.
подскажите, пожалуйста, ссылка на эту тему.
*

kreker92

  • Захожу иногда
  • 394
  • 18 / 0
Для VirtueMart 3.8.4

В настройках VirtueMart Настройки->Внешний вид. Ставим галочку "Показать продукты подкатегорий".
Это покажет товары из прямого потомка.

Чтобы показать товары из всех дальних потомков нужно править код.
Узнаём, что где ставили галочку имя настройки называется show_subcat_products.
Находим его здесь: administrator/components/com_virtuemart/models/product.php
Сделали мы это через команду в терминале (нужен терминал и SSH доступ) fgrep -lr show_subcat_products administrator/components/com_virtuemart

В файле находим строку:
Код
if(VmConfig::get('show_subcat_products',false)){

И правим код с вот этого:
Код
if(VmConfig::get('show_subcat_products',false)){
        /*GJC add subcat products*/
        $catmodel = VmModel::getModel ('category');
        $childcats = $catmodel->getChildCategoryList(1, $virtuemart_category_id,null, null, true);
        $cats = $virtuemart_category_id;
        foreach($childcats as $childcat){
                $cats .= ','.$childcat->virtuemart_category_id;
        }       
        $joinCategory = TRUE;
        $where[] = ' `pc`.`virtuemart_category_id` IN ('.$cats.') ';
} else {
        $where[] = ' `pc`.`virtuemart_category_id` = ' . $virtuemart_category_id;
}
На этот:
Код
if(VmConfig::get('show_subcat_products',false)){
        /*GJC add subcat products*/
        $catmodel = VmModel::getModel ('category');
        $childcats = $catmodel->getChildCategoryList(1, $virtuemart_category_id,null, null, true);
        $cats = $virtuemart_category_id;
        foreach($childcats as $childcat){
                $cats .= ','.$childcat->virtuemart_category_id;
        }       
        while(count($childcats) > 0) {
                $newchildcats = [];
                foreach($childcats as $childcat){
                        $newchildcats = array_merge($newchildcats, $catmodel->getChildCategoryList(1, $childcat->virtuemart_category_id,null, null, true));
                }       
                foreach($newchildcats as $childcat){
                        $cats .= ','.$childcat->virtuemart_category_id;
                }       
                $childcats = $newchildcats;
        }       
        $joinCategory = TRUE;
        $where[] = ' `pc`.`virtuemart_category_id` IN ('.$cats.') ';
} else {
        $where[] = ' `pc`.`virtuemart_category_id` = ' . $virtuemart_category_id;
}

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

kisBoss

  • Захожу иногда
  • 449
  • 36 / 0
  • ник Tobol
Почему-то у меня не работает данный хак на последней версии компонента. Выдает 404 ошибку.
P.S. Сделал при помощи kreker92. Поменял чуть большую часть кода на
Код
     if ($this->product_parent_id) {
         $where[] = ' p.`product_parent_id` = ' . $this->product_parent_id;
         $virtuemart_category_id = false;
      }
      if (!empty($virtuemart_category_id )){
if( is_array($virtuemart_category_id)) {
$virtuemart_category_id = array_filter($virtuemart_category_id);
} else {
$virtuemart_category_id = array($virtuemart_category_id);
}
}
  if (!empty($virtuemart_category_id ))
      if ($virtuemart_category_id > 0) {
         $joinCategory = TRUE;
         if(VmConfig::get('show_subcat_products',false)){
            /*GJC add subcat products*/
           $catmodel = VmModel::getModel ('category');
$cats = '';
foreach($virtuemart_category_id as $catId){
$childcats = $catmodel->getChildCategoryList(1, $catId,null, null, true);
foreach($childcats as $k=>$childcat){
if(!empty($childcat->virtuemart_category_id)){
$cats .= $childcat->virtuemart_category_id .',';
}
}
$cats .= $catId;
}
            while(count($childcats) > 0) {
               $newchildcats = [];
               foreach($childcats as $childcat){
                  $newchildcats = array_merge($newchildcats, $catmodel->getChildCategoryList(1, $childcat->virtuemart_category_id,null, null, true));
               }
               foreach($newchildcats as $childcat){
                  $cats .= ','.$childcat->virtuemart_category_id;
               }
               $childcats = $newchildcats;
            }

            $joinCategory = TRUE;
            $where[] = ' `pc`.`virtuemart_category_id` IN ('.$cats.') ';
         } else {
            $where[] = ' `pc`.`virtuemart_category_id` = ' . $virtuemart_category_id;
         }
« Последнее редактирование: 10.03.2021, 21:02:46 от kisBoss »
Если помог - поставте "плюс". Вам ничего не стоит, а мне приятно.
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

mod_virtuemart_product - как скрыть товары, которых нет в наличии?

Автор alexfom_16

Ответов: 40
Просмотров: 2864
Последний ответ 11.10.2021, 17:50:38
от hmr
Приоритетный Itemid для формирования ссылок на товары/категории

Автор rsn

Ответов: 2
Просмотров: 285
Последний ответ 10.03.2020, 08:21:45
от rsn
Вывести изображения товара в центре

Автор ROMERO

Ответов: 2
Просмотров: 376
Последний ответ 08.06.2019, 16:12:49
от draff
Модуль VirtuMart Товары. Вывод товаров с определенным настраиваемым полем

Автор rsn

Ответов: 0
Просмотров: 404
Последний ответ 27.04.2019, 09:33:16
от rsn
Добавить php форму товары из категории

Автор warlocksp

Ответов: 0
Просмотров: 405
Последний ответ 04.03.2019, 09:23:27
от warlocksp