Отображение только подкатегорий

Тема в разделе "Общие вопросы", создана пользователем Suprun4uk, 5 апр 2016.

  1. Suprun4uk

    Suprun4uk Новичок

    Сообщения:
    21
    Симпатии:
    0
    Доброе утро, хочу избавится от родительских категорий в меню сайтбара, что бы отображались только подкатегории, по принципу "Уточнить поиск" можно было бы и остановится на "Уточнить поиск" но при нажатии (результате) он исчезает, это не подходит. Подскажите пожалуйста, что править что бы выводились только подкатегории меню ? спасибо.
     
  2. Vlad

    Vlad Эксперт

    Сообщения:
    4.161
    Симпатии:
    1.012
    Доброе. Хорошо что где то уже утро. Можно пример, на словах не совсем понял.
     
  3. Suprun4uk

    Suprun4uk Новичок

    Сообщения:
    21
    Симпатии:
    0
    Здравствуйте пример картинкой. [​IMG]
     
  4. Suprun4uk

    Suprun4uk Новичок

    Сообщения:
    21
    Симпатии:
    0
     
  5. Vlad

    Vlad Эксперт

    Сообщения:
    4.161
    Симпатии:
    1.012
    в файле шаблона \catalog\view\theme\default\template\module\category.tpl
    все заменить на это
    Код:
    <div class="list-group">
      <?php foreach ($categories as $category) { ?>
      <?php if ($category['category_id'] == $category_id) { ?>
      <a href="<?php echo $category['href']; ?>" class="list-group-item active"><?php echo $category['name']; ?></a>
      <?php if ($category['children']) { ?>
      <?php foreach ($category['children'] as $child) { ?>
      <?php if ($child['category_id'] == $child_id) { ?>
      <a href="<?php echo $child['href']; ?>" class="list-group-item active">&nbsp;&nbsp;&nbsp;- <?php echo $child['name']; ?></a>
      <?php } else { ?>
      <a href="<?php echo $child['href']; ?>" class="list-group-item">&nbsp;&nbsp;&nbsp;- <?php echo $child['name']; ?></a>
      <?php } ?>
      <?php } ?>
      <?php } ?>
      <?php } ?>
      <?php } ?>
    </div>
    
     
  6. Suprun4uk

    Suprun4uk Новичок

    Сообщения:
    21
    Симпатии:
    0
    Спасибо за ответ но это не совсем то, таким образом мы убираем остальных родителей, но по прежнему отображаются подкатегории не относящиеся к этой категории в которой я не посредственно нахожусь.
     
  7. DiMoss

    DiMoss Продвинутый пользователь

    Сообщения:
    862
    Симпатии:
    236
    Я попробовал вот такой вариант - в контроллере модуля Категории (*/catalog/controller/module/category.php) вот это....
    PHP:
    if (isset($this->request->get['path'])) {
      
    $parts explode('_', (string)$this->request->get['path']);
    } else {
      
    $parts = array();
    }
    заменить на.....
    PHP:
    if (isset($this->request->get['path'])) {
      
    $parts explode('_', (string)$this->request->get['path']);
      
    $category_id = (int)array_pop($parts);
    } else {
      
    $parts = array();
    }
    А затем надо просто передать в запрос к базе данных id категории в которой мы находимся. Для этого меняем вот это....
    PHP:
    $categories $this->model_catalog_category->getCategories(0);
    на это...
    PHP:
    $categories $this->model_catalog_category->getCategories($category_id);
    Только в данном случае модуль будет работать только там, где он может получить id категории.
     
    Vlad и Suprun4uk нравится это.
  8. Suprun4uk

    Suprun4uk Новичок

    Сообщения:
    21
    Симпатии:
    0
    работает верно, спасибо, но получается что работает она по принципу "Уточнить поиск" т.е если нажать на подкатегорию которая не имеет вложенности тогда все категории исчезают.
     
  9. DiMoss

    DiMoss Продвинутый пользователь

    Сообщения:
    862
    Симпатии:
    236
    Вы хотите чтобы система понимала кто есть главный родитель категории в которой мы находимся и в любой из подкатегорий этого родителя показывался полный список подкатегорий, принадлежащих данному родителю?
    В общем то идея хорошая. Можно подумать как это реализовать!
     
  10. Suprun4uk

    Suprun4uk Новичок

    Сообщения:
    21
    Симпатии:
    0
    Хорошая, реализовывал такое на cms simpla, а на OC что то не пойму как сделать
     
  11. DiMoss

    DiMoss Продвинутый пользователь

    Сообщения:
    862
    Симпатии:
    236
    Вот так вроде работает.....
    PHP:
    if (isset($parts[0])) {
      
    $data['category_id'] = $parts[0];
      
    $categoty_id $parts[0];
    } else {
      
    $data['category_id'] = 0;
    }
    У меня даже на странице товара показывает подкатегории родителя.
     
  12. Suprun4uk

    Suprun4uk Новичок

    Сообщения:
    21
    Симпатии:
    0
    К сожалению нет, хлебные крошки не считывают путь, так же не считывается путь переходов в адресной строке и по прежнему исчезает список подкатегорий
     
  13. DiMoss

    DiMoss Продвинутый пользователь

    Сообщения:
    862
    Симпатии:
    236
    Ну на странице продукта оно вроде и понятно что не отображает. У меня просто стоит этот модуль.
    У Вас и в подкатегории не показывается полный список "детей родителя"?
     
  14. Suprun4uk

    Suprun4uk Новичок

    Сообщения:
    21
    Симпатии:
    0
    Список подкатегорий пропадает в том случае если последняя подкатегория не имеет вложенности, а я на неё нажимаю.
     
  15. DiMoss

    DiMoss Продвинутый пользователь

    Сообщения:
    862
    Симпатии:
    236
    Странно! А Вы убрали изменения, которые я предлагал в первом посте?
     
  16. Suprun4uk

    Suprun4uk Новичок

    Сообщения:
    21
    Симпатии:
    0
    пробовал убирать и так же пробовал оставить, результат один и тот же
     
  17. DiMoss

    DiMoss Продвинутый пользователь

    Сообщения:
    862
    Симпатии:
    236
    Я вот не могу понять зачем нужна эта конструкция....
    PHP:
    if (isset($this->request->get['path'])) {
      
    $parts explode('_', (string)$this->request->get['path']);
    } else {
      
    $parts = array();
    }
    Если её снести то модуль продолжает исправно работать
     
  18. DiMoss

    DiMoss Продвинутый пользователь

    Сообщения:
    862
    Симпатии:
    236
    А попробуйте отфильтровать данные цикла в контроллере вот таким образом...
    PHP:
    if ($category['category_id'] == $parts[0]) {
      
    $data['categories'][] = array(
        
    'category_id' => $category['category_id'],
        
    'name'        => $category['name'] . ($this->config->get('config_product_count') ? ' (' $this->model_catalog_product->getTotalProducts($filter_data) . ')' ''),
        
    'children'    => $children_data,
        
    'href'        => $this->url->link('product/category''path=' $category['category_id'])
      );
    }
    У меня работает! И пожалуй это самое простое решение. Только в данном случае мы зазря гоняем цикл в поисках нужных данных.
    Наверное лучше данное условие прописать сразу после
    PHP:
    foreach ($categories as $category) { 
    Если по другому, то лучше писать модуль или придётся по полной переделывать и контроллер и шаблон.
     
    Последнее редактирование: 6 апр 2016
  19. DiMoss

    DiMoss Продвинутый пользователь

    Сообщения:
    862
    Симпатии:
    236
    Сделал модуль, но есть несколько вариаций вывода подкатегорий. На данный момент это выглядит вот так...
    Снимок.JPG
    То бишь в шапке Родитель, а ниже подкатегории.

    Модуль является практически 100%-ым клоном стандартного модуля Категории. За исключением того, что мой не будет работать вне категорий. Для этого собственно можно использовать штатный.
     
  20. Suprun4uk

    Suprun4uk Новичок

    Сообщения:
    21
    Симпатии:
    0

    То есть модуль на фото работает по принципу "А попробуйте отфильтровать данные цикла в контроллере вот таким образом..." ?