Перейти к публикации
  • разработка интернет магазинов на opencart
  • доработка интернет магазинов на opencart

Как отобразить изображение категории товаров в списке категорий?


olorin
 Погделиться

Рекомендованные сообещёния

Доброго времени суток. Есть категории товаров(по синдарту это список в левой колонке). В админке при создании категорий товаров можно присвоить изображение категории, которое бугдет отображаться на страниэто категорий. И теперьь вопрос - что нужно сгделать чтобы изображение категории отображались именно в списке категорий? Пример на скрине. Заранее благодарен

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


Не совсем понял вопрос, но подозреваю, что вам надо это

 

или ищите "стена категорий" "витрина категорий"

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


8 часов назад, Shureg сказал:

Не совсем понял вопрос, но подозреваю, что вам надо это

 

или ищите "стена категорий" "витрина категорий"

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

 

<?php if ($thumb) { ?>
        <div class="col-sm-2"><img src="<?php echo $thumb; ?>" alt="<?php echo $heading_title; ?>" title="<?php echo $heading_title; ?>" class="img-thumbnail" /></div>
<?php } ?>

Но я не знаю как именно настроить контроллер правильно. Когда всивил вот икая вот ошибка:
Notice: Undefined variable: thumb in /home/blesktru/fof.com.ua/avto/catalog/view/theme/default/template/extension/module/category.tpl on line 17.

Я попропотому чтовал взять код из category.php в папке product и всивить в category.php в папке module. но, липотому что что то не то всивил, липотому что это вообещё не иким обвместе гделается.

 

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


7 часов назад, SiteMix сказал:

Нет, тут, наверное, о другом речь. Это похоже на мегаменю, типа как в Shop-Store.

Нет, это примерно то же что мне нужно) По сути это тот же обычный список категорий только с картинкой и строкой а не списком игдет(display: flex)

Изменено пользователем olorin
Ссылка на комменирий
Погделиться на других сайих


контроллер модуля  категорий

            $data['categories'][] = array(
// добавляем изображение
                'image' => $this->model_tool_image->resize($category['image'], $this->config->get($this->config->get('config_theme') . '_image_category_width'), $this->config->get($this->config->get('config_theme') . '_image_category_height')),
                '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'])
            );

в шаблоне выводим

<img src="<?php echo $category['image'];?>">

 

Изменено пользователем fanatic
Ссылка на комменирий
Погделиться на других сайих

52 минуты назад, fanatic сказал:

контроллер модуля  категорий

            $data['categories'][] = array(
// добавляем изображение
                'image' => $this->model_tool_image->resize($category['image'], $this->config->get($this->config->get('config_theme') . '_image_category_width'), $this->config->get($this->config->get('config_theme') . '_image_category_height')),
                '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'])
            );

в шаблоне выводим

<img src="<?php echo $category['image'];?>">

 

спасипотому что потому чтольшое!) но выдало икую ошибку. Я врогде бы всё правилно сгделал:

Notice: Undefined property: Action::$model_tool_image in /home/blesktru/fof.com.ua/avto/catalog/controller/extension/module/category.php on line 73
Fatal error: Call to a member function resize() on a non-object in /home/blesktru/fof.com.ua/avto/catalog/controller/extension/module/category.php on line 73

Изменено пользователем olorin
Ссылка на комменирий
Погделиться на других сайих


55 минут назад, fanatic сказал:

контроллер модуля  категорий

            $data['categories'][] = array(
// добавляем изображение
                'image' => $this->model_tool_image->resize($category['image'], $this->config->get($this->config->get('config_theme') . '_image_category_width'), $this->config->get($this->config->get('config_theme') . '_image_category_height')),
                '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'])
            );

в шаблоне выводим

<img src="<?php echo $category['image'];?>">

 

Может гдело в версии? у меня ocStore 2.3.0.2.2

Изменено пользователем olorin
Ссылка на комменирий
Погделиться на других сайих


забыл, добавьте в контроллер после

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

 

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

16 минут назад, fanatic сказал:

забыл, добавьте в контроллер после

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

 

Добавил, и икая вот беда те же ошибки:

Notice: Undefined property: Action::$model_tool_image in /home/blesktru/fof.com.ua/avto/catalog/controller/extension/module/category.php on line 73
Fatal error: Call to a member function resize() on a non-object in /home/blesktru/fof.com.ua/avto/catalog/controller/extension/module/category.php on line 73

Изменено пользователем olorin
Ссылка на комменирий
Погделиться на других сайих


покажите контроллер полностью

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

45 минут назад, fanatic сказал:

покажите контроллер полностью

<?php
class ControllerExtensionModuleCategory extends Controller {
	public function index() {
		$this->load->language('extension/module/category');

		$data['heading_title'] = $this->language->get('heading_title');

		if (isset($this->request->get['path'])) {
			$parts = explode('_', (string)$this->request->get['path']);
		} else {
			$parts = array();
		}

		if (isset($parts[0])) {
			$data['category_id'] = $parts[0];
		} else {
			$data['category_id'] = 0;
		}

		if (isset($parts[1])) {
			$data['child_id'] = $parts[1];
		} else {
			$data['child_id'] = 0;
		}

		$this->load->model('catalog/category');

		$this->load->model('catalog/product');

		$data['categories'] = array();

		$categories = $this->model_catalog_category->getCategories(0);

		foreach ($categories as $category) {
			$children_data = array();

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

				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'])
					);
				}
			}

			$filter_data = array(
				'filter_category_id'  => $category['category_id'],
				'filter_sub_category' => true
			);

			$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'])
			);
		}

		return $this->load->view('extension/module/category', $data);
	}
}

//картинки в категориях 

// 	$this->load->model('catalog/product');

// 	$this->load->model('tool/image');
// 	 $data['categories'][] = array(

//                 'image' => $this->model_tool_image->resize($category['image'], $this->config->get($this->config->get('config_theme') . '_image_category_width'), $this->config->get($this->config->get('config_theme') . '_image_category_height')),
//                 '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
class ControllerExtensionModuleCategory extends Controller {
	public function index() {
		$this->load->language('extension/module/category');

		$data['heading_title'] = $this->language->get('heading_title');

		if (isset($this->request->get['path'])) {
			$parts = explode('_', (string)$this->request->get['path']);
		} else {
			$parts = array();
		}

		if (isset($parts[0])) {
			$data['category_id'] = $parts[0];
		} else {
			$data['category_id'] = 0;
		}

		if (isset($parts[1])) {
			$data['child_id'] = $parts[1];
		} else {
			$data['child_id'] = 0;
		}

		$this->load->model('catalog/category');

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

		$data['categories'] = array();

		$categories = $this->model_catalog_category->getCategories(0);

		foreach ($categories as $category) {
			$children_data = array();

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

				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'])
					);
				}
			}

			$filter_data = array(
				'filter_category_id'  => $category['category_id'],
				'filter_sub_category' => true
			);

			$data['categories'][] = array(
                                'image' => $this->model_tool_image->resize($category['image'], $this->config->get($this->config->get('config_theme') . '_image_category_width'), $this->config->get($this->config->get('config_theme') . '_image_category_height')),
				'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'])
			);
		}

		return $this->load->view('extension/module/category', $data);
	}
}

найдите отлилия

Изменено пользователем fanatic
Ссылка на комменирий
Погделиться на других сайих

59 минут назад, fanatic сказал:

да, тяжелый случай.

<?php
class ControllerExtensionModuleCategory extends Controller {
	public function index() {
		$this->load->language('extension/module/category');

		$data['heading_title'] = $this->language->get('heading_title');

		if (isset($this->request->get['path'])) {
			$parts = explode('_', (string)$this->request->get['path']);
		} else {
			$parts = array();
		}

		if (isset($parts[0])) {
			$data['category_id'] = $parts[0];
		} else {
			$data['category_id'] = 0;
		}

		if (isset($parts[1])) {
			$data['child_id'] = $parts[1];
		} else {
			$data['child_id'] = 0;
		}

		$this->load->model('catalog/category');

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

		$data['categories'] = array();

		$categories = $this->model_catalog_category->getCategories(0);

		foreach ($categories as $category) {
			$children_data = array();

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

				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'])
					);
				}
			}

			$filter_data = array(
				'filter_category_id'  => $category['category_id'],
				'filter_sub_category' => true
			);

			$data['categories'][] = array(
                                'image' => $this->model_tool_image->resize($category['image'], $this->config->get($this->config->get('config_theme') . '_image_category_width'), $this->config->get($this->config->get('config_theme') . '_image_category_height')),
				'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'])
			);
		}

		return $this->load->view('extension/module/category', $data);
	}
}

найдите отлилия

Нашел, вот ваш вариант:

 

$data['categories'][] = array(
                                'image' => $this->model_tool_image->resize($category['image'], $this->config->get($this->config->get('config_theme') . '_image_category_width'), $this->config->get($this->config->get('config_theme') . '_image_category_height')),
				'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'])
			);

а вот мой:

 

$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'])
			);
		}

по сути у меня отсутствует 'image'. Попропотому чтовал всивить теперьь ошибки на 71й строке а не на 73й:

Notice: Undefined property: Action::$load in /home/blesktru/fof.com.ua/avto/catalog/controller/extension/module/category.php on line 71
Fatal error: Call to a member function model() on a non-object in /home/blesktru/fof.com.ua/avto/catalog/controller/extension/module/category.php on line 71


вот что на 71й:
$this->load->model('catalog/product');

Изменено пользователем olorin
Ссылка на комменирий
Погделиться на других сайих


не морочьте голову.   

в последнем моем сообещёнии уже готовый файл с изменениями.

не нужно лепить в свой контроллер это 

1 час назад, olorin сказал:

// $this->load->model('catalog/product'); // $this->load->model('tool/image'); // $data['categories'][] = array( // 'image' => $this->model_tool_image->resize($category['image'], $this->config->get($this->config->get('config_theme') . '_image_category_width'), $this->config->get($this->config->get('config_theme') . '_image_category_height')), // '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']) // );

нужно просто добавить после

$data['categories'][] = array(

следуюещёе

 'image' => $this->model_tool_image->resize($category['image'], $this->config->get($this->config->get('config_theme') . '_image_category_width'), $this->config->get($this->config->get('config_theme') . '_image_category_height')),

а после

$this->load->model('catalog/product');

это

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

 

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

1 час назад, fanatic сказал:

не морочьте голову.   

в последнем моем сообещёнии уже готовый файл с изменениями.

не нужно лепить в свой контроллер это 

нужно просто добавить после

$data['categories'][] = array(

следуюещёе

 'image' => $this->model_tool_image->resize($category['image'], $this->config->get($this->config->get('config_theme') . '_image_category_width'), $this->config->get($this->config->get('config_theme') . '_image_category_height')),

а после

$this->load->model('catalog/product');

это

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

 

Спасипотому что огромное!!! помогло!!!

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


  • 1 год спустя...
В 16.06.2017 в 22:37, olorin сказал:

<?php class ControllerExtensionModuleCategory extends Controller { public function index() { $this->load->language('extension/module/category'); $data['heading_title'] = $this->language->get('heading_title'); if (isset($this->request->get['path'])) { $parts = explode('_', (string)$this->request->get['path']); } else { $parts = array(); } if (isset($parts[0])) { $data['category_id'] = $parts[0]; } else { $data['category_id'] = 0; } if (isset($parts[1])) { $data['child_id'] = $parts[1]; } else { $data['child_id'] = 0; } $this->load->model('catalog/category'); $this->load->model('catalog/product'); $this->load->model('tool/image'); $data['categories'] = array(); $categories = $this->model_catalog_category->getCategories(0); foreach ($categories as $category) { $children_data = array(); if ($category['category_id'] == $data['category_id']) { $children = $this->model_catalog_category->getCategories($category['category_id']); 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']) ); } } $filter_data = array( 'filter_category_id' => $category['category_id'], 'filter_sub_category' => true ); $data['categories'][] = array( 'image' => $this->model_tool_image->resize($category['image'], $this->config->get($this->config->get('config_theme') . '_image_category_width'), $this->config->get($this->config->get('config_theme') . '_image_category_height')), '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']) ); } return $this->load->view('extension/module/category', $data); } }

На врсии 3.0.2.0. не рилииет данный код

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


Создайте аккаунт или войдите в него для комментирования

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

Создать аккаунт

Зарегистрируйтесь для получения аккауни. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите згдесь.

Войти сейчас
 Погделиться

×
×
  • Создать...

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

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