Перейти к содержанию
ravlex

Как вывести дочерние категории из родительской по её ID?

Рекомендуемые сообщения

Нужно выводить список дочерних категорий из родительской. Родительскую категорию я хочу определять сам по её ID.

 

В header.php я вставил такой код:

 

foreach ($categories as $category) {
			if ($category['top']) {
				// Level 2
				$children_data = array();

				$children = $this->model_catalog_category->getCategories($category['category_id']);
                $count = 0;
				foreach ($children as $child) {
					$filter_data = array(
						'filter_category_id'  => $child['category_id'],
						'filter_sub_category' => true
					);

					$children_data[] = array(
                        'category_id' => $child['category_id'],
						'name'  => $child['name'] . ($this->config->get('config_product_count') ? ' (' . $this->model_catalog_product->getTotalProducts($filter_data) . ')' : ''),
						'href'  => $this->url->link('product/category', 'path=' . $category['category_id'] . '_' . $child['category_id']),
                        'limit'              => 7
					);
                    $count++;
                    if ($count >= 7) {
                        break;
                    }
				}

				// Level 1
				$data['categories'][] = array(
                    'category_id' => $category['category_id'],
					'name'     => $category['name'],
					'children' => $children_data,
					'column'   => $category['column'] ? $category['column'] : 1,
					'href'     => $this->url->link('product/category', 'path=' . $category['category_id'])
				);

			}

		}

Но вот что вставлять в header.tpl - не знаю. Очень надеюсь на помощь.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

$children = $this->model_catalog_category->getCategories($category['category_id']);

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
$children = $this->model_catalog_category->getCategories($category['category_id']);

А можно поподробней расписать (разжевать), пожалуйста? 

Как потом вывести в tpl?

Изменено пользователем ravlex

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
$children = $this->model_catalog_category->getCategories($category['category_id']);

У меня меню формируется вручную. Нужно в одном месте вывести подкатегории одной родительской категории. 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
$children = $this->model_catalog_category->getCategories($category['category_id']);

<?php foreach ($category['tester'] as $child) { ?>

<a href="<?php echo $child['href']; ?>"> - <?php echo $child['name']; ?></a>

<?php } ?>

Вот так пытаюсь вывести все подкатегории из родительской категории с URL "tester".

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

У меня меню формируется вручную. Нужно в одном месте вывести подкатегории одной родительской категории. 

Ну так и делайте, все верно в цикле крутите

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ну так и делайте, все верно в цикле крутите

Получаю вот что:

 

  • Notice: Undefined index: tester in /var/www/www-root/data/www/www.site.com/catalog/view/theme/default/template/common/header_main.tpl on line 146Warning: Invalid argument supplied for foreach() in /var/www/www-root/data/www/www.site.com/catalog/view/theme/default/template/common/header_main.tpl on line 146

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

 

Получаю вот что:

 

  • Notice: Undefined index: tester in /var/www/www-root/data/www/www.site.com/catalog/view/theme/default/template/common/header_main.tpl on line 146Warning: Invalid argument supplied for foreach() in /var/www/www-root/data/www/www.site.com/catalog/view/theme/default/template/common/header_main.tpl on line 146

 

там id должно быть а не 

 

 

 

 с URL "tester".

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

там id должно быть а не 

Попробую.

Изменено пользователем ravlex

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

там id должно быть а не 

<?php foreach ($category['69'] as $child) { ?>

<a href="<?php echo $child['href']; ?>"> - <?php echo $child['name']; ?></a>

<?php } ?>

Указываю ID таким образом, но ошибка та же. Что я делаю не так?(

Изменено пользователем ravlex

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Контроллер

$data['tester'] = $this->model_catalog_category->getCategories(69);

tpl

<?php foreach ($tester as $test) { ?>

<a href="<?php echo $test['href']; ?>"> - <?php echo $test['name']; ?></a>

<?php } ?>

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Контроллер 
$data['tester'] = $this->model_catalog_category->getCategories(69);

tpl
<?php foreach ($tester as $test) { ?>
<a href="<?php echo $test['href']; ?>"> - <?php echo $test['name']; ?></a>
<?php } ?>

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

<b>Notice</b>:%20Undefined%20index:%20href%20in%20<b>/var/www/www-root/data/www/www.site.com/catalog/view/theme/default/template/common/header_main.tpl</b>%20on%20line%20<b>160</b>

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

$testers = $this->model_catalog_category->getCategories(69);

$data['testers'] = [];

foreach ($testers as $test)

{

$data['testers'] = [

'name' => $test['name'],

'href' => $this->url->link('product/category', 'path=' . $test['category_id'])

];

}

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
$testers = $this->model_catalog_category->getCategories(69);

$data['testers'] = [];

foreach ($testers  as $test) 
{
  $data['testers'] = [
    'name' => $test['name'],
    'href' => $this->url->link('product/category', 'path=' . $test['category_id'])
  ];
}


Всё равно не желает работать, теперь с другой ошибкой :( и даже имя не выводится теперь.

 

Warning: Illegal string offset 'name' in /var/www/www-root/data/www/www.site.com/catalog/view/theme/default/template/common/header_main.tplon line 158S Warning: Illegal string offset 'name' in /var/www/www-root/data/www/www.site.com/catalog/view/theme/default/template/common/header_main.tplon line 158h

Контроллер:

$testers = $this->model_catalog_category->getCategories(69);    
 $data['testers'] = [];

        foreach ($testers as $test)
        {
            $data['testers'] = [
                'name' => $test['name'],
                'href' => $this->url->link('product/category', 'path=' . $test['category_id'])
            ];
        

Шаблон:

       <?php foreach ($testers as $test) { ?>
                            <a href="<?php echo $test['href']; ?>"> - <?php echo $test['name']; ?></a>
                            <?php } ?>
Изменено пользователем ravlex

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

смотрите по коду, у меня нет хрустального шара 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

в контроллер

$testers = $this->model_catalog_category->getCategories(69);    
$data['testers'] = array();

foreach ($testers as $test)
{
  $data['testers'][] = array(
    'name' => $test['name'],
    'href' => $this->url->link('product/category', 'path=' . $test['category_id'])
  );
}

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×

Важная информация

На нашем сайте используются файлы cookie и происходит обработка некоторых персональных данных пользователей, чтобы улучшить пользовательский интерфейс. Чтобы узнать для чего и какие персональные данные мы обрабатываем перейдите по ссылке. Если Вы нажмете «Я даю согласие», это означает, что Вы понимаете и принимаете все условия, указанные в этом Уведомлении о Конфиденциальности.