Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

Вывести описание категории на главную страницу


Recommended Posts

Спойлер

2018-02-14_20-56-50.thumb.png.fe92450ede8a11dedd73d256ca72b354.png

Имеется такая главная (common/home) страничка. Я с горем пополам научил выводить её не больше трех изображений категорий через   

{% for category in categories %}

{% if loop.index <= 3 %}

{{ category.thumb }}

{% endif %}
{% endfor %},

но вот с описанием категорий конкретная беда. Так и не смог понять какой конкретно код нужно написать в home php (а он у меня выглядит следующим образом после моего костыля:

Спойлер

<?php
class ControllerCommonHome extends Controller {
	public function index() {
		$this->document->setTitle($this->config->get('config_meta_title'));
		$this->document->setDescription($this->config->get('config_meta_description'));
		$this->document->setKeywords($this->config->get('config_meta_keyword'));

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

		if (isset($this->request->get['route'])) {
			$this->document->addLink($this->config->get('config_url'), 'canonical');
		}


		if (isset($this->request->get['path'])) {
			$url = '';

			if (isset($this->request->get['sort'])) {
				$url .= '&sort=' . $this->request->get['sort'];
			}

			if (isset($this->request->get['order'])) {
				$url .= '&order=' . $this->request->get['order'];
			}

			if (isset($this->request->get['limit'])) {
				$url .= '&limit=' . $this->request->get['limit'];
			}

			$path = '';

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

			$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;
		}
			
		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
			);
			$category_info = $this->model_catalog_category->getCategory($category_id);
			$data['categories'][] = array(
				'category_id' => $category['category_id'],
				'name' => $category['name'],
				'thumb' => $this->model_tool_image->resize($category['image'], $this->config->get('theme_' . $this->config->get('config_theme') . '_image_category_width'), $this->config->get('theme_' . $this->config->get('config_theme') . '_image_category_height')),
				'children' => $children_data,
				'href' => $this->url->link('product/category', 'path=' . $category['category_id'])
			);
		}

			
		$data['column_left'] = $this->load->controller('common/column_left');
		$data['column_right'] = $this->load->controller('common/column_right');
		$data['content_top'] = $this->load->controller('common/content_top');
		$data['content_bottom'] = $this->load->controller('common/content_bottom');
		$data['footer'] = $this->load->controller('common/footer');
		$data['header'] = $this->load->controller('common/header');

		$this->response->setOutput($this->load->view('common/home', $data));
	}
}

 

 

в $data['categories'][] = array, чтобы описания завелись. Пытался по аналогии из category.php выдернуть, но у меня ничего не вышло. наверное потому, что там for. Также не знаю как правильно в твиге написать, чтобы он в итоге его показал: {{ description }}, или {{ category.description }} или еще как-нибудь. Я только вчера верстать научился, а тут такое ( Помогите, пожалуйста

Змінено користувачем minertural
Надіслати
Поділитися на інших сайтах


дело в том, что категорий будет чуть больше, чем 3, да и эти могут меняться, отчего и нужно, чтобы изменения были и на главной. С другой стороны - я согласен, что это хардкоре, и что он в принципе ненужон, просто раз уж картинки до ума довёл, хочется и этот момент обдумать. 

Змінено користувачем minertural
Надіслати
Поділитися на інших сайтах


Также описание нужно будет выводить на другой странице. Помогите, пожалуйста, понять как запихнуть в array еще и description

Змінено користувачем minertural
Надіслати
Поділитися на інших сайтах


Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз
  • Зараз на сторінці   0 користувачів

    • Ні користувачів, які переглядиють цю сторінку

×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.