Новости Joomla

Вышли релизы безопасности Joomla 5.3.4 и Joomla 4.4.14

Релиз безопасности Joomla 5.3.4

Проект Joomla спешит сообщить о выпуске Joomla 5.3.4 и Joomla 4.4.14. Это релиз безопасности для серии Joomla 5.3 и релиз безопасности для серии Joomla 4.4.

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

SorokinS

  • Захожу иногда
  • 165
  • 12 / 1
Решаю задачу по доработке модуля Катагории, нужно добавить вывод иконок категорий, указанных в админке.

Присоединяйтесь.

Пока иду по образу модуля Производители.
« Последнее редактирование: 10.07.2012, 19:21:17 от SorokinS »
*

SorokinS

  • Захожу иногда
  • 165
  • 12 / 1
Re: Модуль категорий с картинками
« Ответ #1 : 28.05.2012, 18:32:45 »
Кароче нашел модуль: "Phoca VirtueMart Category Module" http://www.phoca.cz/download/category/63-phoca-virtuemart-category-module
*

SorokinS

  • Захожу иногда
  • 165
  • 12 / 1
Хочу доработать этот модуль чтобы выводил кол-во товаров и показывал категории если в них есть товары.

Эх
*

SorokinS

  • Захожу иногда
  • 165
  • 12 / 1
Тут есть интересные мысли по поводу:
Код
$catModel = VmModel::getModel('category');
$catModel->countProducts( $category->virtuemart_category_id );

http://forum.virtuemart.net/index.php?topic=96853.0

Но пока не сображу как это использовать.
*

Tuzemec

  • Захожу иногда
  • 246
  • 28 / 0
  • Ня!
Хочу доработать этот модуль чтобы выводил кол-во товаров и показывал категории если в них есть товары.
Ну для вывода количества нужно запрос типа такого вписать
Код
foreach ($category->childs as $child) {
   $db = JFactory::getDBO();
   $q="SELECT virtuemart_product_id FROM #__virtuemart_product_categories WHERE virtuemart_category_id = ".$child->virtuemart_category_id.";
   $db->setQuery( $q );
   $prod = $db->loadObjectList();
   $i=0;
      foreach ($prod as $result){
          if (isset($result)) {$i++;}
      }
echo $i;
А чтоб скрыть категории где нет товаров, нужно от переменной $i плясать со стилями, типа:
Код
if ($i>0) { echo '<div class="category">Имя категории или какой код</div>';}
else{echo '<div class="category" style="display:none;">Имя категории или какой код</div>';}

Мне только такая идея решения в голову пришла...

Хотя можно еще код оптимизировать... убрать второй перебор массива и просто использовать количество записей в массиве
« Последнее редактирование: 29.05.2012, 09:17:48 от Tuzemec »
Каждый ваш клик помогает заработать сыну на конфеты
Не дайте ребенку остаться без сладкого! Сделай ТЫЦ!
*

olejenya

  • Захожу иногда
  • 218
  • 3 / 0
А можно подробнее?Что куда вставить.Тоже хочу вывести счетчик товаров в этом модуле,но пока что не получилось.И еще интересует такая штука,в этом модуле есть условия насчет колонок.Так вот нельзя что бы категории подряд распределялись в колонки?Например 15 категорий - 3 колонки.И вот первых 5 категорий это 1 колонка и тд. подскажите пожалуйста.
*

SorokinS

  • Захожу иногда
  • 165
  • 12 / 1
Возвращаюсь к этому модулю.

Есть один косяк.

Я сделал скрытие категорий которые пустые...
Но!
У меня есть категории и подкатегории. А товар находится в подкатегориях, соответственно категория-родитель не публикуется:(

Нада смотреть наличие товара в категории и в подкатегориях.

*

SorokinS

  • Захожу иногда
  • 165
  • 12 / 1
Ну для вывода количества нужно запрос типа такого вписать
Код
foreach ($category->childs as $child) {
   $db = JFactory::getDBO();
   $q="SELECT virtuemart_product_id FROM #__virtuemart_product_categories WHERE virtuemart_category_id = ".$child->virtuemart_category_id.";
   $db->setQuery( $q );
   $prod = $db->loadObjectList();
   $i=0;
      foreach ($prod as $result){
          if (isset($result)) {$i++;}
      }
echo $i;
А чтоб скрыть категории где нет товаров, нужно от переменной $i плясать со стилями, типа:
Код
if ($i>0) { echo '<div class="category">Имя категории или какой код</div>';}
else{echo '<div class="category" style="display:none;">Имя категории или какой код</div>';}

Мне только такая идея решения в голову пришла...

Хотя можно еще код оптимизировать... убрать второй перебор массива и просто использовать количество записей в массиве

Думаю стилями играть вариант не очень.

Мой вариант. Рабочий.
Запрос:
Код
$q = 'SELECT count(j_virtuemart_products.virtuemart_product_id) AS total
FROM `j_virtuemart_products`, `j_virtuemart_product_categories`
WHERE `j_virtuemart_products`.`virtuemart_vendor_id` = "1"
AND `j_virtuemart_product_categories`.`virtuemart_category_id` = '.(int)$cat_id.'
AND `j_virtuemart_products`.`virtuemart_product_id` = `j_virtuemart_product_categories`.`virtuemart_product_id`
AND `j_virtuemart_products`.`published` = "1" ';
$db->setQuery($q);
$count = $db->loadResult();
Проверка на вывод:
Код
if ($count >0){ echo '<div class="pvmc-submenu-img">'.$img.'</div>';}

Запрос не считает кол-во товаров во вложенных категориях.
*

Tuzemec

  • Захожу иногда
  • 246
  • 28 / 0
  • Ня!
Думаю стилями играть вариант не очень.
Ну почему же? Самый нормальный вариант! При индексе страниц  не будут исключаться категории с отсутствующим товаром + дополнительные метатеги для поиска. Как следствие посещений больше. Ну уж если не нравится такой расклад, то достаточно просто отключить публикацию категории с отсутствующим товаром и не париться вообще. Админить лучше в таком случае нужно. =) Хотя конечно, хороший программист - это ленивый программист... но это только хороший... а не лучший, отличный или ас.
Каждый ваш клик помогает заработать сыну на конфеты
Не дайте ребенку остаться без сладкого! Сделай ТЫЦ!
*

SorokinS

  • Захожу иногда
  • 165
  • 12 / 1
if ($count == 0) {
           foreach ($category->childs as $child) {
               if (countProducts($child->virtuemart_category_id) > 0) {
             $visible = true;
               }   
           }
       }
       else {
           $visible = true;
       }

Это позволяет определить пустоту подкатегорий.

Думаю как использовать.
*

olejenya

  • Захожу иногда
  • 218
  • 3 / 0
кто нить разобрался?прикрепите готово решение))
*

olejenya

  • Захожу иногда
  • 218
  • 3 / 0
кто нить разобрался?прикрепите готово решение))
Ну да а что это я))Все же выше написано что и куда и как)))Я не скрывал пустую категорию.Но в подкатегориях выводит суму продуктов,мне так удобней)
*

Pashtetdiz

  • Захожу иногда
  • 175
  • 4 / 0
Ну да а что это я))Все же выше написано что и куда и как)))Я не скрывал пустую категорию.Но в подкатегориях выводит суму продуктов,мне так удобней)
Но хоть про сумму объясни для приземленных, что, а главное куда эти выше написанные мысли вставить)))
*

olejenya

  • Захожу иногда
  • 218
  • 3 / 0
Но хоть про сумму объясни для приземленных, что, а главное куда эти выше написанные мысли вставить)))

function countProductsSF($cat_id=0, $categoryModel) {

$db = JFactory::getDBO();
$vendorId = 1;
if ($cat_id > 0) {
$q = 'SELECT count(#__virtuemart_products.virtuemart_product_id) AS total
FROM `#__virtuemart_products`, `#__virtuemart_product_categories`
WHERE `#__virtuemart_products`.`virtuemart_vendor_id` = "'.(int)$vendorId.'"
AND `#__virtuemart_product_categories`.`virtuemart_category_id` = '.(int)$cat_id.'
AND `#__virtuemart_products`.`virtuemart_product_id` = `#__virtuemart_product_categories`.`virtuemart_product_id`
AND `#__virtuemart_products`.`published` = "1" ';
$db->setQuery($q);
$count = $db->loadResult();
/* --- */
$childCats    = $categoryModel->getChildCategoryList($vendorId, $cat_id);
if (isset($childCats) && !empty($childCats)) {
   foreach ($childCats as $child) {
      $count = $count + countProductsSF($child->virtuemart_category_id, $categoryModel);
   }
}
            
} else $count=0 ;

return $count;
}

function VmCategoryFish ($category_id, $active_category_id, $vendorId, $cache, $categoryModel, $p) {
   
   static $level       = 0;
   static $columns    = 0;// == $submenu
   static $parentmenu   = 0;
   
   $categories         = $cache->call( array( 'VirtueMartModelCategory', 'getChildCategoryList' ),$vendorId, $category_id );
   $categories       = $categoryModel->getChildCategoryList($vendorId, $category_id);
   $parentCategories    = $categoryModel->getCategoryRecurse($active_category_id,0);
   
   if ($p['allcategories'] == 1 && $level == 0) {
      $categories = array();
      $categories[0]->virtuemart_category_id = '0';
      $categories[0]->category_name = JText::_('MOD_PHOCA_VM_CATEGORY_ALL_CATEGORIES');
      $categories[0]->category_description = JText::_('MOD_PHOCA_VM_CATEGORY_ALL_CATEGORIES');
      $categories[0]->metadesc = '';
      $categories[0]->metakey = '';
      $categories[0]->slug = '';
      $categories[0]->virtuemart_media_id = array();
      $parentmenu++;
   }
   
   if (!empty($categories)) {
      
      $ulA          = '';
      $submenustyle    = '';
      $active       = '';
      
      if ( $active_category_id <> 0 && ($active_category_id == $category_id || in_array($category_id, $parentCategories)) ) {
         $active = ' active';
      }
         
      if ($level == 0) {
         $ulA = ' id="dropdown" class="sf-menu"';
      } else if ($level == 1){
         if ($p['submenustyle'] != '') {
            $submenustyle = $p['submenustyle'];
         }
         $ulA = ' class="level'.$level.$active.' child" style="'.strip_tags($submenustyle).'"';
      } else {
         $ulA = ' class="level'.$level.$active.' child"';
      }
      
      echo "\n\n";
      echo  '<ul'.$ulA.'>'."\n";
      
      foreach ($categories as $c) {

         $childCats    = $cache->call( array( 'VirtueMartModelCategory', 'getChildCategoryList' ),$vendorId, $c->virtuemart_category_id );
         $childCats    = $categoryModel->getChildCategoryList($vendorId, $c->virtuemart_category_id);
         $url       = JRoute::_('index.php?option=com_virtuemart&view=category&virtuemart_category_id='.$c->virtuemart_category_id);
         $count       = countProductsSF($c->virtuemart_category_id, $categoryModel);
         if ($p['countproducts'] == 1) {
         $counthtml  = '<i>('.$count.')</i>';
         }
         $parent       = '';
         $drop          = '';
         $columnstyle    = '';
         $active       = '';
         $span           = '';
            
         if (isset($childCats) && !empty($childCats)) {
            $parent = ' parent';
            $drop   = ' class="drop"';
            $span   = ' <span class="VmArrowdown"></span>';
            // Only design issue - no submenu, no style
            if ((int)$p['countlevels'] == 1) {
               $parent = '';
               $drop   = '';
               $span = '';
            }
            
         }
         if ( $active_category_id <> 0 && ($active_category_id == $c->virtuemart_category_id || in_array($c->virtuemart_category_id, $parentCategories)) ) {
            $active = ' active';
         }
         if ($level >= 0) {
            $categoryModel->addImages($c);
               if (isset($c->images[0]->file_url_thumb) && $c->images[0]->file_url_thumb != '') {
                  $img = JURI::base(true).'/'.$c->images[0]->file_url_thumb;
               }
            $parentmenu++;
            echo  '<li class="level'.$level.''.$parent.''.$active.'"><a class="screenshot" '.$drop.' href="'.$url.'" rel="'.$img.'">'.$c->category_name.$counthtml.'</a>' ."\n";
         } else {
            echo  '<li class="level'.$level.''.$parent.''.$active.'"><a class="screenshot"  href="'.$url.'" rel="'.$img.'">'.$c->category_name.$counthtml.'</a>'."\n";
         }
         
         if ($level >= 0) {
         
            $columns++;
            
            if ($p['enablethumbs'] == 1) { ?>
            
            <?php
            
               $categoryModel->addImages($c);
               if (isset($c->images[0]->file_url_thumb) && $c->images[0]->file_url_thumb != '') {
                  $img = '<img alt="" src="'.JURI::base(true).'/'.$c->images[0]->file_url_thumb.'" />';
                  echo '<div class="tiptip">
                  '.$img.'</div>';
                  
               }
            }
         }
         echo   $span ;
         if (isset($childCats) && !empty($childCats)) {
            $level++;
            
            if ((int)$p['countlevels'] == (int)$level) {
               $level--;
            } else {
               VmCategoryFish($c->virtuemart_category_id, $active_category_id, $vendorId, $cache, $categoryModel, $p);
               $level--;
            }
         }
         echo  '</li>'."\n";
      }
      echo  '</ul>'."\n\n";
   }
}

VmCategoryFish ($category_id, $active_category_id, $vendorId, $cache, $categoryModel, $p);
echo '';

выдергивай, я просто поудалл кое что лишнее.Если совсем туго, то позже напишу
*

Pashtetdiz

  • Захожу иногда
  • 175
  • 4 / 0
Спасибо буду пробовать
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

[Решено] Если товар уже есть вкорзине изменить кнопку "Добавить в корзину"

Автор x-render

Ответов: 26
Просмотров: 12313
Последний ответ 26.11.2022, 22:38:11
от SolopoV
Вывод названий всех категорий и товаров в них на главной ((vm3))

Автор PavelK

Ответов: 0
Просмотров: 2515
Последний ответ 15.02.2022, 14:34:52
от PavelK
[Решено] Список товаров на главной VirtueMart

Автор vitoxa_ya

Ответов: 6
Просмотров: 10489
Последний ответ 21.10.2020, 23:27:08
от alfa212
Модуль VirtuMart Товары. Вывод товаров с определенным настраиваемым полем

Автор rsn

Ответов: 0
Просмотров: 915
Последний ответ 27.04.2019, 09:33:16
от rsn
Переход в корзину из меню категорий с добавлением товара

Автор Mr_rundin

Ответов: 11
Просмотров: 1490
Последний ответ 21.12.2018, 21:05:37
от Mr_rundin