Путь к предельной категории Opencart 3 - PullRequest
0 голосов
/ 20 февраля 2019

Я пытаюсь ограничить путь к категории только 4 уровнями, и в каталоге нет отображения каких-либо подкатегорий после того, как я вхожу в 4 уровня. Я изменил код частей на следующий в контроллере продукта / категории, но этопохоже, не обновляет страницу.

$parts = explode('_', (string)$this->request->get['path']);

        //print_r($parts);
        echo "<script>console.log( 'Debug Objects: here21' );</script>";

        if(count($parts) < 4){
            echo "<script>console.log( 'Debug Objects: here2' );</script>";

        $category_id = (int)array_pop($parts);

        foreach ($parts as $path_id) {
            if (!$path) {
                $path = (int)$path_id;
            } else {
                $path .= '_' . (int)$path_id;
            }
                $category_info = $this->model_catalog_category->getCategory($path_id);

            if ($category_info) {
                $data['breadcrumbs'][] = array(
                    'text' => $category_info['name'],
                    'href' => $this->url->link('product/category', 'path=' . $path . $url)
                );
            }
        }
        }
    } else {
        $category_id = 0;
    }

Я очистил кеш в панели управления, а также очистил папку system\storage\cache, но она все еще не обновляется.Любая помощь приветствуется.Спасибо

1 Ответ

0 голосов
/ 21 февраля 2019

Так что, если я правильно понял задачу, вы хотите, чтобы ваши хлебные крошки выглядели так:

home > category 1 > sub category 2 > sub category 3 > sub category 4 > sub cateogry 5

, чтобы выглядеть так

home > category 1 > sub category 2 > sub category 3 > sub category 5 

- вот так, тогда решениеочень просто:

$parts = explode('_', (string)$this->request->get['path']);

$category_id = (int)array_pop($parts);

//add this code - it will slice the parts array to only 3 items, leaving the 4th as the current category_id
$parts = array_slice($parts, 0, 3); 

foreach ($parts as $path_id) {

Если вы не хотите, чтобы последний элемент хлебной крошки был виден, вам нужно прокрутить вниз до строки 103, чтобы найти этот код

// Set the last category breadcrumb
$data['breadcrumbs'][] = array(
    'text' => $category_info['name'],
    'href' => $this->url->link('product/category', 'path=' . $this->request->get['path'])
);

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


Я не буду удалять первый ответ, потому что он может кому-то помочь.Но вот ответ после получения более подробной информации от автора.

Поэтому, если вы хотите ограничить показ уточненного поиска на четвертом и нижнем уровнях, вам нужно выполнить два шага:

  1. подсчитать уровни.в строке 67 добавить
$level = count($parts);
добавить оператор if, если уровень превышен.в строке 139 заменить
$results = $this->model_catalog_category->getCategories($category_id);

на

if($level < 4){
    $results = $this->model_catalog_category->getCategories($category_id);
}else{
    $results = array();
}
...