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

Не могу найти штатных средств для отображения содержимого подкатегорий. Помогите решить проблему.

Задача в следующем:
Есть категория с подкатегориями. Например, категория "Телевизоры" имеет 2 подкатегории "ЧБ" и "Цветные". Мне необходимо, чтобы при нажатии на категории "Телвизоры" отображался не список подкатегорий, а все содержимое их... отсортированное по сортировке по умолчанию в этой категории.

Или, как вариант, сделать так, чтобы категория в списке категории была видна, но можно было отобразить содержимое только подкатегорий, но не самой категории "Телевизоры"

Заранее благодарен всем откликнувшимся
« Последнее редактирование: 21.07.2008, 01:24:01 от Enver »
*

Bumbu

  • Осваиваюсь на форуме
  • 11
  • 0 / 0
я делал такое для вирт 1.1 и жоомла 1.0.15(хотя версия жоомлы не важна), но сразу предупреждаю - это точно не лучшее решение так как я нуб в пхп, но зато работает : )

шаг1
в файле ps_product_category.php
после функции function get_subcategory( $category_id, $css_class = "" )(после всей функции, или лучше вообще в конец добавить) а добавил новую функцию

Цитировать
   /*Bumbu start*/
function get_all_subcategoryes_b( $category_id=0,
            $links_css_class="mainlevel",
            $list_css_class="mm123",
            $highlighted_style="font-style:italic;" ) {
      global $sess;

      $categories = ps_product_category::getCategoryTreeArray(); // Get array of category objects
      $result = ps_product_category::sortCategoryTreeArray($categories); // Sort array of category objects
      $row_list = $result['row_list'];
      $depth_list = $result['depth_list'];
      $category_tmp = $result['category_tmp'];
      $nrows = sizeof($category_tmp);

      // Copy the Array into an Array with auto_incrementing Indexes
      $key = array_keys($categories); // Array of category table primary keys
      
      $nrows = $size = sizeOf($key); // Category count

      $html = "";

      // Find out if we have subcategories to display
      $allowed_subcategories = Array();
      if( !empty( $categories[$category_id]["category_parent_id"] ) ) {
         // Find the Root Category of this category
         $root = $categories[$category_id];
         $allowed_subcategories[] = $categories[$category_id]["category_parent_id"];
         // Loop through the Tree up to the root
         while( !empty( $root["category_parent_id"] )) {
            $allowed_subcategories[] = $categories[$root["category_child_id"]]["category_child_id"];
            $root = $categories[$root["category_parent_id"]];
         }
      }
      // Fix the empty Array Fields
      if( $nrows < count( $row_list ) ) {
         $nrows = count( $row_list );
      }
      //Bumbu test

      for($n = 0 ; $n < $nrowsz ; $n++) {
         if ( $depth_list[$n] == 0 ) {unset($keyz[$n]);};
      }
      // Now show the categories
      for($n = 0 ; $n < $nrows ; $n++) {
         if ($category_id == $category_tmp[$row_list[$n]]["category_parent_id"] )
         {
         $allowed_subcategories2[] = $category_tmp[$row_list[$n]]["category_child_id"];
         };
      }
      $allowed_subcategories1 = $allowed_subcategories2;
      
      for ($i = 0; $i < count($allowed_subcategories2) ; $i++){
         for($n = 0 ; $n < $nrows ; $n++) {
         if ($allowed_subcategories2[$i] == $category_tmp[$row_list[$n]]["category_parent_id"] )
         {
         $allowed_subcategories3[] = $category_tmp[$row_list[$n]]["category_child_id"];
         }
         }
      }
      $allowed_subcategories1 = array_merge($allowed_subcategories1,$allowed_subcategories3);
      
      for ($i = 0; $i < count($allowed_subcategories3) ; $i++){
         for($n = 0 ; $n < $nrows ; $n++) {
         if ($allowed_subcategories3[$i] == $category_tmp[$row_list[$n]]["category_parent_id"] )
         {
         $allowed_subcategories4[] = $category_tmp[$row_list[$n]]["category_child_id"];
         }
         }
      }
      $allowed_subcategories1 = array_merge($allowed_subcategories1,$allowed_subcategories4);
      
      for ($i = 0; $i < count($allowed_subcategories4) ; $i++){
         for($n = 0 ; $n < $nrows ; $n++) {
         if ($allowed_subcategories4[$i] == $category_tmp[$row_list[$n]]["category_parent_id"] )
         {
         $allowed_subcategories5[] = $category_tmp[$row_list[$n]]["category_child_id"];
         }
         }
      }
      $allowed_subcategories1 = array_merge($allowed_subcategories1,$allowed_subcategories5);
      return $allowed_subcategories1;
   }
/*Bumbu end*/

шаг 2
файл shop_browse_queries.php

после mm_showMyFileName( __FILE__ );
добавил
require_once (CLASSPATH."ps_product_category.php");
для подгрузки файла с функцией, и далее у меня получилась при замене некоторых рядов начиная с 61(это у меня 61-ый ряд)
получилось вот это
Цитировать
// Filter Products by Category
if( $category_id ) {
   if( !empty( $search_this_category ) && (!empty( $keyword ) || !empty( $manufacturer_id ) )) {
      $where_clause[] = "`#__{vm}_product_category_xref`.`category_id`=".$category_id;
   } elseif( empty( $keyword ) && empty( $manufacturer_id )) {
      $ps_product_category = new ps_product_category();
      $bumbucatid = $ps_product_category->get_all_subcategoryes_b($category_id);
      

      $sq .= "\n (`#__{vm}_product_category_xref`.`category_id`=".$category_id."  OR ";
      for($i = 0; $i < count($bumbucatid); $i++){
         $sq .= "\n `#__{vm}_product_category_xref`.`category_id`=".$bumbucatid[$i]."  OR ";
      }
      $sq .= "\n `#__{vm}_product_category_xref`.`category_id`=9999  ) ";
      $where_clause[] = $sq;

   }
}

а чтоб не показывались ссылки на подкатегории просто это нужно удалить из шаблона магазина в файле
components/com_virtuemart/themes/default/templates/common/categoryChildlist.tpl.php то что выводит подкатегорий(тоесть почти всё или даже всё)

надеюсь поможет, я тоже в своё время искал и не нашёол, пришлось самому делать.
« Последнее редактирование: 25.07.2008, 03:39:31 от Bumbu »
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Какие программы вы используете для учета товаров, заказов и клиентов?

Автор nick71

Ответов: 4
Просмотров: 5927
Последний ответ 09.02.2017, 17:14:43
от api_net_ua
Можно ли сделать отображение артикулов у товара?

Автор ksergeys

Ответов: 3
Просмотров: 4799
Последний ответ 27.01.2015, 20:45:46
от bgg87
Отключение доставки для некоторых групп товаров

Автор Mirsaytov

Ответов: 3
Просмотров: 4212
Последний ответ 16.05.2014, 18:29:18
от Mishok333
Сортировка товаров

Автор vadsson

Ответов: 13
Просмотров: 8005
Последний ответ 22.04.2014, 13:20:12
от mrfruze
Модуль виртуемарт "Категории товаров"

Автор Privat

Ответов: 25
Просмотров: 22214
Последний ответ 17.12.2012, 15:12:07
от nazar86