Как отображать изображения категорий в OpenCart

Мой модуль category.php в контроллере:

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

Мои категории.tpl в / products / (Просмотр)

  <?php foreach ($categories as $category) { ?> <li><a href="<?php echo $category['href']; ?>"><img src="<?php echo $category['image']; ?>" alt="<?php echo $category['name']; ?>"></a></li> <?php } ?> 

Однако это просто дает мне ошибку, говоря, что переменная неизвестна.

Я делаю что-то неправильно?

  1. Первая проблема заключается в том, что вы редактируете неправильный файл контроллера, вы должны отредактировать контроллер / product / category.php, если вы хотите, чтобы ваши изменения отображались в этом конкретном представлении.

  2. Изображения не будут отображаться, поскольку они не сохранены в виде полного URL-адреса в базе данных:

    insted of => $category['image']

    он должен быть => DIR_IMAGE.$result['image']

Надеюсь, это решает ваш ответ.

Ваш подход был хорош, но что-то не хватало – хорошо изменить размер изображения между отображением, чтобы пользователи загружали меньше (или меньше) ресурсов при просмотре вашего магазина.

Вместо

  'image' => $category['image'], 

использовать это

  'image' => $this->model_tool_image->resize($category['image'], $this->config->get('config_image_category_width'), $this->config->get('config_image_category_height')), 

Это обеспечит изменение размеров изображений до размеров, определенных в администрировании, и добавит DIR_IMAGE перед пути к изображению.

Если в исходном коде отсутствует эта строка:

 $this->load->model('tool/image'); 

убедитесь, что вы добавили его до того, как изображение категории будет изменено.